Archived
0

resort items and offers tabs on update prices

This commit is contained in:
iMoHax
2014-09-04 15:17:00 +04:00
parent eaea4469c0
commit 1e8dce9477
2 changed files with 30 additions and 6 deletions

View File

@@ -56,6 +56,10 @@ public class ItemsController {
MarketModel market = MainController.getMarket(); MarketModel market = MainController.getMarket();
market.addListener(new ItemsStatChangeListener()); market.addListener(new ItemsStatChangeListener());
tblItems.setItems(FXCollections.observableArrayList(market.itemsProperty())); tblItems.setItems(FXCollections.observableArrayList(market.itemsProperty()));
sort();
}
private void sort(){
if (tblItems.getSortOrder().size()>0) if (tblItems.getSortOrder().size()>0)
tblItems.sort(); tblItems.sort();
} }
@@ -65,6 +69,7 @@ public class ItemsController {
for (ItemDescModel descModel : tblItems.getItems()) { for (ItemDescModel descModel : tblItems.getItems()) {
if (descModel.hasItem(offer)){ if (descModel.hasItem(offer)){
descModel.refresh(offer.getType()); descModel.refresh(offer.getType());
sort();
return; return;
} }
} }
@@ -73,10 +78,12 @@ public class ItemsController {
private void refresh(){ private void refresh(){
LOG.info("Refresh all stats"); LOG.info("Refresh all stats");
tblItems.getItems().forEach(ItemDescModel::refresh); tblItems.getItems().forEach(ItemDescModel::refresh);
sort();
} }
private void addItem(ItemDescModel item){ private void addItem(ItemDescModel item){
tblItems.getItems().add(item); tblItems.getItems().add(item);
sort();
} }
private class ItemsStatChangeListener extends ChangeMarketListener { private class ItemsStatChangeListener extends ChangeMarketListener {

View File

@@ -1,5 +1,6 @@
package ru.trader.controllers; package ru.trader.controllers;
import javafx.application.Platform;
import javafx.collections.FXCollections; import javafx.collections.FXCollections;
import javafx.event.ActionEvent; import javafx.event.ActionEvent;
import javafx.scene.control.ListView; import javafx.scene.control.ListView;
@@ -72,19 +73,25 @@ public class OffersController {
private void fillTables(VendorModel vendor){ private void fillTables(VendorModel vendor){
if (vendor != null){ if (vendor != null){
tblSell.setItems(FXCollections.observableList(vendor.getSells(this::asOfferDescModel))); tblSell.setItems(FXCollections.observableList(vendor.getSells(this::asOfferDescModel)));
if (tblSell.getSortOrder().size()>0)
tblSell.sort();
tblBuy.setItems(FXCollections.observableList(vendor.getBuys(this::asOfferDescModel))); tblBuy.setItems(FXCollections.observableList(vendor.getBuys(this::asOfferDescModel)));
if (tblBuy.getSortOrder().size()>0) sort();
tblBuy.sort();
} else { } else {
tblSell.getItems().clear(); tblSell.getItems().clear();
tblBuy.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 @FXML
public void editPrice(TableColumn.CellEditEvent<OfferDescModel, Double> event){ public void editPrice(TableColumn.CellEditEvent<OfferDescModel, Double> event){
@@ -142,12 +149,14 @@ public class OffersController {
for (OfferDescModel descModel : tblSell.getItems()) { for (OfferDescModel descModel : tblSell.getItems()) {
if (descModel.hasItem(offer)){ if (descModel.hasItem(offer)){
descModel.refresh(offer.getType()); descModel.refresh(offer.getType());
sort();
return; return;
} }
} }
for (OfferDescModel descModel : tblBuy.getItems()) { for (OfferDescModel descModel : tblBuy.getItems()) {
if (descModel.hasItem(offer)){ if (descModel.hasItem(offer)){
descModel.refresh(offer.getType()); descModel.refresh(offer.getType());
sort();
return; return;
} }
} }
@@ -157,10 +166,18 @@ public class OffersController {
LOG.info("Refresh lists"); LOG.info("Refresh lists");
tblSell.getItems().forEach(OfferDescModel::refresh); tblSell.getItems().forEach(OfferDescModel::refresh);
tblBuy.getItems().forEach(OfferDescModel::refresh); tblBuy.getItems().forEach(OfferDescModel::refresh);
sort();
} }
private class OffersChangeListener extends ChangeMarketListener { 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 @Override
public void add(OfferModel offer) { public void add(OfferModel offer) {
refresh(offer); refresh(offer);