Archived
0

modify UI

This commit is contained in:
Mo
2015-10-27 14:22:56 +03:00
parent 6d706e00dd
commit 84585b5936
24 changed files with 485 additions and 279 deletions

View File

@@ -82,7 +82,7 @@ public class Main extends Application {
private static void loadMainScene() throws IOException {
primaryStage.setTitle(Localization.getString("main.title"));
primaryStage.setMinHeight(590);
primaryStage.setMinHeight(500);
primaryStage.setScene(new Scene(Screeners.newScreeners(Main.class.getResource("/view/main.fxml"), getUrl("style.css").toExternalForm())));
primaryStage.setOnCloseRequest((we) -> {
try {

View File

@@ -34,6 +34,7 @@ public class LoginController {
dialog.getDialogPane().getButtonTypes().addAll(loginButtonType, ButtonType.CANCEL);
Node loginButton = dialog.getDialogPane().lookupButton(loginButtonType);
loginButton.setDisable(true);
email.setText(Main.SETTINGS.edce().getEmail());
email.textProperty().addListener((observable, oldValue, newValue) -> {
loginButton.setDisable(newValue.trim().isEmpty());
Main.SETTINGS.edce().setEmail(newValue);
@@ -54,7 +55,7 @@ public class LoginController {
if (dialog == null){
createDialog(parent, content);
}
Platform.runLater(email::requestFocus);
Platform.runLater(password::requestFocus);
Optional<Pair<String, String>> result = dialog.showAndWait();
clear();
return result;

View File

@@ -3,9 +3,7 @@ package ru.trader.controllers;
import javafx.event.ActionEvent;
import javafx.fxml.FXML;
import javafx.scene.control.Menu;
import javafx.scene.control.RadioMenuItem;
import javafx.scene.control.ToggleGroup;
import javafx.scene.control.*;
import javafx.scene.layout.BorderPane;
import javafx.stage.FileChooser;
import org.controlsfx.control.action.Action;
@@ -51,6 +49,10 @@ public class MainController {
private ItemsController itemsController;
@FXML
private RouterController routerController;
@FXML
private TabPane tabs;
@FXML
private Tab track;
@FXML
private void initialize() {
@@ -75,7 +77,7 @@ public class MainController {
}
} catch (IOException e) {
LOG.error("Error on change locale to {}", n.getUserData());
LOG.error("",e);
LOG.error("", e);
}
});
}
@@ -318,4 +320,8 @@ public class MainController {
market = world;
Screeners.reinitAll();
}
public void showTrack(){
tabs.getSelectionModel().select(track);
}
}

View File

@@ -1,12 +1,12 @@
package ru.trader.controllers;
import javafx.beans.binding.Bindings;
import javafx.collections.FXCollections;
import javafx.collections.ObservableList;
import javafx.fxml.FXML;
import javafx.scene.control.Button;
import javafx.scene.control.ComboBox;
import javafx.scene.control.TextField;
import javafx.scene.control.ToggleButton;
import javafx.scene.control.ToggleGroup;
import ru.trader.model.*;
import ru.trader.view.support.NumberField;
import ru.trader.view.support.autocomplete.AutoCompletion;
@@ -17,109 +17,116 @@ import ru.trader.view.support.autocomplete.StationsProvider;
public class MissionsController {
@FXML
private TextField receiverText;
private AutoCompletion<StationModel> receiver;
private TextField starportText;
private AutoCompletion<StationModel> starport;
@FXML
private NumberField courierProfit;
private ComboBox<ItemModel> cargo;
@FXML
private Button addCourierBtn;
private NumberField quantity;
@FXML
private NumberField reward;
@FXML
private ToggleButton courierBtn;
@FXML
private ToggleButton deliveryBtn;
@FXML
private ToggleButton supplyBtn;
@FXML
private TextField buyerText;
private AutoCompletion<StationModel> buyer;
@FXML
private NumberField deliveryCount;
@FXML
private NumberField deliveryProfit;
@FXML
private Button addDeliveryBtn;
@FXML
private ComboBox<ItemModel> item;
@FXML
private NumberField supplyCount;
@FXML
private NumberField supplyProfit;
@FXML
private Button addSupplyBtn;
private enum MISSION_TYPE {COURIER, DELIVERY, SUPPLY}
private final ToggleGroup missionTypeGroup;
private final ObservableList<MissionModel> missions;
private StationModel station;
private MISSION_TYPE missionType;
public MissionsController() {
missionTypeGroup = new ToggleGroup();
missions = FXCollections.observableArrayList();
}
@FXML
private void initialize(){
missionTypeGroup.selectedToggleProperty().addListener((ov, o, n) ->{
if (courierBtn.equals(n)){
missionType = MISSION_TYPE.COURIER;
starportText.setDisable(false);
cargo.setDisable(true);
quantity.setDisable(true);
reward.setDisable(false);
} else
if (deliveryBtn.equals(n)){
missionType = MISSION_TYPE.DELIVERY;
starportText.setDisable(false);
cargo.setDisable(true);
quantity.setDisable(false);
reward.setDisable(false);
} else
if (supplyBtn.equals(n)){
missionType = MISSION_TYPE.SUPPLY;
if (station != null) {
starport.setValue(station);
}
starportText.setDisable(false);
cargo.setDisable(false);
quantity.setDisable(false);
reward.setDisable(false);
} else {
missionType = null;
starportText.setDisable(true);
cargo.setDisable(true);
quantity.setDisable(true);
reward.setDisable(true);
}
});
courierBtn.setToggleGroup(missionTypeGroup);
deliveryBtn.setToggleGroup(missionTypeGroup);
supplyBtn.setToggleGroup(missionTypeGroup);
init();
addCourierBtn.disableProperty().bind(Bindings.createBooleanBinding(() -> receiver.getValue() == null, receiver.valueProperty())
.or(courierProfit.wrongProperty())
);
addDeliveryBtn.disableProperty().bind(Bindings.createBooleanBinding(() -> buyer.getValue() == null, buyer.valueProperty())
.or(deliveryCount.wrongProperty())
.or(deliveryProfit.wrongProperty())
);
addSupplyBtn.disableProperty().bind(Bindings.createBooleanBinding(() -> item.getValue() == null, item.valueProperty())
.or(supplyCount.wrongProperty())
.or(supplyProfit.wrongProperty())
);
}
void init(){
MarketModel world = MainController.getWorld();
item.setItems(world.itemsProperty());
cargo.setItems(world.itemsProperty());
StationsProvider provider = new StationsProvider(world);
if (receiver == null){
receiver = new AutoCompletion<>(receiverText, new CachedSuggestionProvider<>(provider), ModelFabric.NONE_STATION, provider.getConverter());
if (starport == null){
starport = new AutoCompletion<>(starportText, new CachedSuggestionProvider<>(provider), ModelFabric.NONE_STATION, provider.getConverter());
} else {
receiver.setSuggestions(provider.getPossibleSuggestions());
receiver.setConverter(provider.getConverter());
}
if (buyer == null){
buyer = new AutoCompletion<>(buyerText, new CachedSuggestionProvider<>(provider), ModelFabric.NONE_STATION, provider.getConverter());
} else {
buyer.setSuggestions(provider.getPossibleSuggestions());
buyer.setConverter(provider.getConverter());
starport.setSuggestions(provider.getPossibleSuggestions());
starport.setConverter(provider.getConverter());
}
}
void setStations(ObservableList<String> stationNames) {
receiver.setSuggestions(stationNames);
buyer.setSuggestions(stationNames);
starport.setSuggestions(stationNames);
}
void setItems(ObservableList<ItemModel> items){
item.setItems(items);
cargo.setItems(items);
}
@FXML
private void addCourier(){
StationModel station = receiver.getValue();
double profit = courierProfit.getValue().doubleValue();
public void add(){
StationModel station = starport.getValue();
ItemModel item = cargo.getValue();
long count = quantity.getValue().longValue();
double profit = reward.getValue().doubleValue();
if (station != null && profit > 0){
missions.add(new MissionModel(station, profit));
switch (missionType){
case COURIER: missions.add(new MissionModel(station, profit));
break;
case DELIVERY: if (count > 0) missions.add(new MissionModel(station, count, profit));
break;
case SUPPLY: if (item != null && count > 0) missions.add(new MissionModel(station, item, count, profit));
break;
}
}
}
@FXML
private void addDelivery(){
StationModel station = buyer.getValue();
long count = deliveryCount.getValue().longValue();
double profit = deliveryProfit.getValue().doubleValue();
if (station != null && profit > 0){
missions.add(new MissionModel(station, count, profit));
}
public void remove(int index){
missions.remove(index);
}
@FXML
private void addSupply(){
ItemModel item = this.item.getValue();
long count = supplyCount.getValue().longValue();
double profit = supplyProfit.getValue().doubleValue();
if (station != null && item != null && profit > 0){
missions.add(new MissionModel(station, item, count, profit));
}
public void clear(){
missions.clear();
}
public ObservableList<MissionModel> getMissions() {

View File

@@ -3,10 +3,8 @@ package ru.trader.controllers;
import javafx.application.Platform;
import javafx.collections.FXCollections;
import javafx.fxml.FXML;
import javafx.geometry.Insets;
import javafx.scene.control.*;
import javafx.scene.input.MouseButton;
import org.controlsfx.control.SegmentedButton;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import ru.trader.core.SERVICE_TYPE;
@@ -28,13 +26,11 @@ public class OffersController {
private StationModel station;
@FXML
private Insets stationsMargin;
@FXML
private TextField systemText;
private AutoCompletion<SystemModel> system;
@FXML
private SegmentedButton stationsBar;
private ListView<StationModel> stationsList;
@FXML
private TableView<OfferModel> tblSell;
@FXML
@@ -63,12 +59,12 @@ public class OffersController {
private CheckBox cbMediumLandpad;
@FXML
private CheckBox cbLargeLandpad;
@FXML
private TitledPane stationPane;
private final List<OfferModel> sells = FXCollections.observableArrayList();
private final List<OfferModel> buys = FXCollections.observableArrayList();
private final static ToggleGroup stationsGrp = new ToggleGroup();
// инициализируем форму данными
@FXML
private void initialize() {
@@ -77,14 +73,13 @@ public class OffersController {
LOG.info("Change system to {}", newValue);
fillDetails(newValue);
});
stationsGrp.selectedToggleProperty().addListener((v, o, n) -> {
if (n != null){
fillTables((StationModel) n.getUserData());
stationsList.getSelectionModel().selectedItemProperty().addListener((v, o, n) -> {
if (n != null) {
fillTables(n);
} else {
fillTables(ModelFabric.NONE_STATION);
}
});
stationsBar.setToggleGroup(stationsGrp);
tblSell.getSelectionModel().selectedItemProperty().addListener((v, o, n) -> {
if (n != null) Screeners.changeItemDesc(n.getItem());
@@ -122,27 +117,21 @@ public class OffersController {
private void fillDetails(SystemModel system){
if (ModelFabric.isFake(system)) return;
stationsBar.getButtons().clear();
List<StationModel> stations = system.getStations();
stations.forEach(s -> stationsBar.getButtons().add(buildStationNode(s)));
stationsList.setItems(FXCollections.observableList(stations));
if (!stations.isEmpty()){
stationsBar.getButtons().get(0).setSelected(true);
stationsList.getSelectionModel().selectFirst();
} else {
fillTables(ModelFabric.NONE_STATION);
}
}
private ToggleButton buildStationNode(StationModel station){
ToggleButton stationBtn = new ToggleButton(station.getName());
stationBtn.setUserData(station);
return stationBtn;
}
private void fillTables(StationModel station){
LOG.info("Change station to {}", station);
this.station = station;
sells.clear();
buys.clear();
stationPane.setText(station.getName());
distance.setText("");
government.setText("");
faction.setText("");
@@ -253,7 +242,9 @@ public class OffersController {
@Override
public void add(StationModel station) {
ViewUtils.doFX(() -> {
stationsBar.getButtons().add(buildStationNode(station));
if (station.getSystem().equals(system.getValue())) {
stationsList.getItems().add(station);
}
refresh();
sort();
});
@@ -269,8 +260,9 @@ public class OffersController {
@Override
public void remove(StationModel station) {
ViewUtils.doFX(() -> {
stationsBar.getToggleGroup().getSelectedToggle().setSelected(false);
stationsBar.getButtons().removeIf(b -> b.getUserData().equals(station));
if (station.getSystem().equals(system.getValue())) {
stationsList.getItems().remove(station);
}
refresh();
sort();
});

View File

@@ -67,15 +67,15 @@ public class RouteSearchController {
fromStation.setItems(n.getStationNamesList());
fromStation.getSelectionModel().selectFirst();
});
fromStation.valueProperty().addListener((ov, o , n) -> {
fromStation.valueProperty().addListener((ov, o, n) -> {
SystemModel system = fromSystem.getValue();
if (system == null || n == null){
if (system == null || n == null) {
missionsController.setStation(ModelFabric.NONE_STATION);
} else {
missionsController.setStation(system.get(n));
}
});
toSystem.valueProperty().addListener((ov, o , n) -> {
toSystem.valueProperty().addListener((ov, o, n) -> {
toStation.setItems(n.getStationNamesList());
toStation.getSelectionModel().selectFirst();
});
@@ -105,20 +105,44 @@ public class RouteSearchController {
missionsList.getItems().forEach(m -> m.toSpecification(specificator));
market.getRoutes(f, fS, t, tS, profile.getBalance(), specificator, routes -> {
Optional<RouteModel> path = Screeners.showRouters(routes);
if (path.isPresent()){
if (path.isPresent()) {
RouteModel route = path.get();
route.addAll(0, missionsList.getItems());
profile.setRoute(route);
Screeners.showTrackTab();
}
});
}
@FXML
private void searchTop(){
market.getTopRoutes(profile.getBalance(), routes -> {
Optional<RouteModel> path = Screeners.showRouters(routes);
if (path.isPresent()) {
RouteModel route = path.get();
profile.setRoute(route);
Screeners.showTrackTab();
}
});
}
@FXML
private void addMission(){
missionsController.add();
}
@FXML
private void removeMission(){
int index = missionsList.getSelectionModel().getSelectedIndex();
if (index >= 0){
missionsList.getItems().remove(index);
missionsController.remove(index);
}
}
@FXML
private void clearMissions(){
missionsController.clear();
}
}

View File

@@ -6,7 +6,8 @@ import javafx.collections.FXCollections;
import javafx.collections.ObservableList;
import javafx.fxml.FXML;
import javafx.scene.Node;
import javafx.scene.control.*;
import javafx.scene.control.Label;
import javafx.scene.control.ListView;
import javafx.scene.layout.Pane;
import ru.trader.model.*;
import ru.trader.model.support.BindingsHelper;
@@ -52,11 +53,21 @@ public class RouteTrackController {
@FXML
private void initialize(){
MainController.getProfile().routeProperty().addListener(routeListener);
addMissionsList.setItems(missionsController.getMissions());
buyOrders.setCellFactory(new OrderListCell(false));
sellOrders.setCellFactory(new OrderListCell(true));
editGroup.setVisible(false);
init();
}
void init(){
ProfileModel profile = MainController.getProfile();
profile.routeProperty().addListener(routeListener);
setRoute(profile.getRoute());
}
void unbind(){
MainController.getProfile().routeProperty().removeListener(routeListener);
}
public void setRoute(RouteModel route){
@@ -65,38 +76,64 @@ public class RouteTrackController {
}
this.route = route;
fillTrack();
setIndex(route.getCurrentEntry());
this.route.currentEntryProperty().addListener(currentEntryListener);
if (route != null) {
setIndex(route.getCurrentEntry());
this.route.currentEntryProperty().addListener(currentEntryListener);
} else {
setIndex(-1);
}
}
public void setIndex(int index){
trackNode.setActive(index);
if (index != -1) {
trackNode.setActive(index);
} else {
update();
}
}
private void fillTrack(){
if (trackNode != null) trackNode.activeProperty().removeListener(activeEntryListener);
trackNode = new Track(route);
track.getChildren().setAll(trackNode.getNode());
trackNode.activeProperty().addListener(activeEntryListener);
if (route != null) {
trackNode = new Track(route);
track.getChildren().setAll(trackNode.getNode());
trackNode.activeProperty().addListener(activeEntryListener);
} else {
trackNode = null;
track.getChildren().clear();
}
}
private void update(){
int index = trackNode.getActive();
if (index == -1) return;
RouteEntryModel entry = route.get(index);
missionsController.setStation(entry.getStation());
ObservableList<String> stations = BindingsHelper.observableList(route.getStations(index), StationModel::getFullName);
missionsController.setStations(stations);
ObservableList<ItemModel> items = FXCollections.observableList(route.getSellOffers(index).stream().map(OfferModel::getItem).collect(Collectors.toList()));
missionsController.setItems(items);
int index = trackNode != null ? trackNode.getActive() : -1;
if (index != -1) {
RouteEntryModel entry = route.get(index);
missionsController.setStation(entry.getStation());
ObservableList<String> stations = BindingsHelper.observableList(route.getStations(index), StationModel::getFullName);
missionsController.setStations(stations);
ObservableList<ItemModel> items = FXCollections.observableList(route.getSellOffers(index).stream().map(OfferModel::getItem).collect(Collectors.toList()));
missionsController.setItems(items);
station.setText(entry.getStation().getName());
system.setText(entry.getStation().getSystem().getName());
time.setText(ViewUtils.timeToString(entry.getTime()));
refuel.setText(String.valueOf(entry.getRefill()));
buyOrders.setItems(entry.orders());
sellOrders.setItems(entry.sellOrders());
missionsList.setItems(entry.missions());
station.setText(entry.getStation().getName());
system.setText(entry.getStation().getSystem().getName());
time.setText(ViewUtils.timeToString(entry.getTime()));
refuel.setText(String.valueOf(entry.getRefill()));
buyOrders.setItems(entry.orders());
sellOrders.setItems(entry.sellOrders());
missionsList.setItems(entry.missions());
} else {
missionsController.setStation(ModelFabric.NONE_STATION);
missionsController.setStations(FXCollections.emptyObservableList());
missionsController.setItems(FXCollections.emptyObservableList());
station.setText("");
system.setText("");
time.setText("");
refuel.setText("");
buyOrders.setItems(FXCollections.emptyObservableList());
sellOrders.setItems(FXCollections.emptyObservableList());
missionsList.setItems(FXCollections.emptyObservableList());
}
}
@FXML
@@ -111,25 +148,33 @@ public class RouteTrackController {
}
@FXML
private void addMissions(){
int startIndex = route.isLoop() ? 0 : trackNode.getActive();
route.addAll(startIndex, missionsList.getItems());
private void addMissionsToTrack(){
int startIndex = trackNode.getActive();
route.addAll(startIndex, addMissionsList.getItems());
}
@FXML
private void addMission(){
missionsController.add();
}
@FXML
private void removeMission(){
int index = missionsList.getSelectionModel().getSelectedIndex();
int index = addMissionsList.getSelectionModel().getSelectedIndex();
if (index >= 0){
missionsList.getItems().remove(index);
missionsController.remove(index);
}
}
@FXML
private void clearMissions(){
missionsController.clear();
}
private final ChangeListener<? super Number> currentEntryListener = (ov, o, n) -> ViewUtils.doFX(() -> setIndex(n.intValue()));
private final InvalidationListener activeEntryListener = ov -> ViewUtils.doFX(this::update);
private final ChangeListener<RouteModel> routeListener = (ov, o, n) -> {
if (n != null){
ViewUtils.doFX(() -> setRoute(n));
}
};
private final ChangeListener<RouteModel> routeListener = (ov, o, n) -> ViewUtils.doFX(() -> setRoute(n));
}

View File

@@ -264,4 +264,8 @@ public class Screeners {
filterController.init();
EMDNUpdater.setMarket(MainController.getMarket());
}
public static void showTrackTab(){
mainController.showTrack();
}
}

View File

@@ -1,12 +1,13 @@
package ru.trader.controllers;
import javafx.collections.FXCollections;
import javafx.fxml.FXML;
import javafx.scene.Parent;
import javafx.scene.control.*;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import ru.trader.EMDNUpdater;
import ru.trader.Main;
import ru.trader.core.Profile;
import ru.trader.view.support.Localization;
import ru.trader.view.support.NumberField;
@@ -22,24 +23,60 @@ public class SettingsController {
private CheckBox emdnUpdateOnly;
@FXML
private NumberField emdnUpdateTime;
@FXML
private NumberField segmentSize;
private NumberField jumps;
@FXML
private NumberField pathsCount;
private NumberField lands;
@FXML
private NumberField routesCount;
@FXML
private NumberField fuelPrice;
@FXML
private ComboBox<Profile.PATH_PRIORITY> pathPriority;
@FXML
private NumberField jumpTime;
@FXML
private NumberField landingTime;
@FXML
private NumberField takeoffTime;
@FXML
private NumberField rechargeTime;
@FXML
private CheckBox edceActive;
@FXML
private NumberField edceInterval;
private Dialog<ButtonType> dlg;
@FXML
private void initialize(){
pathPriority.setItems(FXCollections.observableArrayList(Profile.PATH_PRIORITY.values()));
init();
}
private void init(){
/*
emdnSubServ.setText(Main.SETTINGS.getEMDNSub());
emdnOn.setSelected(Main.SETTINGS.getEMDNActive());
emdnUpdateOnly.setSelected(Main.SETTINGS.getEMDNUpdateOnly());
emdnUpdateTime.setValue(Main.SETTINGS.getEMDNAutoUpdate());
pathsCount.setValue(Main.SETTINGS.getRoutesCount());
*/
Profile profile =Main.SETTINGS.getProfile();
jumps.setValue(profile.getJumps());
lands.setValue(profile.getLands());
routesCount.setValue(profile.getRoutesCount());
fuelPrice.setValue(profile.getFuelPrice());
pathPriority.setValue(profile.getPathPriority());
jumpTime.setValue(profile.getJumpTime());
landingTime.setValue(profile.getLandingTime());
takeoffTime.setValue(profile.getTakeoffTime());
rechargeTime.setValue(profile.getRechargeTime());
edceActive.setSelected(Main.SETTINGS.edce().isActive());
edceInterval.setValue(Main.SETTINGS.edce().getInterval());
}
private void createDialog(Parent owner, Parent content){
@@ -59,6 +96,7 @@ public class SettingsController {
}
private void save() {
/*
Main.SETTINGS.setEMDNSub(emdnSubServ.getText());
EMDNUpdater.setSub(emdnSubServ.getText());
Main.SETTINGS.setEMDNActive(emdnOn.isSelected());
@@ -67,6 +105,21 @@ public class SettingsController {
EMDNUpdater.setUpdateOnly(emdnUpdateOnly.isSelected());
Main.SETTINGS.setEMDNAutoUpdate(emdnUpdateTime.getValue().longValue());
EMDNUpdater.setInterval(emdnUpdateTime.getValue().longValue());
*/
Profile profile =Main.SETTINGS.getProfile();
profile.setJumps(jumps.getValue().intValue());
profile.setLands(lands.getValue().intValue());
profile.setRoutesCount(routesCount.getValue().intValue());
profile.setFuelPrice(fuelPrice.getValue().intValue());
profile.setPathPriority(pathPriority.getValue());
profile.setJumpTime(jumpTime.getValue().intValue());
profile.setLandingTime(landingTime.getValue().intValue());
profile.setTakeoffTime(takeoffTime.getValue().intValue());
profile.setRechargeTime(rechargeTime.getValue().intValue());
Main.SETTINGS.edce().setActive(edceActive.isSelected());
Main.SETTINGS.edce().setInterval(edceInterval.getValue().intValue());
}
public void showDialog(Parent parent, Parent content){

View File

@@ -7,12 +7,12 @@ import javafx.scene.input.MouseButton;
import javafx.scene.layout.HBox;
import javafx.scene.layout.Priority;
import javafx.scene.layout.VBox;
import javafx.scene.shape.Circle;
import javafx.scene.text.Text;
import org.controlsfx.glyphfont.Glyph;
import ru.trader.model.RouteEntryModel;
import ru.trader.model.RouteModel;
import ru.trader.model.StationModel;
import ru.trader.view.support.cells.DistanceCell;
import java.util.ArrayList;
import java.util.List;
@@ -29,7 +29,7 @@ public class Track {
private final static String CSS_STATION_TEXT = "route-station-text";
private final RouteModel route;
private final HBox node = new HBox();
private final VBox node = new VBox();
private final IntegerProperty active;
private final List<Node> entryNodes;
@@ -44,7 +44,7 @@ public class Track {
private void build(){
StationModel prev = null;
for (RouteEntryModel entry : route.getEntries()) {
if (prev != null){
/* if (prev != null){
VBox track = new VBox();
VBox.setVgrow(track, Priority.ALWAYS);
track.getStyleClass().add(CSS_TRACK);
@@ -54,9 +54,11 @@ public class Track {
track.getChildren().addAll(t, Glyph.create("FontAwesome|LONG_ARROW_RIGHT"));
node.getChildren().addAll(track);
}
}*/
HBox entryNode = new HBox();
HBox stationNode = new HBox();
Circle circle = new Circle(5);
entryNode.getChildren().add(circle);
VBox stationNode = new VBox();
VBox icons = new VBox();
VBox.setVgrow(icons, Priority.ALWAYS);

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.7 KiB

View File

@@ -114,6 +114,8 @@ router.pane.ship.distance=Distance(LY):
router.pane.route=Route parameters
router.pane.route.from=From:
router.pane.route.to=To:
router.pane.route.fast=Fasted
router.button.search=Find
router.pane.route.jumps=Jumps:
router.button.recompute=Recompute
router.button.rebuild=Rebuild
@@ -121,6 +123,7 @@ router.button.routes=Routes
router.button.top=TOP 100
router.pane.total=Total
router.pane.total.profit=Profit:
router.pane.missions=Missions
# settings.fxml
settings.title=Settings
@@ -169,4 +172,10 @@ login.text.password=Password:
#verify code dialog
verify.title=Check verification code
verify.header=The verification code has now been sent to the email address associated with your Elite account. Please enter the code into the box below.
verify.content=Confirmation code:
verify.content=Confirmation code:
# missions.fxml
missions.label.starport=Starport:
missions.label.cargo=Cargo:
missions.label.quantity=Quantity:
missions.label.reward=Reward:

View File

@@ -114,6 +114,8 @@ router.pane.ship.distance=\u0414\u0438\u0441\u0442\u0430\u043D\u0446\u0438\u044F
router.pane.route=\u041F\u0430\u0440\u0430\u043C\u0435\u0442\u0440\u044B \u043C\u0430\u0440\u0448\u0440\u0443\u0442\u0430
router.pane.route.from=\u041E\u0442:
router.pane.route.to=\u0414\u043E:
router.pane.route.fast=\u0411\u044B\u0441\u0442\u0440\u044B\u0439
router.button.search=\u041D\u0430\u0439\u0442\u0438
router.pane.route.jumps=\u041F\u0440\u044B\u0436\u043A\u043E\u0432:
router.button.recompute=\u041F\u0435\u0440\u0435\u0441\u0447\u0438\u0442\u0430\u0442\u044C
router.button.rebuild=\u041F\u0435\u0440\u0435\u0441\u0442\u0440\u043E\u0438\u0442\u044C
@@ -121,6 +123,7 @@ router.button.routes=\u041C\u0430\u0440\u0448\u0440\u0443\u0442\u044B
router.button.top=TOP 100
router.pane.total=\u0418\u0442\u043E\u0433\u043E
router.pane.total.profit=\u041F\u0440\u0438\u0431\u044B\u043B\u044C:
router.pane.missions=\u041C\u0438\u0441\u0441\u0438\u0438
# settings.fxml
settings.title=\u041F\u0430\u0440\u0430\u043C\u0435\u0442\u0440\u044B
@@ -170,4 +173,10 @@ login.text.password=\u041F\u0430\u0440\u043E\u043B\u044C:
#verify code dialog
verify.title=\u041F\u0440\u043E\u0432\u0435\u0440\u043A\u0430 \u043A\u043E\u0434\u0430 \u0430\u043A\u0442\u0438\u0432\u0430\u0446\u0438\u0438
verify.header=\u0412\u0432\u0435\u0434\u0438\u0442\u0435 \u043A\u043E\u0434 \u0430\u043A\u0442\u0438\u0432\u0430\u0446\u0438\u0438, \u043E\u0442\u043F\u0440\u0430\u0432\u043B\u0435\u043D\u043D\u044B\u0439 Frontier \u043D\u0430 \u0432\u0430\u0448\u0443 \u044D\u043B\u0435\u043A\u0442\u0440\u043E\u043D\u043D\u0443\u044E \u043F\u043E\u0447\u0442\u0443
verify.content=\u041A\u043E\u0434 \u0430\u043A\u0442\u0438\u0432\u0430\u0446\u0438\u0438:
verify.content=\u041A\u043E\u0434 \u0430\u043A\u0442\u0438\u0432\u0430\u0446\u0438\u0438:
# missions.fxml
missions.label.starport=\u041A\u043E\u0441\u043C\u043E\u043F\u043E\u0440\u0442:
missions.label.cargo=\u0413\u0440\u0443\u0437:
missions.label.quantity=\u041A\u043E\u043B\u0438\u0447\u0435\u0441\u0442\u0432\u043E:
missions.label.reward=\u041D\u0430\u0433\u0440\u0430\u0434\u0430:

View File

@@ -1,8 +1,8 @@
<?xml version="1.0" encoding="UTF-8"?>
<?import javafx.scene.control.*?>
<?import javafx.scene.layout.*?>
<?import javafx.scene.layout.BorderPane?>
<?import javafx.scene.layout.VBox?>
<BorderPane xmlns="http://javafx.com/javafx/8" xmlns:fx="http://javafx.com/fxml/1"
fx:controller="ru.trader.controllers.MainController"
fx:id="mainPane"
@@ -48,7 +48,7 @@
</VBox>
</top>
<center>
<TabPane tabClosingPolicy="UNAVAILABLE" BorderPane.alignment="CENTER">
<TabPane fx:id="tabs" tabClosingPolicy="UNAVAILABLE" BorderPane.alignment="CENTER">
<Tab text="%market.items">
<fx:include fx:id="items" source="items.fxml"/>
</Tab>
@@ -56,15 +56,12 @@
<fx:include fx:id="offers" source="offers.fxml"/>
</Tab>
<Tab text="%main.tab.routes">
<fx:include fx:id="router" source="router.fxml"/>
<fx:include source="routeSearch.fxml"/>
</Tab>
<Tab text="%main.tab.search">
<fx:include source="search.fxml"/>
</Tab>
<Tab text="Маршрут">
<fx:include source="routeSearch.fxml"/>
</Tab>
<Tab text="Миссии">
<Tab fx:id="track" text="Текущий маршрут">
<fx:include source="routeTrack.fxml"/>
</Tab>
</TabPane>

View File

@@ -1,71 +1,47 @@
<?xml version="1.0" encoding="UTF-8"?>
<?import javafx.geometry.*?>
<?import javafx.scene.control.*?>
<?import javafx.scene.image.*?>
<?import javafx.scene.layout.*?>
<?import org.controlsfx.glyphfont.Glyph?>
<?import ru.trader.view.support.NumberField?>
<?import ru.trader.view.support.cells.ItemListCell?>
<?import ru.trader.view.support.ItemStringConverter?>
<?import ru.trader.view.support.NumberField?>
<GridPane xmlns="http://javafx.com/javafx/8" xmlns:fx="http://javafx.com/fxml/1"
fx:controller="ru.trader.controllers.MissionsController"
hgap="10" vgap="5">
<columnConstraints>
<ColumnConstraints minWidth="180" />
<ColumnConstraints minWidth="180" />
<ColumnConstraints minWidth="180" />
<ColumnConstraints minWidth="100" maxWidth="100"/>
<ColumnConstraints minWidth="140" maxWidth="140"/>
</columnConstraints>
<Label text="Курьерские"/>
<HBox GridPane.rowIndex="1">
<Label text="Доставить на:"/>
<TextField fx:id="receiverText" prefWidth="160"/>
<HBox spacing="4" GridPane.columnSpan="2" alignment="CENTER">
<ToggleButton fx:id="courierBtn"><graphic>
<ImageView fitWidth="30" preserveRatio="true" pickOnBounds="true" smooth="true">
<image><Image url="@/images/courier_mission.jpg" /></image>
</ImageView></graphic>
</ToggleButton>
<ToggleButton fx:id="deliveryBtn"><graphic>
<ImageView fitWidth="30" preserveRatio="true" pickOnBounds="true" smooth="true">
<image><Image url="@/images/transport_mission.jpg" /></image>
</ImageView></graphic>
</ToggleButton>
<ToggleButton fx:id="supplyBtn"><graphic>
<ImageView fitWidth="30" preserveRatio="true" pickOnBounds="true" smooth="true">
<image><Image url="@/images/delivering_mission.jpg" /></image>
</ImageView></graphic>
</ToggleButton>
</HBox>
<HBox GridPane.rowIndex="3">
<Label text="Прибыль:"/>
<NumberField fx:id="courierProfit" value="0" />
</HBox>
<Button fx:id="addCourierBtn" prefWidth="30" onAction="#addCourier" GridPane.rowIndex="4">
<graphic><Glyph text="FontAwesome|PLUS"/></graphic>
</Button>
<Label text="Доставка" GridPane.columnIndex="1"/>
<HBox GridPane.rowIndex="1" GridPane.columnIndex="1">
<Label text="Доставить на:"/>
<TextField fx:id="buyerText" prefWidth="160"/>
</HBox>
<HBox GridPane.rowIndex="2" GridPane.columnIndex="1">
<Label text="Кол-во:"/>
<NumberField fx:id="deliveryCount" value="0"/>
</HBox>
<HBox GridPane.rowIndex="3" GridPane.columnIndex="1">
<Label text="Прибыль:"/>
<NumberField fx:id="deliveryProfit" value="0"/>
</HBox>
<Button fx:id="addDeliveryBtn" prefWidth="30" onAction="#addDelivery" GridPane.rowIndex="4" GridPane.columnIndex="1">
<graphic><Glyph text="FontAwesome|PLUS"/></graphic>
</Button>
<Label text="Поставка" GridPane.columnIndex="2"/>
<HBox GridPane.rowIndex="1" GridPane.columnIndex="2">
<Label text="Товар:"/>
<ComboBox fx:id="item" prefWidth="160">
<cellFactory><ItemListCell /></cellFactory>
<converter><ItemStringConverter /></converter>
</ComboBox>
</HBox>
<HBox GridPane.rowIndex="2" GridPane.columnIndex="2">
<Label text="Кол-во:"/>
<NumberField fx:id="supplyCount" value="0"/>
</HBox>
<HBox GridPane.rowIndex="3" GridPane.columnIndex="2">
<Label text="Прибыль:"/>
<NumberField fx:id="supplyProfit" value="0"/>
</HBox>
<Button fx:id="addSupplyBtn" prefWidth="30" onAction="#addSupply" GridPane.rowIndex="4" GridPane.columnIndex="2">
<graphic><Glyph text="FontAwesome|PLUS"/></graphic>
</Button>
<Label GridPane.rowIndex="1" text="%missions.label.starport"/>
<TextField fx:id="starportText" GridPane.rowIndex="1" GridPane.columnIndex="1"/>
<Label GridPane.rowIndex="2" text="%missions.label.cargo"/>
<ComboBox fx:id="cargo" GridPane.rowIndex="2" GridPane.columnIndex="1">
<cellFactory><ItemListCell /></cellFactory>
<converter><ItemStringConverter /></converter>
</ComboBox>
<Label GridPane.rowIndex="3" text="%missions.label.quantity"/>
<NumberField fx:id="quantity" GridPane.rowIndex="3" GridPane.columnIndex="1" value="0"/>
<Label GridPane.rowIndex="4" text="%missions.label.reward"/>
<NumberField fx:id="reward" GridPane.rowIndex="4" GridPane.columnIndex="1" value="0" />
</GridPane>

View File

@@ -4,10 +4,10 @@
<?import javafx.scene.control.*?>
<?import javafx.scene.control.cell.*?>
<?import javafx.scene.layout.*?>
<?import org.controlsfx.control.SegmentedButton?>
<?import ru.trader.view.support.cells.*?>
<GridPane xmlns="http://javafx.com/javafx/8" xmlns:fx="http://javafx.com/fxml/1"
fx:controller="ru.trader.controllers.OffersController">
fx:controller="ru.trader.controllers.OffersController"
prefHeight="500">
<fx:define><Insets fx:id="stationsMargin" left="5" right="5" /></fx:define>
<fx:define><Insets fx:id="stationsPadding" left="12" right="10" /></fx:define>
@@ -17,14 +17,15 @@
<ColumnConstraints fillWidth="true"/>
</columnConstraints>
<TitledPane GridPane.rowSpan="3" text="%market.systems" minWidth="270" prefHeight="590" collapsible="false">
<TextField fx:id="systemText" />
</TitledPane>
<TitledPane GridPane.columnIndex="1" text="%market.stations" maxHeight="60" collapsible="false">
<SegmentedButton fx:id="stationsBar" />
</TitledPane>
<TitledPane GridPane.rowIndex="1" GridPane.columnIndex="1" text="" maxHeight="60" collapsible="false">
<VBox GridPane.rowSpan="2" GridPane.vgrow="ALWAYS" minWidth="270">
<TitledPane text="%market.system.name" collapsible="false">
<TextField fx:id="systemText" />
</TitledPane>
<TitledPane VBox.vgrow="ALWAYS" text="%market.stations" collapsible="false">
<ListView fx:id="stationsList"/>
</TitledPane>
</VBox>
<TitledPane fx:id="stationPane" GridPane.columnIndex="1" maxHeight="60" collapsible="false">
<VBox>
<HBox spacing="4">
<Label text="%offers.text.distance"/>
@@ -51,7 +52,7 @@
</VBox>
</TitledPane>
<Accordion GridPane.rowIndex="2" GridPane.columnIndex="1" GridPane.hgrow="ALWAYS" GridPane.vgrow="ALWAYS">
<Accordion GridPane.rowIndex="1" GridPane.columnIndex="1" GridPane.hgrow="ALWAYS" GridPane.vgrow="ALWAYS">
<panes>
<TitledPane fx:id="paneSells" animated="false" text="%offers.pane.sell">
<TableView fx:id="tblSell" editable="true">

View File

@@ -11,19 +11,23 @@
<Label text="Имя:" />
<TextField fx:id="name" />
<StackPane>
<HBox fx:id="profileInfo">
<HBox fx:id="profileInfo" spacing="4">
<Label text="Баланс:" />
<NumberField fx:id="balance" />
<Label text="Система:" />
<TextField fx:id="systemText" />
<Button fx:id="btnAddSystem"/>
<Button fx:id="btnAddSystem" minWidth="30">
<graphic><Glyph text="FontAwesome|EDIT"/></graphic>
</Button>
<Label text="Станция:" />
<ComboBox fx:id="station" />
<Button fx:id="btnAddStation"/>
<Button fx:id="btnAddStation" minWidth="30">
<graphic><Glyph text="FontAwesome|EDIT"/></graphic>
</Button>
<Label text="В доке:" />
<CheckBox fx:id="docked" />
</HBox>
<HBox fx:id="shipInfo">
<HBox fx:id="shipInfo" spacing="4">
<Label text="Трюм:" />
<NumberField fx:id="cargo" maxWidth="60"/>
<Label text="Топливный бак:" />

View File

@@ -2,35 +2,43 @@
<?import javafx.scene.control.*?>
<?import javafx.scene.layout.*?>
<?import ru.trader.view.support.cells.OfferListCell?>
<?import javafx.geometry.Insets?>
<?import ru.trader.view.support.NumberField?>
<?import org.controlsfx.glyphfont.Glyph?>
<?import org.controlsfx.glyphfont.*?>
<VBox xmlns="http://javafx.com/javafx/8" xmlns:fx="http://javafx.com/fxml/1"
fx:controller="ru.trader.controllers.RouteSearchController"
spacing="4" >
<HBox>
<HBox>
<Label text="От:" />
<TextField fx:id="fromSystemText" />
<ComboBox fx:id="fromStation" />
<Button onAction="#currentAsFrom"/>
fx:controller="ru.trader.controllers.RouteSearchController">
<TitledPane text="%router.pane.route" minHeight="80" collapsible="false">
<VBox spacing="4">
<HBox spacing="10" alignment="CENTER">
<HBox spacing="2" alignment="BASELINE_LEFT">
<Label text="%router.pane.route.from" />
<TextField fx:id="fromSystemText" />
<ComboBox fx:id="fromStation" minWidth="140"/>
<Button minWidth="30" onAction="#currentAsFrom"><graphic><Glyph text="FontAwesome|MAP_MARKER"/></graphic></Button>
</HBox>
<HBox spacing="2" alignment="BASELINE_LEFT">
<Label text="%router.pane.route.to" />
<TextField fx:id="toSystemText" />
<ComboBox fx:id="toStation" minWidth="140"/>
<Button minWidth="30" onAction="#loop"><graphic><Glyph text="FontAwesome|RETWEET"/></graphic></Button>
</HBox>
<CheckBox fx:id="cbFast" text="%router.pane.route.fast"/>
</HBox>
<HBox spacing="10" alignment="CENTER">
<Button prefWidth="80" text="%router.button.search" onAction="#search" />
<Button prefWidth="80" text="%router.button.top" onAction="#searchTop" />
</HBox>
</VBox>
</TitledPane>
<TitledPane text="%router.pane.missions" collapsible="false">
<HBox spacing="10">
<fx:include fx:id="missions" source="missions.fxml"/>
<HBox spacing="4" maxHeight="200">
<VBox spacing="4" alignment="TOP_RIGHT">
<Button prefWidth="30" onAction="#addMission"><graphic><Glyph text="FontAwesome|PLUS"/></graphic></Button>
<Button prefWidth="30" onAction="#removeMission"><graphic><Glyph text="FontAwesome|MINUS"/></graphic></Button>
<Button prefWidth="30" onAction="#clearMissions"><graphic><Glyph text="FontAwesome|TRASH"/></graphic></Button>
</VBox>
<ListView fx:id="missionsList" />
</HBox>
</HBox>
<HBox>
<Label text="До:" />
<TextField fx:id="toSystemText" />
<ComboBox fx:id="toStation" />
<Button onAction="#loop"/>
</HBox>
<CheckBox fx:id="cbFast" text="Быстрый"/>
<Button prefWidth="80" text="Найти" onAction="#search" />
</HBox>
<VBox>
<fx:include fx:id="missions" source="missions.fxml"/>
<HBox>
<ListView fx:id="missionsList" />
<Button prefWidth="30" onAction="#removeMission"><graphic><Glyph text="FontAwesome|MINUS"/></graphic></Button>
</HBox>
</VBox>
</TitledPane>
</VBox>

View File

@@ -1,16 +1,13 @@
<?xml version="1.0" encoding="UTF-8"?>
<?import javafx.scene.control.*?>
<?import javafx.scene.layout.*?>
<?import ru.trader.view.support.cells.OfferListCell?>
<?import javafx.geometry.Insets?>
<?import ru.trader.view.support.NumberField?>
<?import org.controlsfx.glyphfont.Glyph?>
<VBox xmlns="http://javafx.com/javafx/8" xmlns:fx="http://javafx.com/fxml/1"
<HBox xmlns="http://javafx.com/javafx/8" xmlns:fx="http://javafx.com/fxml/1"
fx:controller="ru.trader.controllers.RouteTrackController"
spacing="4" >
<HBox fx:id="track" minHeight="100"/>
<VBox>
<ToggleButton minWidth="30" onAction="#toggleEdit">
<graphic><Glyph text="FontAwesome|EDIT"/></graphic>
</ToggleButton>
@@ -19,8 +16,12 @@
<fx:include fx:id="missions" source="missions.fxml"/>
<HBox>
<ListView fx:id="addMissionsList" maxHeight="150"/>
<Button prefWidth="30" onAction="#removeMission"><graphic><Glyph text="FontAwesome|MINUS"/></graphic></Button>
<Button prefWidth="80" text="Добавить" onAction="#addMissions" />
<VBox spacing="4" alignment="TOP_RIGHT">
<Button prefWidth="30" onAction="#addMission"><graphic><Glyph text="FontAwesome|PLUS"/></graphic></Button>
<Button prefWidth="30" onAction="#removeMission"><graphic><Glyph text="FontAwesome|MINUS"/></graphic></Button>
<Button prefWidth="30" onAction="#clearMissions"><graphic><Glyph text="FontAwesome|TRASH"/></graphic></Button>
</VBox>
<Button prefWidth="80" text="Добавить" onAction="#addMissionsToTrack" />
</HBox>
</VBox>
<VBox fx:id="infoGroup">
@@ -44,4 +45,7 @@
</VBox>
</VBox>
</StackPane>
</VBox>
</VBox>
<VBox fx:id="track" minWidth="200"/>
</HBox>

View File

@@ -16,7 +16,7 @@
<ColumnConstraints fillWidth="true"/>
</columnConstraints>
<TitledPane text="%market.systems" prefHeight="590" collapsible="false">
<TitledPane text="%market.systems" prefHeight="500" collapsible="false">
<GridPane vgap="4">
<columnConstraints>
<ColumnConstraints minWidth="100"/>

View File

@@ -1,18 +1,13 @@
<?import javafx.scene.layout.GridPane?>
<?import javafx.scene.layout.ColumnConstraints?>
<?import javafx.scene.control.Label?>
<?import ru.trader.view.support.NumberField?>
<?import ru.trader.view.support.TitledBorder?>
<?import javafx.scene.control.CheckBox?>
<?import javafx.scene.control.TextField?>
<?import javafx.scene.control.*?>
<?import javafx.scene.layout.*?>
<?import ru.trader.view.support.*?>
<GridPane xmlns="http://javafx.com/javafx/8" xmlns:fx="http://javafx.com/fxml/1" fx:controller="ru.trader.controllers.SettingsController"
styleClass="dialog" vgap="4" hgap="8">
<columnConstraints>
<ColumnConstraints />
<ColumnConstraints minWidth="260" maxWidth="260"/>
</columnConstraints>
<!--
<Label text="%settings.emdn" styleClass="settings-group" GridPane.halignment="CENTER" GridPane.columnSpan="2"/>
<Label text="%settings.emdn.on" GridPane.rowIndex="1"/>
<CheckBox fx:id="emdnOn" GridPane.columnIndex="1" GridPane.rowIndex="1" disable="true"/>
@@ -22,11 +17,32 @@
<CheckBox fx:id="emdnUpdateOnly" GridPane.columnIndex="1" GridPane.rowIndex="3" />
<Label text="%settings.emdn.auto" GridPane.rowIndex="4" />
<NumberField fx:id="emdnUpdateTime" maxWidth="100" GridPane.columnIndex="1" GridPane.rowIndex="4" />
<Label text="%settings.performance" styleClass="settings-group" GridPane.halignment="CENTER" GridPane.columnSpan="2" GridPane.rowIndex="5"/>
<Label text="%settings.performance.segmentSize" GridPane.rowIndex="6" />
<NumberField fx:id="segmentSize" maxWidth="100" GridPane.columnIndex="1" GridPane.rowIndex="6" />
<Label text="%settings.performance.limit" GridPane.rowIndex="7" />
<NumberField fx:id="pathsCount" maxWidth="100" GridPane.columnIndex="1" GridPane.rowIndex="7" />
-->
<Label text="EDCE" styleClass="settings-group" GridPane.halignment="CENTER" GridPane.columnSpan="2"/>
<Label text="Включить" GridPane.rowIndex="1"/>
<CheckBox fx:id="edceActive" GridPane.columnIndex="1" GridPane.rowIndex="1"/>
<Label text="Интервал" GridPane.rowIndex="2" />
<NumberField fx:id="edceInterval" maxWidth="100" GridPane.columnIndex="1" GridPane.rowIndex="2" />
<Label text="%settings.performance" styleClass="settings-group" GridPane.halignment="CENTER" GridPane.columnSpan="2" GridPane.rowIndex="3"/>
<Label text="Прыжков:" GridPane.rowIndex="4" />
<NumberField fx:id="jumps" maxWidth="100" GridPane.columnIndex="1" GridPane.rowIndex="4" />
<Label text="Посадок:" GridPane.rowIndex="5" />
<NumberField fx:id="lands" maxWidth="100" GridPane.columnIndex="1" GridPane.rowIndex="5" />
<Label text="Количество маршрутов:" GridPane.rowIndex="6" />
<NumberField fx:id="routesCount" maxWidth="100" GridPane.columnIndex="1" GridPane.rowIndex="6" />
<Label text="Параметры поиска" styleClass="settings-group" GridPane.halignment="CENTER" GridPane.columnSpan="2" GridPane.rowIndex="7"/>
<Label text="Стоимость 1т топлива:" GridPane.rowIndex="8" />
<NumberField fx:id="fuelPrice" maxWidth="100" GridPane.columnIndex="1" GridPane.rowIndex="8" />
<Label text="Тип маршрутов:" GridPane.rowIndex="9" />
<ComboBox fx:id="pathPriority" maxWidth="100" GridPane.columnIndex="1" GridPane.rowIndex="9" />
<Label text="Время гиперпрыжка:" GridPane.rowIndex="10" />
<NumberField fx:id="jumpTime" maxWidth="100" GridPane.columnIndex="1" GridPane.rowIndex="10" />
<Label text="Время посадки:" GridPane.rowIndex="11" />
<NumberField fx:id="landingTime" maxWidth="100" GridPane.columnIndex="1" GridPane.rowIndex="11" />
<Label text="Время взлета:" GridPane.rowIndex="12" />
<NumberField fx:id="takeoffTime" maxWidth="100" GridPane.columnIndex="1" GridPane.rowIndex="12" />
<Label text="Время перезарядки FSD:" GridPane.rowIndex="13" />
<NumberField fx:id="rechargeTime" maxWidth="100" GridPane.columnIndex="1" GridPane.rowIndex="13" />
</GridPane>

View File

@@ -134,4 +134,52 @@ HBox.fields-group hbox-margin{
#items HBox.reset Glyph:hover {
-fx-opacity: 1;
}
#helper {
-fx-border-style: solid;
-fx-border-color: #b83500;
-fx-opacity: 0.85;
}
#helper.root {
-fx-base: #232323;
-fx-background: -fx-base;
-fx-control-inner-background: -fx-base;
-fx-control-inner-background-alt: -fx-base;
-fx-light-text-color: orangered;
-fx-mid-text-color: derive(-fx-light-text-color, -50%);
-fx-dark-text-color: derive(-fx-light-text-color, -90%);
-fx-accent: #c93700;
-fx-default-button: #861818;
-fx-focus-color: #bb6b00;
-fx-faint-focus-color: #bb6b0022;
}
.text-small, .text-medium, .text-big {
-fx-font-weight: bold;
}
.text-big {
-fx-font-size: 19;
}
.text-medium {
-fx-font-size: 14;
}
.text-small {
-fx-font-size: 12;
}
.service-ok {
-fx-text-fill: green;
}
.service-warning {
-fx-text-fill: red;
}