implemented manual coupling/decoupling of trains

This commit is contained in:
Stephan Richter
2021-01-17 18:28:11 +01:00
parent d454f18ecc
commit 8f52c79798
67 changed files with 167 additions and 91 deletions

View File

@@ -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) {

View File

@@ -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";

View File

@@ -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{

View File

@@ -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{

View File

@@ -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";

View File

@@ -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";

View File

@@ -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";

View File

@@ -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";

View File

@@ -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

View File

@@ -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

View File

@@ -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 {

View File

@@ -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 {