diff --git a/pom.xml b/pom.xml
index 08e0c0a..b8e33e6 100644
--- a/pom.xml
+++ b/pom.xml
@@ -4,7 +4,7 @@
4.0.0
de.srsoftware
web4rail
- 1.2.4
+ 1.2.5
Web4Rail
jar
Java Model Railway Control
diff --git a/src/main/java/de/srsoftware/web4rail/BaseClass.java b/src/main/java/de/srsoftware/web4rail/BaseClass.java
index 8cfb448..1284453 100644
--- a/src/main/java/de/srsoftware/web4rail/BaseClass.java
+++ b/src/main/java/de/srsoftware/web4rail/BaseClass.java
@@ -37,7 +37,7 @@ public abstract class BaseClass implements Constants{
private static final char[] HEX_CHARS = "0123456789ABCDEF".toCharArray();
protected Id id = null;
protected String notes;
- protected Context parent;
+ private BaseClass parent;
public static class Context {
@@ -306,6 +306,15 @@ public abstract class BaseClass implements Constants{
return merged;
}
+ public BaseClass parent() {
+ return parent;
+ }
+
+ public BaseClass parent(BaseClass parent) {
+ this.parent = parent;
+ return this;
+ }
+
public Window properties() {
return properties(new ArrayList<>(), new FormInput(), new ArrayList<>());
}
diff --git a/src/main/java/de/srsoftware/web4rail/Route.java b/src/main/java/de/srsoftware/web4rail/Route.java
index 08e0a31..d98bf21 100644
--- a/src/main/java/de/srsoftware/web4rail/Route.java
+++ b/src/main/java/de/srsoftware/web4rail/Route.java
@@ -147,11 +147,16 @@ public class Route extends BaseClass implements Comparable{
public Train train;
private HashMap triggers = new HashMap();
private HashMap turnouts;
- private ActionList setupActions = new ActionList();
- private ActionList startActions = new ActionList();
+ private ActionList setupActions;
+ private ActionList startActions;
private Block startBlock = null;
public Direction startDirection;
- private HashSet triggeredContacts = new HashSet<>();
+ private HashSet triggeredContacts = new HashSet<>();
+
+ public Route() {
+ setupActions = new ActionList(this);
+ startActions = new ActionList(this);
+ }
/**
* process commands from the client
@@ -211,7 +216,7 @@ public class Route extends BaseClass implements Comparable{
public void add(String trigger, Action action) {
ActionList actions = triggers.get(trigger);
if (isNull(actions)) {
- actions = new ActionList();
+ actions = new ActionList(this);
triggers.put(trigger, actions);
}
actions.add(action);
@@ -258,21 +263,19 @@ public class Route extends BaseClass implements Comparable{
Tag list = new Tag("ol");
Tag setup = new Tag("li").content(t("Setup actions")+NBSP);
- setupActions.list().addTo(setup);
- setup.addTo(list);
+ setupActions.list().addTo(setup).addTo(list);
Tag start = new Tag("li").content(t("Start actions")+NBSP);
- startActions.list().addTo(setup);
- start.addTo(list);
+ startActions.list().addTo(start).addTo(list);
for (Contact c : contacts) {
- Tag link = Plan.addLink(c,c+NBSP,list);
+ Tag item = c.link("span", c).addTo(new Tag("li")).content(NBSP);
ActionList actions = triggers.get(c.trigger());
if (isNull(actions)) {
- actions = new ActionList();
+ actions = new ActionList(this);
triggers.put(c.trigger(), actions);
}
- actions.list().addTo(link);
+ actions.list().addTo(item).addTo(list);
}
list.addTo(win);
return win;
@@ -371,21 +374,20 @@ public class Route extends BaseClass implements Comparable{
}
public Route complete() {
- Context parent = new Context(this);
if (contacts.size()>1) { // mindestens 2 Kontakte: erster Kontakt aktiviert Block, vorletzter Kontakt leitet Bremsung ein
Contact nextToLastContact = contacts.get(contacts.size()-2);
String trigger = nextToLastContact.trigger();
- add(trigger,new BrakeStart(parent));
- add(trigger,new PreserveRoute(parent));
- for (Signal signal : signals) add(trigger,new SetSignal(parent).set(signal).to(Signal.STOP));
+ add(trigger,new BrakeStart(this));
+ add(trigger,new PreserveRoute(this));
+ for (Signal signal : signals) add(trigger,new SetSignal(this).set(signal).to(Signal.STOP));
}
if (!contacts.isEmpty()) {
Contact lastContact = contacts.lastElement();
- add(lastContact.trigger(), new BrakeStop(parent));
- add(lastContact.trigger(), new FinishRoute(parent));
+ add(lastContact.trigger(), new BrakeStop(this));
+ add(lastContact.trigger(), new FinishRoute(this));
}
- for (Signal signal : signals) setupActions.add(new SetSignal(parent).set(signal).to(Signal.GO));
- startActions.add(new SetSpeed(parent).to(999));
+ for (Signal signal : signals) setupActions.add(new SetSignal(this).set(signal).to(Signal.GO));
+ startActions.add(new SetSpeed(this).to(999));
return this;
}
@@ -566,8 +568,8 @@ public class Route extends BaseClass implements Comparable{
}
if (json.has(ACTION_LISTS)) loadActions(json.getJSONArray(ACTION_LISTS));
if (json.has(CONDITIONS)) conditions.load(json.getJSONArray(CONDITIONS));
- if (json.has(SETUP_ACTIONS)) setupActions = new ActionList().load(json.getJSONArray(SETUP_ACTIONS));
- if (json.has(START_ACTIONS)) startActions = new ActionList().load(json.getJSONArray(START_ACTIONS));
+ if (json.has(SETUP_ACTIONS)) setupActions.load(json.getJSONArray(SETUP_ACTIONS));
+ if (json.has(START_ACTIONS)) startActions.load(json.getJSONArray(START_ACTIONS));
if (json.has(DISABLED)) disabled = json.getBoolean(DISABLED);
if (json.has(BRAKE_TIMES)) {
JSONObject dummy = json.getJSONObject(BRAKE_TIMES);
@@ -580,7 +582,7 @@ public class Route extends BaseClass implements Comparable{
for (int i=0; i{
protected Window properties(List