Archived
0

add orders list to paths screen

This commit is contained in:
iMoHax
2016-03-23 11:38:54 +03:00
parent 828dcf84b0
commit 17008fbeb4
3 changed files with 85 additions and 2 deletions

View File

@@ -9,6 +9,7 @@ import javafx.scene.control.ButtonType;
import javafx.scene.control.Dialog; import javafx.scene.control.Dialog;
import javafx.scene.control.TableView; import javafx.scene.control.TableView;
import ru.trader.Main; import ru.trader.Main;
import ru.trader.model.OrderModel;
import ru.trader.model.RouteModel; import ru.trader.model.RouteModel;
import ru.trader.model.support.BindingsHelper; import ru.trader.model.support.BindingsHelper;
import ru.trader.view.support.Localization; import ru.trader.view.support.Localization;
@@ -19,7 +20,11 @@ import java.util.Optional;
public class PathsController { public class PathsController {
@FXML @FXML
private TableView<RouteModel> tblPaths; private TableView<RouteModel> tblPaths;
@FXML
private TableView<OrderModel> tblOrders;
private final List<RouteModel> paths = FXCollections.observableArrayList(); private final List<RouteModel> paths = FXCollections.observableArrayList();
private final ObservableList<OrderModel> orders = FXCollections.observableArrayList();
private final ListChangeListener<RouteModel> PATHS_CHANGE_LISTENER = l -> { private final ListChangeListener<RouteModel> PATHS_CHANGE_LISTENER = l -> {
while (l.next()) { while (l.next()) {
if (l.wasAdded()) { if (l.wasAdded()) {
@@ -35,8 +40,19 @@ public class PathsController {
@FXML @FXML
private void initialize() { private void initialize() {
BindingsHelper.setTableViewItems(tblPaths, paths); BindingsHelper.setTableViewItems(tblPaths, paths);
tblOrders.setItems(orders);
tblPaths.getSelectionModel().selectedItemProperty().addListener((ov, o, n) ->{
if (n != null){
fillOrders(n);
} else {
orders.clear();
}
});
} }
private void fillOrders(RouteModel route) {
orders.setAll(route.getOrders());
}
private void createDialog(Parent owner, Parent content){ private void createDialog(Parent owner, Parent content){
dlg = new Dialog<>(); dlg = new Dialog<>();

View File

@@ -0,0 +1,27 @@
package ru.trader.view.support.cells;
import javafx.collections.ObservableList;
import javafx.scene.control.TableRow;
import javafx.scene.control.TableView;
import javafx.util.Callback;
import ru.trader.model.OrderModel;
import ru.trader.view.support.ViewUtils;
public class OrderDecoratedRow extends DecoratedRowFactory<OrderModel> {
public OrderDecoratedRow() {
super();
}
public OrderDecoratedRow(Callback<TableView<OrderModel>, TableRow<OrderModel>> decorated) {
super(decorated);
}
@Override
protected void doStyle(TableRow<OrderModel> row, OrderModel entry) {
ObservableList<String> styles = row.getStyleClass();
styles.remove(ViewUtils.ILLEGAL_ITEM_STYLE);
if (entry != null && entry.isIllegal()){
styles.add(ViewUtils.ILLEGAL_ITEM_STYLE);
}
}
}

View File

@@ -8,7 +8,10 @@
<?import ru.trader.view.support.cells.DoubleCell?> <?import ru.trader.view.support.cells.DoubleCell?>
<?import ru.trader.view.support.cells.PathRouteCell?> <?import ru.trader.view.support.cells.PathRouteCell?>
<?import ru.trader.view.support.cells.TimeCell?> <?import ru.trader.view.support.cells.TimeCell?>
<HBox xmlns="http://javafx.com/javafx/8" xmlns:fx="http://javafx.com/fxml/1" <?import javafx.scene.layout.VBox?>
<?import ru.trader.view.support.cells.OfferCellValueImpl?>
<?import ru.trader.view.support.cells.OrderDecoratedRow?>
<VBox xmlns="http://javafx.com/javafx/8" xmlns:fx="http://javafx.com/fxml/1"
fx:controller="ru.trader.controllers.PathsController" styleClass="dialog" fx:controller="ru.trader.controllers.PathsController" styleClass="dialog"
prefWidth="1050"> prefWidth="1050">
<TableView fx:id="tblPaths" editable="true"> <TableView fx:id="tblPaths" editable="true">
@@ -55,4 +58,41 @@
</ContextMenu> </ContextMenu>
</contextMenu> </contextMenu>
</TableView> </TableView>
</HBox> <TitledPane maxHeight="200" collapsible="false">
<TableView fx:id="tblOrders">
<rowFactory><OrderDecoratedRow /></rowFactory>
<columns>
<TableColumn minWidth="150" text="%market.system">
<cellValueFactory><PropertyValueFactory property="system"/></cellValueFactory>
</TableColumn>
<TableColumn minWidth="150" text="%market.order.seller">
<cellValueFactory><PropertyValueFactory property="station"/></cellValueFactory>
</TableColumn>
<TableColumn minWidth="150" text="%market.item">
<cellValueFactory><PropertyValueFactory property="name"/></cellValueFactory>
</TableColumn>
<TableColumn minWidth="80" text="%market.offer.price">
<cellFactory><DoubleCell/></cellFactory>
<cellValueFactory><PropertyValueFactory property="price"/></cellValueFactory>
</TableColumn>
<TableColumn minWidth="80" text="%market.order.count">
<cellValueFactory><PropertyValueFactory property="count"/></cellValueFactory>
</TableColumn>
<TableColumn minWidth="170" text="%market.order.buyer">
<cellValueFactory><OfferCellValueImpl property="buyOffer"/></cellValueFactory>
</TableColumn>
<TableColumn minWidth="80" text="%market.order.distance">
<cellFactory><DistanceCell /></cellFactory>
<cellValueFactory><PropertyValueFactory property="distance"/></cellValueFactory>
</TableColumn>
<TableColumn minWidth="80" text="%market.order.profit">
<cellFactory><DoubleCell/></cellFactory>
<cellValueFactory><PropertyValueFactory property="profit"/></cellValueFactory>
</TableColumn>
</columns>
<columnResizePolicy>
<TableView fx:constant="UNCONSTRAINED_RESIZE_POLICY"/>
</columnResizePolicy>
</TableView>
</TitledPane>
</VBox>