From 84585b59368d06feeb1bc91dc93dd820be78d481 Mon Sep 17 00:00:00 2001 From: Mo Date: Tue, 27 Oct 2015 14:22:56 +0300 Subject: [PATCH] modify UI --- client/src/main/java/ru/trader/Main.java | 2 +- .../trader/controllers/LoginController.java | 3 +- .../ru/trader/controllers/MainController.java | 14 +- .../controllers/MissionsController.java | 147 +++++++++--------- .../trader/controllers/OffersController.java | 38 ++--- .../controllers/RouteSearchController.java | 34 +++- .../controllers/RouteTrackController.java | 111 +++++++++---- .../java/ru/trader/controllers/Screeners.java | 4 + .../controllers/SettingsController.java | 61 +++++++- .../java/ru/trader/view/support/Track.java | 12 +- .../main/resources/images/courier_mission.jpg | Bin 0 -> 4625 bytes .../resources/images/delivering_mission.jpg | Bin 0 -> 4605 bytes .../resources/images/transport_mission.jpg | Bin 0 -> 4794 bytes .../resources/lang/locale_en_US.properties | 11 +- .../resources/lang/locale_ru_RU.properties | 11 +- client/src/main/resources/view/main.fxml | 13 +- client/src/main/resources/view/missions.fxml | 86 ++++------ client/src/main/resources/view/offers.fxml | 23 +-- client/src/main/resources/view/profile.fxml | 12 +- .../src/main/resources/view/routeSearch.fxml | 66 ++++---- .../src/main/resources/view/routeTrack.fxml | 22 +-- client/src/main/resources/view/search.fxml | 2 +- client/src/main/resources/view/settings.fxml | 44 ++++-- client/src/main/resources/view/style.css | 48 ++++++ 24 files changed, 485 insertions(+), 279 deletions(-) create mode 100644 client/src/main/resources/images/courier_mission.jpg create mode 100644 client/src/main/resources/images/delivering_mission.jpg create mode 100644 client/src/main/resources/images/transport_mission.jpg diff --git a/client/src/main/java/ru/trader/Main.java b/client/src/main/java/ru/trader/Main.java index b144600..b7acdce 100644 --- a/client/src/main/java/ru/trader/Main.java +++ b/client/src/main/java/ru/trader/Main.java @@ -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 { diff --git a/client/src/main/java/ru/trader/controllers/LoginController.java b/client/src/main/java/ru/trader/controllers/LoginController.java index ec38ac7..e6af89d 100644 --- a/client/src/main/java/ru/trader/controllers/LoginController.java +++ b/client/src/main/java/ru/trader/controllers/LoginController.java @@ -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> result = dialog.showAndWait(); clear(); return result; diff --git a/client/src/main/java/ru/trader/controllers/MainController.java b/client/src/main/java/ru/trader/controllers/MainController.java index 18d5bda..2e2b504 100644 --- a/client/src/main/java/ru/trader/controllers/MainController.java +++ b/client/src/main/java/ru/trader/controllers/MainController.java @@ -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); + } } diff --git a/client/src/main/java/ru/trader/controllers/MissionsController.java b/client/src/main/java/ru/trader/controllers/MissionsController.java index 64df6ab..085b89a 100644 --- a/client/src/main/java/ru/trader/controllers/MissionsController.java +++ b/client/src/main/java/ru/trader/controllers/MissionsController.java @@ -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 receiver; + private TextField starportText; + private AutoCompletion starport; @FXML - private NumberField courierProfit; + private ComboBox 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 buyer; - @FXML - private NumberField deliveryCount; - @FXML - private NumberField deliveryProfit; - @FXML - private Button addDeliveryBtn; - - @FXML - private ComboBox 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 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 stationNames) { - receiver.setSuggestions(stationNames); - buyer.setSuggestions(stationNames); + starport.setSuggestions(stationNames); } void setItems(ObservableList 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 getMissions() { diff --git a/client/src/main/java/ru/trader/controllers/OffersController.java b/client/src/main/java/ru/trader/controllers/OffersController.java index 5c4cd7b..b52f96b 100644 --- a/client/src/main/java/ru/trader/controllers/OffersController.java +++ b/client/src/main/java/ru/trader/controllers/OffersController.java @@ -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 system; @FXML - private SegmentedButton stationsBar; + private ListView stationsList; @FXML private TableView tblSell; @FXML @@ -63,12 +59,12 @@ public class OffersController { private CheckBox cbMediumLandpad; @FXML private CheckBox cbLargeLandpad; + @FXML + private TitledPane stationPane; private final List sells = FXCollections.observableArrayList(); private final List 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 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(); }); diff --git a/client/src/main/java/ru/trader/controllers/RouteSearchController.java b/client/src/main/java/ru/trader/controllers/RouteSearchController.java index 92e20ab..6c10a3c 100644 --- a/client/src/main/java/ru/trader/controllers/RouteSearchController.java +++ b/client/src/main/java/ru/trader/controllers/RouteSearchController.java @@ -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 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 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(); } } diff --git a/client/src/main/java/ru/trader/controllers/RouteTrackController.java b/client/src/main/java/ru/trader/controllers/RouteTrackController.java index a82ebe5..cf37b05 100644 --- a/client/src/main/java/ru/trader/controllers/RouteTrackController.java +++ b/client/src/main/java/ru/trader/controllers/RouteTrackController.java @@ -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 stations = BindingsHelper.observableList(route.getStations(index), StationModel::getFullName); - missionsController.setStations(stations); - ObservableList 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 stations = BindingsHelper.observableList(route.getStations(index), StationModel::getFullName); + missionsController.setStations(stations); + ObservableList 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 currentEntryListener = (ov, o, n) -> ViewUtils.doFX(() -> setIndex(n.intValue())); private final InvalidationListener activeEntryListener = ov -> ViewUtils.doFX(this::update); - private final ChangeListener routeListener = (ov, o, n) -> { - if (n != null){ - ViewUtils.doFX(() -> setRoute(n)); - } - }; + private final ChangeListener routeListener = (ov, o, n) -> ViewUtils.doFX(() -> setRoute(n)); } diff --git a/client/src/main/java/ru/trader/controllers/Screeners.java b/client/src/main/java/ru/trader/controllers/Screeners.java index 65a6e42..1f8b56c 100644 --- a/client/src/main/java/ru/trader/controllers/Screeners.java +++ b/client/src/main/java/ru/trader/controllers/Screeners.java @@ -264,4 +264,8 @@ public class Screeners { filterController.init(); EMDNUpdater.setMarket(MainController.getMarket()); } + + public static void showTrackTab(){ + mainController.showTrack(); + } } diff --git a/client/src/main/java/ru/trader/controllers/SettingsController.java b/client/src/main/java/ru/trader/controllers/SettingsController.java index b7315f4..9843114 100644 --- a/client/src/main/java/ru/trader/controllers/SettingsController.java +++ b/client/src/main/java/ru/trader/controllers/SettingsController.java @@ -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 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 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){ diff --git a/client/src/main/java/ru/trader/view/support/Track.java b/client/src/main/java/ru/trader/view/support/Track.java index 7b56c7b..9a1f2b9 100644 --- a/client/src/main/java/ru/trader/view/support/Track.java +++ b/client/src/main/java/ru/trader/view/support/Track.java @@ -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 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); diff --git a/client/src/main/resources/images/courier_mission.jpg b/client/src/main/resources/images/courier_mission.jpg new file mode 100644 index 0000000000000000000000000000000000000000..a8b028f91a11896ceeb1f74005f4e3cd462e1cad GIT binary patch literal 4625 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 L&)hA83#0!4MP^Cg literal 0 HcmV?d00001 diff --git a/client/src/main/resources/images/transport_mission.jpg b/client/src/main/resources/images/transport_mission.jpg new file mode 100644 index 0000000000000000000000000000000000000000..7ac796b89a646ff33ebcbdc43714c78bf3b9323c GIT binary patch literal 4794 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 literal 0 HcmV?d00001 diff --git a/client/src/main/resources/lang/locale_en_US.properties b/client/src/main/resources/lang/locale_en_US.properties index b4fa8c4..892eadf 100644 --- a/client/src/main/resources/lang/locale_en_US.properties +++ b/client/src/main/resources/lang/locale_en_US.properties @@ -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: \ No newline at end of file +verify.content=Confirmation code: + +# missions.fxml +missions.label.starport=Starport: +missions.label.cargo=Cargo: +missions.label.quantity=Quantity: +missions.label.reward=Reward: \ No newline at end of file diff --git a/client/src/main/resources/lang/locale_ru_RU.properties b/client/src/main/resources/lang/locale_ru_RU.properties index 54b7a0b..d95ac1a 100644 --- a/client/src/main/resources/lang/locale_ru_RU.properties +++ b/client/src/main/resources/lang/locale_ru_RU.properties @@ -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: \ No newline at end of file +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: \ No newline at end of file diff --git a/client/src/main/resources/view/main.fxml b/client/src/main/resources/view/main.fxml index 2324703..cd95c15 100644 --- a/client/src/main/resources/view/main.fxml +++ b/client/src/main/resources/view/main.fxml @@ -1,8 +1,8 @@ - - + +

