various minor improvements
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.3.44</version>
|
<version>1.3.45</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>
|
||||||
|
|||||||
@@ -114,6 +114,7 @@ DelayedAction : verzögerte Aktion
|
|||||||
Delay must not be less than zero! : Verzögerung darf nicht kleiner als null sein!
|
Delay must not be less than zero! : Verzögerung darf nicht kleiner als null sein!
|
||||||
delete : entfernen
|
delete : entfernen
|
||||||
delete route : Route löschen
|
delete route : Route löschen
|
||||||
|
depart : abfahren
|
||||||
Destination : Ziel
|
Destination : Ziel
|
||||||
Destination\: {} from {} : Ziel: {} von {}
|
Destination\: {} from {} : Ziel: {} von {}
|
||||||
DetermineTrainInBlock : Zug im Block bestimmen
|
DetermineTrainInBlock : Zug im Block bestimmen
|
||||||
|
|||||||
@@ -414,9 +414,13 @@ public class Route extends BaseClass {
|
|||||||
add(trigger,new BrakeStart(this));
|
add(trigger,new BrakeStart(this));
|
||||||
add(trigger,new PreserveRoute(this));
|
add(trigger,new PreserveRoute(this));
|
||||||
|
|
||||||
Contact secondContact = contacts.get(1);
|
for (int i=1;i<contacts.size();i++) { // chose second contact, that is not a BlockContact
|
||||||
trigger = secondContact.trigger();
|
Contact secondContact = contacts.get(i);
|
||||||
for (Signal signal : signals) add(trigger,new SetSignal(this).set(signal).to(Signal.RED));
|
if (secondContact instanceof BlockContact) continue;
|
||||||
|
trigger = secondContact.trigger();
|
||||||
|
for (Signal signal : signals) add(trigger,new SetSignal(this).set(signal).to(Signal.RED));
|
||||||
|
break;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
if (!contacts.isEmpty()) add(contacts.lastElement().trigger(), new FinishRoute(this));
|
if (!contacts.isEmpty()) add(contacts.lastElement().trigger(), new FinishRoute(this));
|
||||||
for (Entry<Turnout, Turnout.State> entry : turnouts.entrySet()) {
|
for (Entry<Turnout, Turnout.State> entry : turnouts.entrySet()) {
|
||||||
|
|||||||
@@ -2,6 +2,7 @@ package de.srsoftware.web4rail.actions;
|
|||||||
|
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
import org.json.JSONObject;
|
import org.json.JSONObject;
|
||||||
|
|
||||||
@@ -12,6 +13,8 @@ import de.srsoftware.web4rail.tags.Fieldset;
|
|||||||
import de.srsoftware.web4rail.tags.Radio;
|
import de.srsoftware.web4rail.tags.Radio;
|
||||||
import de.srsoftware.web4rail.tags.Window;
|
import de.srsoftware.web4rail.tags.Window;
|
||||||
import de.srsoftware.web4rail.tiles.Block;
|
import de.srsoftware.web4rail.tiles.Block;
|
||||||
|
import de.srsoftware.web4rail.tiles.Shadow;
|
||||||
|
import de.srsoftware.web4rail.tiles.Tile;
|
||||||
|
|
||||||
public class DisableEnableBlock extends Action {
|
public class DisableEnableBlock extends Action {
|
||||||
|
|
||||||
@@ -65,7 +68,7 @@ public class DisableEnableBlock extends Action {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected Window properties(List<Fieldset> preForm, FormInput formInputs, List<Fieldset> postForm) {
|
protected Window properties(List<Fieldset> preForm, FormInput formInputs, List<Fieldset> postForm) {
|
||||||
formInputs.add(t("Select block"),Block.selector(isSet(block) ? block : t("block from context"), null));
|
formInputs.add(t("Block")+": "+(isNull(block) ? t("block from context") : block),button(t("Select from plan"),Map.of(ACTION,ACTION_UPDATE,ASSIGN,Block.class.getSimpleName())));
|
||||||
Tag radios = new Tag("p");
|
Tag radios = new Tag("p");
|
||||||
new Radio(STATE, "enable", t("enable"), !disable).addTo(radios);
|
new Radio(STATE, "enable", t("enable"), !disable).addTo(radios);
|
||||||
new Radio(STATE, "disable", t("disable"), disable).addTo(radios);
|
new Radio(STATE, "disable", t("disable"), disable).addTo(radios);
|
||||||
@@ -88,7 +91,9 @@ public class DisableEnableBlock extends Action {
|
|||||||
protected Object update(HashMap<String, String> params) {
|
protected Object update(HashMap<String, String> params) {
|
||||||
LOG.debug("update: {}",params);
|
LOG.debug("update: {}",params);
|
||||||
Id blockId = Id.from(params,Block.class.getSimpleName());
|
Id blockId = Id.from(params,Block.class.getSimpleName());
|
||||||
if (isSet(blockId)) block = Block.get(blockId);
|
Tile tile = isSet(blockId) ? BaseClass.get(blockId) : null;
|
||||||
|
if (tile instanceof Shadow) tile = ((Shadow)tile).overlay();
|
||||||
|
if (tile instanceof Block) block = (Block) tile;
|
||||||
disable = !"enable".equals(params.get(STATE));
|
disable = !"enable".equals(params.get(STATE));
|
||||||
return properties();
|
return properties();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -2,6 +2,7 @@ package de.srsoftware.web4rail.actions;
|
|||||||
|
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
import org.json.JSONObject;
|
import org.json.JSONObject;
|
||||||
|
|
||||||
@@ -59,13 +60,7 @@ public class SetSignal extends Action {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected Window properties(List<Fieldset> preForm, FormInput formInputs, List<Fieldset> postForm) {
|
protected Window properties(List<Fieldset> preForm, FormInput formInputs, List<Fieldset> postForm) {
|
||||||
Select select = new Select(SIGNAL);
|
formInputs.add(t("Signal")+": "+(isNull(signal) ? t("unset") : signal),button(t("Select from plan"),Map.of(ACTION,ACTION_UPDATE,ASSIGN,SIGNAL)));
|
||||||
for (Signal signal : BaseClass.listElements(Signal.class)) {
|
|
||||||
Tag option = select.addOption(signal.id(),signal.title());
|
|
||||||
if (signal == this.signal) option.attr("selected", "selected");
|
|
||||||
}
|
|
||||||
formInputs.add(t("Select signal"),select);
|
|
||||||
|
|
||||||
Select state = new Select(Signal.STATE);
|
Select state = new Select(Signal.STATE);
|
||||||
for (String st:Signal.knownStates) {
|
for (String st:Signal.knownStates) {
|
||||||
Tag option = state.addOption(st);
|
Tag option = state.addOption(st);
|
||||||
|
|||||||
@@ -53,7 +53,7 @@ public class TriggerContact extends Action {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public String toString() {
|
public String toString() {
|
||||||
return isSet(contact) ? t("Trigger {}",contact) : "["+t("click here to setup contact")+"]";
|
return isSet(contact) ? t("Trigger {}",contact) : "["+t("Click here to setup contact")+"]";
|
||||||
};
|
};
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
@@ -2,6 +2,7 @@ package de.srsoftware.web4rail.conditions;
|
|||||||
|
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
import org.json.JSONObject;
|
import org.json.JSONObject;
|
||||||
|
|
||||||
@@ -12,6 +13,8 @@ import de.srsoftware.web4rail.tags.Fieldset;
|
|||||||
import de.srsoftware.web4rail.tags.Input;
|
import de.srsoftware.web4rail.tags.Input;
|
||||||
import de.srsoftware.web4rail.tags.Window;
|
import de.srsoftware.web4rail.tags.Window;
|
||||||
import de.srsoftware.web4rail.tiles.Block;
|
import de.srsoftware.web4rail.tiles.Block;
|
||||||
|
import de.srsoftware.web4rail.tiles.Shadow;
|
||||||
|
import de.srsoftware.web4rail.tiles.Tile;
|
||||||
|
|
||||||
public class TrainWasInBlock extends Condition {
|
public class TrainWasInBlock extends Condition {
|
||||||
|
|
||||||
@@ -46,7 +49,7 @@ public class TrainWasInBlock extends Condition {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected Window properties(List<Fieldset> preForm, FormInput formInputs, List<Fieldset> postForm) {
|
protected Window properties(List<Fieldset> preForm, FormInput formInputs, List<Fieldset> postForm) {
|
||||||
formInputs.add(t("Select block"), Block.selector(block, null));
|
formInputs.add(t("Block")+": "+(isNull(block) ? t("block from context") : block),button(t("Select from plan"),Map.of(ACTION,ACTION_UPDATE,ASSIGN,BLOCK)));
|
||||||
formInputs.add(t("Seek in last"), new Input(COUNT, count).numeric().addTo(new Tag("span")).content(NBSP+t("blocks of train")));
|
formInputs.add(t("Seek in last"), new Input(COUNT, count).numeric().addTo(new Tag("span")).content(NBSP+t("blocks of train")));
|
||||||
return super.properties(preForm, formInputs, postForm);
|
return super.properties(preForm, formInputs, postForm);
|
||||||
}
|
}
|
||||||
@@ -68,9 +71,9 @@ public class TrainWasInBlock extends Condition {
|
|||||||
protected Object update(HashMap<String, String> params) {
|
protected Object update(HashMap<String, String> params) {
|
||||||
if (!params.containsKey(BLOCK)) return t("No block id passed to TrainWasInBlock.update()!");
|
if (!params.containsKey(BLOCK)) return t("No block id passed to TrainWasInBlock.update()!");
|
||||||
Id bid = new Id(params.get(BLOCK));
|
Id bid = new Id(params.get(BLOCK));
|
||||||
Block block = Block.get(bid);
|
Tile tile = BaseClass.get(bid);
|
||||||
if (isNull(block)) return t("No block with id {} found!",bid);
|
if (tile instanceof Shadow) tile = ((Shadow)tile).overlay();
|
||||||
this.block = block;
|
if (tile instanceof Block) block = (Block) tile;
|
||||||
if (params.containsKey(COUNT)) count=Integer.parseInt(params.get(COUNT));
|
if (params.containsKey(COUNT)) count=Integer.parseInt(params.get(COUNT));
|
||||||
return super.update(params);
|
return super.update(params);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -155,7 +155,7 @@ public class Locomotive extends Car implements Constants,Device{
|
|||||||
if (isSet(currentBlock)) {
|
if (isSet(currentBlock)) {
|
||||||
if (isNull(train.route())) {
|
if (isNull(train.route())) {
|
||||||
params.put(ACTION, ACTION_START);
|
params.put(ACTION, ACTION_START);
|
||||||
new Button(t("start"),params).addTo(direction);
|
new Button(t("depart"),params).addTo(direction);
|
||||||
}
|
}
|
||||||
if (train.usesAutopilot()) {
|
if (train.usesAutopilot()) {
|
||||||
params.put(ACTION, ACTION_QUIT);
|
params.put(ACTION, ACTION_QUIT);
|
||||||
|
|||||||
@@ -2,7 +2,6 @@ package de.srsoftware.web4rail.tiles;
|
|||||||
|
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.util.Collection;
|
import java.util.Collection;
|
||||||
import java.util.Collections;
|
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.HashSet;
|
import java.util.HashSet;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
@@ -11,6 +10,7 @@ import java.util.Map.Entry;
|
|||||||
import java.util.Vector;
|
import java.util.Vector;
|
||||||
|
|
||||||
import org.json.JSONArray;
|
import org.json.JSONArray;
|
||||||
|
import org.json.JSONException;
|
||||||
import org.json.JSONObject;
|
import org.json.JSONObject;
|
||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
import org.slf4j.LoggerFactory;
|
import org.slf4j.LoggerFactory;
|
||||||
@@ -26,7 +26,6 @@ import de.srsoftware.web4rail.tags.Checkbox;
|
|||||||
import de.srsoftware.web4rail.tags.Fieldset;
|
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.Select;
|
|
||||||
import de.srsoftware.web4rail.tags.Window;
|
import de.srsoftware.web4rail.tags.Window;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -289,9 +288,11 @@ public abstract class Block extends StretchableTile{
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
if (json.has(CONTACT)) {
|
if (json.has(CONTACT)) {
|
||||||
JSONObject jContact = json.getJSONObject(CONTACT);
|
JSONObject jContact = json.getJSONObject(CONTACT);
|
||||||
for (String key : jContact.keySet()) {
|
for (String key : jContact.keySet()) {
|
||||||
new BlockContact(this).load(jContact.getJSONObject(key));
|
try {
|
||||||
|
new BlockContact(this).load(jContact.getJSONObject(key));
|
||||||
|
} catch (JSONException e) {}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (json.has(PARKED_TRAINS)) {
|
if (json.has(PARKED_TRAINS)) {
|
||||||
@@ -364,22 +365,6 @@ public abstract class Block extends StretchableTile{
|
|||||||
internalContacts.remove(blockContact);
|
internalContacts.remove(blockContact);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static Select selector(Object preset,Collection<Block> exclude) {
|
|
||||||
Block preselected = preset instanceof Block ? (Block) preset : null;
|
|
||||||
String firstEntry = preset instanceof String ? (String) preset : t("unset");
|
|
||||||
if (isNull(exclude)) exclude = new Vector<Block>();
|
|
||||||
Select select = new Select(Block.class.getSimpleName());
|
|
||||||
new Tag("option").attr("value","0").content(firstEntry).addTo(select);
|
|
||||||
List<Block> blocks = BaseClass.listElements(Block.class);
|
|
||||||
Collections.sort(blocks, (b1,b2) -> b1.name.compareTo(b2.name));
|
|
||||||
for (Block block : blocks) {
|
|
||||||
if (exclude.contains(block)) continue;
|
|
||||||
Tag opt = select.addOption(block.id(), block);
|
|
||||||
if (block == preselected) opt.attr("selected", "selected");
|
|
||||||
}
|
|
||||||
return select;
|
|
||||||
}
|
|
||||||
|
|
||||||
public abstract List<Connector> startPoints();
|
public abstract List<Connector> startPoints();
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
Reference in New Issue
Block a user