updating tiles and conditions
This commit is contained in:
2
pom.xml
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.1</version>
|
<version>1.2.2</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>
|
||||||
|
|||||||
@@ -55,7 +55,8 @@ Create action : Aktion erzeugen
|
|||||||
Current location\: : Aktueller Ort:
|
Current location\: : Aktueller Ort:
|
||||||
Current location : Aufenthaltsort
|
Current location : Aufenthaltsort
|
||||||
Current location\: {} : Aufenthaltsort: {}
|
Current location\: {} : Aufenthaltsort: {}
|
||||||
Current velocity\: {} {} : Aktuelle Geschwindigkeit: {} {}
|
Current velocity\: {} {} : Aktuelle Geschwindigkeit: {} {}
|
||||||
|
Decoder address : Decoder-Adresse
|
||||||
Delay : Verzögerung
|
Delay : Verzögerung
|
||||||
DelayedAction : verzögerte Aktion
|
DelayedAction : verzögerte Aktion
|
||||||
delete : entfernen
|
delete : entfernen
|
||||||
@@ -174,6 +175,7 @@ SOUTH : Süden
|
|||||||
Speed unit : Geschwindigkeits-Einheit
|
Speed unit : Geschwindigkeits-Einheit
|
||||||
Start actions : Start-Aktionen
|
Start actions : Start-Aktionen
|
||||||
Stock ID : Inventarnummer
|
Stock ID : Inventarnummer
|
||||||
|
Stop settings : Halte-Einstellungen
|
||||||
Started {} : {} gestartet
|
Started {} : {} gestartet
|
||||||
State : Status
|
State : Status
|
||||||
StopAllTrains : Alle Züge stoppen
|
StopAllTrains : Alle Züge stoppen
|
||||||
@@ -222,6 +224,7 @@ Unknown action\: {} : Unbekannte Aktion: {}
|
|||||||
unset : ungesetzt
|
unset : ungesetzt
|
||||||
Wait {} ms, then\: : {} ms warten, dann:
|
Wait {} ms, then\: : {} ms warten, dann:
|
||||||
{} waiting {} secs... : {} wartet {} Sekunden...
|
{} waiting {} secs... : {} wartet {} Sekunden...
|
||||||
|
Wait times : Wartezeiten
|
||||||
Was not able to assign {} to {}! : Konnte {} nicht an {} zuweisen!
|
Was not able to assign {} to {}! : Konnte {} nicht an {} zuweisen!
|
||||||
Was not able to lock {} : Konnte {} nicht reservieren
|
Was not able to lock {} : Konnte {} nicht reservieren
|
||||||
Was not able to set all signals! : Konnte nicht alle Signale stellen!
|
Was not able to set all signals! : Konnte nicht alle Signale stellen!
|
||||||
|
|||||||
@@ -1,11 +1,12 @@
|
|||||||
package de.srsoftware.web4rail.conditions;
|
package de.srsoftware.web4rail.conditions;
|
||||||
|
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
import org.json.JSONObject;
|
import org.json.JSONObject;
|
||||||
|
|
||||||
import de.srsoftware.tools.Tag;
|
import de.srsoftware.web4rail.Window;
|
||||||
import de.srsoftware.web4rail.tags.Label;
|
import de.srsoftware.web4rail.tags.Fieldset;
|
||||||
import de.srsoftware.web4rail.tiles.Block;
|
import de.srsoftware.web4rail.tiles.Block;
|
||||||
|
|
||||||
public class BlockFree extends Condition {
|
public class BlockFree extends Condition {
|
||||||
@@ -28,12 +29,11 @@ public class BlockFree extends Condition {
|
|||||||
block(Block.get(new Id(json.getString(BLOCK))));
|
block(Block.get(new Id(json.getString(BLOCK))));
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Tag propForm(HashMap<String, String> params) {
|
protected Window properties(List<Fieldset> preForm, FormInput formInputs, List<Fieldset> postForm) {
|
||||||
Tag form = super.propForm(params);
|
formInputs.add(t("Select block"), Block.selector(block, null));
|
||||||
Block.selector(block, null).addTo(new Label(t("Select block:")+NBSP)).addTo(form);
|
return super.properties(preForm, formInputs, postForm);
|
||||||
return form;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
@@ -18,10 +18,8 @@ import de.srsoftware.web4rail.Plan;
|
|||||||
import de.srsoftware.web4rail.Route;
|
import de.srsoftware.web4rail.Route;
|
||||||
import de.srsoftware.web4rail.Window;
|
import de.srsoftware.web4rail.Window;
|
||||||
import de.srsoftware.web4rail.actions.ConditionalAction;
|
import de.srsoftware.web4rail.actions.ConditionalAction;
|
||||||
import de.srsoftware.web4rail.tags.Button;
|
|
||||||
import de.srsoftware.web4rail.tags.Checkbox;
|
import de.srsoftware.web4rail.tags.Checkbox;
|
||||||
import de.srsoftware.web4rail.tags.Form;
|
import de.srsoftware.web4rail.tags.Fieldset;
|
||||||
import de.srsoftware.web4rail.tags.Input;
|
|
||||||
import de.srsoftware.web4rail.tags.Label;
|
import de.srsoftware.web4rail.tags.Label;
|
||||||
import de.srsoftware.web4rail.tags.Select;
|
import de.srsoftware.web4rail.tags.Select;
|
||||||
|
|
||||||
@@ -54,7 +52,7 @@ public abstract class Condition extends BaseClass {
|
|||||||
|
|
||||||
switch (action) {
|
switch (action) {
|
||||||
case ACTION_PROPS:
|
case ACTION_PROPS:
|
||||||
return condition.properties(params);
|
return condition.properties();
|
||||||
case ACTION_UPDATE:
|
case ACTION_UPDATE:
|
||||||
condition.update(params);
|
condition.update(params);
|
||||||
return plan.showContext(params);
|
return plan.showContext(params);
|
||||||
@@ -157,23 +155,11 @@ public abstract class Condition extends BaseClass {
|
|||||||
inverted = json.has(INVERTED) && json.getBoolean(INVERTED);
|
inverted = json.has(INVERTED) && json.getBoolean(INVERTED);
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
public Tag propForm(HashMap<String, String> params) {
|
@Override
|
||||||
Form form = new Form("condition-props-"+id);
|
protected Window properties(List<Fieldset> preForm, FormInput formInputs, List<Fieldset> postForm) {
|
||||||
new Input(REALM,REALM_CONDITION).hideIn(form);
|
formInputs.add(t("inverted"),new Checkbox(INVERTED, t("inverted"), inverted));
|
||||||
new Input(ACTION,ACTION_UPDATE).hideIn(form);
|
return super.properties(preForm, formInputs, postForm);
|
||||||
new Input(ID,id).hideIn(form);
|
|
||||||
String context = params.get(CONTEXT);
|
|
||||||
if (isSet(context)) new Input(CONTEXT,context).hideIn(form);
|
|
||||||
return form;
|
|
||||||
}
|
|
||||||
|
|
||||||
protected Window properties(HashMap<String, String> params) {
|
|
||||||
Window win = new Window("condition-props", t("Properties of {}",getClass().getSimpleName()));
|
|
||||||
Tag form = propForm(params);
|
|
||||||
new Checkbox(INVERTED, t("inverted"), inverted).addTo(form);
|
|
||||||
new Button(t("Apply"),"return submitForm('condition-props-"+id+"');").addTo(form).addTo(win);
|
|
||||||
return win;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public static Tag selector() {
|
public static Tag selector() {
|
||||||
|
|||||||
@@ -1,11 +1,12 @@
|
|||||||
package de.srsoftware.web4rail.conditions;
|
package de.srsoftware.web4rail.conditions;
|
||||||
|
|
||||||
import java.util.HashMap;
|
import java.util.List;
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
import org.json.JSONObject;
|
import org.json.JSONObject;
|
||||||
|
|
||||||
import de.srsoftware.web4rail.Window;
|
import de.srsoftware.web4rail.Window;
|
||||||
|
import de.srsoftware.web4rail.tags.Fieldset;
|
||||||
|
|
||||||
public class OrCondition extends Condition{
|
public class OrCondition extends Condition{
|
||||||
|
|
||||||
@@ -33,13 +34,11 @@ public class OrCondition extends Condition{
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected Window properties(HashMap<String, String> params) {
|
protected Window properties(List<Fieldset> preForm, FormInput formInputs, List<Fieldset> postForm) {
|
||||||
Window win = super.properties(params);
|
// add conditions
|
||||||
|
return super.properties(preForm, formInputs, postForm);
|
||||||
win.children().insertElementAt(conditions.tag(REALM_CONDITION+":"+id()),2);
|
|
||||||
return win;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String toString() {
|
public String toString() {
|
||||||
return conditions.isEmpty() ? t("Click here to select conditions") : String.join(" "+t("OR")+" ", conditions.stream().map(Object::toString).collect(Collectors.toList()));
|
return conditions.isEmpty() ? t("Click here to select conditions") : String.join(" "+t("OR")+" ", conditions.stream().map(Object::toString).collect(Collectors.toList()));
|
||||||
|
|||||||
@@ -1,12 +1,13 @@
|
|||||||
package de.srsoftware.web4rail.conditions;
|
package de.srsoftware.web4rail.conditions;
|
||||||
|
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
import org.json.JSONObject;
|
import org.json.JSONObject;
|
||||||
|
|
||||||
import de.srsoftware.tools.Tag;
|
import de.srsoftware.web4rail.Window;
|
||||||
|
import de.srsoftware.web4rail.tags.Fieldset;
|
||||||
import de.srsoftware.web4rail.tags.Input;
|
import de.srsoftware.web4rail.tags.Input;
|
||||||
import de.srsoftware.web4rail.tags.Label;
|
|
||||||
|
|
||||||
public class TrainHasTag extends Condition {
|
public class TrainHasTag extends Condition {
|
||||||
|
|
||||||
@@ -31,10 +32,11 @@ public class TrainHasTag extends Condition {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Tag propForm(HashMap<String, String> params) {
|
protected Window properties(List<Fieldset> preForm, FormInput formInputs, List<Fieldset> postForm) {
|
||||||
return new Input(TAG, tag == null ? "" : tag).addTo(new Label(t("Tag:")+NBSP)).addTo(super.propForm(params));
|
formInputs.add(t("Tag"),new Input(TAG, tag == null ? "" : tag));
|
||||||
|
return super.properties(preForm, formInputs, postForm);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String toString() {
|
public String toString() {
|
||||||
if (tag == null) return t("[Click to setup tag]");
|
if (tag == null) return t("[Click to setup tag]");
|
||||||
|
|||||||
@@ -1,13 +1,14 @@
|
|||||||
package de.srsoftware.web4rail.conditions;
|
package de.srsoftware.web4rail.conditions;
|
||||||
|
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
|
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.Window;
|
import de.srsoftware.web4rail.Window;
|
||||||
|
import de.srsoftware.web4rail.tags.Fieldset;
|
||||||
import de.srsoftware.web4rail.tags.Input;
|
import de.srsoftware.web4rail.tags.Input;
|
||||||
import de.srsoftware.web4rail.tags.Label;
|
|
||||||
|
|
||||||
public class TrainLength extends Condition {
|
public class TrainLength extends Condition {
|
||||||
|
|
||||||
@@ -30,10 +31,11 @@ public class TrainLength extends Condition {
|
|||||||
if (json.has(MAX_LENGTH)) maxLength = json.getInt(MAX_LENGTH);
|
if (json.has(MAX_LENGTH)) maxLength = json.getInt(MAX_LENGTH);
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Tag propForm(HashMap<String, String> params) {
|
protected Window properties(List<Fieldset> preForm, FormInput formInputs, List<Fieldset> postForm) {
|
||||||
return new Input(MAX_LENGTH, maxLength).numeric().addTo(new Label(t("Maximum train length:")+NBSP)).addTo(super.propForm(params));
|
formInputs.add(t("Maximum train length"),new Input(MAX_LENGTH, maxLength).numeric());
|
||||||
|
return super.properties(preForm, formInputs, postForm);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -48,7 +50,7 @@ public class TrainLength extends Condition {
|
|||||||
if (ml < 1) throw new NumberFormatException(t("length must be larger than zero!"));
|
if (ml < 1) throw new NumberFormatException(t("length must be larger than zero!"));
|
||||||
maxLength = ml;
|
maxLength = ml;
|
||||||
} catch (NumberFormatException nfe) {
|
} catch (NumberFormatException nfe) {
|
||||||
Window win = properties(params);
|
Window win = properties();
|
||||||
win.children().insertElementAt(new Tag("div").content(nfe.getMessage()),1);
|
win.children().insertElementAt(new Tag("div").content(nfe.getMessage()),1);
|
||||||
return win;
|
return win;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,12 +1,13 @@
|
|||||||
package de.srsoftware.web4rail.conditions;
|
package de.srsoftware.web4rail.conditions;
|
||||||
|
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
import org.json.JSONObject;
|
import org.json.JSONObject;
|
||||||
|
|
||||||
import de.srsoftware.tools.Tag;
|
import de.srsoftware.web4rail.Window;
|
||||||
import de.srsoftware.web4rail.moving.Train;
|
import de.srsoftware.web4rail.moving.Train;
|
||||||
import de.srsoftware.web4rail.tags.Label;
|
import de.srsoftware.web4rail.tags.Fieldset;
|
||||||
|
|
||||||
public class TrainSelect extends Condition {
|
public class TrainSelect extends Condition {
|
||||||
|
|
||||||
@@ -30,12 +31,11 @@ public class TrainSelect extends Condition {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Tag propForm(HashMap<String, String> params) {
|
protected Window properties(List<Fieldset> preForm, FormInput formInputs, List<Fieldset> postForm) {
|
||||||
Tag form = super.propForm(params);
|
formInputs.add(t("Select train"),Train.selector(train, null));
|
||||||
Train.selector(train, null).addTo(new Label(t("Select train:")+NBSP)).addTo(form);
|
return super.properties(preForm, formInputs, postForm);
|
||||||
return form;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String toString() {
|
public String toString() {
|
||||||
if (train == null) return t("[Click here to select train!]");
|
if (train == null) return t("[Click here to select train!]");
|
||||||
|
|||||||
@@ -19,9 +19,9 @@ import de.srsoftware.web4rail.Window;
|
|||||||
import de.srsoftware.web4rail.moving.Train;
|
import de.srsoftware.web4rail.moving.Train;
|
||||||
import de.srsoftware.web4rail.tags.Button;
|
import de.srsoftware.web4rail.tags.Button;
|
||||||
import de.srsoftware.web4rail.tags.Checkbox;
|
import de.srsoftware.web4rail.tags.Checkbox;
|
||||||
|
import de.srsoftware.web4rail.tags.Fieldset;
|
||||||
import de.srsoftware.web4rail.tags.Form;
|
import de.srsoftware.web4rail.tags.Form;
|
||||||
import de.srsoftware.web4rail.tags.Input;
|
import de.srsoftware.web4rail.tags.Input;
|
||||||
import de.srsoftware.web4rail.tags.Label;
|
|
||||||
import de.srsoftware.web4rail.tags.Select;
|
import de.srsoftware.web4rail.tags.Select;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -212,89 +212,15 @@ public abstract class Block extends StretchableTile implements Comparable<Block>
|
|||||||
return super.load(json);
|
return super.load(json);
|
||||||
}
|
}
|
||||||
|
|
||||||
public Form propForm(String id) {
|
@Override
|
||||||
Form form = new Form("test");
|
protected Window properties(List<Fieldset> preForm, FormInput formInputs, List<Fieldset> postForm) {
|
||||||
new Tag("h4").content(t("Block properties")).addTo(form);
|
formInputs.add(t("Name"),new Input(NAME, name));
|
||||||
|
formInputs.add("",new Checkbox(ALLOW_TURN,t("Turn allowed"),turnAllowed));
|
||||||
new Input(NAME, name).addTo(new Label(t("name:")+NBSP)).addTo(new Tag("p")).addTo(form);
|
formInputs.add(t("Train"),Train.selector(train, null));
|
||||||
|
postForm.add(waitTimeForm());
|
||||||
new Checkbox(ALLOW_TURN,t("Turn allowed"),turnAllowed).addTo(new Tag("p")).addTo(form);
|
return super.properties(preForm, formInputs, postForm);
|
||||||
|
|
||||||
Select select = Train.selector(train, null);
|
|
||||||
select.addTo(new Label(t("Train:")+NBSP)).addTo(new Tag("p")).addTo(form);
|
|
||||||
|
|
||||||
return form;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public Window propMenu() {
|
|
||||||
Window win = new Window("test", "Replace Block.propmenu by Block.properties!");
|
|
||||||
Form form = new Form("train-wait-form");
|
|
||||||
new Tag("h4").content(t("Stop settings")).addTo(win);
|
|
||||||
new Input(REALM,REALM_PLAN).hideIn(form);
|
|
||||||
new Input(ID,id()).hideIn(form);
|
|
||||||
new Input(ACTION,ACTION_TIMES).hideIn(form);
|
|
||||||
|
|
||||||
new Tag("div").content(t("Minimum and maximum times (in Miliseconds) trains with the respective tag have to wait in this block.")).addTo(form);
|
|
||||||
|
|
||||||
Direction dA = directionA();
|
|
||||||
Direction dB = directionB();
|
|
||||||
|
|
||||||
Tag table = new Tag("table");
|
|
||||||
Tag row = new Tag("tr");
|
|
||||||
new Tag("td").content(t("Direction")).addTo(row);
|
|
||||||
new Tag("th").content(t("{}bound",dA)).attr("colspan", 2).addTo(row);
|
|
||||||
new Tag("th").content(t("{}bound",dB)).attr("colspan", 2).addTo(row);
|
|
||||||
new Tag("td").content("").addTo(row).addTo(table);
|
|
||||||
|
|
||||||
row = new Tag("tr");
|
|
||||||
new Tag("th").content(t("Tag")).addTo(row);
|
|
||||||
new Tag("th").content(t("min")).addTo(row);
|
|
||||||
new Tag("th").content(t("max")).addTo(row);
|
|
||||||
new Tag("th").content(t("min")).addTo(row);
|
|
||||||
new Tag("th").content(t("max")).addTo(row);
|
|
||||||
new Tag("th").content(t("Actions")).addTo(row).addTo(table);
|
|
||||||
|
|
||||||
int count = 0;
|
|
||||||
for (WaitTime wt : waitTimes) {
|
|
||||||
count++;
|
|
||||||
row = new Tag("tr");
|
|
||||||
new Tag("td").content(wt.tag).addTo(row);
|
|
||||||
new Input("min."+wt.tag+"."+dA,wt.get(dA).min).numeric().addTo(new Tag("td")).addTo(row);
|
|
||||||
new Input("max."+wt.tag+"."+dA,wt.get(dA).max).numeric().addTo(new Tag("td")).addTo(row);
|
|
||||||
new Input("min."+wt.tag+"."+dB,wt.get(dB).min).numeric().addTo(new Tag("td")).addTo(row);
|
|
||||||
new Input("max."+wt.tag+"."+dB,wt.get(dB).max).numeric().addTo(new Tag("td")).addTo(row);
|
|
||||||
Tag actions = new Tag("td");
|
|
||||||
Map<String, String> props = Map.of(REALM,REALM_PLAN,ID,id().toString(),ACTION,ACTION_TIMES);
|
|
||||||
switch (count) {
|
|
||||||
case 1:
|
|
||||||
actions.content(""); break;
|
|
||||||
case 2:
|
|
||||||
new Button("-",merged(props,Map.of(ACTION_DROP,wt.tag))).addTo(actions);
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
new Button("↑",merged(props,Map.of(RAISE,wt.tag))).addTo(actions);
|
|
||||||
new Button("-",merged(props,Map.of(ACTION_DROP,wt.tag))).addTo(actions);
|
|
||||||
}
|
|
||||||
actions.addTo(row).addTo(table);
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
WaitTime defaultWT = getWaitTime(NO_TAG);
|
|
||||||
|
|
||||||
row = new Tag("tr");
|
|
||||||
new Input(NEW_TAG,"").attr("placeholder", t("new tag")).addTo(new Tag("td")).addTo(row);
|
|
||||||
new Input("min."+NEW_TAG+"."+dA,defaultWT.get(dA).min).numeric().addTo(new Tag("td")).addTo(row);
|
|
||||||
new Input("max."+NEW_TAG+"."+dA,defaultWT.get(dA).max).numeric().addTo(new Tag("td")).addTo(row);
|
|
||||||
new Input("min."+NEW_TAG+"."+dB,defaultWT.get(dB).min).numeric().addTo(new Tag("td")).addTo(row);
|
|
||||||
new Input("max."+NEW_TAG+"."+dB,defaultWT.get(dB).max).numeric().addTo(new Tag("td")).addTo(row).addTo(table);
|
|
||||||
|
|
||||||
table.addTo(form);
|
|
||||||
|
|
||||||
new Button(t("Apply"),form).addTo(form).addTo(win);
|
|
||||||
|
|
||||||
return win;
|
|
||||||
}
|
|
||||||
|
|
||||||
public Tile raise(String tag) {
|
public Tile raise(String tag) {
|
||||||
for (int i=1; i<waitTimes.size(); i++) {
|
for (int i=1; i<waitTimes.size(); i++) {
|
||||||
WaitTime wt = waitTimes.get(i);
|
WaitTime wt = waitTimes.get(i);
|
||||||
@@ -399,4 +325,74 @@ public abstract class Block extends StretchableTile implements Comparable<Block>
|
|||||||
|
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public Fieldset waitTimeForm() {
|
||||||
|
Fieldset win = new Fieldset("Wait times");
|
||||||
|
Form form = new Form("train-wait-form");
|
||||||
|
new Tag("h4").content(t("Stop settings")).addTo(win);
|
||||||
|
new Input(REALM,REALM_PLAN).hideIn(form);
|
||||||
|
new Input(ID,id()).hideIn(form);
|
||||||
|
new Input(ACTION,ACTION_TIMES).hideIn(form);
|
||||||
|
|
||||||
|
new Tag("div").content(t("Minimum and maximum times (in Miliseconds) trains with the respective tag have to wait in this block.")).addTo(form);
|
||||||
|
|
||||||
|
Direction dA = directionA();
|
||||||
|
Direction dB = directionB();
|
||||||
|
|
||||||
|
Tag table = new Tag("table");
|
||||||
|
Tag row = new Tag("tr");
|
||||||
|
new Tag("td").content(t("Direction")).addTo(row);
|
||||||
|
new Tag("th").content(t("{}bound",dA)).attr("colspan", 2).addTo(row);
|
||||||
|
new Tag("th").content(t("{}bound",dB)).attr("colspan", 2).addTo(row);
|
||||||
|
new Tag("td").content("").addTo(row).addTo(table);
|
||||||
|
|
||||||
|
row = new Tag("tr");
|
||||||
|
new Tag("th").content(t("Tag")).addTo(row);
|
||||||
|
new Tag("th").content(t("min")).addTo(row);
|
||||||
|
new Tag("th").content(t("max")).addTo(row);
|
||||||
|
new Tag("th").content(t("min")).addTo(row);
|
||||||
|
new Tag("th").content(t("max")).addTo(row);
|
||||||
|
new Tag("th").content(t("Actions")).addTo(row).addTo(table);
|
||||||
|
|
||||||
|
int count = 0;
|
||||||
|
for (WaitTime wt : waitTimes) {
|
||||||
|
count++;
|
||||||
|
row = new Tag("tr");
|
||||||
|
new Tag("td").content(wt.tag).addTo(row);
|
||||||
|
new Input("min."+wt.tag+"."+dA,wt.get(dA).min).numeric().addTo(new Tag("td")).addTo(row);
|
||||||
|
new Input("max."+wt.tag+"."+dA,wt.get(dA).max).numeric().addTo(new Tag("td")).addTo(row);
|
||||||
|
new Input("min."+wt.tag+"."+dB,wt.get(dB).min).numeric().addTo(new Tag("td")).addTo(row);
|
||||||
|
new Input("max."+wt.tag+"."+dB,wt.get(dB).max).numeric().addTo(new Tag("td")).addTo(row);
|
||||||
|
Tag actions = new Tag("td");
|
||||||
|
Map<String, String> props = Map.of(REALM,REALM_PLAN,ID,id().toString(),ACTION,ACTION_TIMES);
|
||||||
|
switch (count) {
|
||||||
|
case 1:
|
||||||
|
actions.content(""); break;
|
||||||
|
case 2:
|
||||||
|
new Button("-",merged(props,Map.of(ACTION_DROP,wt.tag))).addTo(actions);
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
new Button("↑",merged(props,Map.of(RAISE,wt.tag))).addTo(actions);
|
||||||
|
new Button("-",merged(props,Map.of(ACTION_DROP,wt.tag))).addTo(actions);
|
||||||
|
}
|
||||||
|
actions.addTo(row).addTo(table);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
WaitTime defaultWT = getWaitTime(NO_TAG);
|
||||||
|
|
||||||
|
row = new Tag("tr");
|
||||||
|
new Input(NEW_TAG,"").attr("placeholder", t("new tag")).addTo(new Tag("td")).addTo(row);
|
||||||
|
new Input("min."+NEW_TAG+"."+dA,defaultWT.get(dA).min).numeric().addTo(new Tag("td")).addTo(row);
|
||||||
|
new Input("max."+NEW_TAG+"."+dA,defaultWT.get(dA).max).numeric().addTo(new Tag("td")).addTo(row);
|
||||||
|
new Input("min."+NEW_TAG+"."+dB,defaultWT.get(dB).min).numeric().addTo(new Tag("td")).addTo(row);
|
||||||
|
new Input("max."+NEW_TAG+"."+dB,defaultWT.get(dB).max).numeric().addTo(new Tag("td")).addTo(row).addTo(table);
|
||||||
|
|
||||||
|
table.addTo(form);
|
||||||
|
|
||||||
|
new Button(t("Apply"),form).addTo(form).addTo(win);
|
||||||
|
|
||||||
|
return win;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -3,6 +3,7 @@ package de.srsoftware.web4rail.tiles;
|
|||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.util.Collection;
|
import java.util.Collection;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.concurrent.TimeoutException;
|
import java.util.concurrent.TimeoutException;
|
||||||
|
|
||||||
@@ -13,10 +14,9 @@ import de.srsoftware.web4rail.Command;
|
|||||||
import de.srsoftware.web4rail.Command.Reply;
|
import de.srsoftware.web4rail.Command.Reply;
|
||||||
import de.srsoftware.web4rail.Device;
|
import de.srsoftware.web4rail.Device;
|
||||||
import de.srsoftware.web4rail.Protocol;
|
import de.srsoftware.web4rail.Protocol;
|
||||||
|
import de.srsoftware.web4rail.Window;
|
||||||
import de.srsoftware.web4rail.tags.Fieldset;
|
import de.srsoftware.web4rail.tags.Fieldset;
|
||||||
import de.srsoftware.web4rail.tags.Form;
|
|
||||||
import de.srsoftware.web4rail.tags.Input;
|
import de.srsoftware.web4rail.tags.Input;
|
||||||
import de.srsoftware.web4rail.tags.Label;
|
|
||||||
import de.srsoftware.web4rail.tags.Radio;
|
import de.srsoftware.web4rail.tags.Radio;
|
||||||
|
|
||||||
public class Relay extends Tile implements Device{
|
public class Relay extends Tile implements Device{
|
||||||
@@ -127,26 +127,22 @@ public class Relay extends Tile implements Device{
|
|||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
public Form propForm(String id) {
|
@Override
|
||||||
Form form = new Form(id);
|
protected Window properties(List<Fieldset> preForm, FormInput formInputs, List<Fieldset> postForm) {
|
||||||
Fieldset fieldset = new Fieldset(t("Decoder settings"));
|
formInputs.add(t("Name"),new Input(NAME,name));
|
||||||
Label protocol = new Label(t("Protocol:"));
|
Tag div = new Tag("div");
|
||||||
for (Protocol proto : Protocol.values()) {
|
for (Protocol proto : Protocol.values()) {
|
||||||
new Radio(PROTOCOL, proto.toString(), t(proto.toString()), proto == this.protocol).addTo(protocol);
|
new Radio(PROTOCOL, proto.toString(), t(proto.toString()), proto == this.protocol).addTo(div);
|
||||||
}
|
}
|
||||||
protocol.addTo(fieldset);
|
formInputs.add(t("Decoder address"),div);
|
||||||
new Input(ADDRESS, address).numeric().addTo(new Label(t("Address"))).addTo(fieldset).addTo(form);
|
formInputs.add(t("Address"),new Input(ADDRESS, address).numeric());
|
||||||
fieldset = new Fieldset(t("Ports and Labels"));
|
formInputs.add(t("Port for state A"),new Input(PORT_A, portA).numeric());
|
||||||
new Input(PORT_A, portA).numeric().addTo(new Label(t("Port for state A"))).addTo(fieldset);
|
formInputs.add(t("Label for state A"),new Input(LABEL_A, stateLabelA));
|
||||||
new Input(LABEL_A, stateLabelA).addTo(new Label(t("Label for state A"))).addTo(fieldset);
|
formInputs.add(t("Port for state B"),new Input(PORT_B, portB).numeric());
|
||||||
new Input(PORT_B, portB).numeric().addTo(new Label(t("Port for state B"))).addTo(fieldset);
|
formInputs.add(t("Label for state B"),new Input(LABEL_B, stateLabelB));
|
||||||
new Input(LABEL_B, stateLabelB).addTo(new Label(t("Label for state B"))).addTo(fieldset);
|
return super.properties(preForm, formInputs, postForm);
|
||||||
fieldset.addTo(form);
|
|
||||||
fieldset = new Fieldset(t("Name"));
|
|
||||||
new Input(NAME,name).addTo(new Label(t("Name"))).addTo(fieldset).addTo(form);
|
|
||||||
return form;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private char proto() {
|
private char proto() {
|
||||||
switch (protocol) {
|
switch (protocol) {
|
||||||
case DCC14:
|
case DCC14:
|
||||||
|
|||||||
Reference in New Issue
Block a user