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');")); + } }