From 35c0666ab2e88b5e3860719b902c78887391ae8f Mon Sep 17 00:00:00 2001 From: Stephan Richter Date: Fri, 4 Dec 2020 15:20:31 +0100 Subject: [PATCH] fixed bug when deleting tiles --- pom.xml | 2 +- .../java/de/srsoftware/web4rail/Application.java | 5 ----- .../java/de/srsoftware/web4rail/BaseClass.java | 4 ++-- .../java/de/srsoftware/web4rail/PathFinder.java | 5 ----- src/main/java/de/srsoftware/web4rail/Plan.java | 1 + src/main/java/de/srsoftware/web4rail/Range.java | 5 ----- src/main/java/de/srsoftware/web4rail/Route.java | 16 ++++++++++++---- .../srsoftware/web4rail/actions/ActionList.java | 2 ++ .../srsoftware/web4rail/actions/BrakeCancel.java | 5 ----- .../srsoftware/web4rail/actions/BrakeStart.java | 5 ----- .../srsoftware/web4rail/actions/BrakeStop.java | 5 ----- .../web4rail/actions/ConditionalAction.java | 2 +- .../web4rail/actions/DetermineTrainInBlock.java | 1 + .../srsoftware/web4rail/actions/FinishRoute.java | 5 ----- .../web4rail/actions/PreserveRoute.java | 5 ----- .../srsoftware/web4rail/actions/SendCommand.java | 5 ----- .../web4rail/actions/SetContextTrain.java | 3 ++- .../web4rail/actions/SetDisplayText.java | 1 + .../de/srsoftware/web4rail/actions/SetPower.java | 5 ----- .../de/srsoftware/web4rail/actions/SetRelay.java | 1 + .../srsoftware/web4rail/actions/SetSignal.java | 1 + .../de/srsoftware/web4rail/actions/SetSpeed.java | 5 ----- .../de/srsoftware/web4rail/actions/ShowText.java | 5 ----- .../web4rail/actions/StopAllTrains.java | 5 ----- .../de/srsoftware/web4rail/actions/StopAuto.java | 5 ----- .../web4rail/actions/TriggerContact.java | 1 + .../srsoftware/web4rail/actions/TurnTrain.java | 5 ----- .../web4rail/conditions/BlockFree.java | 1 + .../web4rail/conditions/ConditionList.java | 2 ++ .../web4rail/conditions/PushPullTrain.java | 5 ----- .../web4rail/conditions/TrainHasTag.java | 5 ----- .../web4rail/conditions/TrainLength.java | 5 ----- .../web4rail/conditions/TrainSelect.java | 1 + .../java/de/srsoftware/web4rail/moving/Car.java | 1 + .../de/srsoftware/web4rail/moving/Train.java | 1 + .../de/srsoftware/web4rail/tiles/Bridge.java | 2 +- .../de/srsoftware/web4rail/tiles/Contact.java | 1 + .../de/srsoftware/web4rail/tiles/Shadow.java | 3 ++- .../web4rail/tiles/StretchableTile.java | 4 ++-- .../java/de/srsoftware/web4rail/tiles/Tile.java | 16 ++++++++++++---- 40 files changed, 50 insertions(+), 107 deletions(-) diff --git a/pom.xml b/pom.xml index 119495a..89706d5 100644 --- a/pom.xml +++ b/pom.xml @@ -4,7 +4,7 @@ 4.0.0 de.srsoftware web4rail - 1.2.18 + 1.2.19 Web4Rail jar Java Model Railway Control diff --git a/src/main/java/de/srsoftware/web4rail/Application.java b/src/main/java/de/srsoftware/web4rail/Application.java index fd27b13..5d5f2ad 100644 --- a/src/main/java/de/srsoftware/web4rail/Application.java +++ b/src/main/java/de/srsoftware/web4rail/Application.java @@ -164,11 +164,6 @@ public class Application extends BaseClass{ return Files.probeContentType(file.toPath()); } - @Override - protected void removeChild(BaseClass child) { - throw new RuntimeException(this.getClass().getSimpleName()+".removeChild should never be called!"); - } - /** * sends a response generated from the application to a given client * @param client diff --git a/src/main/java/de/srsoftware/web4rail/BaseClass.java b/src/main/java/de/srsoftware/web4rail/BaseClass.java index 60a2618..c2e0c08 100644 --- a/src/main/java/de/srsoftware/web4rail/BaseClass.java +++ b/src/main/java/de/srsoftware/web4rail/BaseClass.java @@ -387,12 +387,12 @@ public abstract class BaseClass implements Constants{ } public BaseClass remove() { - LOG.debug("Called remove on {} ({})",id(),this); + LOG.debug("BaseClass.Remove {} ({})",id(),this); if (isSet(parent)) parent.removeChild(this); return registry.remove(id()); } - protected abstract void removeChild(BaseClass child); + protected void removeChild(BaseClass child) {} protected static String t(String txt, Object...fills) { return Translation.get(Application.class, txt, fills); diff --git a/src/main/java/de/srsoftware/web4rail/PathFinder.java b/src/main/java/de/srsoftware/web4rail/PathFinder.java index 00bb2c7..cdffd96 100644 --- a/src/main/java/de/srsoftware/web4rail/PathFinder.java +++ b/src/main/java/de/srsoftware/web4rail/PathFinder.java @@ -109,9 +109,4 @@ public class PathFinder extends BaseClass{ return selectetRoute; } - - @Override - protected void removeChild(BaseClass child) { - // this class has no child elements - } } diff --git a/src/main/java/de/srsoftware/web4rail/Plan.java b/src/main/java/de/srsoftware/web4rail/Plan.java index a38f8ed..c4e4ab5 100644 --- a/src/main/java/de/srsoftware/web4rail/Plan.java +++ b/src/main/java/de/srsoftware/web4rail/Plan.java @@ -639,6 +639,7 @@ public class Plan extends BaseClass{ @Override protected void removeChild(BaseClass child) { if (child instanceof Tile) drop((Tile) child); + super.removeChild(child); } /** diff --git a/src/main/java/de/srsoftware/web4rail/Range.java b/src/main/java/de/srsoftware/web4rail/Range.java index bc1631c..2b37776 100644 --- a/src/main/java/de/srsoftware/web4rail/Range.java +++ b/src/main/java/de/srsoftware/web4rail/Range.java @@ -28,11 +28,6 @@ public class Range extends BaseClass{ if (max - min == 0) return max - min; return min + random.nextInt(max - min); } - - @Override - protected void removeChild(BaseClass child) { - // this class has no child elements - } @Override public String toString() { diff --git a/src/main/java/de/srsoftware/web4rail/Route.java b/src/main/java/de/srsoftware/web4rail/Route.java index e672a31..e78c8b5 100644 --- a/src/main/java/de/srsoftware/web4rail/Route.java +++ b/src/main/java/de/srsoftware/web4rail/Route.java @@ -753,15 +753,20 @@ public class Route extends BaseClass implements Comparable{ @Override public BaseClass remove() { - super.remove(); + LOG.debug("Removing route ({}) {}",id(),this); if (isSet(train)) train.removeChild(this); - path.forEach(tile -> tile.removeChild(this)); + for (Tile tile : path) { + if (tile.id().equals(Tile.id(4, 6))) { + System.err.println(tile); + } + tile.removeChild(this); + } conditions.remove(); for (String key : new Vector(triggeredActions.keySet())){ ActionList actionList = triggeredActions.remove(key); if (isSet(actionList)) actionList.remove(); }; - return this; + return super.remove(); } @Override @@ -772,10 +777,13 @@ public class Route extends BaseClass implements Comparable{ path.remove(child); signals.remove(child); if (child == train) train = null; - for (ActionList list : triggeredActions.values()) list.removeChild(child); + for (ActionList list : triggeredActions.values()) { + list.removeChild(child); + } turnouts.remove(child); if (child == startBlock) startBlock = null; triggeredContacts.remove(child); + super.removeChild(child); } public boolean reset() { diff --git a/src/main/java/de/srsoftware/web4rail/actions/ActionList.java b/src/main/java/de/srsoftware/web4rail/actions/ActionList.java index 4eadea9..ea55a7d 100644 --- a/src/main/java/de/srsoftware/web4rail/actions/ActionList.java +++ b/src/main/java/de/srsoftware/web4rail/actions/ActionList.java @@ -199,6 +199,7 @@ public class ActionList extends Action implements Iterable{ @Override public BaseClass remove() { + LOG.debug("Removing Action List ({}) {}",id(),this); super.remove(); while (!actions.isEmpty()) actions.lastElement().remove(); return this; @@ -207,5 +208,6 @@ public class ActionList extends Action implements Iterable{ @Override public void removeChild(BaseClass child) { actions.remove(child); + super.removeChild(child); } } diff --git a/src/main/java/de/srsoftware/web4rail/actions/BrakeCancel.java b/src/main/java/de/srsoftware/web4rail/actions/BrakeCancel.java index 8cd8563..5e2bf8f 100644 --- a/src/main/java/de/srsoftware/web4rail/actions/BrakeCancel.java +++ b/src/main/java/de/srsoftware/web4rail/actions/BrakeCancel.java @@ -14,9 +14,4 @@ public class BrakeCancel extends Action { context.route().brakeCancel(); return true; } - - @Override - protected void removeChild(BaseClass child) { - // this class has no child elements - } } diff --git a/src/main/java/de/srsoftware/web4rail/actions/BrakeStart.java b/src/main/java/de/srsoftware/web4rail/actions/BrakeStart.java index a573bd2..ab974d0 100644 --- a/src/main/java/de/srsoftware/web4rail/actions/BrakeStart.java +++ b/src/main/java/de/srsoftware/web4rail/actions/BrakeStart.java @@ -15,9 +15,4 @@ public class BrakeStart extends Action { LOG.debug("Started brake process..."); return true; } - - @Override - protected void removeChild(BaseClass child) { - // this class has no child elements - } } diff --git a/src/main/java/de/srsoftware/web4rail/actions/BrakeStop.java b/src/main/java/de/srsoftware/web4rail/actions/BrakeStop.java index 1b2b517..ab38ac0 100644 --- a/src/main/java/de/srsoftware/web4rail/actions/BrakeStop.java +++ b/src/main/java/de/srsoftware/web4rail/actions/BrakeStop.java @@ -14,9 +14,4 @@ public class BrakeStop extends Action { context.route().brakeStop(); return true; } - - @Override - protected void removeChild(BaseClass child) { - // this class has no child elements - } } diff --git a/src/main/java/de/srsoftware/web4rail/actions/ConditionalAction.java b/src/main/java/de/srsoftware/web4rail/actions/ConditionalAction.java index 73c191e..e1abf72 100644 --- a/src/main/java/de/srsoftware/web4rail/actions/ConditionalAction.java +++ b/src/main/java/de/srsoftware/web4rail/actions/ConditionalAction.java @@ -71,7 +71,7 @@ public class ConditionalAction extends ActionList { @Override public void removeChild(BaseClass child) { conditions.remove(child); - actions.remove(child); + super.removeChild(child); } @Override diff --git a/src/main/java/de/srsoftware/web4rail/actions/DetermineTrainInBlock.java b/src/main/java/de/srsoftware/web4rail/actions/DetermineTrainInBlock.java index 321a80f..7a16a76 100644 --- a/src/main/java/de/srsoftware/web4rail/actions/DetermineTrainInBlock.java +++ b/src/main/java/de/srsoftware/web4rail/actions/DetermineTrainInBlock.java @@ -49,6 +49,7 @@ public class DetermineTrainInBlock extends Action { @Override protected void removeChild(BaseClass child) { if (child == block) block = null; + super.removeChild(child); } public String toString() { diff --git a/src/main/java/de/srsoftware/web4rail/actions/FinishRoute.java b/src/main/java/de/srsoftware/web4rail/actions/FinishRoute.java index 7aa9698..fda2739 100644 --- a/src/main/java/de/srsoftware/web4rail/actions/FinishRoute.java +++ b/src/main/java/de/srsoftware/web4rail/actions/FinishRoute.java @@ -15,9 +15,4 @@ public class FinishRoute extends Action { if (isSet(route)) route.finish(); return true; } - - @Override - protected void removeChild(BaseClass child) { - // this class has no child elements - } } diff --git a/src/main/java/de/srsoftware/web4rail/actions/PreserveRoute.java b/src/main/java/de/srsoftware/web4rail/actions/PreserveRoute.java index ee84ca9..f9cd23c 100644 --- a/src/main/java/de/srsoftware/web4rail/actions/PreserveRoute.java +++ b/src/main/java/de/srsoftware/web4rail/actions/PreserveRoute.java @@ -29,9 +29,4 @@ public class PreserveRoute extends Action { train.reserveNext(); return true; } - - @Override - protected void removeChild(BaseClass child) { - // this class has no child elements - } } diff --git a/src/main/java/de/srsoftware/web4rail/actions/SendCommand.java b/src/main/java/de/srsoftware/web4rail/actions/SendCommand.java index 8425d48..260b927 100644 --- a/src/main/java/de/srsoftware/web4rail/actions/SendCommand.java +++ b/src/main/java/de/srsoftware/web4rail/actions/SendCommand.java @@ -54,11 +54,6 @@ public class SendCommand extends Action{ return super.properties(preForm, formInputs, postForm); } - @Override - protected void removeChild(BaseClass child) { - // this class has no child elements - } - @Override public String toString() { return t("Send command \"{}\" to control unit",command); diff --git a/src/main/java/de/srsoftware/web4rail/actions/SetContextTrain.java b/src/main/java/de/srsoftware/web4rail/actions/SetContextTrain.java index ed40bd1..0e599f6 100644 --- a/src/main/java/de/srsoftware/web4rail/actions/SetContextTrain.java +++ b/src/main/java/de/srsoftware/web4rail/actions/SetContextTrain.java @@ -57,7 +57,8 @@ public class SetContextTrain extends Action { @Override protected void removeChild(BaseClass child) { - if (child == train) train = null; + if (child == train) train = null; + super.removeChild(child); } public String toString() { diff --git a/src/main/java/de/srsoftware/web4rail/actions/SetDisplayText.java b/src/main/java/de/srsoftware/web4rail/actions/SetDisplayText.java index 149db68..b28be0e 100644 --- a/src/main/java/de/srsoftware/web4rail/actions/SetDisplayText.java +++ b/src/main/java/de/srsoftware/web4rail/actions/SetDisplayText.java @@ -54,6 +54,7 @@ public class SetDisplayText extends TextAction{ @Override protected void removeChild(BaseClass child) { if (child == display) display = null; + super.removeChild(child); } @Override diff --git a/src/main/java/de/srsoftware/web4rail/actions/SetPower.java b/src/main/java/de/srsoftware/web4rail/actions/SetPower.java index 64014a9..c0443da 100644 --- a/src/main/java/de/srsoftware/web4rail/actions/SetPower.java +++ b/src/main/java/de/srsoftware/web4rail/actions/SetPower.java @@ -68,11 +68,6 @@ public class SetPower extends Action{ return super.properties(preForm, formInputs, postForm); } - @Override - protected void removeChild(BaseClass child) { - // this class has no child elements - } - @Override public String toString() { switch (pc) { diff --git a/src/main/java/de/srsoftware/web4rail/actions/SetRelay.java b/src/main/java/de/srsoftware/web4rail/actions/SetRelay.java index 504d71a..070b0cf 100644 --- a/src/main/java/de/srsoftware/web4rail/actions/SetRelay.java +++ b/src/main/java/de/srsoftware/web4rail/actions/SetRelay.java @@ -64,6 +64,7 @@ public class SetRelay extends Action { @Override protected void removeChild(BaseClass child) { if (child == relay) relay = null; + super.removeChild(child); } public String toString() { diff --git a/src/main/java/de/srsoftware/web4rail/actions/SetSignal.java b/src/main/java/de/srsoftware/web4rail/actions/SetSignal.java index a04783c..cc05530 100644 --- a/src/main/java/de/srsoftware/web4rail/actions/SetSignal.java +++ b/src/main/java/de/srsoftware/web4rail/actions/SetSignal.java @@ -70,6 +70,7 @@ public class SetSignal extends Action { @Override protected void removeChild(BaseClass child) { if (child == signal) signal = null; + super.removeChild(child); } public SetSignal set(Signal sig) { diff --git a/src/main/java/de/srsoftware/web4rail/actions/SetSpeed.java b/src/main/java/de/srsoftware/web4rail/actions/SetSpeed.java index beb99e1..35ab810 100644 --- a/src/main/java/de/srsoftware/web4rail/actions/SetSpeed.java +++ b/src/main/java/de/srsoftware/web4rail/actions/SetSpeed.java @@ -45,11 +45,6 @@ public class SetSpeed extends Action{ formInputs.add(t("Set speed to"),new Input(MAX_SPEED, speed).numeric()); return super.properties(preForm, formInputs, postForm); } - - @Override - protected void removeChild(BaseClass child) { - // this class has no child elements - } @Override public String toString() { diff --git a/src/main/java/de/srsoftware/web4rail/actions/ShowText.java b/src/main/java/de/srsoftware/web4rail/actions/ShowText.java index 7e01488..ff94ba1 100644 --- a/src/main/java/de/srsoftware/web4rail/actions/ShowText.java +++ b/src/main/java/de/srsoftware/web4rail/actions/ShowText.java @@ -21,11 +21,6 @@ public class ShowText extends TextAction{ return new Label(t("Text to display on clients:")+NBSP); } - @Override - protected void removeChild(BaseClass child) { - // this class has no child elements - } - @Override public String toString() { return t("Display \"{}\" on clients.",text); diff --git a/src/main/java/de/srsoftware/web4rail/actions/StopAllTrains.java b/src/main/java/de/srsoftware/web4rail/actions/StopAllTrains.java index 6d2fac7..7855a05 100644 --- a/src/main/java/de/srsoftware/web4rail/actions/StopAllTrains.java +++ b/src/main/java/de/srsoftware/web4rail/actions/StopAllTrains.java @@ -14,9 +14,4 @@ public class StopAllTrains extends Action { Train.list().forEach(train -> train.stopNow()); return true; } - - @Override - protected void removeChild(BaseClass child) { - // this class has no child elements - } } diff --git a/src/main/java/de/srsoftware/web4rail/actions/StopAuto.java b/src/main/java/de/srsoftware/web4rail/actions/StopAuto.java index 1eb444f..43e869e 100644 --- a/src/main/java/de/srsoftware/web4rail/actions/StopAuto.java +++ b/src/main/java/de/srsoftware/web4rail/actions/StopAuto.java @@ -14,9 +14,4 @@ public class StopAuto extends Action { context.train().quitAutopilot(); return true; } - - @Override - protected void removeChild(BaseClass child) { - // this class has no child elements - } } diff --git a/src/main/java/de/srsoftware/web4rail/actions/TriggerContact.java b/src/main/java/de/srsoftware/web4rail/actions/TriggerContact.java index fdbd9af..a10c27c 100644 --- a/src/main/java/de/srsoftware/web4rail/actions/TriggerContact.java +++ b/src/main/java/de/srsoftware/web4rail/actions/TriggerContact.java @@ -48,6 +48,7 @@ public class TriggerContact extends Action { @Override protected void removeChild(BaseClass child) { if (child == contact) contact = null; + super.removeChild(child); } public String toString() { diff --git a/src/main/java/de/srsoftware/web4rail/actions/TurnTrain.java b/src/main/java/de/srsoftware/web4rail/actions/TurnTrain.java index 9fad65c..338ca9d 100644 --- a/src/main/java/de/srsoftware/web4rail/actions/TurnTrain.java +++ b/src/main/java/de/srsoftware/web4rail/actions/TurnTrain.java @@ -16,9 +16,4 @@ public class TurnTrain extends Action{ } return false; } - - @Override - protected void removeChild(BaseClass child) { - // this class has no child elements - } } diff --git a/src/main/java/de/srsoftware/web4rail/conditions/BlockFree.java b/src/main/java/de/srsoftware/web4rail/conditions/BlockFree.java index d9446ac..18de176 100644 --- a/src/main/java/de/srsoftware/web4rail/conditions/BlockFree.java +++ b/src/main/java/de/srsoftware/web4rail/conditions/BlockFree.java @@ -45,6 +45,7 @@ public class BlockFree extends Condition { @Override protected void removeChild(BaseClass child) { if (child == block) block = null; + super.removeChild(child); } @Override diff --git a/src/main/java/de/srsoftware/web4rail/conditions/ConditionList.java b/src/main/java/de/srsoftware/web4rail/conditions/ConditionList.java index 05513c3..234fb21 100644 --- a/src/main/java/de/srsoftware/web4rail/conditions/ConditionList.java +++ b/src/main/java/de/srsoftware/web4rail/conditions/ConditionList.java @@ -122,6 +122,7 @@ public class ConditionList extends Condition implements Iterable{ @Override public BaseClass remove() { + LOG.debug("Removing Condition List ({}) {}",id(),this); super.remove(); while (!conditions.isEmpty()) conditions.lastElement().remove(); return this; @@ -134,6 +135,7 @@ public class ConditionList extends Condition implements Iterable{ @Override public void removeChild(BaseClass child) { conditions.remove(child); + super.removeChild(child); } diff --git a/src/main/java/de/srsoftware/web4rail/conditions/PushPullTrain.java b/src/main/java/de/srsoftware/web4rail/conditions/PushPullTrain.java index 481b996..aa6acda 100644 --- a/src/main/java/de/srsoftware/web4rail/conditions/PushPullTrain.java +++ b/src/main/java/de/srsoftware/web4rail/conditions/PushPullTrain.java @@ -8,11 +8,6 @@ public class PushPullTrain extends Condition { public boolean fulfilledBy(Context context) { return context.train().pushPull != inverted; } - - @Override - protected void removeChild(BaseClass child) { - // this class has no child elements - } @Override public String toString() { diff --git a/src/main/java/de/srsoftware/web4rail/conditions/TrainHasTag.java b/src/main/java/de/srsoftware/web4rail/conditions/TrainHasTag.java index 1c80280..991b7e0 100644 --- a/src/main/java/de/srsoftware/web4rail/conditions/TrainHasTag.java +++ b/src/main/java/de/srsoftware/web4rail/conditions/TrainHasTag.java @@ -38,11 +38,6 @@ public class TrainHasTag extends Condition { return super.properties(preForm, formInputs, postForm); } - @Override - protected void removeChild(BaseClass child) { - // this class has no child elements - } - @Override public String toString() { if (tag == null) return "["+t("Click to setup tag")+"]"; diff --git a/src/main/java/de/srsoftware/web4rail/conditions/TrainLength.java b/src/main/java/de/srsoftware/web4rail/conditions/TrainLength.java index dc568a7..8194c06 100644 --- a/src/main/java/de/srsoftware/web4rail/conditions/TrainLength.java +++ b/src/main/java/de/srsoftware/web4rail/conditions/TrainLength.java @@ -39,11 +39,6 @@ public class TrainLength extends Condition { return super.properties(preForm, formInputs, postForm); } - @Override - protected void removeChild(BaseClass child) { - // this class has no child elements - } - @Override public String toString() { return t(inverted ? "train is longer than {}" : "train is shorter than {}",maxLength) ; diff --git a/src/main/java/de/srsoftware/web4rail/conditions/TrainSelect.java b/src/main/java/de/srsoftware/web4rail/conditions/TrainSelect.java index 118577f..71fc485 100644 --- a/src/main/java/de/srsoftware/web4rail/conditions/TrainSelect.java +++ b/src/main/java/de/srsoftware/web4rail/conditions/TrainSelect.java @@ -40,6 +40,7 @@ public class TrainSelect extends Condition { @Override protected void removeChild(BaseClass child) { if (child == train) train = null; + super.removeChild(child); } @Override diff --git a/src/main/java/de/srsoftware/web4rail/moving/Car.java b/src/main/java/de/srsoftware/web4rail/moving/Car.java index 8a020a4..6b42ad3 100644 --- a/src/main/java/de/srsoftware/web4rail/moving/Car.java +++ b/src/main/java/de/srsoftware/web4rail/moving/Car.java @@ -208,6 +208,7 @@ public class Car extends BaseClass implements Comparable{ @Override protected void removeChild(BaseClass child) { if (child == train) train = null; + super.removeChild(child); } diff --git a/src/main/java/de/srsoftware/web4rail/moving/Train.java b/src/main/java/de/srsoftware/web4rail/moving/Train.java index fa105bc..7cbf282 100644 --- a/src/main/java/de/srsoftware/web4rail/moving/Train.java +++ b/src/main/java/de/srsoftware/web4rail/moving/Train.java @@ -570,6 +570,7 @@ public class Train extends BaseClass implements Comparable { cars.remove(child); locos.remove(child); trace.remove(child); + super.removeChild(child); } public void reserveNext() { diff --git a/src/main/java/de/srsoftware/web4rail/tiles/Bridge.java b/src/main/java/de/srsoftware/web4rail/tiles/Bridge.java index 5a08bc0..0abc950 100644 --- a/src/main/java/de/srsoftware/web4rail/tiles/Bridge.java +++ b/src/main/java/de/srsoftware/web4rail/tiles/Bridge.java @@ -104,7 +104,7 @@ public abstract class Bridge extends Tile { @Override public void removeChild(BaseClass child) { if (child == counterpart) counterpart = null; - plan.place(this); + super.removeChild(child); } @Override diff --git a/src/main/java/de/srsoftware/web4rail/tiles/Contact.java b/src/main/java/de/srsoftware/web4rail/tiles/Contact.java index 0674b95..12699a6 100644 --- a/src/main/java/de/srsoftware/web4rail/tiles/Contact.java +++ b/src/main/java/de/srsoftware/web4rail/tiles/Contact.java @@ -190,6 +190,7 @@ public class Contact extends Tile{ @Override public void removeChild(BaseClass child) { if (child == actions) actions = null; + super.removeChild(child); } public static Select selector(Contact preselect) { diff --git a/src/main/java/de/srsoftware/web4rail/tiles/Shadow.java b/src/main/java/de/srsoftware/web4rail/tiles/Shadow.java index ba87bef..9f15da9 100644 --- a/src/main/java/de/srsoftware/web4rail/tiles/Shadow.java +++ b/src/main/java/de/srsoftware/web4rail/tiles/Shadow.java @@ -33,10 +33,11 @@ public class Shadow extends Tile{ @Override public void removeChild(BaseClass child) { + super.removeChild(child); if (child == overlay) { overlay = null; remove(); - } + } } @Override diff --git a/src/main/java/de/srsoftware/web4rail/tiles/StretchableTile.java b/src/main/java/de/srsoftware/web4rail/tiles/StretchableTile.java index 78463d8..9a776b2 100644 --- a/src/main/java/de/srsoftware/web4rail/tiles/StretchableTile.java +++ b/src/main/java/de/srsoftware/web4rail/tiles/StretchableTile.java @@ -77,9 +77,9 @@ public abstract class StretchableTile extends Tile { @Override public BaseClass remove() { - super.remove(); + LOG.debug("Removing stretchable Tile ({}) {}",id(),this); removeShadows(); - return this; + return super.remove(); } private void removeShadows() { diff --git a/src/main/java/de/srsoftware/web4rail/tiles/Tile.java b/src/main/java/de/srsoftware/web4rail/tiles/Tile.java index 85d8176..d585087 100644 --- a/src/main/java/de/srsoftware/web4rail/tiles/Tile.java +++ b/src/main/java/de/srsoftware/web4rail/tiles/Tile.java @@ -376,16 +376,24 @@ public abstract class Tile extends BaseClass implements Comparable{ @Override public BaseClass remove() { - super.remove(); - while (!routes.isEmpty()) routes.first().remove(); - return this; + while (!routes.isEmpty()) { + routes.first().remove(); + } + return super.remove(); } @Override public void removeChild(BaseClass child) { - routes.remove(child); + String childAsString = child.toString(); + if (childAsString.length()>20) childAsString = childAsString.substring(0, 20)+"…"; + LOG.debug("Removing {} from {}",childAsString,this); + if (child instanceof Route) { + routes.remove(child); + } + if (child == train) train = null; if (child == route) route = null; + super.removeChild(child); plan.place(this); }