From e886762edd0f52afa198bb99dd2a9dfeb2469795 Mon Sep 17 00:00:00 2001 From: iMoHax Date: Thu, 1 Oct 2015 17:45:29 +0300 Subject: [PATCH] fix add missions --- .../trader/controllers/HelperController.java | 6 +++++- .../controllers/RouteTrackController.java | 8 ++++++-- .../java/ru/trader/model/RouteEntryModel.java | 5 +++++ .../main/java/ru/trader/model/RouteModel.java | 18 +++++++++++++++--- .../main/java/ru/trader/analysis/Route.java | 2 +- 5 files changed, 32 insertions(+), 7 deletions(-) diff --git a/client/src/main/java/ru/trader/controllers/HelperController.java b/client/src/main/java/ru/trader/controllers/HelperController.java index ccdb973..39154ac 100644 --- a/client/src/main/java/ru/trader/controllers/HelperController.java +++ b/client/src/main/java/ru/trader/controllers/HelperController.java @@ -134,7 +134,11 @@ public class HelperController { } private final ChangeListener currentEntryListener = (ov, o, n) -> ViewUtils.doFX(() -> setRouteEntry(n.intValue())); - private final ChangeListener routeListener = (ov, o, n) -> ViewUtils.doFX(() -> setRoute(n)); + private final ChangeListener routeListener = (ov, o, n) -> { + if (n != null){ + ViewUtils.doFX(() -> setRoute(n)); + } + }; } diff --git a/client/src/main/java/ru/trader/controllers/RouteTrackController.java b/client/src/main/java/ru/trader/controllers/RouteTrackController.java index 4c0bcfb..669493a 100644 --- a/client/src/main/java/ru/trader/controllers/RouteTrackController.java +++ b/client/src/main/java/ru/trader/controllers/RouteTrackController.java @@ -55,7 +55,7 @@ public class RouteTrackController { @FXML private void addMissions(){ - int startIndex = route.isLoop() ? 1 : index+1; + int startIndex = route.isLoop() ? 0 : index; route.addAll(startIndex, missionsList.getItems()); } @@ -68,6 +68,10 @@ public class RouteTrackController { } private final ChangeListener currentEntryListener = (ov, o, n) -> ViewUtils.doFX(() -> setIndex(n.intValue())); - private final ChangeListener routeListener = (ov, o, n) -> ViewUtils.doFX(() -> setRoute(n)); + private final ChangeListener routeListener = (ov, o, n) -> { + if (n != null){ + ViewUtils.doFX(() -> setRoute(n)); + } + }; } diff --git a/client/src/main/java/ru/trader/model/RouteEntryModel.java b/client/src/main/java/ru/trader/model/RouteEntryModel.java index eb5e7ff..01bc58c 100644 --- a/client/src/main/java/ru/trader/model/RouteEntryModel.java +++ b/client/src/main/java/ru/trader/model/RouteEntryModel.java @@ -9,6 +9,7 @@ import ru.trader.analysis.RouteEntry; import ru.trader.core.Order; import ru.trader.model.support.BindingsHelper; +import java.util.Collection; import java.util.List; public class RouteEntryModel { @@ -38,6 +39,10 @@ public class RouteEntryModel { missions.add(mission); } + void addAll(Collection missions){ + this.missions.addAll(missions); + } + void remove(MissionModel mission){ missions.remove(mission); } diff --git a/client/src/main/java/ru/trader/model/RouteModel.java b/client/src/main/java/ru/trader/model/RouteModel.java index 008b2ab..522ce36 100644 --- a/client/src/main/java/ru/trader/model/RouteModel.java +++ b/client/src/main/java/ru/trader/model/RouteModel.java @@ -47,6 +47,18 @@ public class RouteModel { } } + private RouteModel getCopy(){ + RouteModel res = new RouteModel(_route, market); + res.setCurrentEntry(getCurrentEntry()); + int size = Math.min(entries.size(), res.entries.size()); + for (int i = 0; i < size; i++) { + RouteEntryModel entry = entries.get(i); + RouteEntryModel rEntry = res.entries.get(i); + rEntry.addAll(entry.missions()); + } + return res; + } + public RouteEntryModel get(int index){ return entries.get(index); } @@ -110,17 +122,17 @@ public class RouteModel { Route path = market._getPath(order); if (path == null) return this; _route.join(path); - return new RouteModel(_route, market); + return getCopy(); } public RouteModel add(RouteModel route){ _route.join(route.getRoute()); - return new RouteModel(_route, market); + return getCopy(); } public RouteModel remove(OrderModel order) { _route.dropTo(order.getStation().getStation()); - return new RouteModel(_route, market); + return getCopy(); } public void add(int offset, MissionModel mission){ diff --git a/core/src/main/java/ru/trader/analysis/Route.java b/core/src/main/java/ru/trader/analysis/Route.java index 65b7fa6..b1d737d 100644 --- a/core/src/main/java/ru/trader/analysis/Route.java +++ b/core/src/main/java/ru/trader/analysis/Route.java @@ -256,7 +256,7 @@ public class Route implements Comparable { public LoopIterator loopIterator(int from){ return new LoopIterator() { - private final int size = entries.size() - (isLoop() ? 1 : from); + private final int size = entries.size() - (isLoop() ? 1 : 0); private int i = -1; @Override