diff --git a/pom.xml b/pom.xml index 247eee3..c04294b 100644 --- a/pom.xml +++ b/pom.xml @@ -4,7 +4,7 @@ 4.0.0 de.srsoftware web4rail - 1.4.29 + 1.4.30 Web4Rail jar Java Model Railway Control diff --git a/resources/css/style.css b/resources/css/style.css index 81af0c3..4f6c141 100644 --- a/resources/css/style.css +++ b/resources/css/style.css @@ -295,13 +295,17 @@ h4,ul{ display: table-row; } +svg.disabled{ + background: red; +} + svg.disabled circle, svg.disabled line, svg.disabled polygon, svg.disabled rect{ - fill: #ddddef; + fill: #572e2e; stroke-width:5; - stroke: red; + stroke: black; } #train-wait-form input{ @@ -384,6 +388,11 @@ svg.Block text{ fill: black; } +svg.Block.disabled text{ + fill: white; +} + + .window > .tabs > legend { float:left; background: lightgray; diff --git a/src/main/java/de/srsoftware/web4rail/tiles/Block.java b/src/main/java/de/srsoftware/web4rail/tiles/Block.java index 602b158..c529514 100644 --- a/src/main/java/de/srsoftware/web4rail/tiles/Block.java +++ b/src/main/java/de/srsoftware/web4rail/tiles/Block.java @@ -200,9 +200,7 @@ public abstract class Block extends StretchableTile{ @Override protected HashSet classes() { HashSet classes = super.classes(); - if (!isNull(occupyingTrain()) || !parkedTrains.isEmpty()) classes.add(OCCUPIED); - if (!isNull(lockingTrain())) classes.add(LOCKED); - if (isDisabled()) classes.add(DISABLED); + if (!parkedTrains.isEmpty()) classes.add(OCCUPIED); return classes; } diff --git a/src/main/java/de/srsoftware/web4rail/tiles/Tile.java b/src/main/java/de/srsoftware/web4rail/tiles/Tile.java index 5fea179..1a7a88e 100644 --- a/src/main/java/de/srsoftware/web4rail/tiles/Tile.java +++ b/src/main/java/de/srsoftware/web4rail/tiles/Tile.java @@ -71,6 +71,7 @@ public abstract class Tile extends BaseClass implements Comparable { if (isSet(reservingTrain)) classes.add(RESERVED); if (isSet(lockingTrain)) classes.add(LOCKED); if (isSet(occupyingTrain)) classes.add(OCCUPIED); + if (disabled) classes.add(DISABLED); return classes; } @@ -554,6 +555,7 @@ public abstract class Tile extends BaseClass implements Comparable { if (isSet(len)) length(Integer.parseInt(len)); super.update(params); plan.place(this); + plan.alter(); return this; } diff --git a/src/main/java/de/srsoftware/web4rail/tiles/Turnout.java b/src/main/java/de/srsoftware/web4rail/tiles/Turnout.java index a1dc98f..72fb9ff 100644 --- a/src/main/java/de/srsoftware/web4rail/tiles/Turnout.java +++ b/src/main/java/de/srsoftware/web4rail/tiles/Turnout.java @@ -162,10 +162,16 @@ public abstract class Turnout extends Tile implements Device{ public Reply state(State newState,boolean shift) { Train lockingTrain = lockingTrain(); - if (isSet(lockingTrain)) { - if (newState != state && !shift) return new Reply(415, t("{} locked by {}!",this,lockingTrain)); - // shift allows to switch locked turnouts... - } else if (shift) return new Reply(200,"OK"); // shift on a non-locked turnout skips the switch process + if (isDisabled()) { + // shift allows to switch disabled turnouts... + if (newState != state && !shift) return new Reply(415, t("{} is disabled!",this)); + } else { + if (isSet(lockingTrain)) { + // shift allows to switch locked turnouts... + if (newState != state && !shift) return new Reply(415, t("{} locked by {}!",this,lockingTrain)); + + } else if (shift) return new Reply(200,"OK"); // shift on a non-locked turnout skips the switch process + } if (address == 0) { sleep(300); state = newState; diff --git a/src/main/java/de/srsoftware/web4rail/tiles/TurnoutL.java b/src/main/java/de/srsoftware/web4rail/tiles/TurnoutL.java index 62917ea..ebd83ff 100644 --- a/src/main/java/de/srsoftware/web4rail/tiles/TurnoutL.java +++ b/src/main/java/de/srsoftware/web4rail/tiles/TurnoutL.java @@ -4,6 +4,7 @@ import java.io.IOException; import java.util.HashMap; import java.util.List; +import de.srsoftware.web4rail.Command.Reply; import de.srsoftware.web4rail.tags.Fieldset; import de.srsoftware.web4rail.tags.Input; import de.srsoftware.web4rail.tags.Window; @@ -15,7 +16,8 @@ public abstract class TurnoutL extends Turnout { @Override public Object click(boolean shift) throws IOException { Object o = super.click(shift); - state(state == State.STRAIGHT ? State.LEFT : State.STRAIGHT,shift); + Reply reply = state(state == State.STRAIGHT ? State.LEFT : State.STRAIGHT,shift); + if (!reply.succeeded()) plan.stream(reply.message()); return o; }