Implements orders list
This commit is contained in:
@@ -65,7 +65,7 @@ public class OrdersController {
|
||||
}
|
||||
|
||||
|
||||
public Optional<OrderModel> showDialog(Parent parent, Parent content, Collection<OfferDescModel> offers, double balance, long max) {
|
||||
public Collection<OrderModel> showDialog(Parent parent, Parent content, Collection<OfferDescModel> offers, double balance, long max) {
|
||||
|
||||
init(offers, balance, max);
|
||||
|
||||
@@ -73,7 +73,11 @@ public class OrdersController {
|
||||
dlg.setContent(content);
|
||||
dlg.getActions().addAll(OK, Dialog.Actions.CANCEL);
|
||||
dlg.setResizable(false);
|
||||
return Optional.ofNullable(dlg.show() == OK ? tblOrders.getSelectionModel().getSelectedItem() : null);
|
||||
return dlg.show() == OK ? getOrders() : null;
|
||||
}
|
||||
|
||||
private Collection<OrderModel> getOrders() {
|
||||
return tblOrders.getItems().filtered((o) -> o.getCount()>0 && o.getBuyer()!=null);
|
||||
}
|
||||
|
||||
private void init(Collection<OfferDescModel> offers, double balance, long max) {
|
||||
@@ -93,7 +97,7 @@ public class OrdersController {
|
||||
}
|
||||
|
||||
private void setBuyer(OfferModel offer) {
|
||||
if (order != null) {
|
||||
if (order != null && offer!=null) {
|
||||
order.setBuyer(offer);
|
||||
order.setCount(order.getMax());
|
||||
}
|
||||
|
||||
@@ -1,14 +1,21 @@
|
||||
package ru.trader.controllers;
|
||||
|
||||
|
||||
import javafx.collections.FXCollections;
|
||||
import javafx.collections.ListChangeListener;
|
||||
import javafx.event.ActionEvent;
|
||||
import javafx.fxml.FXML;
|
||||
import javafx.scene.control.Button;
|
||||
import javafx.scene.control.ComboBox;
|
||||
import javafx.scene.control.TableView;
|
||||
import ru.trader.core.Vendor;
|
||||
import ru.trader.model.MarketModel;
|
||||
import ru.trader.model.OfferDescModel;
|
||||
import ru.trader.model.OrderModel;
|
||||
import ru.trader.view.support.NumberField;
|
||||
|
||||
|
||||
import java.awt.*;
|
||||
import java.util.Collection;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
@@ -22,25 +29,44 @@ public class RoutersController {
|
||||
private NumberField cargo;
|
||||
|
||||
@FXML
|
||||
private Button buy;
|
||||
|
||||
@FXML
|
||||
private Button sell;
|
||||
private Button add;
|
||||
|
||||
@FXML
|
||||
private ComboBox<Vendor> vendors;
|
||||
|
||||
@FXML
|
||||
private TableView<OrderModel> tblOrders;
|
||||
|
||||
@FXML
|
||||
private NumberField totalProfit;
|
||||
|
||||
@FXML
|
||||
private void initialize(){
|
||||
init();
|
||||
buy.disableProperty().bind(this.balance.wrongProperty().or(this.cargo.wrongProperty()));
|
||||
buy.setOnAction((e) -> Screeners.showOrders(getOffers(), balance.getValue().doubleValue(), cargo.getValue().longValue()));
|
||||
add.disableProperty().bind(this.balance.wrongProperty().or(this.cargo.wrongProperty()));
|
||||
tblOrders.setItems(FXCollections.observableArrayList());
|
||||
tblOrders.getItems().addListener((ListChangeListener<OrderModel>) c -> {
|
||||
while (c.next()) {
|
||||
if (c.wasRemoved()){
|
||||
for (OrderModel o : c.getRemoved()) {
|
||||
totalProfit.setValue(totalProfit.getValue().doubleValue()-o.getProfit());
|
||||
}
|
||||
}
|
||||
if (c.wasAdded()){
|
||||
for (OrderModel o : c.getAddedSubList()) {
|
||||
totalProfit.setValue(totalProfit.getValue().doubleValue()+o.getProfit());
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
void init(){
|
||||
MarketModel market = MainController.getMarket();
|
||||
vendors.setItems(market.vendorsProperty());
|
||||
vendors.getSelectionModel().selectFirst();
|
||||
tblOrders.getItems().clear();
|
||||
totalProfit.setValue(0);
|
||||
}
|
||||
|
||||
private Collection<OfferDescModel> getOffers(){
|
||||
@@ -48,4 +74,19 @@ public class RoutersController {
|
||||
Vendor vendor = vendors.getSelectionModel().getSelectedItem();
|
||||
return vendor.getAllSellOffers().stream().map(market::asOfferDescModel).collect(Collectors.toList());
|
||||
}
|
||||
|
||||
public void addOrders(ActionEvent e){
|
||||
Collection<OrderModel> orders = Screeners.showOrders(getOffers(), balance.getValue().doubleValue(), cargo.getValue().longValue());
|
||||
if (orders!=null){
|
||||
tblOrders.getItems().addAll(orders);
|
||||
}
|
||||
}
|
||||
|
||||
public void removeSelected(ActionEvent e){
|
||||
TableView.TableViewSelectionModel<OrderModel> select = tblOrders.getSelectionModel();
|
||||
if (!select.isEmpty()){
|
||||
int index = select.getSelectedIndex();
|
||||
tblOrders.getItems().remove(index);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -98,7 +98,7 @@ public class Screeners {
|
||||
}
|
||||
|
||||
|
||||
public static Optional<OrderModel> showOrders(Collection<OfferDescModel> offers, double balance, long cargo) {
|
||||
public static Collection<OrderModel> showOrders(Collection<OfferDescModel> offers, double balance, long cargo) {
|
||||
return ordersController.showDialog(mainScreen, ordersScreen, offers, balance, cargo);
|
||||
}
|
||||
|
||||
|
||||
@@ -83,6 +83,10 @@ public class OrderModel {
|
||||
return buyer.priceProperty().subtract(offer.getOffer().priceProperty()).multiply(max).asObject();
|
||||
}
|
||||
|
||||
public double getProfit() {
|
||||
return profitProperty().get();
|
||||
}
|
||||
|
||||
public ObjectProperty<OfferModel> buyerProperty() {
|
||||
return buyer;
|
||||
}
|
||||
@@ -95,6 +99,10 @@ public class OrderModel {
|
||||
return buyer.get();
|
||||
}
|
||||
|
||||
public VendorModel getVendor() {
|
||||
return offer.getOffer().getVendor();
|
||||
}
|
||||
|
||||
public long getMax() {
|
||||
return max;
|
||||
}
|
||||
@@ -106,4 +114,5 @@ public class OrderModel {
|
||||
public List<OfferModel> getBuyers(){
|
||||
return offer.getBuyer();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user