diff --git a/pom.xml b/pom.xml
index ef59396..74c2d3e 100644
--- a/pom.xml
+++ b/pom.xml
@@ -4,7 +4,7 @@
4.0.0
de.srsoftware
web4rail
- 1.2.36
+ 1.2.37
Web4Rail
jar
Java Model Railway Control
diff --git a/resources/translations/Application.de.translation b/resources/translations/Application.de.translation
index d6b3046..0090a61 100644
--- a/resources/translations/Application.de.translation
+++ b/resources/translations/Application.de.translation
@@ -79,6 +79,7 @@ Determine, which train is in {} : Bestimmen, welcher Zug sich in {} befindet
Direction : Richtung
Direction\: heading {} : Richtung: nach {}
disabled : deaktiviert
+disable {} : {} deaktivieren
Display "{}" on {}. : „{}“ auf {} anzeigen.
Drop : Verwerfen
Dropped destination of {}. : Ziel von {} verworfen.
@@ -86,7 +87,10 @@ Dropped destination of {}. : Ziel von {} verworfen.
EAST : Osten
Editable properties : veränderliche Eigenschaften
editable train properties : veränderliche Zug-Eigenschaften
+Edit json : JSON bearbeiten
+Effect : Effekt
Emergency : Notfall
+enable {} : {} aktivieren
export : exportieren
Faster (10 {}) : 10 {} schneller
Firing {} : starte {}
@@ -95,6 +99,7 @@ forward : vorwärts
Found {} routes. : {} Routen gefunden.
FreeStartBlock : Start-Block freigeben
Fullscreen : Vollbild
+Function : Funktion
Hardware settings : Hardware-Einstellungen
Height : Höhe
Help : Hilfe
@@ -210,6 +215,7 @@ Stop autopilot : Autopilot abschalten
Stopsettings : Halte-Einstellungen
Straight port\: : Port für gerade
STRAIGHT : gerade
+SwitchFunction : Funktion schalten
Switch power off : Strom ausschalten
Switch power on : Strom anschalten
SYSTEM : Betriebssystem
@@ -219,6 +225,7 @@ Text to show on display\: : Text, welcher in der Anzeige dargestellt werden soll
Tile(s) : Kachel(n)
Tile(s) moved. : Kachel(n) verschoben.
Toggle : umschalten
+toggle {} : {} umschalten
Toggle power : Stom umschalten
Train : Zug
Train\: : Zug:
diff --git a/src/main/java/de/srsoftware/web4rail/actions/Action.java b/src/main/java/de/srsoftware/web4rail/actions/Action.java
index ecf19fa..4707da9 100644
--- a/src/main/java/de/srsoftware/web4rail/actions/Action.java
+++ b/src/main/java/de/srsoftware/web4rail/actions/Action.java
@@ -62,6 +62,7 @@ public abstract class Action extends BaseClass {
ShowText.class,
StopAllTrains.class,
StartStopAuto.class,
+ SwitchFunction.class,
TriggerContact.class,
TurnTrain.class
);
diff --git a/src/main/java/de/srsoftware/web4rail/actions/SwitchFunction.java b/src/main/java/de/srsoftware/web4rail/actions/SwitchFunction.java
new file mode 100644
index 0000000..b5d103f
--- /dev/null
+++ b/src/main/java/de/srsoftware/web4rail/actions/SwitchFunction.java
@@ -0,0 +1,111 @@
+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.Radio;
+import de.srsoftware.web4rail.tags.Select;
+
+public class SwitchFunction extends Action {
+
+ private static final String FUNCTION = "function";
+ private static final String EFFECT = "effect";
+ private static final int TOGGLE = -1;
+ private static final int ON = 1;
+ private static final int OFF = 0;
+
+ private int function = 1,effect=-1;
+
+ public SwitchFunction(BaseClass parent) {
+ super(parent);
+ }
+
+ @Override
+ public boolean fire(Context context) {
+ if (isNull(context) || isNull(context.train())) return false;
+ switch (effect) {
+ case TOGGLE:
+ context.train().toggleFunction(function);
+ return true;
+ case ON:
+ context.train().setFunction(function, true);
+ return true;
+ case OFF:
+ context.train().setFunction(function, false);
+ return true;
+ }
+
+ return false;
+ }
+
+ @Override
+ public JSONObject json() {
+ JSONObject json = super.json();
+ json.put(EFFECT, effect);
+ json.put(FUNCTION, function);
+ return json;
+ }
+
+ @Override
+ public Action load(JSONObject json) {
+ super.load(json);
+ if (json.has(EFFECT)) effect = json.getInt(EFFECT);
+ if (json.has(FUNCTION)) function = json.getInt(FUNCTION);
+ return this;
+ }
+
+ @Override
+ protected Window properties(List