diff --git a/client/src/main/java/ru/trader/controllers/OffersController.java b/client/src/main/java/ru/trader/controllers/OffersController.java index 95f0a71..551c446 100644 --- a/client/src/main/java/ru/trader/controllers/OffersController.java +++ b/client/src/main/java/ru/trader/controllers/OffersController.java @@ -8,6 +8,7 @@ import javafx.scene.control.*; import javafx.scene.input.MouseButton; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import ru.trader.core.Profile; import ru.trader.core.SERVICE_TYPE; import ru.trader.model.*; import ru.trader.model.support.BindingsHelper; @@ -17,6 +18,7 @@ import ru.trader.view.support.autocomplete.AutoCompletion; import ru.trader.view.support.autocomplete.CachedSuggestionProvider; import ru.trader.view.support.autocomplete.SystemsProvider; +import java.util.Collection; import java.util.List; import java.util.Optional; @@ -274,6 +276,33 @@ public class OffersController { tblBuy.getItems().forEach(OfferModel::refresh); } + private void showOffers(Collection buyers){ + StationModel seller = getStation(); + MarketModel market = MainController.getMarket(); + Profile profile = ModelFabric.get(MainController.getProfile()); + if (ModelFabric.isFake(seller)) return; + if (buyers == null){ + market.getOrders(seller, profile, Screeners::showOrders); + } else { + market.getOrders(seller, buyers, profile, Screeners::showOrders); + } + + } + + @FXML + private void showOffersByRoute(){ + ProfileModel profile = MainController.getProfile(); + RouteModel route = profile.getRoute(); + if (route == null) return; + Collection buyers = route.getStations(); + showOffers(buyers); + } + + @FXML + private void showOffers(){ + showOffers(null); + } + private final ChangeMarketListener offersChangeListener = new ChangeMarketListener() { @Override diff --git a/client/src/main/java/ru/trader/model/RouteModel.java b/client/src/main/java/ru/trader/model/RouteModel.java index 102e41b..98771fc 100644 --- a/client/src/main/java/ru/trader/model/RouteModel.java +++ b/client/src/main/java/ru/trader/model/RouteModel.java @@ -96,7 +96,7 @@ public class RouteModel { public RouteEntryModel getLast(){ if (entries.size() == 1) return entries.get(0); - return entries.get(entries.size()-1); + return entries.get(entries.size() - 1); } public double getDistance() { @@ -178,7 +178,7 @@ public class RouteModel { } public RouteModel add(SystemModel system){ - RouteEntryModel last = entries.get(entries.size()-1); + RouteEntryModel last = entries.get(entries.size() - 1); StationModel fromStation = last.getStation(); RouteModel path = market.getPath(fromStation.getSystem(), fromStation, system, ModelFabric.NONE_STATION); return add(path); @@ -206,8 +206,8 @@ public class RouteModel { public RouteModel dropLast(){ Route res = Route.clone(_route); - res.dropTo(entries.size()-2); - return copyFill(res, entries.size()-2); + res.dropTo(entries.size() - 2); + return copyFill(res, entries.size() - 2); } public RouteModel remove(OrderModel order) { @@ -320,9 +320,17 @@ public class RouteModel { refresh(); } + public Collection getStations(){ + return getStations(currentEntry.get()-1, false); + } + public Collection getStations(int offset){ + return getStations(offset, false); + } + + public Collection getStations(int offset, boolean incudeLoop){ Collection res = new HashSet<>(); - int startIndex = _route.isLoop() ? 1 : offset+1; + int startIndex = incudeLoop && _route.isLoop() ? 1 : offset+1; if (startIndex >= entries.size()) return res; entries.subList(startIndex, entries.size()).stream() .filter(e -> !e.isTransit()) diff --git a/client/src/main/resources/view/offers.fxml b/client/src/main/resources/view/offers.fxml index d1b8d68..51ae57f 100644 --- a/client/src/main/resources/view/offers.fxml +++ b/client/src/main/resources/view/offers.fxml @@ -44,6 +44,7 @@ minHeight="120" maxHeight="120" collapsible="false"> + @@ -52,27 +53,34 @@ -