diff --git a/pom.xml b/pom.xml
index bd872bd..6e6794a 100644
--- a/pom.xml
+++ b/pom.xml
@@ -4,7 +4,7 @@
4.0.0
de.srsoftware
web4rail
- 1.5.37
+ 1.5.38
Web4Rail
jar
Java Model Railway Control
diff --git a/src/main/java/de/srsoftware/web4rail/actions/ActionList.java b/src/main/java/de/srsoftware/web4rail/actions/ActionList.java
index a9d9041..27c5c17 100644
--- a/src/main/java/de/srsoftware/web4rail/actions/ActionList.java
+++ b/src/main/java/de/srsoftware/web4rail/actions/ActionList.java
@@ -104,13 +104,6 @@ public class ActionList extends Action implements Iterable{
}
return speed;
}
-
- private static void highlight(Window win, Action action) {
- BaseClass scrollTarget = action.parent();
- if (isNull(scrollTarget)) scrollTarget = action;
-
- win.children().add(new Tag("script").content("document.getElementById('"+scrollTarget.id()+"').scrollIntoView({ behavior: \"smooth\" }); document.getElementById('"+action.id()+"').classList.add('highlight');"));
- }
@Override
public Iterator iterator() {
@@ -253,10 +246,7 @@ public class ActionList extends Action implements Iterable{
return start(action);
case ACTION_UPDATE:
Object res = action.update(params);
- if (res instanceof Window) {
- Window win = (Window) res;
- highlight(win,action);
- }
+ if (res instanceof Window) ((Window) res).highlight(action);
return res;
}
return t("Unknown action: {}",command);
diff --git a/src/main/java/de/srsoftware/web4rail/actions/ConditionalAction.java b/src/main/java/de/srsoftware/web4rail/actions/ConditionalAction.java
index a3e505d..07ef2ec 100644
--- a/src/main/java/de/srsoftware/web4rail/actions/ConditionalAction.java
+++ b/src/main/java/de/srsoftware/web4rail/actions/ConditionalAction.java
@@ -62,7 +62,7 @@ public class ConditionalAction extends ActionList {
public T listAt(T parent) {
T tag = super.listAt(parent);
if (!elseActions.isEmpty()) {
- Tag div = new Tag("div").clazz("else");
+ Tag div = new Tag("div").id(elseActions.id().toString()).clazz("else");
new Tag("span").content(t("else:")+NBSP).addTo(div);
elseActions.listAt(div);
div.addTo(tag);
diff --git a/src/main/java/de/srsoftware/web4rail/conditions/Condition.java b/src/main/java/de/srsoftware/web4rail/conditions/Condition.java
index e5c269e..42fa56f 100644
--- a/src/main/java/de/srsoftware/web4rail/conditions/Condition.java
+++ b/src/main/java/de/srsoftware/web4rail/conditions/Condition.java
@@ -16,6 +16,7 @@ import de.srsoftware.web4rail.BaseClass;
import de.srsoftware.web4rail.Params;
import de.srsoftware.web4rail.Plan;
import de.srsoftware.web4rail.actions.Action;
+import de.srsoftware.web4rail.actions.ActionList;
import de.srsoftware.web4rail.tags.Checkbox;
import de.srsoftware.web4rail.tags.Fieldset;
import de.srsoftware.web4rail.tags.Select;
@@ -53,7 +54,18 @@ public abstract class Condition extends BaseClass {
case ACTION_PROPS:
return condition.properties();
case ACTION_UPDATE:
- return condition.update(params);
+ Object res = condition.update(params);
+ if (res instanceof Window) {
+ BaseClass parent = condition.parent();
+ while (isSet(parent)) {
+ if (parent instanceof ActionList) {
+ ((Window) res).highlight(parent);
+ break;
+ }
+ parent = parent.parent();
+ }
+ }
+ return res;
}
return t("Unknown action: {}",action);
}
diff --git a/src/main/java/de/srsoftware/web4rail/tags/Window.java b/src/main/java/de/srsoftware/web4rail/tags/Window.java
index 4b37772..40a2e91 100644
--- a/src/main/java/de/srsoftware/web4rail/tags/Window.java
+++ b/src/main/java/de/srsoftware/web4rail/tags/Window.java
@@ -1,6 +1,7 @@
package de.srsoftware.web4rail.tags;
import de.srsoftware.tools.Tag;
+import de.srsoftware.web4rail.BaseClass;
/**
* @author Stephan Richter, SRSoftware 2020-2021 *
@@ -24,4 +25,11 @@ public class Window extends Tag{
.attr("onclick", "return swapTiling();")
.content("◧").addTo(this);
}
+
+ public void highlight(BaseClass element) {
+ BaseClass scrollTarget = element.parent();
+ if (scrollTarget == null) scrollTarget = element;
+
+ children().add(new Tag("script").content("document.getElementById('"+scrollTarget.id()+"').scrollIntoView({ behavior: \"smooth\" }); document.getElementById('"+element.id()+"').classList.add('highlight');"));
+ }
}