remove not using controller
This commit is contained in:
@@ -1,359 +0,0 @@
|
|||||||
package ru.trader.controllers;
|
|
||||||
|
|
||||||
|
|
||||||
import javafx.beans.binding.Bindings;
|
|
||||||
import javafx.collections.FXCollections;
|
|
||||||
import javafx.collections.ListChangeListener;
|
|
||||||
import javafx.collections.ObservableList;
|
|
||||||
import javafx.fxml.FXML;
|
|
||||||
import javafx.scene.control.*;
|
|
||||||
import ru.trader.Main;
|
|
||||||
import ru.trader.analysis.CrawlerSpecificator;
|
|
||||||
import ru.trader.model.*;
|
|
||||||
import ru.trader.model.support.ChangeMarketListener;
|
|
||||||
import ru.trader.view.support.NumberField;
|
|
||||||
import ru.trader.view.support.RouteNode;
|
|
||||||
import ru.trader.view.support.autocomplete.AutoCompletion;
|
|
||||||
import ru.trader.view.support.autocomplete.CachedSuggestionProvider;
|
|
||||||
import ru.trader.view.support.autocomplete.SystemsProvider;
|
|
||||||
|
|
||||||
import java.util.Optional;
|
|
||||||
|
|
||||||
|
|
||||||
public class RouterController {
|
|
||||||
|
|
||||||
@FXML
|
|
||||||
private NumberField balance;
|
|
||||||
@FXML
|
|
||||||
private NumberField cargo;
|
|
||||||
@FXML
|
|
||||||
private NumberField distance;
|
|
||||||
@FXML
|
|
||||||
private NumberField tank;
|
|
||||||
@FXML
|
|
||||||
private NumberField jumps;
|
|
||||||
|
|
||||||
@FXML
|
|
||||||
private ScrollPane path;
|
|
||||||
|
|
||||||
@FXML
|
|
||||||
private Button addBtn;
|
|
||||||
|
|
||||||
@FXML
|
|
||||||
private Button editBtn;
|
|
||||||
|
|
||||||
@FXML
|
|
||||||
private Button removeBtn;
|
|
||||||
|
|
||||||
@FXML
|
|
||||||
private TextField sourceText;
|
|
||||||
private AutoCompletion<SystemModel> source;
|
|
||||||
|
|
||||||
@FXML
|
|
||||||
private ComboBox<String> sStation;
|
|
||||||
|
|
||||||
@FXML
|
|
||||||
private TextField targetText;
|
|
||||||
private AutoCompletion<SystemModel> target;
|
|
||||||
|
|
||||||
@FXML
|
|
||||||
private ComboBox<String> tStation;
|
|
||||||
|
|
||||||
@FXML
|
|
||||||
private TableView<OrderModel> tblOrders;
|
|
||||||
|
|
||||||
@FXML
|
|
||||||
private NumberField totalProfit;
|
|
||||||
|
|
||||||
@FXML
|
|
||||||
private NumberField totalBalance;
|
|
||||||
|
|
||||||
private MarketModel market;
|
|
||||||
private RouteModel route;
|
|
||||||
private final ObservableList<OrderModel> orders = FXCollections.observableArrayList();
|
|
||||||
|
|
||||||
@FXML
|
|
||||||
private void initialize(){
|
|
||||||
init();
|
|
||||||
balance.numberProperty().addListener((ov, o, n) -> {
|
|
||||||
totalBalance.setValue(n);
|
|
||||||
Main.SETTINGS.setBalance(n.doubleValue());
|
|
||||||
});
|
|
||||||
cargo.numberProperty().addListener((ov, o, n) -> Main.SETTINGS.setCargo(n.intValue()));
|
|
||||||
tank.numberProperty().addListener((ov, o, n) -> Main.SETTINGS.setTank(n.doubleValue()));
|
|
||||||
jumps.numberProperty().addListener((ov, o, n) -> Main.SETTINGS.setJumps(n.intValue()));
|
|
||||||
source.valueProperty().addListener((ov, o, n) -> {
|
|
||||||
if (n != null) {
|
|
||||||
sStation.setItems(n.getStationNamesList());
|
|
||||||
} else {
|
|
||||||
sStation.setItems(FXCollections.emptyObservableList());
|
|
||||||
}
|
|
||||||
sStation.getSelectionModel().selectFirst();
|
|
||||||
});
|
|
||||||
target.valueProperty().addListener((ov, o, n) -> {
|
|
||||||
if (n != null) {
|
|
||||||
tStation.setItems(n.getStationNamesList());
|
|
||||||
} else {
|
|
||||||
tStation.setItems(FXCollections.emptyObservableList());
|
|
||||||
}
|
|
||||||
tStation.getSelectionModel().selectFirst();
|
|
||||||
});
|
|
||||||
|
|
||||||
|
|
||||||
balance.setOnAction((v)->cargo.requestFocus());
|
|
||||||
cargo.setOnAction((v) -> tank.requestFocus());
|
|
||||||
tank.setOnAction((v) -> distance.requestFocus());
|
|
||||||
distance.setOnAction((v)->jumps.requestFocus());
|
|
||||||
jumps.setOnAction((v)->balance.requestFocus());
|
|
||||||
|
|
||||||
balance.setValue(Main.SETTINGS.getBalance());
|
|
||||||
cargo.setValue(Main.SETTINGS.getCargo());
|
|
||||||
tank.setValue(Main.SETTINGS.getTank());
|
|
||||||
jumps.setValue(Main.SETTINGS.getJumps());
|
|
||||||
|
|
||||||
addBtn.disableProperty().bind(Bindings.createBooleanBinding(()-> {
|
|
||||||
SystemModel system = target.getValue();
|
|
||||||
return ModelFabric.isFake(system);
|
|
||||||
}, target.valueProperty()));
|
|
||||||
|
|
||||||
editBtn.disableProperty().bind(tblOrders.getSelectionModel().selectedIndexProperty().isEqualTo(-1));
|
|
||||||
removeBtn.disableProperty().bind(Bindings.createBooleanBinding(()-> {
|
|
||||||
int sel = tblOrders.getSelectionModel().getSelectedIndex();
|
|
||||||
return sel == -1 || sel != orders.size()-1;
|
|
||||||
}, tblOrders.getSelectionModel().selectedIndexProperty()));
|
|
||||||
|
|
||||||
tblOrders.setItems(orders);
|
|
||||||
orders.addListener((ListChangeListener<OrderModel>) c -> {
|
|
||||||
while (c.next()) {
|
|
||||||
if (c.wasRemoved()) {
|
|
||||||
c.getRemoved().forEach(this::onRemove);
|
|
||||||
}
|
|
||||||
if (c.wasAdded()) {
|
|
||||||
c.getAddedSubList().forEach(this::onAdd);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
void init(){
|
|
||||||
if (market != null){
|
|
||||||
market.getNotificator().remove(routerChangeListener);
|
|
||||||
}
|
|
||||||
market = MainController.getMarket();
|
|
||||||
market.getNotificator().add(routerChangeListener);
|
|
||||||
SystemsProvider provider = market.getSystemsProvider();
|
|
||||||
if (source == null){
|
|
||||||
source = new AutoCompletion<>(sourceText, new CachedSuggestionProvider<>(provider), ModelFabric.NONE_SYSTEM, provider.getConverter());
|
|
||||||
} else {
|
|
||||||
source.setSuggestions(provider.getPossibleSuggestions());
|
|
||||||
source.setConverter(provider.getConverter());
|
|
||||||
}
|
|
||||||
if (target == null){
|
|
||||||
target = new AutoCompletion<>(targetText, new CachedSuggestionProvider<>(provider), ModelFabric.NONE_SYSTEM, provider.getConverter());
|
|
||||||
} else {
|
|
||||||
target.setSuggestions(provider.getPossibleSuggestions());
|
|
||||||
target.setConverter(provider.getConverter());
|
|
||||||
}
|
|
||||||
orders.clear();
|
|
||||||
sStation.setValue(ModelFabric.NONE_STATION.getName());
|
|
||||||
tStation.setValue(ModelFabric.NONE_STATION.getName());
|
|
||||||
totalBalance.setValue(balance.getValue());
|
|
||||||
totalProfit.setValue(0);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
private void onAdd(OrderModel order){
|
|
||||||
totalProfit.add(order.getProfit());
|
|
||||||
totalBalance.add(order.getProfit());
|
|
||||||
source.setValue(order.getBuyer().getSystem());
|
|
||||||
sStation.setValue(order.getBuyer().getName());
|
|
||||||
target.setValue(ModelFabric.NONE_SYSTEM);
|
|
||||||
balance.setDisable(true);
|
|
||||||
}
|
|
||||||
|
|
||||||
private void onRemove(OrderModel order) {
|
|
||||||
totalProfit.sub(order.getProfit());
|
|
||||||
totalBalance.sub(order.getProfit());
|
|
||||||
source.setValue(order.getSystem());
|
|
||||||
sStation.setValue(order.getStation().getName());
|
|
||||||
target.setValue(ModelFabric.NONE_SYSTEM);
|
|
||||||
if (orders.isEmpty()) {
|
|
||||||
balance.setDisable(false);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public void addStationToRoute(){
|
|
||||||
SystemModel s = source.getValue();
|
|
||||||
SystemModel t = target.getValue();
|
|
||||||
StationModel sS = s != null ? s.get(sStation.getValue()) : ModelFabric.NONE_STATION;
|
|
||||||
StationModel tS = t != null ? t.get(tStation.getValue()) : ModelFabric.NONE_STATION;
|
|
||||||
RouteModel r = market.getPath(s, sS, t, tS);
|
|
||||||
if (r == null) return;
|
|
||||||
if (route != null){
|
|
||||||
route = route.add(r);
|
|
||||||
} else {
|
|
||||||
route = r;
|
|
||||||
}
|
|
||||||
refreshPath();
|
|
||||||
source.setValue(target.getValue());
|
|
||||||
sStation.setValue(tS.getName());
|
|
||||||
}
|
|
||||||
|
|
||||||
public void editOrders(){
|
|
||||||
OrderModel sel = tblOrders.getSelectionModel().getSelectedItem();
|
|
||||||
int index = tblOrders.getSelectionModel().getSelectedIndex();
|
|
||||||
//TODO: implement
|
|
||||||
/* market.getOrders(sel.getStation(), sel.getBuyer(), sel.getBalance(), result -> {
|
|
||||||
Optional<OrderModel> order = Screeners.showOrders(result);
|
|
||||||
if (order.isPresent()){
|
|
||||||
orders.set(index, order.get());
|
|
||||||
}
|
|
||||||
|
|
||||||
});*/
|
|
||||||
}
|
|
||||||
|
|
||||||
public void removeSelected(){
|
|
||||||
TableView.TableViewSelectionModel<OrderModel> select = tblOrders.getSelectionModel();
|
|
||||||
if (!select.isEmpty()){
|
|
||||||
int index = select.getSelectedIndex();
|
|
||||||
if (index > 0){
|
|
||||||
route = route.remove(select.getSelectedItem());
|
|
||||||
} else {
|
|
||||||
route = null;
|
|
||||||
}
|
|
||||||
orders.remove(index);
|
|
||||||
refreshPath();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public void recompute(){
|
|
||||||
if (route != null){
|
|
||||||
//TODO: implement
|
|
||||||
/// route.recompute(balance.getValue().doubleValue(), cargo.getValue().longValue());
|
|
||||||
orders.clear();
|
|
||||||
orders.addAll(route.getOrders());
|
|
||||||
refreshPath();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public void rebuild(){
|
|
||||||
if (route != null){
|
|
||||||
RouteModel r = market.getRoute(route);
|
|
||||||
if (r != null){
|
|
||||||
route = r;
|
|
||||||
orders.clear();
|
|
||||||
orders.addAll(route.getOrders());
|
|
||||||
refreshPath();
|
|
||||||
} else {
|
|
||||||
recompute();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public void removeAll(){
|
|
||||||
orders.clear();
|
|
||||||
totalBalance.setValue(balance.getValue());
|
|
||||||
totalProfit.setValue(0);
|
|
||||||
route = null;
|
|
||||||
refreshPath();
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
public void showTopOrders(){
|
|
||||||
market.getTop(totalBalance.getValue().doubleValue(), result -> {
|
|
||||||
Optional<OrderModel> order = Screeners.showOrders(result);
|
|
||||||
if (order.isPresent()){
|
|
||||||
orders.add(order.get());
|
|
||||||
addOrderToPath(order.get());
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
public void showOrders(){
|
|
||||||
SystemModel s = source.getValue();
|
|
||||||
SystemModel t = target.getValue();
|
|
||||||
StationModel sS = s != null ? s.get(sStation.getValue()) : ModelFabric.NONE_STATION;
|
|
||||||
StationModel tS = t != null ? t.get(tStation.getValue()) : ModelFabric.NONE_STATION;
|
|
||||||
market.getOrders(s, sS, t, tS, totalBalance.getValue().doubleValue(), result -> {
|
|
||||||
Optional<OrderModel> order = Screeners.showOrders(result);
|
|
||||||
if (order.isPresent()){
|
|
||||||
orders.add(order.get());
|
|
||||||
addOrderToPath(order.get());
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
public void showRoutes(){
|
|
||||||
SystemModel s = source.getValue();
|
|
||||||
SystemModel t = target.getValue();
|
|
||||||
StationModel sS = s != null ? s.get(sStation.getValue()) : ModelFabric.NONE_STATION;
|
|
||||||
StationModel tS = t != null ? t.get(tStation.getValue()) : ModelFabric.NONE_STATION;
|
|
||||||
market.getRoutes(s, sS, t, tS, totalBalance.getValue().doubleValue(), new CrawlerSpecificator(), routes -> {
|
|
||||||
Optional<RouteModel> path = Screeners.showRouters(routes);
|
|
||||||
if (path.isPresent()){
|
|
||||||
orders.addAll(path.get().getOrders());
|
|
||||||
addRouteToPath(path.get());
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
public void showTopRoutes(){
|
|
||||||
market.getTopRoutes(totalBalance.getValue().doubleValue(), routes -> {
|
|
||||||
Optional<RouteModel> path = Screeners.showRouters(routes);
|
|
||||||
if (path.isPresent()){
|
|
||||||
orders.addAll(path.get().getOrders());
|
|
||||||
addRouteToPath(path.get());
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
private void addRouteToPath(RouteModel route){
|
|
||||||
if (this.route == null){
|
|
||||||
this.route = route;
|
|
||||||
} else {
|
|
||||||
this.route = this.route.add(route);
|
|
||||||
}
|
|
||||||
refreshPath();
|
|
||||||
}
|
|
||||||
|
|
||||||
private void addOrderToPath(OrderModel order){
|
|
||||||
if (route != null){
|
|
||||||
route = route.add(order);
|
|
||||||
} else {
|
|
||||||
route = market.getPath(order);
|
|
||||||
}
|
|
||||||
refreshPath();
|
|
||||||
}
|
|
||||||
|
|
||||||
private void refreshPath(){
|
|
||||||
MainController.getProfile().setRoute(route);
|
|
||||||
if (route != null)
|
|
||||||
path.setContent(new RouteNode(route).getNode());
|
|
||||||
else
|
|
||||||
path.setContent(null);
|
|
||||||
}
|
|
||||||
|
|
||||||
private final ChangeMarketListener routerChangeListener = new ChangeMarketListener() {
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void add(StationModel station) {
|
|
||||||
if (station.getSystem().equals(source.getValue())){
|
|
||||||
sStation.getItems().add(station.getName());
|
|
||||||
}
|
|
||||||
if (station.getSystem().equals(target.getValue())){
|
|
||||||
tStation.getItems().add(station.getName());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void remove(StationModel station) {
|
|
||||||
if (station.getSystem().equals(source.getValue())){
|
|
||||||
sStation.getItems().remove(station.getName());
|
|
||||||
}
|
|
||||||
if (station.getSystem().equals(target.getValue())){
|
|
||||||
tStation.getItems().remove(station.getName());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
};
|
|
||||||
}
|
|
||||||
@@ -1,124 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
|
||||||
|
|
||||||
<?import javafx.scene.control.*?>
|
|
||||||
<?import javafx.scene.layout.*?>
|
|
||||||
|
|
||||||
<?import ru.trader.view.support.NumberField?>
|
|
||||||
<?import javafx.scene.control.cell.PropertyValueFactory?>
|
|
||||||
<?import ru.trader.view.support.cells.DoubleCell?>
|
|
||||||
<?import ru.trader.view.support.cells.OfferCellValueImpl?>
|
|
||||||
|
|
||||||
<?import javafx.geometry.Insets?>
|
|
||||||
<?import ru.trader.view.support.cells.DistanceCell?>
|
|
||||||
<HBox xmlns="http://javafx.com/javafx/8" xmlns:fx="http://javafx.com/fxml/1"
|
|
||||||
fx:controller="ru.trader.controllers.RouterController">
|
|
||||||
<fx:define><Insets fx:id="fields_group_margin" left="2" right="10"/></fx:define>
|
|
||||||
<fx:define><Insets fx:id="separator_margin" top="10" bottom="10"/></fx:define>
|
|
||||||
|
|
||||||
<VBox minWidth="270">
|
|
||||||
<TitledPane text="%router.pane.ship" minHeight="160" collapsible="false">
|
|
||||||
<GridPane vgap="4">
|
|
||||||
<columnConstraints>
|
|
||||||
<ColumnConstraints minWidth="150" />
|
|
||||||
<ColumnConstraints minWidth="100" maxWidth="100"/>
|
|
||||||
</columnConstraints>
|
|
||||||
<Label text="%router.pane.ship.balance"/>
|
|
||||||
<NumberField fx:id="balance" GridPane.columnIndex="1" />
|
|
||||||
<Label text="%router.pane.ship.cargo" GridPane.rowIndex="1" />
|
|
||||||
<NumberField fx:id="cargo" GridPane.columnIndex="1" GridPane.rowIndex="1" />
|
|
||||||
<Label text="%router.pane.ship.fueltank" GridPane.rowIndex="2" />
|
|
||||||
<NumberField fx:id="tank" GridPane.columnIndex="1" GridPane.rowIndex="2" />
|
|
||||||
<Label text="%router.pane.ship.distance" GridPane.rowIndex="3" />
|
|
||||||
<NumberField fx:id="distance" GridPane.columnIndex="1" GridPane.rowIndex="3" />
|
|
||||||
</GridPane>
|
|
||||||
</TitledPane>
|
|
||||||
<TitledPane text="%router.pane.route" minHeight="320" collapsible="false">
|
|
||||||
<GridPane vgap="4">
|
|
||||||
<columnConstraints>
|
|
||||||
<ColumnConstraints minWidth="80"/>
|
|
||||||
<ColumnConstraints minWidth="170" maxWidth="170"/>
|
|
||||||
</columnConstraints>
|
|
||||||
<Label text="%router.pane.route.from" />
|
|
||||||
<TextField fx:id="sourceText" prefWidth="170" GridPane.columnIndex="1" />
|
|
||||||
<ComboBox fx:id="sStation" prefWidth="170" GridPane.rowIndex="1" GridPane.columnIndex="1" />
|
|
||||||
<Label text="%router.pane.route.to" GridPane.rowIndex="2"/>
|
|
||||||
<TextField fx:id="targetText" prefWidth="170" GridPane.columnIndex="1" GridPane.rowIndex="2"/>
|
|
||||||
<ComboBox fx:id="tStation" prefWidth="170" GridPane.columnIndex="1" GridPane.rowIndex="3"/>
|
|
||||||
<Label text="%router.pane.route.jumps" GridPane.rowIndex="4" />
|
|
||||||
<NumberField fx:id="jumps" GridPane.columnIndex="1" GridPane.rowIndex="4" />
|
|
||||||
|
|
||||||
<Separator GridPane.columnSpan="2" GridPane.rowIndex="5" GridPane.margin="$separator_margin"/>
|
|
||||||
<VBox GridPane.columnSpan="2" GridPane.rowIndex="6" spacing="5">
|
|
||||||
<HBox alignment="CENTER" spacing="5">
|
|
||||||
<Button fx:id="addBtn" text="%dialog.button.add" onAction="#addStationToRoute" />
|
|
||||||
<Button fx:id="editBtn" text="%dialog.button.edit" onAction="#editOrders"/>
|
|
||||||
<Button fx:id="removeBtn" text="%dialog.button.remove" onAction="#removeSelected"/>
|
|
||||||
</HBox>
|
|
||||||
<HBox alignment="CENTER" spacing="5">
|
|
||||||
<Button text="%router.button.recompute" onAction="#recompute"/>
|
|
||||||
<Button text="%router.button.rebuild" onAction="#rebuild"/>
|
|
||||||
<Button text="%dialog.button.clear" onAction="#removeAll" />
|
|
||||||
</HBox>
|
|
||||||
<HBox alignment="CENTER" spacing="5">
|
|
||||||
<Button prefWidth="80" text="%market.offers" onAction="#showOrders" />
|
|
||||||
<Button text="%router.button.top" onAction="#showTopOrders" />
|
|
||||||
</HBox>
|
|
||||||
<HBox alignment="CENTER" spacing="5">
|
|
||||||
<Button prefWidth="80" text="%router.button.routes" onAction="#showRoutes" />
|
|
||||||
<Button text="%router.button.top" onAction="#showTopRoutes" />
|
|
||||||
</HBox>
|
|
||||||
</VBox>
|
|
||||||
</GridPane>
|
|
||||||
</TitledPane>
|
|
||||||
<Pane VBox.vgrow="ALWAYS"/>
|
|
||||||
<TitledPane text="%router.pane.total" minHeight="100" collapsible="false">
|
|
||||||
<GridPane vgap="4">
|
|
||||||
<columnConstraints>
|
|
||||||
<ColumnConstraints minWidth="80"/>
|
|
||||||
<ColumnConstraints minWidth="170"/>
|
|
||||||
</columnConstraints>
|
|
||||||
<Label text="%router.pane.ship.balance"/>
|
|
||||||
<NumberField fx:id="totalBalance" prefWidth="100" GridPane.columnIndex="1" editable="false"/>
|
|
||||||
<Label text="%router.pane.total.profit" GridPane.rowIndex="1"/>
|
|
||||||
<NumberField fx:id="totalProfit" prefWidth="100" GridPane.columnIndex="1" GridPane.rowIndex="1" editable="false"/>
|
|
||||||
</GridPane>
|
|
||||||
</TitledPane>
|
|
||||||
</VBox>
|
|
||||||
<VBox HBox.hgrow="ALWAYS">
|
|
||||||
<TableView fx:id="tblOrders" VBox.vgrow="ALWAYS">
|
|
||||||
<columns>
|
|
||||||
<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">
|
|
||||||
<cellValueFactory><PropertyValueFactory property="name"/></cellValueFactory>
|
|
||||||
</TableColumn>
|
|
||||||
<TableColumn minWidth="80.0" text="%market.offer.price">
|
|
||||||
<cellFactory><DoubleCell/></cellFactory>
|
|
||||||
<cellValueFactory><PropertyValueFactory property="price"/></cellValueFactory>
|
|
||||||
</TableColumn>
|
|
||||||
<TableColumn minWidth="80.0" text="%market.order.count">
|
|
||||||
<cellValueFactory><PropertyValueFactory property="count"/></cellValueFactory>
|
|
||||||
</TableColumn>
|
|
||||||
<TableColumn minWidth="160.0" text="%market.order.buyer">
|
|
||||||
<cellValueFactory><OfferCellValueImpl property="buyOffer"/></cellValueFactory>
|
|
||||||
</TableColumn>
|
|
||||||
<TableColumn minWidth="80.0" text="%market.order.distance">
|
|
||||||
<cellFactory><DistanceCell /></cellFactory>
|
|
||||||
<cellValueFactory><PropertyValueFactory property="distance"/></cellValueFactory>
|
|
||||||
</TableColumn>
|
|
||||||
<TableColumn minWidth="80.0" text="%market.order.profit">
|
|
||||||
<cellFactory><DoubleCell/></cellFactory>
|
|
||||||
<cellValueFactory><PropertyValueFactory property="profit"/></cellValueFactory>
|
|
||||||
</TableColumn>
|
|
||||||
</columns>
|
|
||||||
<columnResizePolicy>
|
|
||||||
<TableView fx:constant="UNCONSTRAINED_RESIZE_POLICY"/>
|
|
||||||
</columnResizePolicy>
|
|
||||||
</TableView>
|
|
||||||
<ScrollPane fx:id="path" styleClass="path-pane" minHeight="100" fitToHeight="true"/>
|
|
||||||
</VBox>
|
|
||||||
</HBox>
|
|
||||||
Reference in New Issue
Block a user