Archived
0

localization update

This commit is contained in:
iMoHax
2016-03-18 16:05:02 +03:00
parent 9a567a436f
commit 7409160fbe
47 changed files with 395 additions and 171 deletions

View File

@@ -9,6 +9,7 @@ import javafx.stage.Stage;
import org.apache.log4j.PropertyConfigurator;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import ru.trader.controllers.Dialogs;
import ru.trader.controllers.MainController;
import ru.trader.controllers.Screeners;
import ru.trader.view.support.Localization;
@@ -76,6 +77,7 @@ public class Main extends Application {
MainController.getWorld().refresh();
loadMainScene();
loadResources();
Dialogs.initButtons();
primaryStage.show();
if (Main.SETTINGS.helper().isVisible()){
Screeners.showHelper();
@@ -90,8 +92,8 @@ public class Main extends Application {
try {
if (World.getMarket().isChange()) {
Optional<ButtonType> res = Screeners.showConfirm(Localization.getString("dialog.confirm.save"));
if (res.isPresent() && res.get() == ButtonType.YES) World.save();
else if (!res.isPresent() || res.get() == ButtonType.CANCEL) {
if (res.isPresent() && res.get() == Dialogs.YES) World.save();
else if (!res.isPresent() || res.get() == Dialogs.CANCEL) {
we.consume();
return;
}

View File

@@ -0,0 +1,27 @@
package ru.trader.controllers;
import javafx.scene.control.ButtonBar;
import javafx.scene.control.ButtonType;
import ru.trader.view.support.Localization;
public class Dialogs {
public static ButtonType OK;
public static ButtonType SAVE;
public static ButtonType CANCEL;
public static ButtonType YES;
public static ButtonType NO;
public static ButtonType LOGIN;
static {
initButtons();
}
public static void initButtons(){
OK = new ButtonType(Localization.getString("dialog.button.ok"), ButtonBar.ButtonData.OK_DONE);
SAVE = new ButtonType(Localization.getString("dialog.button.save"), ButtonBar.ButtonData.OK_DONE);
CANCEL = new ButtonType(Localization.getString("dialog.button.cancel"), ButtonBar.ButtonData.CANCEL_CLOSE);
YES = new ButtonType(Localization.getString("dialog.button.yes"), ButtonBar.ButtonData.YES);
NO = new ButtonType(Localization.getString("dialog.button.no"), ButtonBar.ButtonData.NO);
LOGIN = new ButtonType(Localization.getString("login.text.login"), ButtonBar.ButtonData.OK_DONE);
}
}

View File

@@ -113,11 +113,10 @@ public class FilterController {
dlg = new Dialog<>();
if (owner != null) dlg.initOwner(owner.getScene().getWindow());
dlg.setTitle(Localization.getString("filter.title"));
ButtonType saveButton = new ButtonType(Localization.getString("dialog.button.save"), ButtonBar.ButtonData.OK_DONE);
dlg.getDialogPane().setContent(content);
dlg.getDialogPane().getButtonTypes().addAll(saveButton, ButtonType.CANCEL);
dlg.getDialogPane().getButtonTypes().addAll(Dialogs.SAVE, Dialogs.CANCEL);
dlg.setResultConverter(dialogButton -> {
if (dialogButton == saveButton) {
if (dialogButton == Dialogs.SAVE) {
save();
return this.filter;
}

View File

@@ -3,7 +3,6 @@ package ru.trader.controllers;
import javafx.collections.FXCollections;
import javafx.fxml.FXML;
import javafx.scene.Parent;
import javafx.scene.control.ButtonType;
import javafx.scene.control.ComboBox;
import javafx.scene.control.Dialog;
import javafx.scene.control.TextField;
@@ -34,9 +33,9 @@ public class GroupAddController {
if (owner != null) dlg.initOwner(owner.getScene().getWindow());
dlg.setTitle(Localization.getString("dialog.group.title"));
dlg.getDialogPane().setContent(content);
dlg.getDialogPane().getButtonTypes().addAll(ButtonType.OK, ButtonType.CANCEL);
dlg.getDialogPane().getButtonTypes().addAll(Dialogs.OK, Dialogs.CANCEL);
dlg.setResultConverter(dialogButton -> {
if (dialogButton == ButtonType.OK) {
if (dialogButton == Dialogs.OK) {
return add(market);
}
return null;

View File

@@ -36,9 +36,9 @@ public class ItemAddController {
if (owner != null) dlg.initOwner(owner.getScene().getWindow());
dlg.setTitle(Localization.getString("dialog.item.title"));
dlg.getDialogPane().setContent(content);
dlg.getDialogPane().getButtonTypes().addAll(ButtonType.OK, ButtonType.CANCEL);
dlg.getDialogPane().getButtonTypes().addAll(Dialogs.OK, Dialogs.CANCEL);
dlg.setResultConverter(dialogButton -> {
if (dialogButton == ButtonType.OK) {
if (dialogButton == Dialogs.OK) {
return add(market);
}
return null;

View File

@@ -30,9 +30,8 @@ public class LoginController {
dialog.setTitle(Localization.getString("login.title"));
dialog.setHeaderText(Localization.getString("login.header"));
dialog.getDialogPane().setContent(content);
ButtonType loginButtonType = new ButtonType(Localization.getString("login.text.login"), ButtonBar.ButtonData.OK_DONE);
dialog.getDialogPane().getButtonTypes().addAll(loginButtonType, ButtonType.CANCEL);
Node loginButton = dialog.getDialogPane().lookupButton(loginButtonType);
dialog.getDialogPane().getButtonTypes().addAll(Dialogs.LOGIN, Dialogs.CANCEL);
Node loginButton = dialog.getDialogPane().lookupButton(Dialogs.LOGIN);
loginButton.setDisable(true);
email.textProperty().addListener((observable, oldValue, newValue) -> {
loginButton.setDisable(newValue.trim().isEmpty());
@@ -40,7 +39,7 @@ public class LoginController {
});
email.setText(Main.SETTINGS.edce().getEmail());
dialog.setResultConverter(dialogButton -> {
if (dialogButton == loginButtonType) {
if (dialogButton == Dialogs.LOGIN) {
return new Pair<>(email.getText(), password.getText());
}
return null;

View File

@@ -155,7 +155,7 @@ public class MainController {
public void clear(){
Optional<ButtonType> res = Screeners.showConfirm(String.format(Localization.getString("dialog.confirm.remove"), Localization.getString("market.all")));
if (res.isPresent() && res.get() == ButtonType.OK) {
if (res.isPresent() && res.get() == Dialogs.OK) {
market.clear();
reload();
}
@@ -163,7 +163,7 @@ public class MainController {
public void clearOffers(){
Optional<ButtonType> res = Screeners.showConfirm(String.format(Localization.getString("dialog.confirm.remove"), Localization.getString("market.offers")));
if (res.isPresent() && res.get() == ButtonType.YES) {
if (res.isPresent() && res.get() == Dialogs.YES) {
market.clearOffers();
reload();
}
@@ -171,7 +171,7 @@ public class MainController {
public void clearStations(){
Optional<ButtonType> res = Screeners.showConfirm(String.format(Localization.getString("dialog.confirm.remove"), Localization.getString("market.stations")));
if (res.isPresent() && res.get() == ButtonType.YES) {
if (res.isPresent() && res.get() == Dialogs.YES) {
market.clearStations();
reload();
}
@@ -179,7 +179,7 @@ public class MainController {
public void clearSystems(){
Optional<ButtonType> res = Screeners.showConfirm(String.format(Localization.getString("dialog.confirm.remove"), Localization.getString("market.systems")));
if (res.isPresent() && res.get() == ButtonType.YES) {
if (res.isPresent() && res.get() == Dialogs.YES) {
market.clearSystems();
reload();
}
@@ -187,7 +187,7 @@ public class MainController {
public void clearItems(){
Optional<ButtonType> res = Screeners.showConfirm(String.format(Localization.getString("dialog.confirm.remove"), Localization.getString("market.items")));
if (res.isPresent() && res.get() == ButtonType.YES) {
if (res.isPresent() && res.get() == Dialogs.YES) {
market.clearItems();
reload();
}
@@ -195,7 +195,7 @@ public class MainController {
public void clearGroups(){
Optional<ButtonType> res = Screeners.showConfirm(String.format(Localization.getString("dialog.confirm.remove"), Localization.getString("market.groups")));
if (res.isPresent() && res.get() == ButtonType.YES) {
if (res.isPresent() && res.get() == Dialogs.YES) {
market.clearGroups();
reload();
}
@@ -224,7 +224,7 @@ public class MainController {
SystemModel system = profile.getSystem();
if (!ModelFabric.isFake(system)) {
Optional<ButtonType> res = Screeners.showConfirm(String.format(Localization.getString("dialog.confirm.remove"), system.getName()));
if (res.isPresent() && res.get() == ButtonType.YES) {
if (res.isPresent() && res.get() == Dialogs.YES) {
market.remove(system);
}
}
@@ -248,7 +248,7 @@ public class MainController {
StationModel station = profile.getStation();
if (!ModelFabric.isFake(station)) {
Optional<ButtonType> res = Screeners.showConfirm(String.format(Localization.getString("dialog.confirm.remove"), station.getName()));
if (res.isPresent() && res.get() == ButtonType.YES) {
if (res.isPresent() && res.get() == Dialogs.YES) {
station.getSystem().remove(station);
}
}

View File

@@ -217,7 +217,7 @@ public class OffersController {
StationModel s = getStation();
if (!ModelFabric.isFake(s)){
Optional<ButtonType> res = Screeners.showConfirm(String.format(Localization.getString("dialog.confirm.remove"), s.getName()));
if (res.isPresent() && res.get() == ButtonType.YES) {
if (res.isPresent() && res.get() == Dialogs.YES) {
s.getSystem().remove(s);
}
}

View File

@@ -43,9 +43,9 @@ public class PathsController {
if (owner != null) dlg.initOwner(owner.getScene().getWindow());
dlg.setTitle(Localization.getString("paths.title"));
dlg.getDialogPane().setContent(content);
dlg.getDialogPane().getButtonTypes().addAll(ButtonType.OK, ButtonType.CANCEL);
dlg.getDialogPane().getButtonTypes().addAll(Dialogs.OK, Dialogs.CANCEL);
dlg.setResultConverter(dialogButton -> {
if (dialogButton == ButtonType.OK) {
if (dialogButton == Dialogs.OK) {
return getPath();
}
return null;

View File

@@ -36,10 +36,10 @@ public class ProgressController {
vbox.setPrefSize(300, 100);
dlg.getDialogPane().setContent(vbox);
dlg.getDialogPane().getButtonTypes().addAll(ButtonType.CANCEL);
dlg.getDialogPane().getButtonTypes().addAll(Dialogs.CANCEL);
dlg.setResultConverter(dialogButton -> {
if (dialogButton == ButtonType.CANCEL) {
if (dialogButton == Dialogs.CANCEL) {
if (task != null){
task.stop();
}

View File

@@ -1,10 +1,7 @@
package ru.trader.controllers;
import javafx.fxml.FXML;
import javafx.scene.control.CheckBox;
import javafx.scene.control.ComboBox;
import javafx.scene.control.ListView;
import javafx.scene.control.TextField;
import javafx.scene.control.*;
import ru.trader.analysis.CrawlerSpecificator;
import ru.trader.model.*;
import ru.trader.view.support.autocomplete.AutoCompletion;
@@ -26,7 +23,7 @@ public class RouteSearchController {
@FXML
private ComboBox<String> toStation;
@FXML
private CheckBox cbFast;
private RadioButton rbByTime;
@FXML
private CheckBox cbFullScan;
@FXML
@@ -103,7 +100,7 @@ public class RouteSearchController {
StationModel tS = t != null ? t.get(toStation.getValue()) : ModelFabric.NONE_STATION;
CrawlerSpecificator specificator = new CrawlerSpecificator();
specificator.setByTime(cbFast.isSelected());
specificator.setByTime(rbByTime.isSelected());
specificator.setFullScan(cbFullScan.isSelected());
missionsList.getItems().forEach(m -> m.toSpecification(specificator));
market.getRoutes(f, fS, t, tS, profile.getBalance(), specificator, routes -> {

View File

@@ -178,7 +178,7 @@ public class Screeners {
public static void showException(Throwable ex){
Alert alert = new Alert(Alert.AlertType.ERROR);
alert.setTitle("Exception Dialog");
alert.setTitle(Localization.getString("dialog.exception.title","Exception Dialog"));
String text = ex.getLocalizedMessage();
alert.setHeaderText(text != null ? text : ex.getMessage());
@@ -188,7 +188,7 @@ public class Screeners {
ex.printStackTrace(pw);
String exceptionText = sw.toString();
Label label = new Label("The exception stacktrace was:");
Label label = new Label(Localization.getString("dialog.exception.label.stacktrace","The exception stacktrace was:"));
TextArea textArea = new TextArea(exceptionText);
textArea.setEditable(false);
textArea.setWrapText(true);
@@ -209,9 +209,9 @@ public class Screeners {
public static Optional<ButtonType> showConfirm(String text){
Alert alert = new Alert(Alert.AlertType.CONFIRMATION);
alert.setTitle("Confirmation Dialog");
alert.setTitle(Localization.getString("dialog.confirm.title"));
alert.setHeaderText(text);
alert.getButtonTypes().setAll(ButtonType.YES, ButtonType.NO, ButtonType.CANCEL);
alert.getButtonTypes().setAll(Dialogs.YES, Dialogs.NO, Dialogs.CANCEL);
return alert.showAndWait();
}

View File

@@ -111,11 +111,10 @@ public class SettingsController {
dlg = new Dialog<>();
if (owner != null) dlg.initOwner(owner.getScene().getWindow());
dlg.setTitle(Localization.getString("settings.title"));
ButtonType saveButton = new ButtonType(Localization.getString("dialog.button.save"), ButtonBar.ButtonData.OK_DONE);
dlg.getDialogPane().setContent(content);
dlg.getDialogPane().getButtonTypes().addAll(saveButton, ButtonType.CANCEL);
dlg.getDialogPane().getButtonTypes().addAll(Dialogs.SAVE, Dialogs.CANCEL);
dlg.setResultConverter(dialogButton -> {
if (dialogButton == saveButton) {
if (dialogButton == Dialogs.SAVE) {
save();
}
return dialogButton;

View File

@@ -145,20 +145,18 @@ public class StationEditorController {
dlg = new Dialog<>();
if (owner != null) dlg.initOwner(owner.getScene().getWindow());
ButtonType saveButton = new ButtonType(Localization.getString("dialog.button.save"), ButtonBar.ButtonData.OK_DONE);
ButtonType cancelButton = new ButtonType(Localization.getString("dialog.button.cancel"), ButtonBar.ButtonData.CANCEL_CLOSE);
dlg.getDialogPane().setContent(content);
dlg.getDialogPane().getButtonTypes().addAll(saveButton, cancelButton);
dlg.getDialogPane().getButtonTypes().addAll(Dialogs.SAVE, Dialogs.CANCEL);
Button bSave = (Button) dlg.getDialogPane().lookupButton(saveButton);
Button bSave = (Button) dlg.getDialogPane().lookupButton(Dialogs.SAVE);
bSave.disableProperty().bind(distance.wrongProperty());
dlg.setResultConverter(dialogButton -> {
if (dialogButton == saveButton) {
if (dialogButton == Dialogs.SAVE) {
save();
}
if (dialogButton == cancelButton) {
if (dialogButton == Dialogs.CANCEL) {
cancel();
}
return dialogButton;

View File

@@ -161,11 +161,10 @@ public class SystemsEditorController {
dlg = new Dialog<>();
if (owner != null) dlg.initOwner(owner.getScene().getWindow());
dlg.setTitle(Localization.getString("sEditor.title"));
ButtonType saveButton = new ButtonType(Localization.getString("dialog.button.save"), ButtonBar.ButtonData.OK_DONE);
dlg.getDialogPane().setContent(content);
dlg.getDialogPane().getButtonTypes().addAll(saveButton, ButtonType.CANCEL);
dlg.getDialogPane().getButtonTypes().addAll(Dialogs.SAVE, Dialogs.CANCEL);
dlg.setResultConverter(dialogButton -> {
if (dialogButton == saveButton) {
if (dialogButton == Dialogs.SAVE) {
save();
}
return dialogButton;

View File

@@ -41,9 +41,9 @@ public class TopOrdersController {
if (owner != null) dlg.initOwner(owner.getScene().getWindow());
dlg.setTitle(Localization.getString("topOrders.title"));
dlg.getDialogPane().setContent(content);
dlg.getDialogPane().getButtonTypes().addAll(ButtonType.OK, ButtonType.CANCEL);
dlg.getDialogPane().getButtonTypes().addAll(Dialogs.OK, Dialogs.CANCEL);
dlg.setResultConverter(dialogButton -> {
if (dialogButton == ButtonType.OK) {
if (dialogButton == Dialogs.OK) {
return order;
}
return null;

View File

@@ -2,8 +2,6 @@ package ru.trader.controllers;
import javafx.fxml.FXML;
import javafx.scene.Parent;
import javafx.scene.control.ButtonBar;
import javafx.scene.control.ButtonType;
import javafx.scene.control.CheckBox;
import javafx.scene.control.Dialog;
import javafx.scene.layout.GridPane;
@@ -77,11 +75,10 @@ public class VendorFilterController {
dlg = new Dialog<>();
if (owner != null) dlg.initOwner(owner.getScene().getWindow());
dlg.setTitle(Localization.getString("filter.title"));
ButtonType saveButton = new ButtonType(Localization.getString("dialog.button.save"), ButtonBar.ButtonData.OK_DONE);
dlg.getDialogPane().setContent(content);
dlg.getDialogPane().getButtonTypes().addAll(saveButton, ButtonType.CANCEL);
dlg.getDialogPane().getButtonTypes().addAll(Dialogs.SAVE, Dialogs.CANCEL);
dlg.setResultConverter(dialogButton -> {
if (dialogButton == saveButton) {
if (dialogButton == Dialogs.SAVE) {
save();
return this.filter;
}

View File

@@ -7,6 +7,7 @@ import javafx.scene.control.ButtonType;
import javafx.scene.control.TableColumn;
import javafx.scene.control.TableView;
import javafx.scene.control.cell.ComboBoxTableCell;
import ru.trader.controllers.Dialogs;
import ru.trader.controllers.MainController;
import ru.trader.controllers.Screeners;
import ru.trader.core.FACTION;
@@ -87,7 +88,7 @@ public class ItemsController {
private void remove(ItemModel item){
Optional<ButtonType> res = Screeners.showConfirm(String.format(Localization.getString("dialog.confirm.remove"), item.getName()));
if (res.isPresent() && res.get() == ButtonType.YES) {
if (res.isPresent() && res.get() == Dialogs.YES) {
world.remove(item);
}
}

View File

@@ -7,6 +7,7 @@ import javafx.scene.control.ButtonType;
import javafx.scene.control.TableColumn;
import javafx.scene.control.TableView;
import javafx.scene.control.cell.ComboBoxTableCell;
import ru.trader.controllers.Dialogs;
import ru.trader.controllers.MainController;
import ru.trader.controllers.Screeners;
import ru.trader.core.*;
@@ -97,7 +98,7 @@ public class StationsController {
private void remove(StationModel station){
Optional<ButtonType> res = Screeners.showConfirm(String.format(Localization.getString("dialog.confirm.remove"), station.getFullName()));
if (res.isPresent() && res.get() == ButtonType.YES) {
if (res.isPresent() && res.get() == Dialogs.YES) {
station.getSystem().remove(station);
}
}

View File

@@ -7,6 +7,7 @@ import javafx.scene.control.ButtonType;
import javafx.scene.control.TableColumn;
import javafx.scene.control.TableView;
import javafx.scene.control.cell.ComboBoxTableCell;
import ru.trader.controllers.Dialogs;
import ru.trader.controllers.MainController;
import ru.trader.controllers.Screeners;
import ru.trader.core.*;
@@ -76,7 +77,7 @@ public class SystemsController {
private void remove(SystemModel system){
Optional<ButtonType> res = Screeners.showConfirm(String.format(Localization.getString("dialog.confirm.remove"), system.getName()));
if (res.isPresent() && res.get() == ButtonType.YES) {
if (res.isPresent() && res.get() == Dialogs.YES) {
world.remove(system);
}
}

View File

@@ -4,6 +4,7 @@ import ru.trader.analysis.CrawlerSpecificator;
import ru.trader.analysis.RouteReserve;
import ru.trader.core.Offer;
import ru.trader.store.simple.SimpleOffer;
import ru.trader.view.support.Localization;
import java.time.Duration;
import java.time.LocalDateTime;
@@ -89,13 +90,13 @@ public class MissionModel {
public String toString() {
String t = DateTimeFormatter.ofLocalizedDateTime(FormatStyle.MEDIUM).format(time);
if (isDelivery()){
return String.format("Deliver %d items to %s at %s", count, target.getName(), t);
return String.format(Localization.getString("missions.delivery.text"), count, target.getName(), t);
}
if (isCourier()){
return String.format("Deliver message to %s at %s", target.getName(), t);
return String.format(Localization.getString("missions.courier.text"), target.getName(), t);
}
if (isSupply()){
return String.format("Supply %d %s to %s at %s", count, item.getName(), target.getName(), t);
return String.format(Localization.getString("missions.supply.text"), count, item.getName(), target.getName(), t);
}
return "MissionModel{" +
"target=" + target +

View File

@@ -43,7 +43,7 @@ public class DurationField extends TextField {
public DurationField() {
super();
converter = new DurationStringConverter();
tooltip.setText("Wrong duration format, use like 1w1d1h1m1s");
tooltip.setText(Localization.getString("message.wrongDuration"));
tooltip.setAutoHide(true);
wrong.addListener((ob, o ,n) -> {
if (n) {
@@ -87,7 +87,7 @@ public class DurationField extends TextField {
}
private static class DurationStringConverter extends StringConverter<Duration> {
private static final Pattern PATTERN = Pattern.compile("^(?:([0-9]+)w)?(?:([0-9]+)d)?(?:([0-9]+)h)?(?:([0-9]+)m)?(?:([0-9]+)s)?$", Pattern.CASE_INSENSITIVE);
private static final Pattern PATTERN = Pattern.compile("^(?:([0-9]+)[wн])?(?:([0-9]+)[dд])?(?:([0-9]+)[hч])?(?:([0-9]+)[mм])?(?:([0-9]+)[sс])?$", Pattern.CASE_INSENSITIVE);
private static long parseLong(String value){
if (value == null) return 0;

View File

@@ -59,7 +59,7 @@ public class NumberField extends TextField {
NumberFormat f = new DecimalFormat(format, new DecimalFormatSymbols(Locale.ENGLISH));
f.setGroupingUsed(false);
converter = new NumberStringConverter(f);
tooltip.setText("Wrong number");
tooltip.setText(Localization.getString("message.wrongNumber"));
tooltip.setAutoHide(true);
wrong.addListener((ob, o ,n) -> {
if (n) {

View File

@@ -6,16 +6,14 @@ import javafx.application.Platform;
import javafx.collections.ObservableList;
import javafx.event.Event;
import javafx.event.EventHandler;
import javafx.scene.control.TableColumn;
import javafx.scene.control.TablePosition;
import javafx.scene.control.TableView;
import javafx.scene.control.*;
import javax.swing.*;
import java.awt.event.InputEvent;
import java.awt.event.KeyEvent;
public class ViewUtils {
public final static String ILLEGAL_ITEM_STYLE = "illegal_item";
public static final String ILLEGAL_ITEM_STYLE = "illegal_item";
//Scroll to row if invisible
public static void show(TableView tableView, int index){

View File

@@ -56,6 +56,23 @@ economic.TOURISM=Tourism
economic.COLONY=Colony
economic.NONE=None
power.DUVAL=Aisling Duval
power.DELAINE=Archon Delaine
power.LAVIGNY_DUVAL=Arissa Lavigny-Duval
power.PATREUS=Denton Patreus
power.MAHON=Edmund Mahon
power.WINTERS=Felicia Winters
power.YONG_RUI=Li Yong-Rui
power.ANTAL=Pranav Antal
power.HUDSON=Zachary Hudson
power.TORVAL=Zemina Torval
power.NONE=None
power.states.CONTROL=Controlling
power.states.EXPLOITED=Exploited
power.states.EXPANSION=Expansion
power.states.NONE=None
item.group.chemicals=Chemicals
item.explosives=Explosives
item.hydrogenfuel=Hydrogen Fuel

View File

@@ -5,12 +5,29 @@ market.stations=Stations
market.groups=Commodities groups
market.items=Commods
market.offers=Offers
market.item.name=Commodity
market.system.name=System
market.station.name=Station
market.allegiance=Allegiance
market.government=Government
market.economic=Economy
market.power=Power
market.powerState=State
#Item
market.item=Commodity
market.item.name=Name
market.item.illegal=Illegal in
market.item.legal=Legal in
#Group
market.group=Group
#System
market.system=System
market.system.name=Name
#Station
market.station=Station
market.station.name=Name
market.station.distance=Distance
market.station.services=Services
market.station.type=Station type
@@ -44,15 +61,21 @@ routes.profitByTime=Cr/Sec
routes.text.format=Profit: %.0f Cr/t, Time: %s
# Dialog
dialog.exception.title=Exception Dialog
dialog.exception.label.stacktrace=The exception stacktrace was:
dialog.confirm.title=Confirmation Dialog
dialog.confirm.save=Changes were not saved, save changes?
dialog.confirm.remove=Are you sure you want to delete %s?
dialog.button.add=Add
dialog.button.ok=\u041E\u041A
dialog.button.save=Save
dialog.button.cancel=Cancel
dialog.button.edit=Edit
dialog.button.remove=Remove
dialog.button.clear=Clear
dialog.button.copy=Copy
dialog.button.yes=Yes
dialog.button.no=No
# main.fxml
main.title=Trader
@@ -77,6 +100,7 @@ main.menu.settings.parameters=Preferences
main.menu.settings.filter=Filter
main.tab.routes=Routes
main.tab.search=Search
main.tab.route=Current route
# add item dialog
dialog.item.title=Adding new commodity
@@ -87,6 +111,18 @@ dialog.group.title=Adding new group
dialog.group.id=ID:
dialog.group.type=Type:
#profile.fxml
profile.name=Cmdr:
profile.balance=Balance:
profile.system=System:
profile.station=Station:
profile.docked=Docked:
profile.ship.cargo=Cargo:
profile.ship.tank=Fuel tank:
profile.ship.mass=Mass:
profile.ship.engine=Engine:
profile.ship.jump=Jump range, LY:
# items.fxml
# itemDesc.fxml
@@ -131,6 +167,10 @@ router.button.top=TOP 100
router.pane.total=Total
router.pane.total.profit=Profit:
router.pane.missions=Missions
router.search.type=Search type:
router.search.byTime=Best time, hours
router.search.byProfit=Best profit, Cr/h
router.search.full=Full scan
# settings.fxml
settings.title=Settings
@@ -142,6 +182,20 @@ settings.emdn.auto=Auto update (sec.):
settings.performance=Performance
settings.performance.segmentSize=Segment size (0 - auto):
settings.performance.limit=Routes count:
settings.edce.on=Active
settings.edce.interval=Update interval, sec.
settings.performance.jumps=Jumps:
settings.performance.landings=Landings:
settings.search=Search options
settings.search.fuelPrice=1t fuel price:
settings.search.pathType=Path priority:
settings.search.times.jump=Hyperjump time:
settings.search.times.landing=Landing time:
settings.search.times.takeoff=Takeoff time:
settings.search.times.recharge=Recharging FSD time:
settings.search.times.orbital=Orbital flight time:
settings.hotkeys=Hotkeys
settings.hotkeys.complete=Target complete:
# sEditor.fxml
sEditor.title=Star systems editor
@@ -155,6 +209,15 @@ filter.radius=Rsdius(LY):
filter.distance=Distance to station(Ls):
filter.services=Services:
filter.excludes=Excludes stations:
filter.stations=Market filters:
filter.stations.global=Default filter
# vFilter.fxml
filter.stations.legalOnly=Legals only
filter.stations.notBuy=Don't buy
filter.stations.notSell=Don't sell
filter.stations.label.notBuy=Don't buy:
filter.stations.label.notSell=Don't sell:
# analyzer progress
analyzer.orders.title=Search orders
@@ -187,3 +250,21 @@ missions.label.cargo=Cargo:
missions.label.quantity=Quantity:
missions.label.leftTime=Time left:
missions.label.reward=Reward:
missions.delivery.text=Deliver %d items to %s at %s
missions.courier.text=Deliver message to %s at %s
missions.supply.text=Supply %d %s to %s at %s
#helper
helper.system=System:
helper.station=Station:
helper.time=Time:
helper.refuel=Refuel:
helper.sell=Sell:
helper.buy=Buy:
helper.missions=Complete missions:
helper.stations=Stations:
helper.items=Commodities:
#messages
message.wrongNumber=Wrong number
message.wrongDuration=Wrong duration format, use like 1w1d1h1m1s

View File

@@ -5,15 +5,33 @@ market.stations=\u0421\u0442\u0430\u043D\u0446\u0438\u0438
market.groups=\u0413\u0440\u0443\u043F\u043F\u044B \u0442\u043E\u0432\u0430\u0440\u043E\u0432
market.items=\u0422\u043E\u0432\u0430\u0440\u044B
market.offers=\u0417\u0430\u043A\u0430\u0437\u044B
market.item.name=\u0422\u043E\u0432\u0430\u0440
market.system.name=\u0421\u0438\u0441\u0442\u0435\u043C\u0430
market.station.name=\u0421\u0442\u0430\u043D\u0446\u0438\u044F
market.allegiance=\u041F\u0440\u0438\u043D\u0430\u0434\u043B\u0435\u0436\u043D\u043E\u0441\u0442\u044C
market.government=\u0424\u043E\u0440\u043C\u0430 \u043F\u0440\u0430\u0432\u043B\u0435\u043D\u0438\u044F
market.economic=\u042D\u043A\u043E\u043D\u043E\u043C\u0438\u043A\u0430
market.power=\u0421\u0438\u043B\u0430
market.powerState=\u0421\u0442\u0430\u0442\u0443\u0441
#Item
market.item=\u0422\u043E\u0432\u0430\u0440
market.item.name=\u041D\u0430\u0438\u043C\u0435\u043D\u043E\u0432\u0430\u043D\u0438\u0435
market.item.illegal=\u0417\u0430\u043F\u0440\u0435\u0449\u0435\u043D \u0432
market.item.legal=\u0420\u0430\u0437\u0440\u0435\u0448\u0435\u043D \u0432
#Group
market.group=\u0413\u0440\u0443\u043F\u043F\u0430
#System
market.system=\u0421\u0438\u0441\u0442\u0435\u043C\u0430
market.system.name=\u041D\u0430\u0437\u0432\u0430\u043D\u0438\u0435
#Station
market.station=\u0421\u0442\u0430\u043D\u0446\u0438\u044F
market.station.name=\u041D\u0430\u0437\u0432\u0430\u043D\u0438\u0435
market.station.distance=\u0414\u0438\u0441\u0442\u0430\u043D\u0446\u0438\u044F
market.station.services=\u0421\u0435\u0440\u0432\u0438\u0441\u044B
market.station.type=\u0422\u0438\u043F \u0441\u0442\u0430\u043D\u0446\u0438\u0438
# Offer
market.offer.buy=\u041F\u043E\u043A\u0443\u043F\u043A\u0430
market.offer.sell=\u041F\u0440\u043E\u0434\u0430\u0436\u0430
@@ -44,16 +62,21 @@ routes.profitByTime=\u041A\u0440/\u0421\u0435\u043A
routes.text.format=\u041F\u0440\u0438\u0431\u044B\u043B\u044C: %.0f \u041A\u0440/\u0442, \u0412\u0440\u0435\u043C\u044F: %s
# Dialog
dialog.exception.title=\u041E\u0448\u0438\u0431\u043A\u0430 \u043F\u0440\u0438\u043B\u043E\u0436\u0435\u043D\u0438\u044F
dialog.exception.label.stacktrace=\u041F\u0440\u0438\u0447\u0438\u043D\u0430 \u0432\u043E\u0437\u043D\u0438\u043A\u043D\u043E\u0432\u0435\u043D\u0438\u044F \u043E\u0448\u0438\u0431\u043A\u0438:
dialog.confirm.title=\u041F\u043E\u0434\u0442\u0432\u0435\u0440\u0436\u0434\u0435\u043D\u0438\u0435 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044F
dialog.confirm.save=\u0418\u0437\u043C\u0435\u043D\u0435\u043D\u0438\u044F \u043D\u0435 \u0431\u044B\u043B\u0438 \u0441\u043E\u0445\u0440\u0430\u043D\u0435\u043D\u044B, \u0441\u043E\u0445\u0440\u0430\u043D\u0438\u0442\u044C?
dialog.confirm.remove=\u0412\u044B \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u0435\u043B\u044C\u043D\u043E \u0445\u043E\u0442\u0438\u0442\u0435 \u0443\u0434\u0430\u043B\u0438\u0442\u044C %s?
dialog.button.add=\u0414\u043E\u0431\u0430\u0432\u0438\u0442\u044C
dialog.button.ok=\u041E\u041A
dialog.button.save=\u0421\u043E\u0445\u0440\u0430\u043D\u0438\u0442\u044C
dialog.button.cancel=\u041E\u0442\u043C\u0435\u043D\u0430
dialog.button.edit=\u0418\u0437\u043C\u0435\u043D\u0438\u0442\u044C
dialog.button.remove=\u0423\u0434\u0430\u043B\u0438\u0442\u044C
dialog.button.clear=\u041E\u0447\u0438\u0441\u0442\u0438\u0442\u044C
dialog.button.copy=\u041A\u043E\u043F\u0438\u0440\u043E\u0432\u0430\u0442\u044C
dialog.button.yes=\u0414\u0430
dialog.button.no=\u041D\u0435\u0442
# main.fxml
main.title=\u0422\u043E\u0440\u0433\u043E\u0439\u0434
@@ -78,6 +101,7 @@ main.menu.settings.parameters=\u041F\u0430\u0440\u0430\u043C\u0435\u0442\u0440\u
main.menu.settings.filter=\u0424\u0438\u043B\u044C\u0442\u0440
main.tab.routes=\u041C\u0430\u0440\u0448\u0440\u0443\u0442\u044B
main.tab.search=\u041F\u043E\u0438\u0441\u043A
main.tab.route=\u0422\u0435\u043A\u0443\u0449\u0438\u0439 \u043C\u0430\u0440\u0448\u0440\u0443\u0442
# add item dialog
dialog.item.title=\u0414\u043E\u0431\u0430\u0432\u043B\u0435\u043D\u0438\u0435 \u043D\u043E\u0432\u043E\u0433\u043E \u0442\u043E\u0432\u0430\u0440\u0430
@@ -88,6 +112,18 @@ dialog.group.title=\u0414\u043E\u0431\u0430\u0432\u043B\u0435\u043D\u0438\u0435
dialog.group.id=ID:
dialog.group.type=\u0422\u0438\u043F:
#profile.fxml
profile.name=\u041A\u041C\u0414\u0420:
profile.balance=\u0411\u0430\u043B\u0430\u043D\u0441:
profile.system=\u0421\u0438\u0441\u0442\u0435\u043C\u0430:
profile.station=\u0421\u0442\u0430\u043D\u0446\u0438\u044F:
profile.docked=\u0412 \u0434\u043E\u043A\u0435:
profile.ship.cargo=\u0422\u0440\u044E\u043C:
profile.ship.tank=\u0422\u043E\u043F\u043B\u0438\u0432\u043D\u044B\u0439 \u0431\u0430\u043A:
profile.ship.mass=\u041C\u0430\u0441\u0441\u0430:
profile.ship.engine=\u0414\u0432\u0438\u0433\u0430\u0442\u0435\u043B\u044C:
profile.ship.jump=\u0414\u0430\u043B\u044C\u043D\u043E\u0441\u0442\u044C \u043F\u0440\u044B\u0436\u043A\u0430, LY:
# items.fxml
# itemDesc.fxml
@@ -131,6 +167,10 @@ 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
router.search.type=\u0422\u0438\u043F \u043F\u043E\u0438\u0441\u043A\u0430:
router.search.byTime=\u041D\u0430\u0438\u043C\u0435\u043D\u044C\u0448\u0435\u0435 \u0432\u0440\u0435\u043C\u044F, \u0447
router.search.byProfit=\u041D\u0430\u0438\u0431\u043E\u043B\u044C\u0448\u0430\u044F \u043F\u0440\u0438\u0431\u044B\u043B\u044C, \u041A\u0440/\u0447
router.search.full=\u0413\u043B\u0443\u0431\u043E\u043A\u0438\u0439 \u043F\u043E\u0438\u0441\u043A
# settings.fxml
settings.title=\u041F\u0430\u0440\u0430\u043C\u0435\u0442\u0440\u044B
@@ -142,6 +182,20 @@ settings.emdn.auto=\u041E\u0431\u043D\u043E\u0432\u043B\u044F\u0442\u044C \u0430
settings.performance=\u041F\u0440\u043E\u0438\u0437\u0432\u043E\u0434\u0438\u0442\u0435\u043B\u044C\u043D\u043E\u0441\u0442\u044C
settings.performance.segmentSize=\u041C\u0430\u0440\u0448\u0440\u0443\u0442\u043E\u0432 \u0432 \u0441\u0435\u0433\u043C\u0435\u043D\u0442\u0435 (0 - \u0430\u0432\u0442\u043E):
settings.performance.limit=\u041A\u043E\u043B-\u0432\u043E \u043C\u0430\u0440\u0448\u0440\u0443\u0442\u043E\u0432 \u043D\u0430 \u0432\u044B\u0432\u043E\u0434:
settings.edce.on=\u0412\u043A\u043B\u044E\u0447\u0438\u0442\u044C
settings.edce.interval=\u0418\u043D\u0442\u0435\u0440\u0432\u0430\u043B, \u0441\u0435\u043A.
settings.performance.jumps=\u041F\u0440\u044B\u0436\u043A\u043E\u0432:
settings.performance.landings=\u041F\u043E\u0441\u0430\u0434\u043E\u043A:
settings.search=\u041F\u0430\u0440\u0430\u043C\u0435\u0442\u0440\u044B \u043F\u043E\u0438\u0441\u043A\u0430
settings.search.fuelPrice=\u0421\u0442\u043E\u0438\u043C\u043E\u0441\u0442\u044C 1\u0442 \u0442\u043E\u043F\u043B\u0438\u0432\u0430:
settings.search.pathType=\u0422\u0438\u043F \u043C\u0430\u0440\u0448\u0440\u0443\u0442\u043E\u0432:
settings.search.times.jump=\u0412\u0440\u0435\u043C\u044F \u0433\u0438\u043F\u0435\u0440\u043F\u0440\u044B\u0436\u043A\u0430:
settings.search.times.landing=\u0412\u0440\u0435\u043C\u044F \u043F\u043E\u0441\u0430\u0434\u043A\u0438:
settings.search.times.takeoff=\u0412\u0440\u0435\u043C\u044F \u0432\u0437\u043B\u0435\u0442\u0430:
settings.search.times.recharge=\u0412\u0440\u0435\u043C\u044F \u043F\u0435\u0440\u0435\u0437\u0430\u0440\u044F\u0434\u043A\u0438 FSD:
settings.search.times.orbital=\u0412\u0440\u0435\u043C\u044F \u043E\u0440\u0431\u0438\u0442\u0430\u043B\u044C\u043D\u043E\u0433\u043E \u043F\u043E\u043B\u0435\u0442\u0430:
settings.hotkeys=\u0413\u043E\u0440\u044F\u0447\u0438\u0435 \u043A\u043B\u0430\u0432\u0438\u0448\u0438
settings.hotkeys.complete=\u0422\u043E\u0447\u043A\u0430 \u043C\u0430\u0440\u0448\u0440\u0443\u0442\u0430 \u0434\u043E\u0441\u0442\u0438\u0433\u043D\u0443\u0442\u0430:
# sEditor.fxml
sEditor.title=\u0420\u0435\u0434\u0430\u043A\u0442\u043E\u0440 \u0437\u0432\u0435\u0437\u0434\u043D\u044B\u0445 \u0441\u0438\u0441\u0442\u0435\u043C
@@ -155,6 +209,15 @@ filter.radius=\u0420\u0430\u0434\u0438\u0443\u0441(LY):
filter.distance=\u0414\u0438\u0441\u0442\u0430\u043D\u0446\u0438\u044F \u0434\u043E \u0441\u0442\u0430\u043D\u0446\u0438\u0438(Ls):
filter.services=\u0421\u0435\u0440\u0432\u0438\u0441\u044B:
filter.excludes=\u0418\u0441\u043A\u043B\u044E\u0447\u0430\u0435\u043C\u044B\u0435 \u0441\u0442\u0430\u043D\u0446\u0438\u0438:
filter.stations=\u0424\u0438\u043B\u044C\u0442\u0440\u044B \u043D\u0430 \u0442\u043E\u0432\u0430\u0440\u044B:
filter.stations.global=\u0413\u043B\u043E\u0431\u0430\u043B\u044C\u043D\u044B\u0439 \u0444\u0438\u043B\u044C\u0442\u0440
# vFilter.fxml
filter.stations.legalOnly=\u0422\u043E\u043B\u044C\u043A\u043E \u043B\u0435\u0433\u0430\u043B\u044C\u043D\u044B\u0435
filter.stations.notBuy=\u041D\u0435 \u043F\u043E\u043A\u0443\u043F\u0430\u0442\u044C
filter.stations.notSell=\u041D\u0435 \u043F\u0440\u043E\u0434\u0430\u0432\u0430\u0442\u044C
filter.stations.label.notBuy=\u041D\u0435 \u043F\u043E\u043A\u0443\u043F\u0430\u0442\u044C:
filter.stations.label.notSell=\u041D\u0435 \u043F\u0440\u043E\u0434\u0430\u0432\u0430\u0442\u044C:
# analyzer progress
analyzer.orders.title=\u041F\u043E\u0438\u0441\u043A \u0437\u0430\u043A\u0430\u0437\u043E\u0432
@@ -188,3 +251,21 @@ missions.label.cargo=\u0413\u0440\u0443\u0437:
missions.label.quantity=\u041A\u043E\u043B\u0438\u0447\u0435\u0441\u0442\u0432\u043E:
missions.label.leftTime=\u0412\u0440\u0435\u043C\u044F:
missions.label.reward=\u041D\u0430\u0433\u0440\u0430\u0434\u0430:
missions.delivery.text=\u0414\u043E\u0441\u0442\u0430\u0432\u0438\u0442\u044C %d \u043A\u043E\u043D\u0442\u0435\u0439\u043D\u0435\u0440\u043E\u0432 \u043D\u0430 %s \u0434\u043E %s
missions.courier.text=\u0414\u043E\u0441\u0442\u0430\u0432\u0438\u0442\u044C \u0441\u043E\u043E\u0431\u0449\u0435\u043D\u0438\u0435 \u043D\u0430 %s \u0434\u043E %s
missions.supply.text=\u041A\u0443\u043F\u0438\u0442\u044C \u0438 \u0434\u043E\u0441\u0442\u0430\u0432\u0438\u0442\u044C %d %s \u043D\u0430 %s \u0434\u043E %s
#helper
helper.system=\u0421\u0438\u0441\u0442\u0435\u043C\u0430:
helper.station=\u0421\u0442\u0430\u043D\u0446\u0438\u044F:
helper.time=\u0412\u0440\u0435\u043C\u044F:
helper.refuel=\u0417\u0430\u043F\u0440\u0430\u0432\u0438\u0442\u044C:
helper.sell=\u041F\u0440\u043E\u0434\u0430\u0442\u044C:
helper.buy=\u041A\u0443\u043F\u0438\u0442\u044C:
helper.missions=\u0421\u0434\u0430\u0442\u044C \u043C\u0438\u0441\u0441\u0438\u0438:
helper.stations=\u0421\u0442\u0430\u043D\u0446\u0438\u0438:
helper.items=\u0422\u043E\u0432\u0430\u0440\u044B:
#messages
message.wrongNumber=\u0414\u043E\u0441\u0442\u0443\u043F\u043D\u044B \u0442\u043E\u043B\u044C\u043A\u043E \u0446\u0438\u0444\u0440\u044B
message.wrongDuration=\u041D\u0435\u0432\u0435\u0440\u043D\u044B\u0439 \u0444\u043E\u0440\u043C\u0430\u0442 \u043F\u0435\u0440\u0438\u043E\u0434\u0430, \u0438\u0441\u043F\u043E\u043B\u044C\u0437\u0443\u0439\u0442\u0435 \u0444\u043E\u0440\u043C\u0430\u0442 1w1d1h1m1s

View File

@@ -58,6 +58,23 @@ economic.TOURISM=\u0422\u0443\u0440\u0438\u0437\u043C
economic.COLONY=\u041A\u043E\u043B\u043E\u043D\u0438\u044F
economic.NONE=\u041D\u0435\u0442
power.DUVAL=Aisling Duval
power.DELAINE=Archon Delaine
power.LAVIGNY_DUVAL=Arissa Lavigny-Duval
power.PATREUS=Denton Patreus
power.MAHON=Edmund Mahon
power.WINTERS=Felicia Winters
power.YONG_RUI=Li Yong-Rui
power.ANTAL=Pranav Antal
power.HUDSON=Zachary Hudson
power.TORVAL=Zemina Torval
power.NONE=\u041D\u0435\u0442
power.states.CONTROL=\u041A\u043E\u043D\u0442\u0440\u043E\u043B\u0438\u0440\u0443\u0435\u0442\u0441\u044F
power.states.EXPLOITED=\u042D\u043A\u0441\u043F\u043B\u0443\u0430\u0442\u0438\u0440\u0443\u0435\u0442\u0441\u044F
power.states.EXPANSION=\u042D\u043A\u0441\u043F\u0430\u043D\u0441\u0438\u044F
power.states.NONE=\u041D\u0435\u0442
item.group.chemicals=\u0425\u0438\u043C\u0438\u043A\u0430\u0442\u044B
item.explosives=\u0412\u0437\u0440\u044B\u0432\u0447\u0430\u0442\u043A\u0430
item.hydrogenfuel=\u0412\u043E\u0434\u043E\u0440\u043E\u0434\u043D\u043E\u0435 \u0442\u043E\u043F\u043B\u0438\u0432\u043E
@@ -179,3 +196,6 @@ item.nonlethalweapons=\u041D\u0435\u043B\u0435\u0442\u0430\u043B\u044C\u043D\u04
item.personalweapons=\u041B\u0438\u0447\u043D\u043E\u0435 \u043E\u0440\u0443\u0436\u0438\u0435
item.reactivearmour=\u0420\u0435\u0430\u043A\u0442\u0438\u0432\u043D\u0430\u044F \u0437\u0430\u0449\u0438\u0442\u0430
item.group.ships=\u041A\u043E\u0440\u0430\u0431\u043B\u0438
#messages
message.wrongDuration=\u041D\u0435\u0432\u0435\u0440\u043D\u044B\u0439 \u0444\u043E\u0440\u043C\u0430\u0442 \u043F\u0435\u0440\u0438\u043E\u0434\u0430, \u0438\u0441\u043F\u043E\u043B\u044C\u0437\u0443\u0439\u0442\u0435 \u0444\u043E\u0440\u043C\u0430\u0442 1\u043D1\u04341\u04471\u043C1\u0441

View File

@@ -10,10 +10,10 @@
<Tab text="%market.items">
<fx:include fx:id="items" source="items.fxml"/>
</Tab>
<Tab text="Системы">
<Tab text="%market.systems">
<fx:include fx:id="systems" source="systems.fxml"/>
</Tab>
<Tab text="Станции">
<Tab text="%market.stations">
<fx:include fx:id="stations" source="stations.fxml"/>
</Tab>
</TabPane>

View File

@@ -18,19 +18,19 @@
<TableColumn minWidth="200" text="%market.item.name">
<cellValueFactory><PropertyValueFactory property="name"/></cellValueFactory>
</TableColumn>
<TableColumn fx:id="group" minWidth="120" text="Группа" editable="false">
<TableColumn fx:id="group" minWidth="120" text="%market.group" editable="false">
<cellValueFactory><PropertyValueFactory property="group"/></cellValueFactory>
</TableColumn>
<TableColumn fx:id="factions" minWidth="145" text="Запрещено в">
<TableColumn fx:id="factions" minWidth="145" text="%market.item.illegal">
<cellValueFactory><PropertyValueFactory property="illegalFactions"/></cellValueFactory>
</TableColumn>
<TableColumn fx:id="governments" minWidth="145" text="Запрещено в">
<TableColumn fx:id="governments" minWidth="145" text="%market.item.illegal">
<cellValueFactory><PropertyValueFactory property="illegalGovernments"/></cellValueFactory>
</TableColumn>
<TableColumn fx:id="legalFactions" minWidth="145" text="Разрешено в">
<TableColumn fx:id="legalFactions" minWidth="145" text="%market.item.legal">
<cellValueFactory><PropertyValueFactory property="legalFactions"/></cellValueFactory>
</TableColumn>
<TableColumn fx:id="legalGovernments" minWidth="145" text="Разрешено в">
<TableColumn fx:id="legalGovernments" minWidth="145" text="%market.item.legal">
<cellValueFactory><PropertyValueFactory property="legalGovernments"/></cellValueFactory>
</TableColumn>
</columns>
@@ -40,8 +40,8 @@
<contextMenu>
<ContextMenu>
<items>
<MenuItem text="Добавить" onAction="#add" />
<MenuItem text="Удалить" onAction="#remove" />
<MenuItem text="%dialog.button.add" onAction="#add" />
<MenuItem text="%dialog.button.remove" onAction="#remove" />
</items>
</ContextMenu>
</contextMenu>

View File

@@ -13,10 +13,10 @@
fx:controller="ru.trader.db.controllers.StationsController">
<TableView fx:id="tblStations" editable="true" VBox.vgrow="ALWAYS" prefWidth="800">
<columns>
<TableColumn minWidth="100" text="Система">
<TableColumn minWidth="100" text="%market.system">
<cellValueFactory><PropertyValueFactory property="system"/></cellValueFactory>
</TableColumn>
<TableColumn minWidth="200" text="Название">
<TableColumn minWidth="200" text="%market.station.name">
<cellValueFactory><PropertyValueFactory property="name"/></cellValueFactory>
</TableColumn>
<TableColumn fx:id="type" minWidth="100" text="%market.station.type">
@@ -34,10 +34,10 @@
<TableColumn fx:id="subEconomic" minWidth="100" text="%market.economic">
<cellValueFactory><WritablePropertyValueFactory property="subEconomic"/></cellValueFactory>
</TableColumn>
<TableColumn minWidth="100" text="Дистанция">
<TableColumn minWidth="100" text="%market.station.distance">
<cellValueFactory><WritablePropertyValueFactory property="distance"/></cellValueFactory>
</TableColumn>
<TableColumn fx:id="services" minWidth="100" text="Сервисы">
<TableColumn fx:id="services" minWidth="100" text="%market.station.services">
<cellValueFactory><PropertyValueFactory property="services"/></cellValueFactory>
</TableColumn>
</columns>
@@ -47,9 +47,9 @@
<contextMenu>
<ContextMenu>
<items>
<MenuItem text="Добавить" onAction="#add" />
<MenuItem text="Редактировать" onAction="#edit" />
<MenuItem text="Удалить" onAction="#remove" />
<MenuItem text="%dialog.button.add" onAction="#add" />
<MenuItem text="%dialog.button.edit" onAction="#edit" />
<MenuItem text="%dialog.button.remove" onAction="#remove" />
</items>
</ContextMenu>
</contextMenu>

View File

@@ -13,7 +13,7 @@
fx:controller="ru.trader.db.controllers.SystemsController">
<TableView fx:id="tblSystems" editable="true" VBox.vgrow="ALWAYS" prefWidth="800">
<columns>
<TableColumn minWidth="200" text="Название">
<TableColumn minWidth="200" text="%market.system.name">
<cellValueFactory><PropertyValueFactory property="name"/></cellValueFactory>
</TableColumn>
<TableColumn minWidth="60" text="X">
@@ -31,10 +31,10 @@
<TableColumn fx:id="government" minWidth="100" text="%market.government">
<cellValueFactory><WritablePropertyValueFactory property="government"/></cellValueFactory>
</TableColumn>
<TableColumn fx:id="power" minWidth="100" text="Сила">
<TableColumn fx:id="power" minWidth="100" text="%market.power">
<cellValueFactory><WritablePropertyValueFactory property="power"/></cellValueFactory>
</TableColumn>
<TableColumn fx:id="powerState" minWidth="100" text="Статус">
<TableColumn fx:id="powerState" minWidth="100" text="%market.powerState">
<cellValueFactory><WritablePropertyValueFactory property="powerState"/></cellValueFactory>
</TableColumn>
@@ -45,9 +45,9 @@
<contextMenu>
<ContextMenu>
<items>
<MenuItem text="Добавить" onAction="#add" />
<MenuItem text="Редактировать" onAction="#edit" />
<MenuItem text="Удалить" onAction="#remove" />
<MenuItem text="%dialog.button.add" onAction="#add" />
<MenuItem text="%dialog.button.edit" onAction="#edit" />
<MenuItem text="%dialog.button.remove" onAction="#remove" />
</items>
</ContextMenu>
</contextMenu>

View File

@@ -48,7 +48,7 @@
</VBox>
<ListView fx:id="excludes" GridPane.rowIndex="7" GridPane.columnIndex="1" maxHeight="120"/>
<Label text="Фильтры на товары:" GridPane.rowIndex="8" />
<Label text="%filter.stations" GridPane.rowIndex="8" />
<VBox GridPane.rowIndex="9" spacing="4">
<TextField fx:id="vFilterSystemText" minWidth="180"/>
<ComboBox fx:id="vFilterStation" minWidth="180"/>
@@ -58,7 +58,7 @@
<Button prefWidth="30" onAction="#removeVendorFilter"><graphic><Glyph text="FontAwesome|MINUS"/></graphic></Button>
<Button prefWidth="30" onAction="#cleanVendorFilters"><graphic><Glyph text="FontAwesome|TRASH_ALT"/></graphic></Button>
</HBox>
<Button prefWidth="180" text="Глобальный фильтр" onAction="#editDefaultVendorFilter"/>
<Button prefWidth="180" text="%filter.stations.global" onAction="#editDefaultVendorFilter"/>
</VBox>
<ListView fx:id="vFilters" GridPane.rowIndex="9" GridPane.columnIndex="1" maxHeight="120"/>

View File

@@ -23,7 +23,7 @@
<Label fx:id="stationDistance" text="123456 ls" styleClass="text-small"/>
</VBox>
</HBox>
<HBox fx:id="refuelGroup"><Label text="Заправить:" /><Label fx:id="refuel" /></HBox>
<HBox fx:id="refuelGroup"><Label text="%helper.refuel" /><Label fx:id="refuel" /></HBox>
<HBox>
<ToggleButton fx:id="infoBtn" minWidth="30">
<graphic><Glyph text="FontAwesome|INFO"/></graphic>
@@ -33,19 +33,19 @@
</Button>
</HBox>
<VBox fx:id="ordersGroup" maxHeight="240">
<Label text="Продать:" />
<Label text="%helper.sell" />
<ListView fx:id="sellOrders"/>
<Label text="Купить:" />
<Label text="%helper.buy" />
<ListView fx:id="buyOrders"/>
</VBox>
<VBox fx:id="missionsGroup" maxHeight="120">
<Label text="Сдать миссии:" />
<Label text="%helper.missions" />
<ListView fx:id="missions"/>
</VBox>
<VBox fx:id="infoGroup" maxHeight="240">
<Label text="Станции:" />
<Label text="%helper.stations" />
<ListView fx:id="stations"/>
<Label text="Товары:" />
<Label text="%helper.items" />
<ListView fx:id="sellOffers"/>
</VBox>
<padding>

View File

@@ -12,7 +12,7 @@
fx:controller="ru.trader.controllers.ItemsController">
<TableView fx:id="tblItems" editable="true" VBox.vgrow="ALWAYS" prefWidth="1195.0">
<columns>
<TableColumn editable="true" minWidth="200.0" text="%market.item.name">
<TableColumn editable="true" minWidth="200.0" text="%market.item">
<cellValueFactory><PropertyValueFactory property="name"/></cellValueFactory>
</TableColumn>
<TableColumn editable="true" resizable="false" text="%market.offer.buy">

View File

@@ -62,7 +62,7 @@
<Tab text="%main.tab.search">
<fx:include source="search.fxml"/>
</Tab>
<Tab fx:id="track" text="Текущий маршрут">
<Tab fx:id="track" text="%main.tab.route">
<fx:include source="routeTrack.fxml"/>
</Tab>
</TabPane>

View File

@@ -19,7 +19,7 @@
</columnConstraints>
<VBox GridPane.rowSpan="2" GridPane.vgrow="ALWAYS" minWidth="270">
<TitledPane text="%market.system.name" collapsible="false">
<TitledPane text="%market.system" collapsible="false">
<HBox><TextField fx:id="systemText" HBox.hgrow="ALWAYS" /><Button minWidth="30" onAction="#currentSystem"><graphic><Glyph text="FontAwesome|MAP_MARKER"/></graphic></Button></HBox>
</TitledPane>
<TitledPane VBox.vgrow="ALWAYS" text="%market.stations" collapsible="false">
@@ -69,7 +69,7 @@
<TableView fx:id="tblSell" editable="true">
<rowFactory><OfferDecoratedRow /></rowFactory>
<columns>
<TableColumn minWidth="230.0" text="%market.item.name">
<TableColumn minWidth="230.0" text="%market.item">
<cellValueFactory><PropertyValueFactory property="name"/></cellValueFactory>
</TableColumn>
<TableColumn minWidth="110.0" text="%market.offer.price" onEditCommit="#editPrice">
@@ -118,7 +118,7 @@
<TableView fx:id="tblBuy" editable="true">
<rowFactory><OfferDecoratedRow /></rowFactory>
<columns>
<TableColumn minWidth="230.0" text="%market.item.name">
<TableColumn minWidth="230.0" text="%market.item">
<cellValueFactory><PropertyValueFactory property="name"/></cellValueFactory>
</TableColumn>
<TableColumn minWidth="110.0" text="%market.offer.price" editable="true" onEditCommit="#editPrice">

View File

@@ -13,35 +13,35 @@
<Insets left="5" right="5" top="5" bottom="5"/>
</padding>
<Label text="Имя:" />
<Label text="%profile.name" />
<TextField fx:id="name" />
<StackPane>
<HBox fx:id="profileInfo" spacing="4">
<Label text="Баланс:" />
<Label text="%profile.balance" />
<NumberField fx:id="balance" />
<Label text="Система:" />
<TextField fx:id="systemText" />
<Button fx:id="btnAddSystem" minWidth="30">
<graphic><Glyph text="FontAwesome|EDIT"/></graphic>
</Button>
<Label text="Станция:" />
<ComboBox fx:id="station" />
<Button fx:id="btnAddStation" minWidth="30">
<graphic><Glyph text="FontAwesome|EDIT"/></graphic>
</Button>
<Label text="В доке:" />
<Label text="%profile.system" />
<HBox>
<TextField fx:id="systemText" />
<Button fx:id="btnAddSystem" minWidth="30"><graphic><Glyph text="FontAwesome|EDIT"/></graphic></Button>
</HBox>
<Label text="%profile.station" />
<HBox>
<ComboBox fx:id="station" />
<Button fx:id="btnAddStation" minWidth="30"><graphic><Glyph text="FontAwesome|EDIT"/></graphic></Button>
</HBox>
<Label text="%profile.docked" />
<CheckBox fx:id="docked" />
</HBox>
<HBox fx:id="shipInfo" spacing="4">
<Label text="Трюм:" />
<Label text="%profile.ship.cargo" />
<NumberField fx:id="cargo" maxWidth="60"/>
<Label text="Топливный бак:" />
<Label text="%profile.ship.tank" />
<NumberField fx:id="tank" maxWidth="60"/>
<Label text="Масса:" />
<Label text="%profile.ship.mass" />
<NumberField fx:id="mass" maxWidth="60"/>
<Label text="Двигатель:" />
<Label text="%profile.ship.engine" />
<ComboBox fx:id="engine" maxWidth="60"/>
<Label text="Дальность прыжка, LY:" />
<Label text="%profile.ship.jump" />
<Label fx:id="jumpRange"/>
</HBox>
</StackPane>

View File

@@ -6,7 +6,8 @@
<VBox xmlns="http://javafx.com/javafx/8" xmlns:fx="http://javafx.com/fxml/1"
fx:controller="ru.trader.controllers.RouteSearchController">
<TitledPane text="%router.pane.route" minHeight="80" collapsible="false">
<VBox spacing="4">
<HBox>
<VBox spacing="4" HBox.hgrow="ALWAYS">
<HBox spacing="10" alignment="CENTER">
<HBox spacing="2" alignment="BASELINE_LEFT">
<Label text="%router.pane.route.from" />
@@ -20,14 +21,20 @@
<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"/>
<CheckBox fx:id="cbFullScan" selected="true" text="Глубокий поиск"/>
</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>
<VBox spacing="4" maxWidth="200">
<Label text="%router.search.type" />
<fx:define><ToggleGroup fx:id="searchType" /></fx:define>
<RadioButton fx:id="rbByTime" text="%router.search.byTime" toggleGroup="$searchType"/>
<RadioButton text="%router.search.byProfit" selected="true" toggleGroup="$searchType"/>
<CheckBox fx:id="cbFullScan" selected="true" text="%router.search.full"/>
</VBox>
</HBox>
</TitledPane>
<TitledPane text="%router.pane.missions" collapsible="false">
<HBox spacing="10">

View File

@@ -19,17 +19,17 @@
<ColumnConstraints minWidth="220" />
</columnConstraints>
<VBox GridPane.rowIndex="0" GridPane.columnIndex="0" GridPane.columnSpan="3">
<HBox><Label text="Система:" /><Label fx:id="system" /></HBox>
<HBox><Label text="Станция:" /><Label fx:id="station" /></HBox>
<HBox><Label text="Время:" /><Label fx:id="time" /></HBox>
<HBox fx:id="refuelGroup"><Label text="Заправить:" /><Label fx:id="refuel" /></HBox>
<VBox GridPane.rowIndex="0" GridPane.columnIndex="0" GridPane.columnSpan="3" spacing="4">
<HBox spacing="4"><Label text="%helper.system" /><Label fx:id="system" /></HBox>
<HBox spacing="4"><Label text="%helper.station" /><Label fx:id="station" /></HBox>
<HBox spacing="4"><Label text="%helper.time" /><Label fx:id="time" /></HBox>
<HBox fx:id="refuelGroup" spacing="4"><Label text="%helper.refuel" /><Label fx:id="refuel" /></HBox>
</VBox>
<Label GridPane.rowIndex="1" GridPane.columnIndex="0" text="Продать:" />
<Label GridPane.rowIndex="1" GridPane.columnIndex="0" text="%helper.sell" />
<ListView GridPane.rowIndex="2" GridPane.columnIndex="0" fx:id="sellOrders" maxHeight="150"/>
<Label GridPane.rowIndex="1" GridPane.columnIndex="1" text="Купить:" />
<Label GridPane.rowIndex="1" GridPane.columnIndex="1" text="%helper.buy" />
<ListView GridPane.rowIndex="2" GridPane.columnIndex="1" fx:id="buyOrders" maxHeight="150"/>
<VBox GridPane.rowIndex="2" GridPane.columnIndex="2" spacing="4" alignment="TOP_RIGHT">
@@ -38,7 +38,7 @@
<Button prefWidth="30" onAction="#clearOrders"><graphic><Glyph text="FontAwesome|TRASH"/></graphic></Button>
</VBox>
<Label GridPane.rowIndex="3" GridPane.columnIndex="0" GridPane.columnSpan="2" text="Миссии:" />
<Label GridPane.rowIndex="3" GridPane.columnIndex="0" GridPane.columnSpan="2" text="%helper.missions" />
<StackPane GridPane.rowIndex="4" GridPane.columnIndex="0" GridPane.columnSpan="2" maxHeight="150">
<HBox fx:id="missionsGroup">
<ListView fx:id="missionsList" HBox.hgrow="ALWAYS"/>

View File

@@ -87,13 +87,13 @@
<VBox HBox.hgrow="ALWAYS">
<TableView fx:id="tblOrders" VBox.vgrow="ALWAYS">
<columns>
<TableColumn minWidth="140.0" text="%market.system.name">
<TableColumn minWidth="140.0" text="%market.system">
<cellValueFactory><PropertyValueFactory property="system"/></cellValueFactory>
</TableColumn>
<TableColumn minWidth="150.0" text="%market.order.seller">
<cellValueFactory><PropertyValueFactory property="station"/></cellValueFactory>
</TableColumn>
<TableColumn minWidth="140.0" text="%market.item.name">
<TableColumn minWidth="140.0" text="%market.item">
<cellValueFactory><PropertyValueFactory property="name"/></cellValueFactory>
</TableColumn>
<TableColumn minWidth="80.0" text="%market.offer.price">

View File

@@ -61,10 +61,10 @@
<TableColumn fx:id="clnGovernment" minWidth="100" text="%market.government">
<cellValueFactory><PropertyValueFactory property="government"/></cellValueFactory>
</TableColumn>
<TableColumn fx:id="clnPower" minWidth="100" text="Сила">
<TableColumn fx:id="clnPower" minWidth="100" text="%market.power">
<cellValueFactory><PropertyValueFactory property="power"/></cellValueFactory>
</TableColumn>
<TableColumn fx:id="clnPowerState" minWidth="100" text="Статус">
<TableColumn fx:id="clnPowerState" minWidth="100" text="%market.powerState">
<cellValueFactory><PropertyValueFactory property="powerState"/></cellValueFactory>
</TableColumn>
<TableColumn fx:id="clnX" minWidth="60.0" text="x">

View File

@@ -52,13 +52,13 @@
</TitledPane>
<TableView fx:id="tblResults" GridPane.columnIndex="1" GridPane.hgrow="ALWAYS" GridPane.vgrow="ALWAYS">
<columns>
<TableColumn minWidth="200.0" text="%market.system.name">
<TableColumn minWidth="200.0" text="%market.system">
<cellValueFactory><PropertyValueFactory property="system"/></cellValueFactory>
</TableColumn>
<TableColumn minWidth="200.0" text="%market.station.name">
<TableColumn minWidth="200.0" text="%market.station">
<cellValueFactory><PropertyValueFactory property="station"/></cellValueFactory>
</TableColumn>
<TableColumn minWidth="180.0" text="%market.item.name">
<TableColumn minWidth="180.0" text="%market.item">
<cellValueFactory><PropertyValueFactory property="name"/></cellValueFactory>
</TableColumn>
<TableColumn minWidth="110.0" text="%market.offer.price">

View File

@@ -19,32 +19,32 @@
<NumberField fx:id="emdnUpdateTime" maxWidth="100" GridPane.columnIndex="1" GridPane.rowIndex="4" />
-->
<Label text="EDCE" styleClass="settings-group" GridPane.halignment="CENTER" GridPane.columnSpan="2"/>
<Label text="Включить" GridPane.rowIndex="1"/>
<Label text="%settings.edce.on" GridPane.rowIndex="1"/>
<CheckBox fx:id="edceActive" GridPane.columnIndex="1" GridPane.rowIndex="1"/>
<Label text="Интервал" GridPane.rowIndex="2" />
<Label text="%settings.edce.interval" 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" />
<Label text="%settings.performance.jumps" GridPane.rowIndex="4" />
<NumberField fx:id="jumps" maxWidth="100" GridPane.columnIndex="1" GridPane.rowIndex="4" />
<Label text="Посадок:" GridPane.rowIndex="5" />
<Label text="%settings.performance.landings" GridPane.rowIndex="5" />
<NumberField fx:id="lands" maxWidth="100" GridPane.columnIndex="1" GridPane.rowIndex="5" />
<Label text="Количество маршрутов:" GridPane.rowIndex="6" />
<Label text="%settings.performance.limit" 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" />
<Label text="%settings.search" styleClass="settings-group" GridPane.halignment="CENTER" GridPane.columnSpan="2" GridPane.rowIndex="7"/>
<Label text="%settings.search.fuelPrice" GridPane.rowIndex="8" />
<NumberField fx:id="fuelPrice" maxWidth="100" GridPane.columnIndex="1" GridPane.rowIndex="8" />
<Label text="Тип маршрутов:" GridPane.rowIndex="9" />
<Label text="%settings.search.pathType" GridPane.rowIndex="9" />
<ComboBox fx:id="pathPriority" maxWidth="100" GridPane.columnIndex="1" GridPane.rowIndex="9" />
<Label text="Время гиперпрыжка:" GridPane.rowIndex="10" />
<Label text="%settings.search.times.jump" GridPane.rowIndex="10" />
<NumberField fx:id="jumpTime" maxWidth="100" GridPane.columnIndex="1" GridPane.rowIndex="10" />
<Label text="Время посадки:" GridPane.rowIndex="11" />
<Label text="%settings.search.times.landing" GridPane.rowIndex="11" />
<NumberField fx:id="landingTime" maxWidth="100" GridPane.columnIndex="1" GridPane.rowIndex="11" />
<Label text="Время взлета:" GridPane.rowIndex="12" />
<Label text="%settings.search.times.takeoff" GridPane.rowIndex="12" />
<NumberField fx:id="takeoffTime" maxWidth="100" GridPane.columnIndex="1" GridPane.rowIndex="12" />
<Label text="Время перезарядки FSD:" GridPane.rowIndex="13" />
<Label text="%settings.search.times.recharge" GridPane.rowIndex="13" />
<NumberField fx:id="rechargeTime" maxWidth="100" GridPane.columnIndex="1" GridPane.rowIndex="13" />
<Label text="Горячие клавиши" styleClass="settings-group" GridPane.halignment="CENTER" GridPane.columnSpan="2" GridPane.rowIndex="14"/>
<Label text="Точка маршрута достигнута:" GridPane.rowIndex="15" />
<Label text="%settings.hotkeys" styleClass="settings-group" GridPane.halignment="CENTER" GridPane.columnSpan="2" GridPane.rowIndex="14"/>
<Label text="%settings.hotkeys.complete" GridPane.rowIndex="15" />
<TextField fx:id="completeKeyText" maxWidth="100" GridPane.columnIndex="1" GridPane.rowIndex="15" />
</GridPane>

View File

@@ -15,7 +15,7 @@
prefWidth="725">
<TableView fx:id="tblOrders" editable="true">
<columns>
<TableColumn minWidth="160.0" text="%market.item.name">
<TableColumn minWidth="160.0" text="%market.item">
<cellValueFactory><PropertyValueFactory property="name"/></cellValueFactory>
</TableColumn>
<TableColumn minWidth="160.0" text="%market.order.seller">

View File

@@ -70,7 +70,7 @@
</VBox>
<TableView fx:id="items" GridPane.rowIndex="4" prefWidth="575" maxHeight="560" editable="true" GridPane.columnIndex="1">
<columns>
<TableColumn minWidth="200.0" text="%market.item.name" editable="false">
<TableColumn minWidth="200.0" text="%market.item" editable="false">
<cellValueFactory><PropertyValueFactory property="name"/></cellValueFactory>
</TableColumn>
<TableColumn fx:id="buy" minWidth="90.0" text="%market.offer.sell">

View File

@@ -3,19 +3,19 @@
<VBox xmlns="http://javafx.com/javafx/8" xmlns:fx="http://javafx.com/fxml/1" fx:controller="ru.trader.controllers.VendorFilterController"
styleClass="dialog" spacing="10">
<HBox spacing="10">
<CheckBox fx:id="cbSkipIllegal" text="Только легальные"/>
<CheckBox fx:id="cbDontSell" text="Не покупать"/>
<CheckBox fx:id="cbDontBuy" text="Не продавать"/>
<CheckBox fx:id="cbSkipIllegal" text="%filter.stations.legalOnly"/>
<CheckBox fx:id="cbDontSell" text="%filter.stations.notBuy"/>
<CheckBox fx:id="cbDontBuy" text="%filter.stations.notSell"/>
</HBox>
<VBox spacing="4">
<Label text="Не покупать:"/>
<Label text="%filter.stations.label.notBuy"/>
<ScrollPane maxHeight="200" maxWidth="400">
<GridPane fx:id="sellCbs" hgap="5" vgap="5"/>
</ScrollPane>
</VBox>
<VBox spacing="4">
<Label text="Не продавать:"/>
<Label text="%filter.stations.label.notSell"/>
<ScrollPane maxHeight="200" maxWidth="400">
<GridPane fx:id="buyCbs" hgap="5" vgap="5"/>
</ScrollPane>