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
    preForm, FormInput formInputs, List
    postForm) { - Fieldset otherTrainProps = new Fieldset(t("other train properties")); - - Tag propList = new Tag("ul").clazz("proplist"); - - carList().addTo(propList); + Tag propList = new Tag("ul").clazz("proplist"); if (isSet(currentBlock)) currentBlock.button(currentBlock.toString()).addTo(new Tag("li").content(t("Current location")+COL)).addTo(propList); Tag directionLi = null; @@ -651,8 +688,8 @@ public class Train extends BaseClass implements Comparable { for (Tile tile : trace) new Tag("li").content(tile.toString()).addTo(ul); ul.addTo(li).addTo(propList); } - - propList.addTo(otherTrainProps); + carList().addTo(propList); + formInputs.add(t("Name"), new Input(NAME,name())); formInputs.add(t("Shunting"),new Checkbox(SHUNTING, t("train is shunting"), shunting)); @@ -660,7 +697,7 @@ public class Train extends BaseClass implements Comparable { formInputs.add(t("Tags"), new Input(TAGS,String.join(", ", tags))); if (this.hasLoco()) preForm.add(Locomotive.cockpit(this)); - postForm.add(otherTrainProps); + postForm.add(propList.addTo(new Fieldset(t("other train properties")).attr("id", "train-props"))); postForm.add(brakeTimes()); postForm.add(blockHistory()); diff --git a/src/main/java/de/srsoftware/web4rail/Window.java b/src/main/java/de/srsoftware/web4rail/tags/Window.java similarity index 84% rename from src/main/java/de/srsoftware/web4rail/Window.java rename to src/main/java/de/srsoftware/web4rail/tags/Window.java index cf9a2e0..4b37772 100644 --- a/src/main/java/de/srsoftware/web4rail/Window.java +++ b/src/main/java/de/srsoftware/web4rail/tags/Window.java @@ -1,7 +1,10 @@ -package de.srsoftware.web4rail; +package de.srsoftware.web4rail.tags; import de.srsoftware.tools.Tag; +/** + * @author Stephan Richter, SRSoftware 2020-2021 * + */ public class Window extends Tag{ private static final long serialVersionUID = 9035075889261889575L; diff --git a/src/main/java/de/srsoftware/web4rail/tiles/Block.java b/src/main/java/de/srsoftware/web4rail/tiles/Block.java index 9084bf0..e20326d 100644 --- a/src/main/java/de/srsoftware/web4rail/tiles/Block.java +++ b/src/main/java/de/srsoftware/web4rail/tiles/Block.java @@ -18,7 +18,6 @@ import de.srsoftware.web4rail.BaseClass; import de.srsoftware.web4rail.Connector; import de.srsoftware.web4rail.Plan.Direction; import de.srsoftware.web4rail.Range; -import de.srsoftware.web4rail.Window; import de.srsoftware.web4rail.moving.Train; import de.srsoftware.web4rail.tags.Button; import de.srsoftware.web4rail.tags.Checkbox; @@ -26,6 +25,7 @@ import de.srsoftware.web4rail.tags.Fieldset; import de.srsoftware.web4rail.tags.Form; import de.srsoftware.web4rail.tags.Input; import de.srsoftware.web4rail.tags.Select; +import de.srsoftware.web4rail.tags.Window; /** * Base class for all kinds of Blocks @@ -298,7 +298,7 @@ public abstract class Block extends StretchableTile{ return super.load(json); } - private Fieldset parkedTrains() { + private Fieldset parkedTrainList() { Fieldset fieldset = new Fieldset(t("parked trains")); Tag list = new Tag("ul"); for (Train t : parkedTrains) { @@ -308,7 +308,11 @@ public abstract class Block extends StretchableTile{ return fieldset; } - public Train parkedTrains(boolean last) { + public List parkedTrains(){ + return parkedTrains; + } + + public Train parkedTrain(boolean last) { if (parkedTrains.isEmpty()) return null; return last ? parkedTrains.lastElement() : parkedTrains.firstElement(); } @@ -321,7 +325,7 @@ public abstract class Block extends StretchableTile{ formInputs.add(t("Train"),Train.selector(train, null)); postForm.add(contactForm()); postForm.add(waitTimeForm()); - if (!parkedTrains.isEmpty()) postForm.add(parkedTrains()); + if (!parkedTrains.isEmpty()) postForm.add(parkedTrainList()); return super.properties(preForm, formInputs, postForm); } @@ -346,7 +350,8 @@ public abstract class Block extends StretchableTile{ public void removeChild(BaseClass child) { super.removeChild(child); internalContacts.remove(child); - parkedTrains.remove(child); + if (parkedTrains.remove(child)) plan.place(this); + if (train == child) setTrain(null); } public void removeContact(BlockContact blockContact) { diff --git a/src/main/java/de/srsoftware/web4rail/tiles/Bridge.java b/src/main/java/de/srsoftware/web4rail/tiles/Bridge.java index ab234b4..99897f5 100644 --- a/src/main/java/de/srsoftware/web4rail/tiles/Bridge.java +++ b/src/main/java/de/srsoftware/web4rail/tiles/Bridge.java @@ -11,9 +11,9 @@ import de.srsoftware.web4rail.Application; import de.srsoftware.web4rail.BaseClass; import de.srsoftware.web4rail.Connector; 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.Window; public abstract class Bridge extends Tile { private static final String COUNTERPART = "counterpart"; diff --git a/src/main/java/de/srsoftware/web4rail/tiles/Contact.java b/src/main/java/de/srsoftware/web4rail/tiles/Contact.java index e626e7b..6da69f4 100644 --- a/src/main/java/de/srsoftware/web4rail/tiles/Contact.java +++ b/src/main/java/de/srsoftware/web4rail/tiles/Contact.java @@ -15,12 +15,12 @@ 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.actions.Action; import de.srsoftware.web4rail.actions.ActionList; import de.srsoftware.web4rail.tags.Fieldset; import de.srsoftware.web4rail.tags.Input; import de.srsoftware.web4rail.tags.Select; +import de.srsoftware.web4rail.tags.Window; public class Contact extends Tile{ diff --git a/src/main/java/de/srsoftware/web4rail/tiles/Decoupler.java b/src/main/java/de/srsoftware/web4rail/tiles/Decoupler.java index abfa40f..d8d1dd7 100644 --- a/src/main/java/de/srsoftware/web4rail/tiles/Decoupler.java +++ b/src/main/java/de/srsoftware/web4rail/tiles/Decoupler.java @@ -15,11 +15,11 @@ import de.srsoftware.web4rail.Command; import de.srsoftware.web4rail.Command.Reply; import de.srsoftware.web4rail.Device; import de.srsoftware.web4rail.Protocol; -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.Select; +import de.srsoftware.web4rail.tags.Window; public abstract class Decoupler extends Tile implements Device{ diff --git a/src/main/java/de/srsoftware/web4rail/tiles/Relay.java b/src/main/java/de/srsoftware/web4rail/tiles/Relay.java index fde47c0..1a126ae 100644 --- a/src/main/java/de/srsoftware/web4rail/tiles/Relay.java +++ b/src/main/java/de/srsoftware/web4rail/tiles/Relay.java @@ -16,11 +16,11 @@ import de.srsoftware.web4rail.Command; import de.srsoftware.web4rail.Command.Reply; import de.srsoftware.web4rail.Device; import de.srsoftware.web4rail.Protocol; -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.Select; +import de.srsoftware.web4rail.tags.Window; public class Relay extends Tile implements Device{ public static final String STATE = "state"; diff --git a/src/main/java/de/srsoftware/web4rail/tiles/Signal.java b/src/main/java/de/srsoftware/web4rail/tiles/Signal.java index 10d82f7..e5707d2 100644 --- a/src/main/java/de/srsoftware/web4rail/tiles/Signal.java +++ b/src/main/java/de/srsoftware/web4rail/tiles/Signal.java @@ -16,13 +16,13 @@ import de.srsoftware.tools.Tag; import de.srsoftware.web4rail.Command; import de.srsoftware.web4rail.Plan.Direction; import de.srsoftware.web4rail.Protocol; -import de.srsoftware.web4rail.Window; import de.srsoftware.web4rail.tags.Button; import de.srsoftware.web4rail.tags.Checkbox; import de.srsoftware.web4rail.tags.Fieldset; import de.srsoftware.web4rail.tags.Form; import de.srsoftware.web4rail.tags.Input; import de.srsoftware.web4rail.tags.Table; +import de.srsoftware.web4rail.tags.Window; public abstract class Signal extends Tile { public static final String STATE = "state"; diff --git a/src/main/java/de/srsoftware/web4rail/tiles/StretchableTile.java b/src/main/java/de/srsoftware/web4rail/tiles/StretchableTile.java index 1da7fd8..eceb967 100644 --- a/src/main/java/de/srsoftware/web4rail/tiles/StretchableTile.java +++ b/src/main/java/de/srsoftware/web4rail/tiles/StretchableTile.java @@ -8,9 +8,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.Input; +import de.srsoftware.web4rail.tags.Window; public abstract class StretchableTile extends TileWithShadow { private static final String STRETCH_LENGTH = "stretch"; diff --git a/src/main/java/de/srsoftware/web4rail/tiles/TextDisplay.java b/src/main/java/de/srsoftware/web4rail/tiles/TextDisplay.java index 236c5d9..02610f3 100644 --- a/src/main/java/de/srsoftware/web4rail/tiles/TextDisplay.java +++ b/src/main/java/de/srsoftware/web4rail/tiles/TextDisplay.java @@ -12,10 +12,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.Select; +import de.srsoftware.web4rail.tags.Window; public class TextDisplay extends StretchableTile { private static final String TEXT = "text"; diff --git a/src/main/java/de/srsoftware/web4rail/tiles/Tile.java b/src/main/java/de/srsoftware/web4rail/tiles/Tile.java index 15588be..9370ec9 100644 --- a/src/main/java/de/srsoftware/web4rail/tiles/Tile.java +++ b/src/main/java/de/srsoftware/web4rail/tiles/Tile.java @@ -27,12 +27,12 @@ import de.srsoftware.web4rail.Plan; import de.srsoftware.web4rail.Plan.Direction; import de.srsoftware.web4rail.actions.AlterDirection; 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.Input; import de.srsoftware.web4rail.tags.Radio; +import de.srsoftware.web4rail.tags.Window; /** * Base class for all tiles diff --git a/src/main/java/de/srsoftware/web4rail/tiles/Turnout.java b/src/main/java/de/srsoftware/web4rail/tiles/Turnout.java index 4d9edcf..34a24c7 100644 --- a/src/main/java/de/srsoftware/web4rail/tiles/Turnout.java +++ b/src/main/java/de/srsoftware/web4rail/tiles/Turnout.java @@ -15,11 +15,11 @@ import de.srsoftware.web4rail.Command; import de.srsoftware.web4rail.Command.Reply; import de.srsoftware.web4rail.Device; import de.srsoftware.web4rail.Protocol; -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.Select; +import de.srsoftware.web4rail.tags.Window; /** * Base class for Turnouts diff --git a/src/main/java/de/srsoftware/web4rail/tiles/TurnoutL.java b/src/main/java/de/srsoftware/web4rail/tiles/TurnoutL.java index 8c42d99..ebd6b19 100644 --- a/src/main/java/de/srsoftware/web4rail/tiles/TurnoutL.java +++ b/src/main/java/de/srsoftware/web4rail/tiles/TurnoutL.java @@ -4,9 +4,9 @@ import java.io.IOException; import java.util.HashMap; import java.util.List; -import de.srsoftware.web4rail.Window; import de.srsoftware.web4rail.tags.Fieldset; import de.srsoftware.web4rail.tags.Input; +import de.srsoftware.web4rail.tags.Window; public abstract class TurnoutL extends Turnout { diff --git a/src/main/java/de/srsoftware/web4rail/tiles/TurnoutR.java b/src/main/java/de/srsoftware/web4rail/tiles/TurnoutR.java index 6e19010..c961eec 100644 --- a/src/main/java/de/srsoftware/web4rail/tiles/TurnoutR.java +++ b/src/main/java/de/srsoftware/web4rail/tiles/TurnoutR.java @@ -4,9 +4,9 @@ import java.io.IOException; import java.util.HashMap; import java.util.List; -import de.srsoftware.web4rail.Window; import de.srsoftware.web4rail.tags.Fieldset; import de.srsoftware.web4rail.tags.Input; +import de.srsoftware.web4rail.tags.Window; public abstract class TurnoutR extends Turnout {