added new action AddRemoveTag

This commit is contained in:
Stephan Richter
2020-12-30 21:05:30 +01:00
parent cfe1b90962
commit 3e3dfccdea
6 changed files with 81 additions and 5 deletions

View File

@@ -41,9 +41,10 @@ public abstract class Action extends BaseClass {
public static List<Class<? extends Action>> classes() {
return List.of(
AddRemoveTag.class,
BrakeCancel.class,
BrakeStart.class,
BrakeStop.class,
BrakeCancel.class,
ConditionalAction.class,
DelayedAction.class,
DetermineTrainInBlock.class,
@@ -85,7 +86,7 @@ public abstract class Action extends BaseClass {
return null;
}
public boolean corresponsTo(Action other) {
public boolean correspondsTo(Action other) {
return this.toString().equals(other.toString());
}

View File

@@ -135,7 +135,7 @@ public class ActionList extends Action implements Iterable<Action>{
public void merge(ActionList oldActions) {
for (Action oldAction : oldActions.actions) {
for (Action newAction : actions) {
if (oldAction.corresponsTo(newAction)) {
if (oldAction.correspondsTo(newAction)) {
actions.remove(newAction);
LOG.debug("new action {} replaced by {}",newAction,oldAction);
break;

View File

@@ -0,0 +1,72 @@
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.tags.Fieldset;
import de.srsoftware.web4rail.tags.Input;
import de.srsoftware.web4rail.tags.Radio;
public class AddRemoveTag extends Action{
private static final String TAG = "tag";
public AddRemoveTag(BaseClass parent) {
super(parent);
}
private String tag = "test";
private boolean add = true;
@Override
public boolean fire(Context context) {
if (isNull(context.train())) return false;
if (add) {
context.train().tags().add(tag);
} else {
context.train().tags().remove(tag);
}
return true;
}
@Override
public JSONObject json() {
JSONObject json = super.json();
json.put(TAG, tag);
return json;
}
@Override
public Action load(JSONObject json) {
super.load(json);
tag = json.getString(TAG);
return this;
}
@Override
protected Window properties(List<Fieldset> preForm, FormInput formInputs, List<Fieldset> postForm) {
formInputs.add(t("Tag"),new Input(TAG, tag));
Tag div = new Tag("div");
new Radio(TYPE, ACTION_ADD, t("add"), add).addTo(div);
new Radio(TYPE, ACTION_DROP, t("delete"), !add).addTo(div);
formInputs.add(t("Action"),div);
return super.properties(preForm, formInputs, postForm);
}
@Override
public String toString() {
return add ? t("Add tag \"{}\" to train",tag) : t("Remove tag \"{}\" from train",tag);
}
@Override
protected Object update(HashMap<String, String> params) {
tag = params.get(TAG);
add = ACTION_ADD.equals(params.get(TYPE));
return super.update(params);
}
}

View File

@@ -20,7 +20,7 @@ public class SetSpeed extends Action{
private int speed = 0;
@Override
public boolean corresponsTo(Action other) {
public boolean correspondsTo(Action other) {
return other instanceof SetSpeed;
}