diff --git a/pom.xml b/pom.xml index c737f60..5b26fc7 100644 --- a/pom.xml +++ b/pom.xml @@ -4,7 +4,7 @@ 4.0.0 de.srsoftware web4rail - 0.7.4 + 0.7.5 Web4Rail jar Java Model Railway Control diff --git a/src/main/java/de/srsoftware/web4rail/Constants.java b/src/main/java/de/srsoftware/web4rail/Constants.java index b69da78..661f9f0 100644 --- a/src/main/java/de/srsoftware/web4rail/Constants.java +++ b/src/main/java/de/srsoftware/web4rail/Constants.java @@ -17,6 +17,7 @@ public interface Constants { public static final String ACTION_MOVE = "move"; public static final String ACTION_POWER = "power"; public static final String ACTION_PROPS = "props"; + public static final String ACTION_QUIT = "quit"; public static final String ACTION_SAVE = "save"; public static final String ACTION_SLOWER10 = "slower10"; public static final String ACTION_START = "start"; @@ -27,8 +28,6 @@ public interface Constants { public static final String ACTION_TOGGLE_F4 = "f4"; public static final String ACTION_TURN = "turn"; public static final String ACTION_UPDATE = "update"; - - public static final String REALM = "realm"; public static final String REALM_CAR = "car"; @@ -43,5 +42,6 @@ public interface Constants { public static final Charset UTF8 = StandardCharsets.UTF_8; public static final String CONTACT = "contact"; public static final String TYPE = "type"; + public static final String NBSP = " "; } diff --git a/src/main/java/de/srsoftware/web4rail/Route.java b/src/main/java/de/srsoftware/web4rail/Route.java index 369e69b..27ba98a 100644 --- a/src/main/java/de/srsoftware/web4rail/Route.java +++ b/src/main/java/de/srsoftware/web4rail/Route.java @@ -208,8 +208,8 @@ public class Route implements Constants{ new Input(REALM,REALM_ROUTE).hideIn(form); new Input(ID,id()).hideIn(form); - Tag label = new Tag("label").content(t("name:")); - new Tag("input").attr("type", "text").attr(NAME,"name").attr("value", name()).addTo(label); + Tag label = new Tag("label").content(t("name:")+NBSP); + new Tag("input").attr("type", "text").attr(NAME,"name").attr("value", name()).style("width: 80%").addTo(label); label.addTo(form); new Tag("button").attr("type", "submit").content(t("save")).addTo(form); @@ -305,6 +305,10 @@ public class Route implements Constants{ return properties(); } + public Block endBlock() { + return endBlock; + } + public void finish() throws IOException { startBlock.train(null); train.route = null; @@ -563,7 +567,7 @@ public class Route implements Constants{ } public Block startBlock() { - return (Block) path.get(0); + return startBlock; } protected static String t(String txt, Object...fills) { diff --git a/src/main/java/de/srsoftware/web4rail/moving/Train.java b/src/main/java/de/srsoftware/web4rail/moving/Train.java index 968f2dd..a435baa 100644 --- a/src/main/java/de/srsoftware/web4rail/moving/Train.java +++ b/src/main/java/de/srsoftware/web4rail/moving/Train.java @@ -135,10 +135,12 @@ public class Train implements Constants { return train.automatic(); case ACTION_PROPS: return train.props(); + case ACTION_QUIT: + return train.quitAutopilot(); case ACTION_START: return train.start(); case ACTION_STOP: - return train.stop(); + return train.stopNow(); case ACTION_TURN: return train.turn(); case ACTION_UPDATE: @@ -147,7 +149,6 @@ public class Train implements Constants { return t("Unknown action: {}",params.get(ACTION)); } - private Object addCar(HashMap params) { LOG.debug("addCar({})",params); if (!params.containsKey(CAR_ID)) return t("No car id passed to Train.addCar!"); @@ -346,7 +347,7 @@ public class Train implements Constants { if (autopilot == null) { new Button(t("auto"),"train("+id+",'"+ACTION_AUTO+"')").addTo(actions); } else { - new Button(t("stop"),"train("+id+",'"+ACTION_STOP+"')").addTo(actions); + new Button(t("quit autopilot"),"train("+id+",'"+ACTION_QUIT+"')").addTo(actions); } actions.addTo(propList); @@ -361,6 +362,14 @@ public class Train implements Constants { return window; } + private Object quitAutopilot() { + if (autopilot != null) { + autopilot.stop = true; + autopilot = null; + return t("{} stopping at next block.",this); + } else return t("autopilot not active."); + } + public static void saveAll(String filename) throws IOException { BufferedWriter file = new BufferedWriter(new FileWriter(filename)); for (Entry entry:trains.entrySet()) { @@ -414,10 +423,17 @@ public class Train implements Constants { return error; } - private Object stop() { - autopilot.stop = true; - autopilot = null; - return t("{} stopping at next block.",this); + private Object stopNow() { + setSpeed(0); + if (route != null) try { + route.unlock(); + route.endBlock().train(null); + route.startBlock().train(this); + } catch (IOException e) { + e.printStackTrace(); + } + route = null; + return t("Stopped {}.",this); } private static String t(String message, Object...fills) { diff --git a/src/main/java/de/srsoftware/web4rail/tiles/Block.java b/src/main/java/de/srsoftware/web4rail/tiles/Block.java index ac0edac..bc9a2f3 100644 --- a/src/main/java/de/srsoftware/web4rail/tiles/Block.java +++ b/src/main/java/de/srsoftware/web4rail/tiles/Block.java @@ -82,9 +82,10 @@ public abstract class Block extends StretchableTile{ Tag window = super.propMenu(); if (train != null) { - new Tag("h4").content(t("Train:")).addTo(window); - train.link("span").addTo(window); - new Button(t("start"),"train("+train.id+",'"+ACTION_START+"')").addTo(window); + window.children().insertElementAt(new Button(t("stop"),"train("+train.id+",'"+ACTION_STOP+"')"), 1); + window.children().insertElementAt(new Button(t("start"),"train("+train.id+",'"+ACTION_START+"')"), 1); + window.children().insertElementAt(train.link("span"), 1); + window.children().insertElementAt(new Tag("h4").content(t("Train:")), 1); } return window; }