GUI improvements, bugfixes

This commit is contained in:
Stephan Richter
2020-12-30 00:36:12 +01:00
parent 0dda9f16e0
commit cfe1b90962
11 changed files with 86 additions and 54 deletions

View File

@@ -61,8 +61,8 @@ public abstract class Action extends BaseClass {
SetSpeed.class,
SetTurnout.class,
ShowText.class,
StopAllTrains.class,
StartStopAuto.class,
StopTrain.class,
SwitchFunction.class,
TriggerContact.class,
TurnTrain.class

View File

@@ -20,8 +20,9 @@ import de.srsoftware.web4rail.tiles.Turnout;
public class Loop extends ActionList {
private String subject = Train.class.getSimpleName();
private static final String SUBJECT = "subject";
private String object = Train.class.getSimpleName();
private static final String SUBJECT = "subject";
private static final String OBJECT = "object";
public Loop(BaseClass parent) {
super(parent);
@@ -29,9 +30,9 @@ public class Loop extends ActionList {
@Override
public boolean fire(Context context) {
if (isNull(subject)) return false;
if (isNull(object)) return false;
List<? extends BaseClass> elements = null;
switch (subject) {
switch (object) {
case "Block":
elements = BaseClass.listElements(Block.class);
break;
@@ -59,29 +60,30 @@ public class Loop extends ActionList {
@Override
public JSONObject json() {
JSONObject json = super.json();
if (isSet(subject)) json.put(SUBJECT, subject);
if (isSet(object)) json.put(OBJECT, object);
return json;
}
@Override
public Action load(JSONObject json) {
super.load(json);
if (json.has(SUBJECT)) subject = json.getString(SUBJECT);
if (json.has(SUBJECT)) object = json.getString(SUBJECT);
if (json.has(OBJECT)) object = json.getString(OBJECT);
return this;
}
@Override
protected Window properties(List<Fieldset> preForm, FormInput formInputs, List<Fieldset> postForm) {
formInputs.add(t("Select subject"),typeSelector());
formInputs.add(t("Select object"),typeSelector());
return super.properties(preForm, formInputs, postForm);
}
public String toString() {
return t("For each {} do:",subject);
return t("For each {} do:",object);
};
private Tag typeSelector() {
Select select = new Select(SUBJECT);
Select select = new Select(OBJECT);
List<String> types = List.of(Block.class,Contact.class,Route.class,Signal.class,Train.class,Turnout.class)
.stream()
.map(cls -> cls.getSimpleName())
@@ -89,7 +91,7 @@ public class Loop extends ActionList {
.collect(Collectors.toList());
for (String cls : types) {
Tag option = select.addOption(cls,t(cls));
if (cls.equals(subject)) option.attr("selected", "selected");
if (cls.equals(object)) option.attr("selected", "selected");
}
return select;
}
@@ -97,8 +99,8 @@ public class Loop extends ActionList {
@Override
protected Object update(HashMap<String, String> params) {
LOG.debug("update: {}",params);
String newSubject = params.get(SUBJECT);
if (isSet(newSubject)) subject = newSubject;
String newObject = params.get(OBJECT);
if (isSet(newObject)) object = newObject;
return super.update(params);
}

View File

@@ -1,17 +0,0 @@
package de.srsoftware.web4rail.actions;
import de.srsoftware.web4rail.BaseClass;
import de.srsoftware.web4rail.moving.Train;
public class StopAllTrains extends Action {
public StopAllTrains(BaseClass parent) {
super(parent);
}
@Override
public boolean fire(Context context) {
BaseClass.listElements(Train.class).forEach(train -> train.stopNow());
return true;
}
}

View File

@@ -0,0 +1,23 @@
package de.srsoftware.web4rail.actions;
import de.srsoftware.web4rail.BaseClass;
public class StopTrain extends Action{
public StopTrain(BaseClass parent) {
super(parent);
}
@Override
public boolean fire(Context context) {
if (isNull(context.train())) return false;
LOG.debug("{}.fire() called, context = {}",this,context);
context.train().stopNow();
return true;
}
@Override
public String toString() {
return t("Stop train immediately");
}
}