implemented splitting of trains and parking in blocks

This commit is contained in:
Stephan Richter
2021-01-15 18:15:56 +01:00
parent 22dfd0512a
commit bac9892fd0
9 changed files with 155 additions and 11 deletions

View File

@@ -64,6 +64,7 @@ public abstract class Action extends BaseClass {
SetSpeed.class,
SetTurnout.class,
ShowText.class,
SplitTrain.class,
StartStopAuto.class,
StopTrain.class,
SwitchFunction.class,

View File

@@ -0,0 +1,60 @@
package de.srsoftware.web4rail.actions;
import java.util.HashMap;
import java.util.List;
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;
public class SplitTrain extends Action {
private static final String POSITION = "position";
private int position = 1;
public SplitTrain(BaseClass parent) {
super(parent);
}
@Override
public boolean fire(Context context) {
Train train = context.train();
if (isNull(train)) return false;
return train.splitAfter(position);
}
@Override
public JSONObject json() {
JSONObject json = super.json();
json.put(POSITION, position);
return json;
}
@Override
public Action load(JSONObject json) {
if (json.has(POSITION)) position = json.getInt(POSITION);
return super.load(json);
}
@Override
public String toString() {
return t("Split train behind {} cars",position);
}
@Override
protected Window properties(List<Fieldset> preForm, FormInput formInputs, List<Fieldset> postForm) {
formInputs.add(t("Split behind"),new Input(POSITION, position).numeric().addTo(new Tag("span")).content(t("&nbsp;cars")));
return super.properties(preForm, formInputs, postForm);
}
@Override
protected Object update(HashMap<String, String> params) {
if (params.containsKey(POSITION)) position = Integer.parseInt(params.get(POSITION));
return super.update(params);
}
}