From d7239ffb7a1e5b613168f3db22be2ca0e5f4d478 Mon Sep 17 00:00:00 2001 From: Stephan Richter Date: Wed, 16 Sep 2020 23:53:55 +0200 Subject: [PATCH] implemented renaming of routes --- .../java/de/srsoftware/web4rail/Plan.java | 13 ++++++--- .../java/de/srsoftware/web4rail/Route.java | 28 ++++++++++++++++++- .../de/srsoftware/web4rail/tiles/Tile.java | 2 +- 3 files changed, 37 insertions(+), 6 deletions(-) diff --git a/src/main/java/de/srsoftware/web4rail/Plan.java b/src/main/java/de/srsoftware/web4rail/Plan.java index f61e5c0..d97c4e3 100644 --- a/src/main/java/de/srsoftware/web4rail/Plan.java +++ b/src/main/java/de/srsoftware/web4rail/Plan.java @@ -75,6 +75,7 @@ public class Plan { private static final String DIRECTION = "direction"; private static final String ACTION_ROUTE = "openRoute"; private static final String ID = "id"; + private static final String ROUTE = "route"; private HashMap> tiles = new HashMap>(); private HashSet blocks = new HashSet(); @@ -296,14 +297,18 @@ public class Plan { return route.properties(); } - private Page update(HashMap params) throws IOException { - return update(Integer.parseInt(params.get("x")),Integer.parseInt(params.get("y")),params); + private Object update(HashMap params) throws IOException { + if (params.containsKey(ROUTE)) { + Route route = routes.get(params.get(ROUTE)); + if (route == null) return t("Unknown route: {}",params.get(ROUTE)); + route.update(params); + } else update(Integer.parseInt(params.get("x")),Integer.parseInt(params.get("y")),params); + return this.html(); } - private Page update(int x,int y, HashMap params) throws IOException { + private void update(int x,int y, HashMap params) throws IOException { Tile tile = get(x,y); if (tile != null) set(x,y,tile.update(params)); - return this.html(); } private Tag propMenu(String x, String y) { diff --git a/src/main/java/de/srsoftware/web4rail/Route.java b/src/main/java/de/srsoftware/web4rail/Route.java index 464581b..0132fdb 100644 --- a/src/main/java/de/srsoftware/web4rail/Route.java +++ b/src/main/java/de/srsoftware/web4rail/Route.java @@ -5,9 +5,13 @@ import java.util.List; import java.util.Map.Entry; import java.util.Vector; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + import de.keawe.tools.translations.Translation; import de.srsoftware.tools.Tag; import de.srsoftware.web4rail.Plan.Direction; +import de.srsoftware.web4rail.tags.Form; import de.srsoftware.web4rail.tiles.Block; import de.srsoftware.web4rail.tiles.Contact; import de.srsoftware.web4rail.tiles.Shadow; @@ -17,7 +21,8 @@ import de.srsoftware.web4rail.tiles.Turnout; import de.srsoftware.web4rail.tiles.Turnout.State; public class Route { - + private static final Logger LOG = LoggerFactory.getLogger(Route.class); + private static final String NAME = "name"; private Vector path; private Vector signals; private Vector contacts; @@ -99,9 +104,25 @@ public class Route { Plan.addLink(turnout, turnout+": "+entry.getValue(), list); } list.addTo(win); + + Tag form = propForm(); + new Tag("button").attr("type", "submit").content(t("save")).addTo(form); + form.addTo(win); return win; } + + public Tag propForm() { + Form form = new Form(); + new Tag("input").attr("type", "hidden").attr("name","action").attr("value", "update").addTo(form); + new Tag("input").attr("type", "hidden").attr("name","route").attr("value", id()).addTo(form); + + Tag label = new Tag("label").content(t("name:")); + new Tag("input").attr("type", "text").attr(NAME,"name").attr("value", name).addTo(label); + label.addTo(form); + + return form; + } public Route start(Block block) { contacts = new Vector(); @@ -130,4 +151,9 @@ public class Route { Tile lastTile = path.lastElement(); if (lastTile instanceof Turnout) turnouts.put((Turnout) lastTile,state); } + + public void update(HashMap params) { + LOG.debug("update({})",params); + if (params.containsKey(NAME)) name = params.get(NAME); + } } diff --git a/src/main/java/de/srsoftware/web4rail/tiles/Tile.java b/src/main/java/de/srsoftware/web4rail/tiles/Tile.java index 94e42ba..cc85c33 100644 --- a/src/main/java/de/srsoftware/web4rail/tiles/Tile.java +++ b/src/main/java/de/srsoftware/web4rail/tiles/Tile.java @@ -75,7 +75,7 @@ public abstract class Tile { new Tag("h4").content(t("Routes using this tile:")).addTo(form); Tag routeList = new Tag("ul"); for (Route route : routes) { - new Tag("li").clazz("link").attr("onclick","openRoute('"+route.id()+"')").content(route.id()).addTo(routeList); + new Tag("li").clazz("link").attr("onclick","openRoute('"+route.id()+"')").content(route.name()).addTo(routeList); } routeList.addTo(form); }