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

@@ -4,7 +4,7 @@
<modelVersion>4.0.0</modelVersion>
<groupId>de.srsoftware</groupId>
<artifactId>web4rail</artifactId>
<version>1.2.65</version>
<version>1.2.66</version>
<name>Web4Rail</name>
<packaging>jar</packaging>
<description>Java Model Railway Control</description>

View File

@@ -16,7 +16,9 @@ add new car : neuen Waggon anlegen
Add new custom field : neues benutzerdefiniertes Feld hinzufügen
add new locomotive : neue Lok anlegen
add new train : neuen Zug anlegen
Add tag "{}" to train : Markierung "{}" zu Zug hinzufügen
Add tile : Kachel hinzufügen
AddRemoveTag : Markierung hinzufügen/entfernen
Address : Adresse
Address\: : Adresse:
analyze : analysieren
@@ -188,6 +190,7 @@ ReactivateContact : Kontakt reaktivieren
Relay : Relais
Relays and Turnouts : Relais und Weichen
Relay/Turnout : Relais/Weiche
Remove tag "{}" from train : Markierung "{}" von Zug entfernen
Report Issue : Problem melden
reverse : wenden
Reversed {}. : {} umgedreht.

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;
}