diff --git a/pom.xml b/pom.xml
index 8098245..b84a3da 100644
--- a/pom.xml
+++ b/pom.xml
@@ -4,7 +4,7 @@
4.0.0
de.srsoftware
web4rail
- 1.2.28
+ 1.2.29
Web4Rail
jar
Java Model Railway Control
diff --git a/resources/translations/Application.de.translation b/resources/translations/Application.de.translation
index 87e9311..b12d436 100644
--- a/resources/translations/Application.de.translation
+++ b/resources/translations/Application.de.translation
@@ -49,7 +49,7 @@ click here to setup contact : Hier klicken, um Kontakt auszuwählen
click here to setup relay : Hier klicken, um Relais einzurichten
click here to setup turnout : Hier klicken, um Weiche einzurichten
Click on a name to edit the entry. : Klicke auf einen Namen, um einen Eintrag zu bearbeiten.
-Command to send to control unit\: : Kommando, welches zur Zentrale gesendet werden soll:
+Command to send : Kommando, welches gesendet werden soll
ConditionalAction : bedingte Aktion
Conditions : Bedingungen
Condition type\: : Bedingungs-Typ:
@@ -134,6 +134,7 @@ On : An
One of : eine von
One way : Richtung
Online Documentation : Online-Dokumentation
+Operating System : Betriebssystem
or : oder
OrCondition : Oder-Bedingung
other train properties : andere Zug-Eigenschaften
@@ -155,6 +156,7 @@ Right port\: : Port für rechts
Routes using this tile : Fahrstraßen, die diesen Abschnitt verwenden
Route will only be available, if all conditions are fulfilled. : Route ist nur verfügbar, wenn alle Bedingungen erfüllt sind.
Save : speichern
+SavePlan : Plan speichern
Select block : Block auswählen
Select contact\: : Kotakt auswählen:
Select display : Anzeige auswählen
@@ -163,7 +165,8 @@ Select relay\: : Relais auswählen:
Select train : Zug auswählen
Select turnout : Weiche wählen
SendCommand : Kommando senden
-Send command "{}" to control unit : Kommando „{}“ an Zentrale senden
+Send command "{}" to {} : Kommando „{}“ an {} senden
+Send command to : Kommando senden an
Set {} as context : {} als Kontext setzen
SetContextTrain : Zug für Folgeaktionen festlegen
SetDisplayText : Anzeige-Text setzen
@@ -184,6 +187,8 @@ Simulating movement of {}... : Simuliere Fahrt von {}...
Slower (10 {}) : 10 {} langsamer
SOUTH : Süden
Speed unit : Geschwindigkeits-Einheit
+SRCP : SRCP-Dienst
+SRCP daemon : SRCP-Dienst
Start actions : Start-Aktionen
Stock ID : Inventarnummer
Stop settings : Halte-Einstellungen
@@ -199,6 +204,7 @@ Straight port\: : Port für gerade
STRAIGHT : gerade
Switch power off : Strom ausschalten
Switch power on : Strom anschalten
+SYSTEM : Betriebssystem
Tag : Markierung
Tags : Markierungen
Text to display on clients\: : Text, welcher auf den Clients angezeigt werden soll:
diff --git a/src/main/java/de/srsoftware/web4rail/Plan.java b/src/main/java/de/srsoftware/web4rail/Plan.java
index 7eea4ff..84b36a1 100644
--- a/src/main/java/de/srsoftware/web4rail/Plan.java
+++ b/src/main/java/de/srsoftware/web4rail/Plan.java
@@ -639,6 +639,10 @@ public class Plan extends BaseClass{
super.removeChild(child);
}
+ public void save() throws IOException {
+ plan.stream(plan.saveTo("default"));
+ }
+
/**
* saves the plan to a set of files, along with its cars, tiles, trains, routes and control unit settings
* @param name
diff --git a/src/main/java/de/srsoftware/web4rail/actions/Action.java b/src/main/java/de/srsoftware/web4rail/actions/Action.java
index 3c57f49..981b102 100644
--- a/src/main/java/de/srsoftware/web4rail/actions/Action.java
+++ b/src/main/java/de/srsoftware/web4rail/actions/Action.java
@@ -49,6 +49,7 @@ public abstract class Action extends BaseClass {
DetermineTrainInBlock.class,
FinishRoute.class,
PreserveRoute.class,
+ SavePlan.class,
SendCommand.class,
SetContextTrain.class,
SetDisplayText.class,
diff --git a/src/main/java/de/srsoftware/web4rail/actions/SavePlan.java b/src/main/java/de/srsoftware/web4rail/actions/SavePlan.java
new file mode 100644
index 0000000..c865ce0
--- /dev/null
+++ b/src/main/java/de/srsoftware/web4rail/actions/SavePlan.java
@@ -0,0 +1,22 @@
+package de.srsoftware.web4rail.actions;
+
+import java.io.IOException;
+
+import de.srsoftware.web4rail.BaseClass;
+
+public class SavePlan extends Action{
+
+ public SavePlan(BaseClass parent) {
+ super(parent);
+ }
+
+ @Override
+ public boolean fire(Context context) {
+ try {
+ plan.save();
+ } catch (IOException e) {
+ return false;
+ }
+ return true;
+ }
+}
diff --git a/src/main/java/de/srsoftware/web4rail/actions/SendCommand.java b/src/main/java/de/srsoftware/web4rail/actions/SendCommand.java
index 260b927..9944db7 100644
--- a/src/main/java/de/srsoftware/web4rail/actions/SendCommand.java
+++ b/src/main/java/de/srsoftware/web4rail/actions/SendCommand.java
@@ -1,68 +1,96 @@
package de.srsoftware.web4rail.actions;
+import java.io.IOException;
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.Command;
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 SendCommand extends Action{
+ enum Target{
+ SYSTEM, SRCP
+ }
+
public SendCommand(BaseClass parent) {
super(parent);
}
public static final String COMMAND = "command";
+ private static final String TARGET = "target";
private String command = "SET 1 POWER OFF";
+ private Target target = Target.SRCP;
@Override
public boolean fire(Context context) {
- plan.queue(new Command(command) {
+ switch (target) {
+ case SRCP:
+ plan.queue(new Command(command) {
- @Override
- public void onResponse(Reply reply) {
- super.onResponse(reply);
- plan.stream(reply.message());
- }
- });
+ @Override
+ public void onResponse(Reply reply) {
+ super.onResponse(reply);
+ plan.stream(reply.message());
+ }
+ });
- return true;
+ return true;
+ case SYSTEM:
+ try {
+ Runtime.getRuntime().exec(command);
+ return true;
+ } catch (IOException e) {
+ return false;
+ }
+ }
+ return false;
}
@Override
public JSONObject json() {
JSONObject json = super.json();
json.put(COMMAND, command);
+ json.put(TARGET, target.toString());
return json;
}
@Override
public Action load(JSONObject json) {
super.load(json);
- command = json.getString(COMMAND);
+ if (json.has(COMMAND)) command = json.getString(COMMAND);
+ if (json.has(TARGET)) target = Target.valueOf(json.getString(TARGET));
return this;
}
@Override
protected Window properties(List