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;
}