From 1e8dce947701bdf0a2d5019570c3c08d880dd5fa Mon Sep 17 00:00:00 2001 From: iMoHax Date: Thu, 4 Sep 2014 15:17:00 +0400 Subject: [PATCH] resort items and offers tabs on update prices --- .../trader/controllers/ItemsController.java | 7 +++++ .../trader/controllers/OffersController.java | 29 +++++++++++++++---- 2 files changed, 30 insertions(+), 6 deletions(-) diff --git a/client/src/main/java/ru/trader/controllers/ItemsController.java b/client/src/main/java/ru/trader/controllers/ItemsController.java index 2ab1c44..95d34ce 100644 --- a/client/src/main/java/ru/trader/controllers/ItemsController.java +++ b/client/src/main/java/ru/trader/controllers/ItemsController.java @@ -56,6 +56,10 @@ public class ItemsController { MarketModel market = MainController.getMarket(); market.addListener(new ItemsStatChangeListener()); tblItems.setItems(FXCollections.observableArrayList(market.itemsProperty())); + sort(); + } + + private void sort(){ if (tblItems.getSortOrder().size()>0) tblItems.sort(); } @@ -65,6 +69,7 @@ public class ItemsController { for (ItemDescModel descModel : tblItems.getItems()) { if (descModel.hasItem(offer)){ descModel.refresh(offer.getType()); + sort(); return; } } @@ -73,10 +78,12 @@ public class ItemsController { private void refresh(){ LOG.info("Refresh all stats"); tblItems.getItems().forEach(ItemDescModel::refresh); + sort(); } private void addItem(ItemDescModel item){ tblItems.getItems().add(item); + sort(); } private class ItemsStatChangeListener extends ChangeMarketListener { diff --git a/client/src/main/java/ru/trader/controllers/OffersController.java b/client/src/main/java/ru/trader/controllers/OffersController.java index 3c5f235..1a4f493 100644 --- a/client/src/main/java/ru/trader/controllers/OffersController.java +++ b/client/src/main/java/ru/trader/controllers/OffersController.java @@ -1,5 +1,6 @@ package ru.trader.controllers; +import javafx.application.Platform; import javafx.collections.FXCollections; import javafx.event.ActionEvent; import javafx.scene.control.ListView; @@ -72,19 +73,25 @@ public class OffersController { private void fillTables(VendorModel vendor){ if (vendor != null){ tblSell.setItems(FXCollections.observableList(vendor.getSells(this::asOfferDescModel))); - if (tblSell.getSortOrder().size()>0) - tblSell.sort(); - tblBuy.setItems(FXCollections.observableList(vendor.getBuys(this::asOfferDescModel))); - if (tblBuy.getSortOrder().size()>0) - tblBuy.sort(); - + sort(); } else { tblSell.getItems().clear(); tblBuy.getItems().clear(); } } + private void sort(){ + Platform.runLater(()->{ + if (tblBuy.getSortOrder().size()>0){ + tblBuy.sort(); + } + if (tblSell.getSortOrder().size()>0){ + tblSell.sort(); + } + }); + } + @FXML public void editPrice(TableColumn.CellEditEvent event){ @@ -142,12 +149,14 @@ public class OffersController { for (OfferDescModel descModel : tblSell.getItems()) { if (descModel.hasItem(offer)){ descModel.refresh(offer.getType()); + sort(); return; } } for (OfferDescModel descModel : tblBuy.getItems()) { if (descModel.hasItem(offer)){ descModel.refresh(offer.getType()); + sort(); return; } } @@ -157,10 +166,18 @@ public class OffersController { LOG.info("Refresh lists"); tblSell.getItems().forEach(OfferDescModel::refresh); tblBuy.getItems().forEach(OfferDescModel::refresh); + sort(); } private class OffersChangeListener extends ChangeMarketListener { + @Override + public void priceChange(OfferModel offer, double oldPrice, double newPrice) { + if (vendor.hasBuy(offer.getItem()) || vendor.hasSell(offer.getItem())){ + sort(); + } + } + @Override public void add(OfferModel offer) { refresh(offer);