diff --git a/pom.xml b/pom.xml
index 91dadb4..f98162b 100644
--- a/pom.xml
+++ b/pom.xml
@@ -4,7 +4,7 @@
4.0.0
de.srsoftware
web4rail
- 1.3.15
+ 1.3.16
Web4Rail
jar
Java Model Railway Control
diff --git a/resources/translations/Application.de.translation b/resources/translations/Application.de.translation
index 9d3770b..b582caa 100644
--- a/resources/translations/Application.de.translation
+++ b/resources/translations/Application.de.translation
@@ -334,7 +334,6 @@ TurnoutRN : WeicheRN
TurnoutRS : WeicheRS
TurnoutRW : WeicheRW
Turnouts : Weichen
-TurnTrain : Fahrtrichtung umkehren
turn within train : innerhalb des Zugs drehen
Turns the train, as if it went through a loop. : Dreht den ZUg, als wenn er eine Wendeschleife passiert hätte.
Unknown action\: {} : Unbekannte Aktion: {}
diff --git a/src/main/java/de/srsoftware/web4rail/actions/ActionList.java b/src/main/java/de/srsoftware/web4rail/actions/ActionList.java
index 0fbdb14..3bd77ee 100644
--- a/src/main/java/de/srsoftware/web4rail/actions/ActionList.java
+++ b/src/main/java/de/srsoftware/web4rail/actions/ActionList.java
@@ -43,7 +43,7 @@ public class ActionList extends Action implements Iterable{
public ActionList add(Action action) {
action.parent(this);
- actions.add(action);
+ actions.add(action);
return this;
}
@@ -52,7 +52,7 @@ public class ActionList extends Action implements Iterable{
if (isNull(type)) return actionTypeForm();
Action action = Action.create(type,this);
if (action instanceof Action) {
- add(action);
+ prepend(action);
return context().properties();
}
return new Tag("span").content(t("Unknown action type: {}",type)).addTo(actionTypeForm());
@@ -200,6 +200,12 @@ public class ActionList extends Action implements Iterable{
return false;
}
+ public ActionList prepend(Action action) {
+ action.parent(this);
+ actions.insertElementAt(action, 0);
+ return this;
+ }
+
public static Object process(HashMap params, Plan plan) {
String command = params.get(ACTION);
if (command == null) return t("No action passed to ActionList.process()!");
diff --git a/src/main/java/de/srsoftware/web4rail/actions/DetermineTrainInBlock.java b/src/main/java/de/srsoftware/web4rail/actions/DetermineTrainInBlock.java
index 7a16a76..d7a91a0 100644
--- a/src/main/java/de/srsoftware/web4rail/actions/DetermineTrainInBlock.java
+++ b/src/main/java/de/srsoftware/web4rail/actions/DetermineTrainInBlock.java
@@ -5,6 +5,7 @@ import java.util.List;
import org.json.JSONObject;
+import de.srsoftware.web4rail.Application;
import de.srsoftware.web4rail.BaseClass;
import de.srsoftware.web4rail.Window;
import de.srsoftware.web4rail.tags.Fieldset;
@@ -36,7 +37,21 @@ public class DetermineTrainInBlock extends Action {
public Action load(JSONObject json) {
super.load(json);
Id blockId = Id.from(json,BLOCK);
- if (isSet(blockId)) block = Block.get(blockId);
+ if (isSet(blockId)) {
+ block = Block.get(blockId);
+ if (isNull(block)) {
+ Application.threadPool.execute(new Thread() {
+ public void run() {
+ try {
+ sleep(1000);
+ } catch (InterruptedException e) {
+ e.printStackTrace();
+ }
+ block = Block.get(blockId);
+ };
+ });
+ }
+ }
return this;
}
diff --git a/src/main/java/de/srsoftware/web4rail/actions/SetDisplayText.java b/src/main/java/de/srsoftware/web4rail/actions/SetDisplayText.java
index 3854094..a23ac5e 100644
--- a/src/main/java/de/srsoftware/web4rail/actions/SetDisplayText.java
+++ b/src/main/java/de/srsoftware/web4rail/actions/SetDisplayText.java
@@ -66,7 +66,7 @@ public class SetDisplayText extends TextAction{
@Override
public String toString() {
- return isNull(display) ? t("[Click here to select display!]") : t("Display \"{}\" on {}.",text,display);
+ return isNull(display) ? "["+t("Click here to select display!")+"]" : t("Display \"{}\" on {}.",text,display);
}
@Override
diff --git a/src/main/java/de/srsoftware/web4rail/actions/SetRelay.java b/src/main/java/de/srsoftware/web4rail/actions/SetRelay.java
index 030907b..cb7228c 100644
--- a/src/main/java/de/srsoftware/web4rail/actions/SetRelay.java
+++ b/src/main/java/de/srsoftware/web4rail/actions/SetRelay.java
@@ -85,7 +85,7 @@ public class SetRelay extends Action {
protected Object update(HashMap params) {
LOG.debug("update: {}",params);
Id relayId = new Id(params.get(Relay.class.getSimpleName()));
- relay = Relay.get(relayId);
+ relay = BaseClass.get(relayId);
String st = params.get(Relay.STATE);
if (isSet(st)) state = st.equals("true");
return context().properties();
diff --git a/src/main/java/de/srsoftware/web4rail/actions/SetTurnout.java b/src/main/java/de/srsoftware/web4rail/actions/SetTurnout.java
index cd13f2d..3cffeca 100644
--- a/src/main/java/de/srsoftware/web4rail/actions/SetTurnout.java
+++ b/src/main/java/de/srsoftware/web4rail/actions/SetTurnout.java
@@ -6,6 +6,7 @@ import java.util.List;
import org.json.JSONObject;
import de.srsoftware.tools.Tag;
+import de.srsoftware.web4rail.Application;
import de.srsoftware.web4rail.BaseClass;
import de.srsoftware.web4rail.Window;
import de.srsoftware.web4rail.tags.Fieldset;
@@ -47,12 +48,25 @@ public class SetTurnout extends Action {
@Override
public Action load(JSONObject json) {
- super.load(json);
- String turnoutId = json.getString(TURNOUT);
+ super.load(json);
+ Id turnoutId = json.has(TURNOUT) ? new Id(json.getString(TURNOUT)) : null;
if (isSet(turnoutId)) {
- turnout = BaseClass.get(new Id(turnoutId));
- state = Turnout.State.valueOf(json.getString(Turnout.STATE));
+ turnout = BaseClass.get(turnoutId);
+ if (isNull(turnout)) {
+ Application.threadPool.execute(new Thread() {
+ @Override
+ public void run() {
+ try {
+ sleep(1000);
+ } catch (InterruptedException e) {
+ e.printStackTrace();
+ }
+ turnout = BaseClass.get(turnoutId);
+ }
+ });
+ }
}
+ if (json.has(Turnout.STATE)) state = Turnout.State.valueOf(json.getString(Turnout.STATE));
return this;
}
diff --git a/src/main/java/de/srsoftware/web4rail/conditions/BlockFree.java b/src/main/java/de/srsoftware/web4rail/conditions/BlockFree.java
index eb24962..0f76485 100644
--- a/src/main/java/de/srsoftware/web4rail/conditions/BlockFree.java
+++ b/src/main/java/de/srsoftware/web4rail/conditions/BlockFree.java
@@ -5,6 +5,7 @@ import java.util.List;
import org.json.JSONObject;
+import de.srsoftware.web4rail.Application;
import de.srsoftware.web4rail.BaseClass;
import de.srsoftware.web4rail.Window;
import de.srsoftware.web4rail.tags.Fieldset;
@@ -32,7 +33,23 @@ public class BlockFree extends Condition {
public Condition load(JSONObject json) {
super.load(json);
- if (json.has(BLOCK)) block(Block.get(new Id(json.getString(BLOCK))));
+ if (json.has(BLOCK)) {
+ Id bid = new Id(json.getString(BLOCK));
+ block(BaseClass.get(bid));
+ if (isNull(block)) {
+ Application.threadPool.execute(new Thread() {
+ @Override
+ public void run() {
+ try {
+ sleep(1000);
+ } catch (InterruptedException e) {
+ e.printStackTrace();
+ }
+ block(BaseClass.get(bid));
+ }
+ });
+ }
+ }
return this;
}
diff --git a/src/main/java/de/srsoftware/web4rail/tiles/Block.java b/src/main/java/de/srsoftware/web4rail/tiles/Block.java
index 0fc5f57..b84d58e 100644
--- a/src/main/java/de/srsoftware/web4rail/tiles/Block.java
+++ b/src/main/java/de/srsoftware/web4rail/tiles/Block.java
@@ -186,12 +186,6 @@ public abstract class Block extends StretchableTile{
return this;
}
- public static Block get(Id blockId) {
- Tile tile = plan.get(blockId, false);
- if (tile instanceof Block) return (Block) tile;
- return null;
- }
-
private WaitTime getWaitTime(String tag) {
if (tag == null) return null;
for (WaitTime wt : waitTimes) {
diff --git a/src/main/java/de/srsoftware/web4rail/tiles/Contact.java b/src/main/java/de/srsoftware/web4rail/tiles/Contact.java
index a64cf47..593d523 100644
--- a/src/main/java/de/srsoftware/web4rail/tiles/Contact.java
+++ b/src/main/java/de/srsoftware/web4rail/tiles/Contact.java
@@ -187,6 +187,7 @@ public class Contact extends Tile{
formInputs.add(t("Address"),span);
Fieldset fieldset = new Fieldset(t("Actions"));
+ fieldset.id("actions");
actions.list().addTo(fieldset);
postForm.add(fieldset);
return super.properties(preForm, formInputs, postForm);