implemented Locomotive and Train management
This commit is contained in:
@@ -11,6 +11,8 @@ import de.srsoftware.tools.Tag;
|
||||
import de.srsoftware.web4rail.Connector;
|
||||
import de.srsoftware.web4rail.moving.Train;
|
||||
import de.srsoftware.web4rail.tags.Checkbox;
|
||||
import de.srsoftware.web4rail.tags.Input;
|
||||
import de.srsoftware.web4rail.tags.Label;
|
||||
|
||||
public abstract class Block extends StretchableTile{
|
||||
private static final String NAME = "name";
|
||||
@@ -58,11 +60,18 @@ public abstract class Block extends StretchableTile{
|
||||
public Tag propForm() {
|
||||
Tag form = super.propForm();
|
||||
|
||||
Tag label = new Tag("label").content(t("name:"));
|
||||
new Tag("input").attr("type", "text").attr(NAME,"name").attr("value", name).addTo(label);
|
||||
label.addTo(form);
|
||||
new Input(NAME, name).addTo(new Label(t("name:")+" ")).addTo(new Tag("p")).addTo(form);
|
||||
|
||||
new Checkbox(ALLOW_TURN,t("Turn allowed"),turnAllowed).addTo(new Tag("p")).addTo(form);
|
||||
|
||||
new Checkbox(ALLOW_TURN,t("Turn allowed"),turnAllowed).addTo(form);
|
||||
Tag select = new Tag("select").attr("name", TRAIN);
|
||||
new Tag("option").attr("value","0").content(t("unset")).addTo(select);
|
||||
for (Train train : Train.list()) {
|
||||
Tag opt = new Tag("option").attr("value", ""+train.id);
|
||||
if (this.train == train) opt.attr("selected", "selected");
|
||||
opt.content(train.toString()).addTo(select);
|
||||
}
|
||||
select.addTo(new Label(t("Trains:")+" ")).addTo(new Tag("p")).addTo(form);
|
||||
|
||||
return form;
|
||||
}
|
||||
@@ -95,15 +104,21 @@ public abstract class Block extends StretchableTile{
|
||||
return getClass().getSimpleName()+"("+name+") @ ("+x+","+y+")";
|
||||
}
|
||||
|
||||
public void train(Train train) throws IOException {
|
||||
if (train != null) train.block(this);
|
||||
super.train(train);
|
||||
public void train(Train newTrain) throws IOException {
|
||||
if (train == newTrain) return;
|
||||
if (train != null) train.block(null); // vorherigen Zug rauswerfen
|
||||
if (newTrain != null) newTrain.block(this);
|
||||
super.train(newTrain);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Tile update(HashMap<String, String> params) {
|
||||
public Tile update(HashMap<String, String> params) throws IOException {
|
||||
super.update(params);
|
||||
if (params.containsKey(NAME)) name=params.get(NAME);
|
||||
if (params.containsKey(TRAIN)) {
|
||||
long trainId = Long.parseLong(params.get(TRAIN));
|
||||
train(trainId == 0 ? null : Train.get(trainId));
|
||||
}
|
||||
turnAllowed = params.containsKey(ALLOW_TURN) && params.get(ALLOW_TURN).equals("on");
|
||||
return this;
|
||||
}
|
||||
|
||||
@@ -39,7 +39,7 @@ public abstract class StretchableTile extends Tile {
|
||||
|
||||
Tag label = new Tag("label").content(t("length:"));
|
||||
new Tag("input").attr("type", "number").attr("name","length").attr("value", length).addTo(label);
|
||||
label.addTo(form);
|
||||
label.addTo(new Tag("p")).addTo(form);
|
||||
|
||||
return form;
|
||||
}
|
||||
@@ -57,7 +57,7 @@ public abstract class StretchableTile extends Tile {
|
||||
}
|
||||
|
||||
@Override
|
||||
public Tile update(HashMap<String, String> params) {
|
||||
public Tile update(HashMap<String, String> params) throws IOException {
|
||||
super.update(params);
|
||||
for (Entry<String, String> entry : params.entrySet()) {
|
||||
switch (entry.getKey()) {
|
||||
|
||||
@@ -29,7 +29,9 @@ import de.srsoftware.web4rail.Plan.Direction;
|
||||
import de.srsoftware.web4rail.Route;
|
||||
import de.srsoftware.web4rail.Window;
|
||||
import de.srsoftware.web4rail.moving.Train;
|
||||
import de.srsoftware.web4rail.tags.Button;
|
||||
import de.srsoftware.web4rail.tags.Form;
|
||||
import de.srsoftware.web4rail.tags.Input;
|
||||
import de.srsoftware.web4rail.tags.Radio;
|
||||
|
||||
public abstract class Tile {
|
||||
@@ -177,16 +179,15 @@ public abstract class Tile {
|
||||
|
||||
public Tag propForm() {
|
||||
Form form = new Form();
|
||||
new Tag("input").attr("type", "hidden").attr("name","action").attr("value", "update").addTo(form);
|
||||
new Tag("input").attr("type", "hidden").attr("name",ID).attr("value", id()).addTo(form);
|
||||
new Input("action", "update").hideIn(form);
|
||||
new Input(ID,id()).hideIn(form);
|
||||
|
||||
List<Direction> pd = possibleDirections();
|
||||
if (!pd.isEmpty()) {
|
||||
new Tag("h4").content(t("One way:")).addTo(form);
|
||||
new Radio("oneway","none",t("No"),oneWay == null).addTo(form);
|
||||
for (Direction d:pd) {
|
||||
Radio radio = new Radio("oneway",d.toString(),t(d.toString()),d == oneWay);
|
||||
radio.addTo(form);
|
||||
new Radio("oneway",d.toString(),t(d.toString()),d == oneWay).addTo(form);
|
||||
}
|
||||
}
|
||||
return form;
|
||||
@@ -196,7 +197,7 @@ public abstract class Tile {
|
||||
Window window = new Window("tile-properties",t("Properties of {} @ ({},{})",getClass().getSimpleName(),x,y));
|
||||
Tag form = propForm();
|
||||
if (form!=null && form.children().size()>3) {
|
||||
new Tag("button").attr("type", "submit").content(t("save")).addTo(form);
|
||||
new Button(t("save")).addTo(form);
|
||||
form.addTo(window);
|
||||
} else {
|
||||
window.content(t("This tile ({}) has no properties",getClass().getSimpleName()));
|
||||
@@ -335,7 +336,7 @@ public abstract class Tile {
|
||||
plan.place(this);
|
||||
}
|
||||
|
||||
public Tile update(HashMap<String, String> params) {
|
||||
public Tile update(HashMap<String, String> params) throws IOException {
|
||||
LOG.debug("{}.update({})",getClass().getSimpleName(),params);
|
||||
String oneWayDir = params.get("oneway");
|
||||
if (oneWayDir != null) {
|
||||
|
||||
Reference in New Issue
Block a user