Browse Source

bugfixes, added new Condition AutopilotActive, extended StopAutopilot action to StartStopAutopilot, implemented ActionList export

lookup-tables
Stephan Richter 5 years ago
parent
commit
8901973808
  1. 2
      pom.xml
  2. 8
      resources/translations/Application.de.translation
  3. 4
      src/main/java/de/srsoftware/web4rail/actions/Action.java
  4. 33
      src/main/java/de/srsoftware/web4rail/actions/ActionList.java
  5. 55
      src/main/java/de/srsoftware/web4rail/actions/StartStopAuto.java
  6. 17
      src/main/java/de/srsoftware/web4rail/actions/StopAuto.java
  7. 15
      src/main/java/de/srsoftware/web4rail/conditions/AutopilotActive.java
  8. 3
      src/main/java/de/srsoftware/web4rail/conditions/Condition.java
  9. 2
      src/main/java/de/srsoftware/web4rail/conditions/PushPullTrain.java
  10. 1
      src/main/java/de/srsoftware/web4rail/conditions/TrainHasTag.java
  11. 1
      src/main/java/de/srsoftware/web4rail/conditions/TrainLength.java

2
pom.xml

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

8
resources/translations/Application.de.translation

@ -20,6 +20,9 @@ Analyze : analysieren
and : und and : und
Apply : Übernehmen Apply : Übernehmen
Auto pilot : Autopilot Auto pilot : Autopilot
AutopilotActive : Autopilot aktiv
autopilot active for train : Autopilot für Zug aktiviert
autopilot inactive for train : Autopilot nicht aktiv für Zug
Availability : Verfügbarkeit Availability : Verfügbarkeit
Back : zurück Back : zurück
Basic properties : Grundlegende Eigenschaften Basic properties : Grundlegende Eigenschaften
@ -80,6 +83,7 @@ EAST : Osten
Editable properties : veränderliche Eigenschaften Editable properties : veränderliche Eigenschaften
editable train properties : veränderliche Zug-Eigenschaften editable train properties : veränderliche Zug-Eigenschaften
Emergency : Notfall Emergency : Notfall
export : exportieren
Faster (10 {}) : 10 {} schneller Faster (10 {}) : 10 {} schneller
Firing {} : starte {} Firing {} : starte {}
FinishRoute : Route abschließen FinishRoute : Route abschließen
@ -183,10 +187,12 @@ Speed unit : Geschwindigkeits-Einheit
Start actions : Start-Aktionen Start actions : Start-Aktionen
Stock ID : Inventarnummer Stock ID : Inventarnummer
Stop settings : Halte-Einstellungen Stop settings : Halte-Einstellungen
Start autopilot : Autopilot starten
Started {} : {} gestartet Started {} : {} gestartet
State : Status State : Status
StopAllTrains : Alle Züge stoppen StopAllTrains : Alle Züge stoppen
StopAuto : Automatikmodus abschalten StartStopAuto : Automatikmodus an/abschalten
Stop autopilot : Autopilot abschalten
{} stopping at next block. : {} hält im nächsten Block. {} stopping at next block. : {} hält im nächsten Block.
Stopsettings : Halte-Einstellungen Stopsettings : Halte-Einstellungen
Straight port\: : Port für gerade Straight port\: : Port für gerade

4
src/main/java/de/srsoftware/web4rail/actions/Action.java

@ -81,7 +81,7 @@ public abstract class Action extends BaseClass {
SetTurnout.class, SetTurnout.class,
ShowText.class, ShowText.class,
StopAllTrains.class, StopAllTrains.class,
StopAuto.class, StartStopAuto.class,
TriggerContact.class, TriggerContact.class,
TurnTrain.class TurnTrain.class
); );
@ -97,7 +97,7 @@ public abstract class Action extends BaseClass {
ActionList actionList = (ActionList) parent; ActionList actionList = (ActionList) parent;
return actionList.moveUp(this); return actionList.moveUp(this);
} }
LOG.error("Action.drop() called on Action ({}) whose parent ({}) is not an ActionList!",this,parent); LOG.error("Action.moveUp() called on Action ({}) whose parent ({}) is not an ActionList!",this,parent);
return false; return false;
} }