- + @@ -56,15 +56,12 @@ - + - - - - + diff --git a/client/src/main/resources/view/missions.fxml b/client/src/main/resources/view/missions.fxml index 8166cca..8b04729 100644 --- a/client/src/main/resources/view/missions.fxml +++ b/client/src/main/resources/view/missions.fxml @@ -1,71 +1,47 @@ - + - - - + - - - + + - diff --git a/client/src/main/resources/view/offers.fxml b/client/src/main/resources/view/offers.fxml index 565343b..54b5857 100644 --- a/client/src/main/resources/view/offers.fxml +++ b/client/src/main/resources/view/offers.fxml @@ -4,10 +4,10 @@ - + fx:controller="ru.trader.controllers.OffersController" + prefHeight="500"> @@ -17,14 +17,15 @@ - - - - - - - - + + + + + + + + + - + diff --git a/client/src/main/resources/view/profile.fxml b/client/src/main/resources/view/profile.fxml index 5682890..7d73811 100644 --- a/client/src/main/resources/view/profile.fxml +++ b/client/src/main/resources/view/profile.fxml @@ -11,19 +11,23 @@ diff --git a/client/src/main/resources/view/routeTrack.fxml b/client/src/main/resources/view/routeTrack.fxml index 0f68cdb..6cc4cc9 100644 --- a/client/src/main/resources/view/routeTrack.fxml +++ b/client/src/main/resources/view/routeTrack.fxml @@ -1,16 +1,13 @@ + - - - - - - + @@ -19,8 +16,12 @@ - - + + + +