diff --git a/pom.xml b/pom.xml
index e42734e..faf8af5 100644
--- a/pom.xml
+++ b/pom.xml
@@ -4,7 +4,7 @@
4.0.0
de.srsoftware
web4rail
- 1.3.28
+ 1.3.29
Web4Rail
jar
Java Model Railway Control
@@ -38,7 +38,7 @@
de.srsoftware
tools
- 1.1.11
+ 1.1.12
compile
diff --git a/resources/translations/Application.de.translation b/resources/translations/Application.de.translation
index edeac7d..c244233 100644
--- a/resources/translations/Application.de.translation
+++ b/resources/translations/Application.de.translation
@@ -57,6 +57,7 @@ BrakeStop : Bremsvorgang abschließen
Brake time¹, forward : Bremszeit¹, vorwärts
Brake time¹, reverse : Bremszeit¹, rückwärts
Brake time table : Bremszeit-Tabelle
+Car : Fahrzeug
CarInTrain : Fahrzeug im Zug
Car manager : Waggon-Verwaltung
Car of train : Fahrzeug des Zuges
@@ -91,7 +92,7 @@ Control : Steuerung
Control unit : Zentrale
copy : kopieren
Counterpart : Gegenstück
-Couple : kupple
+couple : kuppeln
Couple first parked train : ersten geparkten Zug kuppeln
Couple last parked train : letzten geparkten Zug kuppeln
CoupleTrain : Zug kuppeln
@@ -102,6 +103,7 @@ Current orientation : aktuelle Fahrtrichtung
Current velocity\: {} {} : Aktuelle Geschwindigkeit: {} {}
custom fields : benutzerdefinierte Felder
Decoder address : Decoder-Adresse
+decouple : Abkuppeln
decoupler : decoupler
Decoupler : Entkuppler
DelayedAction : verzögerte Aktion
@@ -216,6 +218,7 @@ Operating System : Betriebssystem
or : oder
OrCondition : Oder-Bedingung
other train properties : andere Zug-Eigenschaften
+other trains in {} : andere Züge in {}
Origin and destination : Start und Ziel
Origin\: {} to {} : Start: {} nach {}
parked trains : abgestellte Züge
diff --git a/src/main/java/de/srsoftware/web4rail/Application.java b/src/main/java/de/srsoftware/web4rail/Application.java
index 21e3871..eb15c81 100644
--- a/src/main/java/de/srsoftware/web4rail/Application.java
+++ b/src/main/java/de/srsoftware/web4rail/Application.java
@@ -30,6 +30,7 @@ import de.srsoftware.web4rail.conditions.Condition;
import de.srsoftware.web4rail.moving.Car;
import de.srsoftware.web4rail.moving.Locomotive;
import de.srsoftware.web4rail.moving.Train;
+import de.srsoftware.web4rail.tags.Window;
import de.srsoftware.web4rail.tiles.Contact;
/**
diff --git a/src/main/java/de/srsoftware/web4rail/BaseClass.java b/src/main/java/de/srsoftware/web4rail/BaseClass.java
index 1265cac..2c36175 100644
--- a/src/main/java/de/srsoftware/web4rail/BaseClass.java
+++ b/src/main/java/de/srsoftware/web4rail/BaseClass.java
@@ -30,10 +30,14 @@ import de.srsoftware.web4rail.tags.Form;
import de.srsoftware.web4rail.tags.Input;
import de.srsoftware.web4rail.tags.Table;
import de.srsoftware.web4rail.tags.TextArea;
+import de.srsoftware.web4rail.tags.Window;
import de.srsoftware.web4rail.tiles.Block;
import de.srsoftware.web4rail.tiles.Contact;
import de.srsoftware.web4rail.tiles.Tile;
+/**
+ * @author Stephan Richter, SRSoftware 2020…2021
+ */
public abstract class BaseClass implements Constants{
protected static Plan plan; // the track layout in use
public static final Random random = new Random();
diff --git a/src/main/java/de/srsoftware/web4rail/Connector.java b/src/main/java/de/srsoftware/web4rail/Connector.java
index 4c96d9a..74d8017 100644
--- a/src/main/java/de/srsoftware/web4rail/Connector.java
+++ b/src/main/java/de/srsoftware/web4rail/Connector.java
@@ -1,5 +1,8 @@
package de.srsoftware.web4rail;
+/**
+ * @author Stephan Richter, SRSoftware 2020…2021
+ */
public class Connector {
public Plan.Direction from;
diff --git a/src/main/java/de/srsoftware/web4rail/Constants.java b/src/main/java/de/srsoftware/web4rail/Constants.java
index ee240ef..c78a880 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_AUTO = "auto";
public static final String ACTION_CLICK = "click";
public static final String ACTION_CONNECT = "connect";
+ public static final String ACTION_DECOUPLE = "decouple";
public static final String ACTION_DROP = "drop";
public static final String ACTION_EMERGENCY = "emergency";
public static final String ACTION_FASTER10 = "faster10";
diff --git a/src/main/java/de/srsoftware/web4rail/ControlUnit.java b/src/main/java/de/srsoftware/web4rail/ControlUnit.java
index b1e21e9..3b163cb 100644
--- a/src/main/java/de/srsoftware/web4rail/ControlUnit.java
+++ b/src/main/java/de/srsoftware/web4rail/ControlUnit.java
@@ -22,6 +22,7 @@ import de.srsoftware.web4rail.tags.Fieldset;
import de.srsoftware.web4rail.tags.Form;
import de.srsoftware.web4rail.tags.Input;
import de.srsoftware.web4rail.tags.Label;
+import de.srsoftware.web4rail.tags.Window;
/**
* abstraction of a SRCP daemon (control unit)
diff --git a/src/main/java/de/srsoftware/web4rail/Device.java b/src/main/java/de/srsoftware/web4rail/Device.java
index 787a273..f32bcfc 100644
--- a/src/main/java/de/srsoftware/web4rail/Device.java
+++ b/src/main/java/de/srsoftware/web4rail/Device.java
@@ -2,6 +2,9 @@ package de.srsoftware.web4rail;
import de.srsoftware.tools.Tag;
+/**
+ * @author Stephan Richter, SRSoftware 2020…2021
+ */
public interface Device {
public static final String ADDRESS = "address";
public static final String PROTOCOL = "proto";
diff --git a/src/main/java/de/srsoftware/web4rail/Page.java b/src/main/java/de/srsoftware/web4rail/Page.java
index 0d8fe4f..06370e7 100644
--- a/src/main/java/de/srsoftware/web4rail/Page.java
+++ b/src/main/java/de/srsoftware/web4rail/Page.java
@@ -7,7 +7,7 @@ import de.srsoftware.tools.Tag;
/**
*
* helper class to create html pages
- * @author Stephan Richter, SRSoftware
+ * @author Stephan Richter, SRSoftware, 2020…2021
*
*/
public class Page {
diff --git a/src/main/java/de/srsoftware/web4rail/PathFinder.java b/src/main/java/de/srsoftware/web4rail/PathFinder.java
index ff2858d..731ac90 100644
--- a/src/main/java/de/srsoftware/web4rail/PathFinder.java
+++ b/src/main/java/de/srsoftware/web4rail/PathFinder.java
@@ -13,6 +13,9 @@ import de.srsoftware.web4rail.Plan.Direction;
import de.srsoftware.web4rail.moving.Train;
import de.srsoftware.web4rail.tiles.Block;
+/**
+ * @author Stephan Richter, SRSoftware 2020-2021
+ */
public class PathFinder extends BaseClass{
public static final Logger LOG = LoggerFactory.getLogger(PathFinder.class);
diff --git a/src/main/java/de/srsoftware/web4rail/Plan.java b/src/main/java/de/srsoftware/web4rail/Plan.java
index 8766de0..c78363c 100644
--- a/src/main/java/de/srsoftware/web4rail/Plan.java
+++ b/src/main/java/de/srsoftware/web4rail/Plan.java
@@ -35,6 +35,7 @@ import de.srsoftware.web4rail.tags.Form;
import de.srsoftware.web4rail.tags.Input;
import de.srsoftware.web4rail.tags.Label;
import de.srsoftware.web4rail.tags.Table;
+import de.srsoftware.web4rail.tags.Window;
import de.srsoftware.web4rail.tiles.Block;
import de.srsoftware.web4rail.tiles.BlockContact;
import de.srsoftware.web4rail.tiles.BlockH;
@@ -92,7 +93,7 @@ import de.srsoftware.web4rail.tiles.TurnoutRW;
* Routes
* ...
*
- * @author Stephan Richter, SRSoftware
+ * @author Stephan Richter, SRSoftware, 2020-2021
*
*/
public class Plan extends BaseClass{
diff --git a/src/main/java/de/srsoftware/web4rail/Protocol.java b/src/main/java/de/srsoftware/web4rail/Protocol.java
index e9f1833..03c9530 100644
--- a/src/main/java/de/srsoftware/web4rail/Protocol.java
+++ b/src/main/java/de/srsoftware/web4rail/Protocol.java
@@ -1,5 +1,8 @@
package de.srsoftware.web4rail;
+/**
+ * @author Stephan Richter, SRSoftware 2020-2021
+ */
public enum Protocol{
DCC14(14),
DCC27(27),
diff --git a/src/main/java/de/srsoftware/web4rail/Range.java b/src/main/java/de/srsoftware/web4rail/Range.java
index 0d56c19..eb7bae6 100644
--- a/src/main/java/de/srsoftware/web4rail/Range.java
+++ b/src/main/java/de/srsoftware/web4rail/Range.java
@@ -6,7 +6,8 @@ import org.json.JSONObject;
/**
* Class for integer ranges (min…max)
- * @author Stephan Richter
+ * @author Stephan Richter, SRSoftware 2020-2021
+ *
*/
public class Range extends BaseClass{
private static final String MAX = "max";
diff --git a/src/main/java/de/srsoftware/web4rail/Route.java b/src/main/java/de/srsoftware/web4rail/Route.java
index 9c00c88..72540b3 100644
--- a/src/main/java/de/srsoftware/web4rail/Route.java
+++ b/src/main/java/de/srsoftware/web4rail/Route.java
@@ -36,6 +36,7 @@ import de.srsoftware.web4rail.tags.Checkbox;
import de.srsoftware.web4rail.tags.Fieldset;
import de.srsoftware.web4rail.tags.Input;
import de.srsoftware.web4rail.tags.Table;
+import de.srsoftware.web4rail.tags.Window;
import de.srsoftware.web4rail.tiles.Block;
import de.srsoftware.web4rail.tiles.BlockContact;
import de.srsoftware.web4rail.tiles.Contact;
@@ -46,7 +47,7 @@ import de.srsoftware.web4rail.tiles.Turnout;
/**
* A route is a vector of tiles that leads from one block to another.
*
- * @author Stephan Richter, SRSoftware
+ * @author Stephan Richter, SRSoftware 2020-2021
*
*/
public class Route extends BaseClass {
diff --git a/src/main/java/de/srsoftware/web4rail/actions/Action.java b/src/main/java/de/srsoftware/web4rail/actions/Action.java
index 09c03bc..3ff8823 100644
--- a/src/main/java/de/srsoftware/web4rail/actions/Action.java
+++ b/src/main/java/de/srsoftware/web4rail/actions/Action.java
@@ -14,7 +14,6 @@ import de.keawe.tools.translations.Translation;
import de.srsoftware.tools.Tag;
import de.srsoftware.web4rail.Application;
import de.srsoftware.web4rail.BaseClass;
-import de.srsoftware.web4rail.Window;
import de.srsoftware.web4rail.tags.Button;
import de.srsoftware.web4rail.tags.Fieldset;
import de.srsoftware.web4rail.tags.Form;
@@ -22,6 +21,7 @@ import de.srsoftware.web4rail.tags.Input;
import de.srsoftware.web4rail.tags.Label;
import de.srsoftware.web4rail.tags.Select;
import de.srsoftware.web4rail.tags.TextArea;
+import de.srsoftware.web4rail.tags.Window;
/**
* Base Class for all other actions
diff --git a/src/main/java/de/srsoftware/web4rail/actions/ActionList.java b/src/main/java/de/srsoftware/web4rail/actions/ActionList.java
index 5c78046..afc36c7 100644
--- a/src/main/java/de/srsoftware/web4rail/actions/ActionList.java
+++ b/src/main/java/de/srsoftware/web4rail/actions/ActionList.java
@@ -14,11 +14,11 @@ import org.slf4j.LoggerFactory;
import de.srsoftware.tools.Tag;
import de.srsoftware.web4rail.BaseClass;
import de.srsoftware.web4rail.Plan;
-import de.srsoftware.web4rail.Window;
import de.srsoftware.web4rail.tags.Button;
import de.srsoftware.web4rail.tags.Fieldset;
import de.srsoftware.web4rail.tags.Form;
import de.srsoftware.web4rail.tags.Input;
+import de.srsoftware.web4rail.tags.Window;
public class ActionList extends Action implements Iterable{
static final Logger LOG = LoggerFactory.getLogger(ActionList.class);
diff --git a/src/main/java/de/srsoftware/web4rail/actions/AddDestination.java b/src/main/java/de/srsoftware/web4rail/actions/AddDestination.java
index 02b1d2d..6cfa0be 100644
--- a/src/main/java/de/srsoftware/web4rail/actions/AddDestination.java
+++ b/src/main/java/de/srsoftware/web4rail/actions/AddDestination.java
@@ -11,10 +11,10 @@ import de.srsoftware.tools.Tag;
import de.srsoftware.web4rail.Application;
import de.srsoftware.web4rail.BaseClass;
import de.srsoftware.web4rail.Route;
-import de.srsoftware.web4rail.Window;
import de.srsoftware.web4rail.moving.Train;
import de.srsoftware.web4rail.tags.Checkbox;
import de.srsoftware.web4rail.tags.Fieldset;
+import de.srsoftware.web4rail.tags.Window;
import de.srsoftware.web4rail.tiles.Block;
import de.srsoftware.web4rail.tiles.Tile;
diff --git a/src/main/java/de/srsoftware/web4rail/actions/AddRemoveTag.java b/src/main/java/de/srsoftware/web4rail/actions/AddRemoveTag.java
index fea65b5..1a3ae1f 100644
--- a/src/main/java/de/srsoftware/web4rail/actions/AddRemoveTag.java
+++ b/src/main/java/de/srsoftware/web4rail/actions/AddRemoveTag.java
@@ -7,10 +7,10 @@ import org.json.JSONObject;
import de.srsoftware.tools.Tag;
import de.srsoftware.web4rail.BaseClass;
-import de.srsoftware.web4rail.Window;
import de.srsoftware.web4rail.tags.Fieldset;
import de.srsoftware.web4rail.tags.Input;
import de.srsoftware.web4rail.tags.Radio;
+import de.srsoftware.web4rail.tags.Window;
public class AddRemoveTag extends Action{
diff --git a/src/main/java/de/srsoftware/web4rail/actions/AlterDirection.java b/src/main/java/de/srsoftware/web4rail/actions/AlterDirection.java
index 58f8516..f83e9f3 100644
--- a/src/main/java/de/srsoftware/web4rail/actions/AlterDirection.java
+++ b/src/main/java/de/srsoftware/web4rail/actions/AlterDirection.java
@@ -8,10 +8,10 @@ import org.json.JSONObject;
import de.srsoftware.tools.Tag;
import de.srsoftware.web4rail.BaseClass;
import de.srsoftware.web4rail.Plan.Direction;
-import de.srsoftware.web4rail.Window;
import de.srsoftware.web4rail.moving.Train;
import de.srsoftware.web4rail.tags.Fieldset;
import de.srsoftware.web4rail.tags.Radio;
+import de.srsoftware.web4rail.tags.Window;
public class AlterDirection extends Action{
diff --git a/src/main/java/de/srsoftware/web4rail/actions/ConditionalAction.java b/src/main/java/de/srsoftware/web4rail/actions/ConditionalAction.java
index d490088..81e2fff 100644
--- a/src/main/java/de/srsoftware/web4rail/actions/ConditionalAction.java
+++ b/src/main/java/de/srsoftware/web4rail/actions/ConditionalAction.java
@@ -7,10 +7,10 @@ import org.json.JSONArray;
import org.json.JSONObject;
import de.srsoftware.web4rail.BaseClass;
-import de.srsoftware.web4rail.Window;
import de.srsoftware.web4rail.conditions.Condition;
import de.srsoftware.web4rail.conditions.ConditionList;
import de.srsoftware.web4rail.tags.Fieldset;
+import de.srsoftware.web4rail.tags.Window;
public class ConditionalAction extends ActionList {
diff --git a/src/main/java/de/srsoftware/web4rail/actions/CoupleTrain.java b/src/main/java/de/srsoftware/web4rail/actions/CoupleTrain.java
index 1bc13ab..a42d813 100644
--- a/src/main/java/de/srsoftware/web4rail/actions/CoupleTrain.java
+++ b/src/main/java/de/srsoftware/web4rail/actions/CoupleTrain.java
@@ -6,10 +6,10 @@ import java.util.List;
import org.json.JSONObject;
import de.srsoftware.web4rail.BaseClass;
-import de.srsoftware.web4rail.Window;
import de.srsoftware.web4rail.moving.Train;
import de.srsoftware.web4rail.tags.Checkbox;
import de.srsoftware.web4rail.tags.Fieldset;
+import de.srsoftware.web4rail.tags.Window;
import de.srsoftware.web4rail.tiles.Block;
public class CoupleTrain extends Action {
@@ -29,7 +29,7 @@ public class CoupleTrain extends Action {
if (isNull(train)) return false;
Block block = train.currentBlock();
if (isNull(block)) return false;
- Train parkingTrain = block.parkedTrains(last);
+ Train parkingTrain = block.parkedTrain(last);
if (isNull(parkingTrain)) return false;
train.coupleWith(parkingTrain,swap);
return true;
diff --git a/src/main/java/de/srsoftware/web4rail/actions/DelayedAction.java b/src/main/java/de/srsoftware/web4rail/actions/DelayedAction.java
index f7aed7d..00deede 100644
--- a/src/main/java/de/srsoftware/web4rail/actions/DelayedAction.java
+++ b/src/main/java/de/srsoftware/web4rail/actions/DelayedAction.java
@@ -8,9 +8,9 @@ import org.json.JSONObject;
import de.srsoftware.tools.Tag;
import de.srsoftware.web4rail.Application;
import de.srsoftware.web4rail.BaseClass;
-import de.srsoftware.web4rail.Window;
import de.srsoftware.web4rail.tags.Fieldset;
import de.srsoftware.web4rail.tags.Input;
+import de.srsoftware.web4rail.tags.Window;
public class DelayedAction extends ActionList {
diff --git a/src/main/java/de/srsoftware/web4rail/actions/DetermineTrainInBlock.java b/src/main/java/de/srsoftware/web4rail/actions/DetermineTrainInBlock.java
index bc164b0..a693f3e 100644
--- a/src/main/java/de/srsoftware/web4rail/actions/DetermineTrainInBlock.java
+++ b/src/main/java/de/srsoftware/web4rail/actions/DetermineTrainInBlock.java
@@ -8,8 +8,8 @@ import org.json.JSONObject;
import de.srsoftware.web4rail.Application;
import de.srsoftware.web4rail.BaseClass;
-import de.srsoftware.web4rail.Window;
import de.srsoftware.web4rail.tags.Fieldset;
+import de.srsoftware.web4rail.tags.Window;
import de.srsoftware.web4rail.tiles.Block;
import de.srsoftware.web4rail.tiles.Tile;
diff --git a/src/main/java/de/srsoftware/web4rail/actions/DisableEnableBlock.java b/src/main/java/de/srsoftware/web4rail/actions/DisableEnableBlock.java
index 1709dfa..de59160 100644
--- a/src/main/java/de/srsoftware/web4rail/actions/DisableEnableBlock.java
+++ b/src/main/java/de/srsoftware/web4rail/actions/DisableEnableBlock.java
@@ -8,9 +8,9 @@ import org.json.JSONObject;
import de.srsoftware.tools.Tag;
import de.srsoftware.web4rail.Application;
import de.srsoftware.web4rail.BaseClass;
-import de.srsoftware.web4rail.Window;
import de.srsoftware.web4rail.tags.Fieldset;
import de.srsoftware.web4rail.tags.Radio;
+import de.srsoftware.web4rail.tags.Window;
import de.srsoftware.web4rail.tiles.Block;
public class DisableEnableBlock extends Action {
diff --git a/src/main/java/de/srsoftware/web4rail/actions/EngageDecoupler.java b/src/main/java/de/srsoftware/web4rail/actions/EngageDecoupler.java
index eae0a7b..b634ebb 100644
--- a/src/main/java/de/srsoftware/web4rail/actions/EngageDecoupler.java
+++ b/src/main/java/de/srsoftware/web4rail/actions/EngageDecoupler.java
@@ -8,8 +8,8 @@ import org.json.JSONObject;
import de.srsoftware.web4rail.Application;
import de.srsoftware.web4rail.BaseClass;
-import de.srsoftware.web4rail.Window;
import de.srsoftware.web4rail.tags.Fieldset;
+import de.srsoftware.web4rail.tags.Window;
import de.srsoftware.web4rail.tiles.Decoupler;
import de.srsoftware.web4rail.tiles.Tile;
diff --git a/src/main/java/de/srsoftware/web4rail/actions/Loop.java b/src/main/java/de/srsoftware/web4rail/actions/Loop.java
index a2212d3..da56b16 100644
--- a/src/main/java/de/srsoftware/web4rail/actions/Loop.java
+++ b/src/main/java/de/srsoftware/web4rail/actions/Loop.java
@@ -9,10 +9,10 @@ import org.json.JSONObject;
import de.srsoftware.tools.Tag;
import de.srsoftware.web4rail.BaseClass;
import de.srsoftware.web4rail.Route;
-import de.srsoftware.web4rail.Window;
import de.srsoftware.web4rail.moving.Train;
import de.srsoftware.web4rail.tags.Fieldset;
import de.srsoftware.web4rail.tags.Select;
+import de.srsoftware.web4rail.tags.Window;
import de.srsoftware.web4rail.tiles.Block;
import de.srsoftware.web4rail.tiles.Contact;
import de.srsoftware.web4rail.tiles.Signal;
diff --git a/src/main/java/de/srsoftware/web4rail/actions/SendCommand.java b/src/main/java/de/srsoftware/web4rail/actions/SendCommand.java
index 9944db7..939e258 100644
--- a/src/main/java/de/srsoftware/web4rail/actions/SendCommand.java
+++ b/src/main/java/de/srsoftware/web4rail/actions/SendCommand.java
@@ -9,10 +9,10 @@ import org.json.JSONObject;
import de.srsoftware.tools.Tag;
import de.srsoftware.web4rail.BaseClass;
import de.srsoftware.web4rail.Command;
-import de.srsoftware.web4rail.Window;
import de.srsoftware.web4rail.tags.Fieldset;
import de.srsoftware.web4rail.tags.Input;
import de.srsoftware.web4rail.tags.Radio;
+import de.srsoftware.web4rail.tags.Window;
public class SendCommand extends Action{
diff --git a/src/main/java/de/srsoftware/web4rail/actions/SetContextTrain.java b/src/main/java/de/srsoftware/web4rail/actions/SetContextTrain.java
index 70d4aed..baee41c 100644
--- a/src/main/java/de/srsoftware/web4rail/actions/SetContextTrain.java
+++ b/src/main/java/de/srsoftware/web4rail/actions/SetContextTrain.java
@@ -7,9 +7,9 @@ import org.json.JSONObject;
import de.srsoftware.web4rail.Application;
import de.srsoftware.web4rail.BaseClass;
-import de.srsoftware.web4rail.Window;
import de.srsoftware.web4rail.moving.Train;
import de.srsoftware.web4rail.tags.Fieldset;
+import de.srsoftware.web4rail.tags.Window;
public class SetContextTrain extends Action {
diff --git a/src/main/java/de/srsoftware/web4rail/actions/SetDisplayText.java b/src/main/java/de/srsoftware/web4rail/actions/SetDisplayText.java
index 89c28a7..f887cd0 100644
--- a/src/main/java/de/srsoftware/web4rail/actions/SetDisplayText.java
+++ b/src/main/java/de/srsoftware/web4rail/actions/SetDisplayText.java
@@ -8,9 +8,9 @@ import org.json.JSONObject;
import de.srsoftware.web4rail.Application;
import de.srsoftware.web4rail.BaseClass;
-import de.srsoftware.web4rail.Window;
import de.srsoftware.web4rail.tags.Fieldset;
import de.srsoftware.web4rail.tags.Label;
+import de.srsoftware.web4rail.tags.Window;
import de.srsoftware.web4rail.tiles.TextDisplay;
import de.srsoftware.web4rail.tiles.Tile;
diff --git a/src/main/java/de/srsoftware/web4rail/actions/SetPower.java b/src/main/java/de/srsoftware/web4rail/actions/SetPower.java
index c0443da..813c8c1 100644
--- a/src/main/java/de/srsoftware/web4rail/actions/SetPower.java
+++ b/src/main/java/de/srsoftware/web4rail/actions/SetPower.java
@@ -8,9 +8,9 @@ import org.json.JSONObject;
import de.srsoftware.tools.Tag;
import de.srsoftware.web4rail.BaseClass;
import de.srsoftware.web4rail.ControlUnit;
-import de.srsoftware.web4rail.Window;
import de.srsoftware.web4rail.tags.Fieldset;
import de.srsoftware.web4rail.tags.Radio;
+import de.srsoftware.web4rail.tags.Window;
public class SetPower extends Action{
diff --git a/src/main/java/de/srsoftware/web4rail/actions/SetRelay.java b/src/main/java/de/srsoftware/web4rail/actions/SetRelay.java
index cb7228c..01160e8 100644
--- a/src/main/java/de/srsoftware/web4rail/actions/SetRelay.java
+++ b/src/main/java/de/srsoftware/web4rail/actions/SetRelay.java
@@ -7,9 +7,9 @@ import org.json.JSONObject;
import de.srsoftware.web4rail.Application;
import de.srsoftware.web4rail.BaseClass;
-import de.srsoftware.web4rail.Window;
import de.srsoftware.web4rail.tags.Fieldset;
import de.srsoftware.web4rail.tags.Select;
+import de.srsoftware.web4rail.tags.Window;
import de.srsoftware.web4rail.tiles.Relay;
public class SetRelay extends Action {
diff --git a/src/main/java/de/srsoftware/web4rail/actions/SetSignal.java b/src/main/java/de/srsoftware/web4rail/actions/SetSignal.java
index b9a9b21..3bdb68c 100644
--- a/src/main/java/de/srsoftware/web4rail/actions/SetSignal.java
+++ b/src/main/java/de/srsoftware/web4rail/actions/SetSignal.java
@@ -7,9 +7,9 @@ import org.json.JSONObject;
import de.srsoftware.tools.Tag;
import de.srsoftware.web4rail.BaseClass;
-import de.srsoftware.web4rail.Window;
import de.srsoftware.web4rail.tags.Fieldset;
import de.srsoftware.web4rail.tags.Select;
+import de.srsoftware.web4rail.tags.Window;
import de.srsoftware.web4rail.tiles.Signal;
import de.srsoftware.web4rail.tiles.Tile;
diff --git a/src/main/java/de/srsoftware/web4rail/actions/SetSpeed.java b/src/main/java/de/srsoftware/web4rail/actions/SetSpeed.java
index 69ed5df..ce57229 100644
--- a/src/main/java/de/srsoftware/web4rail/actions/SetSpeed.java
+++ b/src/main/java/de/srsoftware/web4rail/actions/SetSpeed.java
@@ -6,9 +6,9 @@ import java.util.List;
import org.json.JSONObject;
import de.srsoftware.web4rail.BaseClass;
-import de.srsoftware.web4rail.Window;
import de.srsoftware.web4rail.tags.Fieldset;
import de.srsoftware.web4rail.tags.Input;
+import de.srsoftware.web4rail.tags.Window;
public class SetSpeed extends Action{
diff --git a/src/main/java/de/srsoftware/web4rail/actions/SetTurnout.java b/src/main/java/de/srsoftware/web4rail/actions/SetTurnout.java
index daa4729..766b601 100644
--- a/src/main/java/de/srsoftware/web4rail/actions/SetTurnout.java
+++ b/src/main/java/de/srsoftware/web4rail/actions/SetTurnout.java
@@ -9,9 +9,9 @@ import org.json.JSONObject;
import de.srsoftware.tools.Tag;
import de.srsoftware.web4rail.Application;
import de.srsoftware.web4rail.BaseClass;
-import de.srsoftware.web4rail.Window;
import de.srsoftware.web4rail.tags.Fieldset;
import de.srsoftware.web4rail.tags.Select;
+import de.srsoftware.web4rail.tags.Window;
import de.srsoftware.web4rail.tiles.Turnout;
import de.srsoftware.web4rail.tiles.Turnout.State;
diff --git a/src/main/java/de/srsoftware/web4rail/actions/SplitTrain.java b/src/main/java/de/srsoftware/web4rail/actions/SplitTrain.java
index 8f292b0..7c9e52a 100644
--- a/src/main/java/de/srsoftware/web4rail/actions/SplitTrain.java
+++ b/src/main/java/de/srsoftware/web4rail/actions/SplitTrain.java
@@ -7,10 +7,10 @@ import org.json.JSONObject;
import de.srsoftware.tools.Tag;
import de.srsoftware.web4rail.BaseClass;
-import de.srsoftware.web4rail.Window;
import de.srsoftware.web4rail.moving.Train;
import de.srsoftware.web4rail.tags.Fieldset;
import de.srsoftware.web4rail.tags.Input;
+import de.srsoftware.web4rail.tags.Window;
public class SplitTrain extends Action {
diff --git a/src/main/java/de/srsoftware/web4rail/actions/StartStopAuto.java b/src/main/java/de/srsoftware/web4rail/actions/StartStopAuto.java
index 622cabb..5f30a00 100644
--- a/src/main/java/de/srsoftware/web4rail/actions/StartStopAuto.java
+++ b/src/main/java/de/srsoftware/web4rail/actions/StartStopAuto.java
@@ -6,9 +6,9 @@ import java.util.List;
import org.json.JSONObject;
import de.srsoftware.web4rail.BaseClass;
-import de.srsoftware.web4rail.Window;
import de.srsoftware.web4rail.tags.Checkbox;
import de.srsoftware.web4rail.tags.Fieldset;
+import de.srsoftware.web4rail.tags.Window;
public class StartStopAuto extends Action {
diff --git a/src/main/java/de/srsoftware/web4rail/actions/SwitchFunction.java b/src/main/java/de/srsoftware/web4rail/actions/SwitchFunction.java
index b5d103f..68f0064 100644
--- a/src/main/java/de/srsoftware/web4rail/actions/SwitchFunction.java
+++ b/src/main/java/de/srsoftware/web4rail/actions/SwitchFunction.java
@@ -7,10 +7,10 @@ import org.json.JSONObject;
import de.srsoftware.tools.Tag;
import de.srsoftware.web4rail.BaseClass;
-import de.srsoftware.web4rail.Window;
import de.srsoftware.web4rail.tags.Fieldset;
import de.srsoftware.web4rail.tags.Radio;
import de.srsoftware.web4rail.tags.Select;
+import de.srsoftware.web4rail.tags.Window;
public class SwitchFunction extends Action {
diff --git a/src/main/java/de/srsoftware/web4rail/actions/TextAction.java b/src/main/java/de/srsoftware/web4rail/actions/TextAction.java
index 40beb8d..5cce90d 100644
--- a/src/main/java/de/srsoftware/web4rail/actions/TextAction.java
+++ b/src/main/java/de/srsoftware/web4rail/actions/TextAction.java
@@ -6,10 +6,10 @@ import java.util.List;
import org.json.JSONObject;
import de.srsoftware.web4rail.BaseClass;
-import de.srsoftware.web4rail.Window;
import de.srsoftware.web4rail.tags.Fieldset;
import de.srsoftware.web4rail.tags.Input;
import de.srsoftware.web4rail.tags.Label;
+import de.srsoftware.web4rail.tags.Window;
public abstract class TextAction extends Action {
diff --git a/src/main/java/de/srsoftware/web4rail/actions/TriggerContact.java b/src/main/java/de/srsoftware/web4rail/actions/TriggerContact.java
index a10c27c..5dc0810 100644
--- a/src/main/java/de/srsoftware/web4rail/actions/TriggerContact.java
+++ b/src/main/java/de/srsoftware/web4rail/actions/TriggerContact.java
@@ -6,8 +6,8 @@ import java.util.List;
import org.json.JSONObject;
import de.srsoftware.web4rail.BaseClass;
-import de.srsoftware.web4rail.Window;
import de.srsoftware.web4rail.tags.Fieldset;
+import de.srsoftware.web4rail.tags.Window;
import de.srsoftware.web4rail.tiles.Contact;
public class TriggerContact extends Action {
diff --git a/src/main/java/de/srsoftware/web4rail/actions/WaitForContact.java b/src/main/java/de/srsoftware/web4rail/actions/WaitForContact.java
index afe31b3..88d1f3a 100644
--- a/src/main/java/de/srsoftware/web4rail/actions/WaitForContact.java
+++ b/src/main/java/de/srsoftware/web4rail/actions/WaitForContact.java
@@ -9,9 +9,9 @@ import org.json.JSONObject;
import de.srsoftware.tools.Tag;
import de.srsoftware.web4rail.Application;
import de.srsoftware.web4rail.BaseClass;
-import de.srsoftware.web4rail.Window;
import de.srsoftware.web4rail.tags.Fieldset;
import de.srsoftware.web4rail.tags.Input;
+import de.srsoftware.web4rail.tags.Window;
import de.srsoftware.web4rail.tiles.Contact;
import de.srsoftware.web4rail.tiles.Contact.Listener;
import de.srsoftware.web4rail.tiles.Tile;
diff --git a/src/main/java/de/srsoftware/web4rail/conditions/BlockFree.java b/src/main/java/de/srsoftware/web4rail/conditions/BlockFree.java
index 578bfe9..e3b5593 100644
--- a/src/main/java/de/srsoftware/web4rail/conditions/BlockFree.java
+++ b/src/main/java/de/srsoftware/web4rail/conditions/BlockFree.java
@@ -8,8 +8,8 @@ import org.json.JSONObject;
import de.srsoftware.web4rail.Application;
import de.srsoftware.web4rail.BaseClass;
-import de.srsoftware.web4rail.Window;
import de.srsoftware.web4rail.tags.Fieldset;
+import de.srsoftware.web4rail.tags.Window;
import de.srsoftware.web4rail.tiles.Block;
import de.srsoftware.web4rail.tiles.Tile;
diff --git a/src/main/java/de/srsoftware/web4rail/conditions/CarInTrain.java b/src/main/java/de/srsoftware/web4rail/conditions/CarInTrain.java
index 0f46878..532cbd5 100644
--- a/src/main/java/de/srsoftware/web4rail/conditions/CarInTrain.java
+++ b/src/main/java/de/srsoftware/web4rail/conditions/CarInTrain.java
@@ -6,10 +6,10 @@ import java.util.List;
import org.json.JSONObject;
import de.srsoftware.web4rail.BaseClass;
-import de.srsoftware.web4rail.Window;
import de.srsoftware.web4rail.moving.Car;
import de.srsoftware.web4rail.moving.Train;
import de.srsoftware.web4rail.tags.Fieldset;
+import de.srsoftware.web4rail.tags.Window;
public class CarInTrain extends Condition {
diff --git a/src/main/java/de/srsoftware/web4rail/conditions/CarOrientation.java b/src/main/java/de/srsoftware/web4rail/conditions/CarOrientation.java
index 7a5677a..9463942 100644
--- a/src/main/java/de/srsoftware/web4rail/conditions/CarOrientation.java
+++ b/src/main/java/de/srsoftware/web4rail/conditions/CarOrientation.java
@@ -7,12 +7,12 @@ import org.json.JSONObject;
import de.srsoftware.tools.Tag;
import de.srsoftware.web4rail.BaseClass;
-import de.srsoftware.web4rail.Window;
import de.srsoftware.web4rail.moving.Car;
import de.srsoftware.web4rail.moving.Train;
import de.srsoftware.web4rail.tags.Fieldset;
import de.srsoftware.web4rail.tags.Input;
import de.srsoftware.web4rail.tags.Radio;
+import de.srsoftware.web4rail.tags.Window;
public class CarOrientation extends Condition {
diff --git a/src/main/java/de/srsoftware/web4rail/conditions/Condition.java b/src/main/java/de/srsoftware/web4rail/conditions/Condition.java
index 90fa3dc..56c303d 100644
--- a/src/main/java/de/srsoftware/web4rail/conditions/Condition.java
+++ b/src/main/java/de/srsoftware/web4rail/conditions/Condition.java
@@ -15,11 +15,11 @@ import de.srsoftware.tools.Tag;
import de.srsoftware.web4rail.Application;
import de.srsoftware.web4rail.BaseClass;
import de.srsoftware.web4rail.Plan;
-import de.srsoftware.web4rail.Window;
import de.srsoftware.web4rail.actions.Action;
import de.srsoftware.web4rail.tags.Checkbox;
import de.srsoftware.web4rail.tags.Fieldset;
import de.srsoftware.web4rail.tags.Select;
+import de.srsoftware.web4rail.tags.Window;
public abstract class Condition extends BaseClass {
public static final Logger LOG = LoggerFactory.getLogger(Condition.class);
diff --git a/src/main/java/de/srsoftware/web4rail/conditions/ConditionList.java b/src/main/java/de/srsoftware/web4rail/conditions/ConditionList.java
index 9ec1ffc..8f4467b 100644
--- a/src/main/java/de/srsoftware/web4rail/conditions/ConditionList.java
+++ b/src/main/java/de/srsoftware/web4rail/conditions/ConditionList.java
@@ -10,11 +10,11 @@ import org.json.JSONObject;
import de.srsoftware.tools.Tag;
import de.srsoftware.web4rail.BaseClass;
-import de.srsoftware.web4rail.Window;
import de.srsoftware.web4rail.tags.Button;
import de.srsoftware.web4rail.tags.Fieldset;
import de.srsoftware.web4rail.tags.Form;
import de.srsoftware.web4rail.tags.Input;
+import de.srsoftware.web4rail.tags.Window;
public class ConditionList extends Condition implements Iterable{
diff --git a/src/main/java/de/srsoftware/web4rail/conditions/RouteEndBlock.java b/src/main/java/de/srsoftware/web4rail/conditions/RouteEndBlock.java
index 6780f99..5b96761 100644
--- a/src/main/java/de/srsoftware/web4rail/conditions/RouteEndBlock.java
+++ b/src/main/java/de/srsoftware/web4rail/conditions/RouteEndBlock.java
@@ -9,8 +9,8 @@ import org.json.JSONObject;
import de.srsoftware.web4rail.Application;
import de.srsoftware.web4rail.BaseClass;
import de.srsoftware.web4rail.Route;
-import de.srsoftware.web4rail.Window;
import de.srsoftware.web4rail.tags.Fieldset;
+import de.srsoftware.web4rail.tags.Window;
import de.srsoftware.web4rail.tiles.Block;
import de.srsoftware.web4rail.tiles.Tile;
diff --git a/src/main/java/de/srsoftware/web4rail/conditions/TrainHasTag.java b/src/main/java/de/srsoftware/web4rail/conditions/TrainHasTag.java
index 9ceb214..1490bc8 100644
--- a/src/main/java/de/srsoftware/web4rail/conditions/TrainHasTag.java
+++ b/src/main/java/de/srsoftware/web4rail/conditions/TrainHasTag.java
@@ -5,9 +5,9 @@ import java.util.List;
import org.json.JSONObject;
-import de.srsoftware.web4rail.Window;
import de.srsoftware.web4rail.tags.Fieldset;
import de.srsoftware.web4rail.tags.Input;
+import de.srsoftware.web4rail.tags.Window;
public class TrainHasTag extends Condition {
diff --git a/src/main/java/de/srsoftware/web4rail/conditions/TrainLength.java b/src/main/java/de/srsoftware/web4rail/conditions/TrainLength.java
index 6d954ed..1b3f084 100644
--- a/src/main/java/de/srsoftware/web4rail/conditions/TrainLength.java
+++ b/src/main/java/de/srsoftware/web4rail/conditions/TrainLength.java
@@ -6,9 +6,9 @@ import java.util.List;
import org.json.JSONObject;
import de.srsoftware.tools.Tag;
-import de.srsoftware.web4rail.Window;
import de.srsoftware.web4rail.tags.Fieldset;
import de.srsoftware.web4rail.tags.Input;
+import de.srsoftware.web4rail.tags.Window;
public class TrainLength extends Condition {
diff --git a/src/main/java/de/srsoftware/web4rail/conditions/TrainSelect.java b/src/main/java/de/srsoftware/web4rail/conditions/TrainSelect.java
index b213e83..5ca364a 100644
--- a/src/main/java/de/srsoftware/web4rail/conditions/TrainSelect.java
+++ b/src/main/java/de/srsoftware/web4rail/conditions/TrainSelect.java
@@ -6,9 +6,9 @@ import java.util.List;
import org.json.JSONObject;
import de.srsoftware.web4rail.BaseClass;
-import de.srsoftware.web4rail.Window;
import de.srsoftware.web4rail.moving.Train;
import de.srsoftware.web4rail.tags.Fieldset;
+import de.srsoftware.web4rail.tags.Window;
public class TrainSelect extends Condition {
diff --git a/src/main/java/de/srsoftware/web4rail/conditions/TrainSpeed.java b/src/main/java/de/srsoftware/web4rail/conditions/TrainSpeed.java
index 2610f3e..885141f 100644
--- a/src/main/java/de/srsoftware/web4rail/conditions/TrainSpeed.java
+++ b/src/main/java/de/srsoftware/web4rail/conditions/TrainSpeed.java
@@ -6,9 +6,9 @@ import java.util.List;
import org.json.JSONObject;
import de.srsoftware.tools.Tag;
-import de.srsoftware.web4rail.Window;
import de.srsoftware.web4rail.tags.Fieldset;
import de.srsoftware.web4rail.tags.Input;
+import de.srsoftware.web4rail.tags.Window;
public class TrainSpeed extends Condition {
diff --git a/src/main/java/de/srsoftware/web4rail/conditions/TrainWasInBlock.java b/src/main/java/de/srsoftware/web4rail/conditions/TrainWasInBlock.java
index a861ee7..6bf5032 100644
--- a/src/main/java/de/srsoftware/web4rail/conditions/TrainWasInBlock.java
+++ b/src/main/java/de/srsoftware/web4rail/conditions/TrainWasInBlock.java
@@ -7,10 +7,10 @@ import org.json.JSONObject;
import de.srsoftware.tools.Tag;
import de.srsoftware.web4rail.BaseClass;
-import de.srsoftware.web4rail.Window;
import de.srsoftware.web4rail.moving.Train;
import de.srsoftware.web4rail.tags.Fieldset;
import de.srsoftware.web4rail.tags.Input;
+import de.srsoftware.web4rail.tags.Window;
import de.srsoftware.web4rail.tiles.Block;
public class TrainWasInBlock extends Condition {
diff --git a/src/main/java/de/srsoftware/web4rail/moving/Car.java b/src/main/java/de/srsoftware/web4rail/moving/Car.java
index 0129259..9949bec 100644
--- a/src/main/java/de/srsoftware/web4rail/moving/Car.java
+++ b/src/main/java/de/srsoftware/web4rail/moving/Car.java
@@ -23,7 +23,6 @@ import de.srsoftware.tools.Tag;
import de.srsoftware.web4rail.Application;
import de.srsoftware.web4rail.BaseClass;
import de.srsoftware.web4rail.Plan;
-import de.srsoftware.web4rail.Window;
import de.srsoftware.web4rail.tags.Button;
import de.srsoftware.web4rail.tags.Fieldset;
import de.srsoftware.web4rail.tags.Form;
@@ -31,7 +30,11 @@ import de.srsoftware.web4rail.tags.Input;
import de.srsoftware.web4rail.tags.Label;
import de.srsoftware.web4rail.tags.Select;
import de.srsoftware.web4rail.tags.Table;
+import de.srsoftware.web4rail.tags.Window;
+/**
+ * @author Stephan Richter, SRSoftware 2020-2021 *
+ */
public class Car extends BaseClass implements Comparable{
protected static final Logger LOG = LoggerFactory.getLogger(Car.class);
@@ -73,6 +76,8 @@ public class Car extends BaseClass implements Comparable{
car.clone();
} else new Car(params.get(Car.NAME)).parent(plan);
return Car.manager(params);
+ case ACTION_DECOUPLE:
+ return car.train().decoupleAfter(car);
case ACTION_DROP:
car.remove();
return Car.manager(params);
@@ -282,8 +287,9 @@ public class Car extends BaseClass implements Comparable{
return train;
}
- public void train(Train train) {
+ public Car train(Train train) {
this.train = train;
+ return this;
}
protected Object update(HashMap params) {
diff --git a/src/main/java/de/srsoftware/web4rail/moving/Locomotive.java b/src/main/java/de/srsoftware/web4rail/moving/Locomotive.java
index 8ac6eb0..1b8d6a1 100644
--- a/src/main/java/de/srsoftware/web4rail/moving/Locomotive.java
+++ b/src/main/java/de/srsoftware/web4rail/moving/Locomotive.java
@@ -15,7 +15,6 @@ import de.srsoftware.web4rail.Constants;
import de.srsoftware.web4rail.Device;
import de.srsoftware.web4rail.Plan;
import de.srsoftware.web4rail.Protocol;
-import de.srsoftware.web4rail.Window;
import de.srsoftware.web4rail.tags.Button;
import de.srsoftware.web4rail.tags.Fieldset;
import de.srsoftware.web4rail.tags.Form;
@@ -23,6 +22,7 @@ import de.srsoftware.web4rail.tags.Input;
import de.srsoftware.web4rail.tags.Label;
import de.srsoftware.web4rail.tags.Radio;
import de.srsoftware.web4rail.tags.Table;
+import de.srsoftware.web4rail.tags.Window;
import de.srsoftware.web4rail.tiles.Block;
public class Locomotive extends Car implements Constants,Device{
diff --git a/src/main/java/de/srsoftware/web4rail/moving/Train.java b/src/main/java/de/srsoftware/web4rail/moving/Train.java
index ff7af93..e953280 100644
--- a/src/main/java/de/srsoftware/web4rail/moving/Train.java
+++ b/src/main/java/de/srsoftware/web4rail/moving/Train.java
@@ -30,7 +30,6 @@ import de.srsoftware.web4rail.Plan;
import de.srsoftware.web4rail.Plan.Direction;
import de.srsoftware.web4rail.Range;
import de.srsoftware.web4rail.Route;
-import de.srsoftware.web4rail.Window;
import de.srsoftware.web4rail.tags.Button;
import de.srsoftware.web4rail.tags.Checkbox;
import de.srsoftware.web4rail.tags.Fieldset;
@@ -39,10 +38,14 @@ import de.srsoftware.web4rail.tags.Input;
import de.srsoftware.web4rail.tags.Label;
import de.srsoftware.web4rail.tags.Select;
import de.srsoftware.web4rail.tags.Table;
+import de.srsoftware.web4rail.tags.Window;
import de.srsoftware.web4rail.tiles.Block;
import de.srsoftware.web4rail.tiles.Contact;
import de.srsoftware.web4rail.tiles.Tile;
+/**
+ * @author Stephan Richter, SRSoftware 2020-2021 *
+ */
public class Train extends BaseClass implements Comparable {
private static final Logger LOG = LoggerFactory.getLogger(Train.class);
@@ -138,6 +141,8 @@ public class Train extends BaseClass implements Comparable {
return train.addCar(params);
case ACTION_AUTO:
return train.automatic();
+ case ACTION_CONNECT:
+ return train.connect(params);
case ACTION_DROP:
return train.dropCar(params);
case ACTION_TOGGLE_F1:
@@ -267,21 +272,27 @@ public class Train extends BaseClass implements Comparable {
private Tag carList() {
Tag locoProp = new Tag("li").content(t("Locomotives and cars")+":");
- Tag carList = new Tag("ul").clazz("carlist");
+ Table carList = new Table();
+ carList.addHead(t("Car"),t("Actions"));
+ boolean first = true;
for (Car car : this.cars) {
- Tag li = new Tag("li");
- car.link(car.name()+(car.stockId.isEmpty() ? "" : " ("+car.stockId+")")).addTo(li).content(NBSP);
- car.button(t("turn within train"),Map.of(ACTION,ACTION_TURN)).addTo(li);
- car.button("↑",Map.of(ACTION,ACTION_MOVE)).addTo(li);
- button(t("delete"),Map.of(ACTION,ACTION_DROP,CAR_ID,car.id().toString())).addTo(li);
- li.addTo(carList);
+ Tag link = car.link(car.name()+(car.stockId.isEmpty() ? "" : " ("+car.stockId+")"));
+ Tag buttons = new Tag("span");
+
+ car.button(t("turn within train"),Map.of(ACTION,ACTION_TURN)).addTo(buttons);
+ if (!first) {
+ car.button("↑",Map.of(ACTION,ACTION_MOVE)).addTo(buttons);
+ car.button(t("decouple"),Map.of(ACTION,ACTION_DECOUPLE)).addTo(buttons);
+ }
+ button(t("delete"),Map.of(ACTION,ACTION_DROP,CAR_ID,car.id().toString())).addTo(buttons);
+ carList.addRow(link,buttons);
+ first = false;
}
-
+ carList.addTo(locoProp);
List locos = BaseClass.listElements(Locomotive.class).stream().filter(loco -> isNull(loco.train())).collect(Collectors.toList());
if (!locos.isEmpty()) {
Form addLocoForm = new Form("append-loco-form");
- addLocoForm.content(t("add locomotive")+COL);
new Input(REALM, REALM_TRAIN).hideIn(addLocoForm);
new Input(ACTION, ACTION_ADD).hideIn(addLocoForm);
new Input(ID,id).hideIn(addLocoForm);
@@ -289,23 +300,35 @@ public class Train extends BaseClass implements Comparable {
for (Car loco : locos) select.addOption(loco.id(), loco+(loco.stockId.isEmpty()?"":" ("+loco.stockId+")"));
select.addTo(addLocoForm);
new Button(t("add"),addLocoForm).addTo(addLocoForm);
- addLocoForm.addTo(new Tag("li")).addTo(carList);
+ carList.addRow(t("add locomotive"),addLocoForm);
}
List cars = BaseClass.listElements(Car.class).stream().filter(car -> !(car instanceof Locomotive)).filter(loco -> isNull(loco.train())).collect(Collectors.toList());
if (!cars.isEmpty()) {
Form addCarForm = new Form("append-car-form");
- addCarForm.content(t("add car")+COL);
new Input(REALM, REALM_TRAIN).hideIn(addCarForm);
new Input(ACTION, ACTION_ADD).hideIn(addCarForm);
new Input(ID,id).hideIn(addCarForm);
Select select = new Select(CAR_ID);
for (Car car : cars) select.addOption(car.id(), car+(car.stockId.isEmpty()?"":" ("+car.stockId+")"));
- select.addTo(addCarForm);
- new Button(t("add"),addCarForm).addTo(addCarForm);
- addCarForm.addTo(new Tag("li")).addTo(carList);
+ select.addTo(addCarForm);
+ new Button(t("add"),addCarForm).addTo(addCarForm);
+ carList.addRow(t("add car"),addCarForm);
+ }
+ if (isSet(currentBlock)) {
+ Tag ul = new Tag("ul");
+ if (isSet(currentBlock.train()) && currentBlock.train() != this) currentBlock.train().link().addTo(new Tag("li")).addTo(ul);
+ for (Train tr : currentBlock.parkedTrains()) {
+ if (tr == this) continue;
+ Tag li = new Tag("li").addTo(ul);
+ tr.link().addTo(li);
+ button(t("couple"),Map.of(ACTION,ACTION_CONNECT,REALM_TRAIN,tr.id().toString())).addTo(li);
}
- return carList.addTo(locoProp);
+ carList.addRow(t("other trains in {}",currentBlock),ul);
+
+ }
+
+ return locoProp;
}
@@ -318,13 +341,23 @@ public class Train extends BaseClass implements Comparable {
return name().compareTo(o.toString());
}
+ public Window connect(HashMap params) {
+ Train other = BaseClass.get(new Id(params.get(REALM_TRAIN)));
+ if (isSet(other)) coupleWith(other, false);
+ return properties();
+ }
+
public void coupleWith(Train parkingTrain,boolean swap) {
if (isSet(direction) && isSet(parkingTrain.direction) && parkingTrain.direction != direction) parkingTrain.turn();
if (swap) {
- Vector dummy = new Vector(parkingTrain.cars);
+ Vector dummy = new Vector();
+ for (Car car : parkingTrain.cars) dummy.add(car.train(this));
dummy.addAll(cars);
cars = dummy;
- } else cars.addAll(parkingTrain.cars);
+ } else {
+ for (Car car : parkingTrain.cars) cars.add(car.train(this));
+ }
+
parkingTrain.remove();
}
@@ -344,6 +377,14 @@ public class Train extends BaseClass implements Comparable {
return currentBlock;
}
+
+ public Object decoupleAfter(Car car) {
+ for (int i=0; i {
@Override
protected Window properties(List