33
src/main/java/de/srsoftware/web4rail/actions/ActionList.java

@ -116,16 +116,13 @@ public class ActionList extends Action implements Iterable<Action>{
public Tag list() { public Tag list() {
Tag span = new Tag("span"); Tag span = new Tag("span");
button(t("add action"), Map.of(ACTION, ACTION_ADD)).addTo(span); button(t("add action"), Map.of(ACTION, ACTION_ADD)).addTo(span);
button(t("export"), Map.of(ACTION, ACTION_SAVE)).addTo(span);
if (!isEmpty()) { if (!isEmpty()) {
Tag list = new Tag("ol"); Tag list = new Tag("ol");
boolean first = true;
for (Action action : actions) { for (Action action : actions) {
Tag item = action.link("span",action).addTo(new Tag("li")).content(NBSP); Tag item = action.link("span",action).addTo(new Tag("li")).content(NBSP);
action.button("-", Map.of(ACTION,ACTION_DROP)).addTo(item); action.button("-", Map.of(ACTION,ACTION_DROP)).addTo(item);
if (first) { action.button("↑", Map.of(ACTION,ACTION_MOVE)).addTo(item);
first = false;
} else action.button("↑", Map.of(ACTION,ACTION_MOVE)).addTo(item);
if (action instanceof ActionList) ((ActionList) action).list().addTo(item); if (action instanceof ActionList) ((ActionList) action).list().addTo(item);
item.addTo(list); item.addTo(list);
} }
@ -151,10 +148,25 @@ public class ActionList extends Action implements Iterable<Action>{
} }
public boolean moveUp(Action action) { public boolean moveUp(Action action) {
if (isNull(action)) return false;
if (actions.firstElement() == action && parent() instanceof ActionList) {
ActionList parentList = (ActionList) parent();
for (int i=0; i<parentList.actions.size(); i++) {
if (parentList.actions.get(i) == this) {
actions.remove(0);
parentList.actions.insertElementAt(action, i);
action.parent(parentList);
return true;
}
}
}
for (int i=1; i<actions.size(); i++) { for (int i=1; i<actions.size(); i++) {
if (actions.elementAt(i) == action) { if (actions.elementAt(i) == action) {
actions.remove(i); actions.remove(i);
actions.insertElementAt(action, i-1); Action aboveAction = actions.get(i-1);
if (aboveAction instanceof ActionList) {
((ActionList)aboveAction).add(action);
} else actions.insertElementAt(action, i-1);
return true; return true;
} }
} }
@ -180,9 +192,16 @@ public class ActionList extends Action implements Iterable<Action>{
action.remove(); action.remove();
return context.properties(); return context.properties();
case ACTION_MOVE: case ACTION_MOVE:
return action.moveUp() ? action.context().properties() : t("No action with id {} found!",actionId); if (isNull(action)) return t("No action with id {} found!",actionId);
if (action.moveUp()) return action.context().properties();
Window result = action.context().properties();
return new Tag("fieldset").content(t("Was not able to move \"{}\" up!",action)).addTo(result);
case ACTION_PROPS: case ACTION_PROPS:
return action.properties(); return action.properties();
case ACTION_SAVE:
Window win = new Window("action-export", t("Export of {}",action));
new Tag("textarea").content(action.json().toString()).addTo(win);
return win;
case ACTION_UPDATE: case ACTION_UPDATE:
return action.update(params); return action.update(params);
} }

55
src/main/java/de/srsoftware/web4rail/actions/StartStopAuto.java

@ -0,0 +1,55 @@
package de.srsoftware.web4rail.actions;
import java.util.HashMap;
import java.util.List;
import org.json.JSONObject;
import de.srsoftware.web4rail.BaseClass;
import de.srsoftware.web4rail.Window;
import de.srsoftware.web4rail.tags.Checkbox;
import de.srsoftware.web4rail.tags.Fieldset;
public class StartStopAuto extends Action {
private static final String INVERTED = "inverted";
public boolean inverted = false;
public StartStopAuto(BaseClass parent) {
super(parent);
}
@Override
public boolean fire(Context context) {
if (isNull(context.train())) return false;
context.train().quitAutopilot();
return true;
}
public JSONObject json() {
JSONObject json = new JSONObject().put(TYPE, getClass().getSimpleName());
if (inverted) json.put(INVERTED, true);
return json;
}
public StartStopAuto load(JSONObject json) {
inverted = json.has(INVERTED) && json.getBoolean(INVERTED);
return this;
}
@Override
protected Window properties(List<Fieldset> preForm, FormInput formInputs, List<Fieldset> postForm) {
formInputs.add(t("inverted"),new Checkbox(INVERTED, t("inverted"), inverted));
return super.properties(preForm, formInputs, postForm);
}
@Override
public String toString() {
return inverted ? t("Start autopilot") : t("Stop autopilot");
}
protected Object update(HashMap<String, String> params) {
inverted = "on".equals(params.get(INVERTED));
return super.update(params);
}
}

17
src/main/java/de/srsoftware/web4rail/actions/StopAuto.java

@ -1,17 +0,0 @@
package de.srsoftware.web4rail.actions;
import de.srsoftware.web4rail.BaseClass;
public class StopAuto extends Action {
public StopAuto(BaseClass parent) {
super(parent);
}
@Override
public boolean fire(Context context) {
if (isNull(context.train())) return false;
context.train().quitAutopilot();
return true;
}
}

15
src/main/java/de/srsoftware/web4rail/conditions/AutopilotActive.java

@ -0,0 +1,15 @@
package de.srsoftware.web4rail.conditions;
public class AutopilotActive extends Condition {
@Override
public boolean fulfilledBy(Context context) {
if (isNull(context.train())) return false;
return context.train().usesAutopilot() != inverted;
}
@Override
public String toString() {
return t(inverted ? "autopilot inactive for train":"autopilot active for train") ;
}
}

3
src/main/java/de/srsoftware/web4rail/conditions/Condition.java

@ -114,6 +114,7 @@ public abstract class Condition extends BaseClass {
private static List<Class<? extends Condition>> list() { private static List<Class<? extends Condition>> list() {
return List.of( return List.of(
AutopilotActive.class,
BlockFree.class, BlockFree.class,
OrCondition.class, OrCondition.class,
PushPullTrain.class, PushPullTrain.class,
@ -157,6 +158,6 @@ public abstract class Condition extends BaseClass {
protected Object update(HashMap<String, String> params) { protected Object update(HashMap<String, String> params) {
inverted = "on".equals(params.get(INVERTED)); inverted = "on".equals(params.get(INVERTED));
return this; return super.update(params);
} }
} }

2
src/main/java/de/srsoftware/web4rail/conditions/PushPullTrain.java

@ -1,7 +1,5 @@
package de.srsoftware.web4rail.conditions; package de.srsoftware.web4rail.conditions;
import de.srsoftware.web4rail.BaseClass;
public class PushPullTrain extends Condition { public class PushPullTrain extends Condition {
@Override @Override

1
src/main/java/de/srsoftware/web4rail/conditions/TrainHasTag.java

@ -5,7 +5,6 @@ import java.util.List;
import org.json.JSONObject; import org.json.JSONObject;
import de.srsoftware.web4rail.BaseClass;
import de.srsoftware.web4rail.Window; import de.srsoftware.web4rail.Window;
import de.srsoftware.web4rail.tags.Fieldset; import de.srsoftware.web4rail.tags.Fieldset;
import de.srsoftware.web4rail.tags.Input; import de.srsoftware.web4rail.tags.Input;

1
src/main/java/de/srsoftware/web4rail/conditions/TrainLength.java

@ -6,7 +6,6 @@ import java.util.List;
import org.json.JSONObject; import org.json.JSONObject;
import de.srsoftware.tools.Tag; import de.srsoftware.tools.Tag;
import de.srsoftware.web4rail.BaseClass;
import de.srsoftware.web4rail.Window; import de.srsoftware.web4rail.Window;
import de.srsoftware.web4rail.tags.Fieldset; import de.srsoftware.web4rail.tags.Fieldset;
import de.srsoftware.web4rail.tags.Input; import de.srsoftware.web4rail.tags.Input;

Loading…
Cancel
Save