implemented manual coupling/decoupling of trains
This commit is contained in:
4
pom.xml
4
pom.xml
@@ -4,7 +4,7 @@
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
<groupId>de.srsoftware</groupId>
|
||||
<artifactId>web4rail</artifactId>
|
||||
<version>1.3.28</version>
|
||||
<version>1.3.29</version>
|
||||
<name>Web4Rail</name>
|
||||
<packaging>jar</packaging>
|
||||
<description>Java Model Railway Control</description>
|
||||
@@ -38,7 +38,7 @@
|
||||
<dependency>
|
||||
<groupId>de.srsoftware</groupId>
|
||||
<artifactId>tools</artifactId>
|
||||
<version>1.1.11</version>
|
||||
<version>1.1.12</version>
|
||||
<scope>compile</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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;
|
||||
|
||||
/**
|
||||
|
||||
@@ -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();
|
||||
|
||||
@@ -1,5 +1,8 @@
|
||||
package de.srsoftware.web4rail;
|
||||
|
||||
/**
|
||||
* @author Stephan Richter, SRSoftware 2020…2021
|
||||
*/
|
||||
public class Connector {
|
||||
|
||||
public Plan.Direction from;
|
||||
|
||||
@@ -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";
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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";
|
||||
|
||||
@@ -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 {
|
||||
|
||||
@@ -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);
|
||||
|
||||
|
||||
@@ -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;
|
||||
* <li>Routes</li>
|
||||
* <li>...</li>
|
||||
* </ul>
|
||||
* @author Stephan Richter, SRSoftware
|
||||
* @author Stephan Richter, SRSoftware, 2020-2021
|
||||
*
|
||||
*/
|
||||
public class Plan extends BaseClass{
|
||||
|
||||
@@ -1,5 +1,8 @@
|
||||
package de.srsoftware.web4rail;
|
||||
|
||||
/**
|
||||
* @author Stephan Richter, SRSoftware 2020-2021
|
||||
*/
|
||||
public enum Protocol{
|
||||
DCC14(14),
|
||||
DCC27(27),
|
||||
|
||||
@@ -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";
|
||||
|
||||
@@ -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 {
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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<Action>{
|
||||
static final Logger LOG = LoggerFactory.getLogger(ActionList.class);
|
||||
|
||||
@@ -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;
|
||||
|
||||
|
||||
@@ -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{
|
||||
|
||||
|
||||
@@ -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{
|
||||
|
||||
|
||||
@@ -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 {
|
||||
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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 {
|
||||
|
||||
|
||||
@@ -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;
|
||||
|
||||
|
||||
@@ -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 {
|
||||
|
||||
@@ -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;
|
||||
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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{
|
||||
|
||||
|
||||
@@ -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 {
|
||||
|
||||
|
||||
@@ -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;
|
||||
|
||||
|
||||
@@ -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{
|
||||
|
||||
|
||||
@@ -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 {
|
||||
|
||||
@@ -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;
|
||||
|
||||
|
||||
@@ -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{
|
||||
|
||||
|
||||
@@ -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;
|
||||
|
||||
|
||||
@@ -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 {
|
||||
|
||||
|
||||
@@ -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 {
|
||||
|
||||
|
||||
@@ -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 {
|
||||
|
||||
|
||||
@@ -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 {
|
||||
|
||||
|
||||
@@ -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 {
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
|
||||
|
||||
@@ -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 {
|
||||
|
||||
|
||||
@@ -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 {
|
||||
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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<Condition>{
|
||||
|
||||
|
||||
@@ -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;
|
||||
|
||||
|
||||
@@ -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 {
|
||||
|
||||
|
||||
@@ -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 {
|
||||
|
||||
|
||||
@@ -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 {
|
||||
|
||||
|
||||
@@ -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 {
|
||||
|
||||
|
||||
@@ -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 {
|
||||
|
||||
@@ -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<Car>{
|
||||
protected static final Logger LOG = LoggerFactory.getLogger(Car.class);
|
||||
|
||||
@@ -73,6 +76,8 @@ public class Car extends BaseClass implements Comparable<Car>{
|
||||
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<Car>{
|
||||
return train;
|
||||
}
|
||||
|
||||
public void train(Train train) {
|
||||
public Car train(Train train) {
|
||||
this.train = train;
|
||||
return this;
|
||||
}
|
||||
|
||||
protected Object update(HashMap<String, String> params) {
|
||||
|
||||
@@ -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{
|
||||
|
||||
@@ -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<Train> {
|
||||
private static final Logger LOG = LoggerFactory.getLogger(Train.class);
|
||||
|
||||
@@ -138,6 +141,8 @@ public class Train extends BaseClass implements Comparable<Train> {
|
||||
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<Train> {
|
||||
|
||||
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<Locomotive> 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<Train> {
|
||||
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<Car> 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<Train> {
|
||||
return name().compareTo(o.toString());
|
||||
}
|
||||
|
||||
public Window connect(HashMap<String, String> 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<Car> dummy = new Vector<Car>(parkingTrain.cars);
|
||||
Vector<Car> dummy = new Vector<Car>();
|
||||
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<Train> {
|
||||
return currentBlock;
|
||||
}
|
||||
|
||||
|
||||
public Object decoupleAfter(Car car) {
|
||||
for (int i=0; i<cars.size();i++) {
|
||||
if (car == cars.get(i) && splitAfter(i)) break;
|
||||
}
|
||||
return properties();
|
||||
}
|
||||
|
||||
public Block destination() {
|
||||
if (isNull(destination)) {
|
||||
String destId = null;
|
||||
@@ -612,11 +653,7 @@ public class Train extends BaseClass implements Comparable<Train> {
|
||||
|
||||
@Override
|
||||
protected Window properties(List<Fieldset> preForm, FormInput formInputs, List<Fieldset> 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<Train> {
|
||||
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<Train> {
|
||||
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());
|
||||
|
||||
|
||||
@@ -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;
|
||||
@@ -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<Train> 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) {
|
||||
|
||||
@@ -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";
|
||||
|
||||
@@ -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{
|
||||
|
||||
|
||||
@@ -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{
|
||||
|
||||
|
||||
@@ -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";
|
||||
|
||||
@@ -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";
|
||||
|
||||
@@ -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";
|
||||
|
||||
@@ -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";
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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 {
|
||||
|
||||
|
||||
@@ -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 {
|
||||
|
||||
|
||||
Reference in New Issue
Block a user