add top orders
This commit is contained in:
@@ -65,6 +65,7 @@ public class Main extends Application {
|
||||
Screeners.loadVEditorStage(getUrl(("vEditor.fxml")));
|
||||
Screeners.loadAddOfferStage(getUrl(("oEditor.fxml")));
|
||||
Screeners.loadOrdersStage(getUrl(("orders.fxml")));
|
||||
Screeners.loadTopOrdersStage(getUrl(("topOrders.fxml")));
|
||||
}
|
||||
|
||||
private static URL getUrl(String filename) throws MalformedURLException {
|
||||
|
||||
@@ -94,14 +94,14 @@ public class RoutersController {
|
||||
vendors.getSelectionModel().select(order.getVendor());
|
||||
}
|
||||
|
||||
public void addOrders(ActionEvent e){
|
||||
public void addOrders(){
|
||||
Collection<OrderModel> orders = Screeners.showOrders(getOffers(), totalBalance.getValue().doubleValue(), cargo.getValue().longValue());
|
||||
if (orders!=null){
|
||||
tblOrders.getItems().addAll(orders);
|
||||
}
|
||||
}
|
||||
|
||||
public void removeSelected(ActionEvent e){
|
||||
public void removeSelected(){
|
||||
TableView.TableViewSelectionModel<OrderModel> select = tblOrders.getSelectionModel();
|
||||
if (!select.isEmpty()){
|
||||
int index = select.getSelectedIndex();
|
||||
@@ -109,8 +109,17 @@ public class RoutersController {
|
||||
}
|
||||
}
|
||||
|
||||
public void removeAll(ActionEvent e){
|
||||
public void removeAll(){
|
||||
tblOrders.getItems().clear();
|
||||
}
|
||||
|
||||
|
||||
public void showTopOrders(){
|
||||
MarketModel market = MainController.getMarket();
|
||||
OrderModel order = Screeners.showTopOrders(market.getTop(100, totalBalance.getValue().doubleValue(), cargo.getValue().longValue()));
|
||||
if (order!=null){
|
||||
tblOrders.getItems().add(order);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
package ru.trader.controllers;
|
||||
|
||||
import javafx.collections.ObservableList;
|
||||
import javafx.fxml.FXMLLoader;
|
||||
import javafx.scene.Node;
|
||||
import javafx.scene.Parent;
|
||||
@@ -22,12 +23,14 @@ public class Screeners {
|
||||
private static Parent vEditorScreen;
|
||||
private static Parent editOffersScreen;
|
||||
private static Parent ordersScreen;
|
||||
private static Parent topOrdersScreen;
|
||||
|
||||
private static MainController mainController;
|
||||
private static ItemDescController itemDescController;
|
||||
private static VendorEditorController vEditorController;
|
||||
private static OffersEditorController oEditorController;
|
||||
private static OrdersController ordersController;
|
||||
private static TopOrdersController topOrdersController;
|
||||
|
||||
private static FXMLLoader initLoader(URL url){
|
||||
FXMLLoader loader = new FXMLLoader(url);
|
||||
@@ -82,6 +85,15 @@ public class Screeners {
|
||||
stage.setScene(new Scene(ordersScreen));
|
||||
}
|
||||
|
||||
public static void loadTopOrdersStage(URL fxml) throws IOException {
|
||||
FXMLLoader loader = initLoader(fxml);
|
||||
topOrdersScreen = loader.load();
|
||||
addStylesheet(topOrdersScreen);
|
||||
topOrdersController = loader.getController();
|
||||
Stage stage = new Stage();
|
||||
stage.setScene(new Scene(topOrdersScreen));
|
||||
}
|
||||
|
||||
public static void show(Node node){
|
||||
mainController.getMainPane().setCenter(node);
|
||||
}
|
||||
@@ -132,4 +144,8 @@ public class Screeners {
|
||||
public static void closeAll() {
|
||||
itemDescController.close();
|
||||
}
|
||||
|
||||
public static OrderModel showTopOrders(ObservableList<OrderModel> top) {
|
||||
return topOrdersController.showDialog(mainScreen, topOrdersScreen, top);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,71 @@
|
||||
package ru.trader.controllers;
|
||||
|
||||
import javafx.collections.FXCollections;
|
||||
import javafx.event.ActionEvent;
|
||||
import javafx.fxml.FXML;
|
||||
import javafx.scene.Parent;
|
||||
import javafx.scene.control.TableColumn;
|
||||
import javafx.scene.control.TableView;
|
||||
import javafx.scene.control.cell.TextFieldTableCell;
|
||||
import javafx.util.converter.LongStringConverter;
|
||||
import org.controlsfx.control.ButtonBar;
|
||||
import org.controlsfx.control.action.AbstractAction;
|
||||
import org.controlsfx.control.action.Action;
|
||||
import org.controlsfx.dialog.Dialog;
|
||||
import ru.trader.model.OrderModel;
|
||||
|
||||
import java.util.Collection;
|
||||
|
||||
public class TopOrdersController {
|
||||
private final Action OK = new AbstractAction("OK") {
|
||||
{
|
||||
ButtonBar.setType(this, ButtonBar.ButtonType.OK_DONE);
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public void handle(ActionEvent event) {
|
||||
Dialog dlg = (Dialog) event.getSource();
|
||||
dlg.hide();
|
||||
}
|
||||
};
|
||||
|
||||
@FXML
|
||||
private TableView<OrderModel> tblOrders;
|
||||
|
||||
@FXML
|
||||
private TableColumn<OrderModel, Long> count;
|
||||
|
||||
private OrderModel order;
|
||||
|
||||
@FXML
|
||||
private void initialize() {
|
||||
count.setCellFactory(TextFieldTableCell.forTableColumn(new LongStringConverter()));
|
||||
tblOrders.getSelectionModel().selectedItemProperty().addListener((v, o, n) -> changeOrder(n));
|
||||
}
|
||||
|
||||
|
||||
public OrderModel showDialog(Parent parent, Parent content, Collection<OrderModel> orders) {
|
||||
|
||||
init(orders);
|
||||
|
||||
Dialog dlg = new Dialog(parent, "TOP заказов");
|
||||
dlg.setContent(content);
|
||||
dlg.getActions().addAll(OK, Dialog.Actions.CANCEL);
|
||||
dlg.setResizable(false);
|
||||
return dlg.show() == OK ? order : null;
|
||||
}
|
||||
|
||||
|
||||
private void init(Collection<OrderModel> orders) {
|
||||
tblOrders.getSelectionModel().clearSelection();
|
||||
tblOrders.setItems(FXCollections.observableArrayList(orders));
|
||||
if (tblOrders.getSortOrder().size()>0)
|
||||
tblOrders.sort();
|
||||
}
|
||||
|
||||
private void changeOrder(OrderModel order) {
|
||||
this.order = order;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -4,6 +4,7 @@ import javafx.beans.property.ListProperty;
|
||||
import javafx.beans.property.ReadOnlyListProperty;
|
||||
import javafx.beans.property.SimpleListProperty;
|
||||
import javafx.collections.FXCollections;
|
||||
import javafx.collections.ObservableList;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
import ru.trader.core.*;
|
||||
@@ -157,5 +158,13 @@ public class MarketModel {
|
||||
return ModelFabrica.getModel(vendor, this);
|
||||
}
|
||||
|
||||
public ObservableList<OrderModel> getTop(int limit, double balance, long max){
|
||||
return BindingsHelper.observableList(market.getTop(limit, balance, max), (o) -> {
|
||||
OrderModel model = new OrderModel(asOfferDescModel(o.getSell()), balance, max);
|
||||
model.setBuyer(asModel(o.getBuy()));
|
||||
model.setCount(model.getMax());
|
||||
return model;
|
||||
});
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user