Archived
0

don't refresh item stat model in controllers, it's refreshed in model

This commit is contained in:
iMoHax
2016-12-12 13:04:53 +03:00
parent f485ce39ec
commit 4664b8ca4a
3 changed files with 20 additions and 50 deletions

View File

@@ -5,9 +5,16 @@ import javafx.collections.FXCollections;
import javafx.collections.ObservableList;
import javafx.fxml.FXML;
import javafx.geometry.Pos;
import javafx.scene.Node;
import javafx.scene.control.Button;
import javafx.scene.control.Label;
import javafx.scene.control.TableColumn;
import javafx.scene.control.TableView;
import javafx.scene.input.MouseButton;
import javafx.scene.layout.HBox;
import javafx.scene.text.TextAlignment;
import org.controlsfx.glyphfont.Glyph;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import ru.trader.model.*;
@@ -22,6 +29,8 @@ public class ItemsController {
@FXML
private TableView<ItemModel> tblItems;
@FXML
private TableColumn<ItemModel, Number> itemNameColumn;
@FXML
private TableColumn<ItemModel, Number> minProfit;
@FXML
@@ -41,6 +50,8 @@ public class ItemsController {
Screeners.showItemDesc(tblItems);
}
});
addRefreshButton(itemNameColumn);
minProfit.setCellValueFactory((data) -> {
ItemModel iDesc = data.getValue();
return ModelBindings.diff(iDesc.minBuyProperty(),iDesc.maxSellProperty());
@@ -57,9 +68,15 @@ public class ItemsController {
init();
}
private void addRefreshButton(TableColumn<?, ?> itemNameColumn) {
Button refreshButton = new Button();
refreshButton.setGraphic(Glyph.create("FontAwesome|REFRESH"));
refreshButton.setOnAction(e -> refresh());
itemNameColumn.setGraphic(refreshButton);
}
void init(){
MarketModel market = MainController.getMarket();
market.getNotificator().add(new ItemsStatChangeListener());
items.clear();
items.addAll(market.itemsProperty());
sort();
@@ -70,51 +87,12 @@ public class ItemsController {
tblItems.sort();
}
@FXML
private void refresh(){
LOG.info("Refresh all stats");
tblItems.getItems().forEach(ItemModel::refresh);
sort();
}
private void addItem(ItemModel item){
items.add(item);
}
private class ItemsStatChangeListener extends ChangeMarketListener {
@Override
public void add(ItemModel item) {
addItem(item);
}
@Override
public void remove(SystemModel system) {
if (!system.isEmpty()) refresh();
}
@Override
public void add(StationModel station) {
refresh();
}
@Override
public void remove(StationModel station) { refresh();}
@Override
public void add(OfferModel offer) {
sort();
}
@Override
public void remove(OfferModel offer) {
sort();
}
@Override
public void priceChange(OfferModel offer, double price, double value) {
sort();
}
}
}

View File

@@ -270,12 +270,6 @@ public class OffersController {
}
}
private void refresh(){
LOG.info("Refresh lists");
tblSell.getItems().forEach(OfferModel::refresh);
tblBuy.getItems().forEach(OfferModel::refresh);
}
private void showOffers(Collection<StationModel> buyers){
StationModel seller = getStation();
MarketModel market = MainController.getMarket();
@@ -326,7 +320,6 @@ public class OffersController {
if (station.getSystem().equals(system.getValue())) {
stationsList.getItems().add(station);
}
refresh();
sort();
});
}
@@ -344,7 +337,6 @@ public class OffersController {
if (station.getSystem().equals(system.getValue())) {
stationsList.getItems().remove(station);
}
refresh();
sort();
});
}

View File

@@ -12,7 +12,7 @@
fx:controller="ru.trader.controllers.ItemsController">
<TableView fx:id="tblItems" editable="true" VBox.vgrow="ALWAYS" prefWidth="1195.0">
<columns>
<TableColumn editable="true" minWidth="200.0" text="%market.item">
<TableColumn fx:id="itemNameColumn" editable="true" minWidth="200.0" text="%market.item">
<cellValueFactory><PropertyValueFactory property="name"/></cellValueFactory>
</TableColumn>
<TableColumn editable="true" resizable="false" text="%market.offer.buy">