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;
}