diff --git a/pom.xml b/pom.xml index 7ac17a5..bd872bd 100644 --- a/pom.xml +++ b/pom.xml @@ -4,7 +4,7 @@ 4.0.0 de.srsoftware web4rail - 1.5.36 + 1.5.37 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 bdf72ca..a9d9041 100644 --- a/src/main/java/de/srsoftware/web4rail/actions/ActionList.java +++ b/src/main/java/de/srsoftware/web4rail/actions/ActionList.java @@ -104,6 +104,13 @@ 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() { @@ -130,7 +137,7 @@ public class ActionList extends Action implements Iterable{ if (!isEmpty()) { Tag list = new Tag("ol"); for (Action action : actions) { - Tag item = action.link("span",action, action.highlightId()).addTo(new Tag("li")).content(NBSP); + Tag item = action.link("span",action, action.highlightId()).id(action.id().toString()).addTo(new Tag("li")).content(NBSP); action.button("↑", Map.of(ACTION,ACTION_MOVE)).title(t("move up")).addTo(item); action.button("-", Map.of(ACTION,ACTION_DROP)).title(t("delete")).addTo(item); if (action instanceof ActionList) ((ActionList) action).listAt(item); @@ -245,7 +252,12 @@ public class ActionList extends Action implements Iterable{ case ACTION_START: return start(action); case ACTION_UPDATE: - return action.update(params); + Object res = action.update(params); + if (res instanceof Window) { + Window win = (Window) res; + highlight(win,action); + } + return res; } return t("Unknown action: {}",command); } diff --git a/src/main/java/de/srsoftware/web4rail/actions/SetPower.java b/src/main/java/de/srsoftware/web4rail/actions/SetPower.java index e9a79e0..084b4ad 100644 --- a/src/main/java/de/srsoftware/web4rail/actions/SetPower.java +++ b/src/main/java/de/srsoftware/web4rail/actions/SetPower.java @@ -85,6 +85,6 @@ public class SetPower extends Action{ LOG.debug("update: {}",params); String newState = params.getString(STATE); if (isSet(newState)) pc = POWERCHANGE.valueOf(newState); - return parent().properties(); + return context().properties(); } } diff --git a/src/main/java/de/srsoftware/web4rail/actions/TriggerContact.java b/src/main/java/de/srsoftware/web4rail/actions/TriggerContact.java index 10fc043..fc819d2 100644 --- a/src/main/java/de/srsoftware/web4rail/actions/TriggerContact.java +++ b/src/main/java/de/srsoftware/web4rail/actions/TriggerContact.java @@ -91,7 +91,7 @@ public class TriggerContact extends Action { contactOrSwitch = tile; } else error = t("{} is neither a contact nor a switch!",tile); } - return properties(error); + return context().properties(error); } }