various minor improvements
This commit is contained in:
2
pom.xml
2
pom.xml
@@ -4,7 +4,7 @@
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
<groupId>de.srsoftware</groupId>
|
||||
<artifactId>web4rail</artifactId>
|
||||
<version>1.3.44</version>
|
||||
<version>1.3.45</version>
|
||||
<name>Web4Rail</name>
|
||||
<packaging>jar</packaging>
|
||||
<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!
|
||||
delete : entfernen
|
||||
delete route : Route löschen
|
||||
depart : abfahren
|
||||
Destination : Ziel
|
||||
Destination\: {} from {} : Ziel: {} von {}
|
||||
DetermineTrainInBlock : Zug im Block bestimmen
|
||||
|
||||
@@ -414,9 +414,13 @@ public class Route extends BaseClass {
|
||||
add(trigger,new BrakeStart(this));
|
||||
add(trigger,new PreserveRoute(this));
|
||||
|
||||
Contact secondContact = contacts.get(1);
|
||||
trigger = secondContact.trigger();
|
||||
for (Signal signal : signals) add(trigger,new SetSignal(this).set(signal).to(Signal.RED));
|
||||
for (int i=1;i<contacts.size();i++) { // chose second contact, that is not a BlockContact
|
||||
Contact secondContact = contacts.get(i);
|
||||
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));
|
||||
for (Entry<Turnout, Turnout.State> entry : turnouts.entrySet()) {
|
||||
|
||||
@@ -2,6 +2,7 @@ package de.srsoftware.web4rail.actions;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
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.Window;
|
||||
import de.srsoftware.web4rail.tiles.Block;
|
||||
import de.srsoftware.web4rail.tiles.Shadow;
|
||||
import de.srsoftware.web4rail.tiles.Tile;
|
||||
|
||||
public class DisableEnableBlock extends Action {
|
||||
|
||||
@@ -65,7 +68,7 @@ public class DisableEnableBlock extends Action {
|
||||
|
||||
@Override
|
||||
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");
|
||||
new Radio(STATE, "enable", t("enable"), !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) {
|
||||
LOG.debug("update: {}",params);
|
||||
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));
|
||||
return properties();
|
||||
}
|
||||
|
||||
@@ -2,6 +2,7 @@ package de.srsoftware.web4rail.actions;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
import org.json.JSONObject;
|
||||
|
||||
@@ -59,13 +60,7 @@ public class SetSignal extends Action {
|
||||
|
||||
@Override
|
||||
protected Window properties(List<Fieldset> preForm, FormInput formInputs, List<Fieldset> postForm) {
|
||||
Select select = new Select(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);
|
||||
|
||||
formInputs.add(t("Signal")+": "+(isNull(signal) ? t("unset") : signal),button(t("Select from plan"),Map.of(ACTION,ACTION_UPDATE,ASSIGN,SIGNAL)));
|
||||
Select state = new Select(Signal.STATE);
|
||||
for (String st:Signal.knownStates) {
|
||||
Tag option = state.addOption(st);
|
||||
|
||||
@@ -53,7 +53,7 @@ public class TriggerContact extends Action {
|
||||
}
|
||||
|
||||
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
|
||||
|
||||
@@ -2,6 +2,7 @@ package de.srsoftware.web4rail.conditions;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
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.Window;
|
||||
import de.srsoftware.web4rail.tiles.Block;
|
||||
import de.srsoftware.web4rail.tiles.Shadow;
|
||||
import de.srsoftware.web4rail.tiles.Tile;
|
||||
|
||||
public class TrainWasInBlock extends Condition {
|
||||
|
||||
@@ -46,7 +49,7 @@ public class TrainWasInBlock extends Condition {
|
||||
|
||||
@Override
|
||||
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")));
|
||||
return super.properties(preForm, formInputs, postForm);
|
||||
}
|
||||
@@ -68,9 +71,9 @@ public class TrainWasInBlock extends Condition {
|
||||
protected Object update(HashMap<String, String> params) {
|
||||
if (!params.containsKey(BLOCK)) return t("No block id passed to TrainWasInBlock.update()!");
|
||||
Id bid = new Id(params.get(BLOCK));
|
||||
Block block = Block.get(bid);
|
||||
if (isNull(block)) return t("No block with id {} found!",bid);
|
||||
this.block = block;
|
||||
Tile tile = BaseClass.get(bid);
|
||||
if (tile instanceof Shadow) tile = ((Shadow)tile).overlay();
|
||||
if (tile instanceof Block) block = (Block) tile;
|
||||
if (params.containsKey(COUNT)) count=Integer.parseInt(params.get(COUNT));
|
||||
return super.update(params);
|
||||
}
|
||||
|
||||
@@ -155,7 +155,7 @@ public class Locomotive extends Car implements Constants,Device{
|
||||
if (isSet(currentBlock)) {
|
||||
if (isNull(train.route())) {
|
||||
params.put(ACTION, ACTION_START);
|
||||
new Button(t("start"),params).addTo(direction);
|
||||
new Button(t("depart"),params).addTo(direction);
|
||||
}
|
||||
if (train.usesAutopilot()) {
|
||||
params.put(ACTION, ACTION_QUIT);
|
||||
|
||||
@@ -2,7 +2,6 @@ package de.srsoftware.web4rail.tiles;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.util.Collection;
|
||||
import java.util.Collections;
|
||||
import java.util.HashMap;
|
||||
import java.util.HashSet;
|
||||
import java.util.List;
|
||||
@@ -11,6 +10,7 @@ import java.util.Map.Entry;
|
||||
import java.util.Vector;
|
||||
|
||||
import org.json.JSONArray;
|
||||
import org.json.JSONException;
|
||||
import org.json.JSONObject;
|
||||
import org.slf4j.Logger;
|
||||
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.Form;
|
||||
import de.srsoftware.web4rail.tags.Input;
|
||||
import de.srsoftware.web4rail.tags.Select;
|
||||
import de.srsoftware.web4rail.tags.Window;
|
||||
|
||||
/**
|
||||
@@ -289,9 +288,11 @@ public abstract class Block extends StretchableTile{
|
||||
});
|
||||
}
|
||||
if (json.has(CONTACT)) {
|
||||
JSONObject jContact = json.getJSONObject(CONTACT);
|
||||
JSONObject jContact = json.getJSONObject(CONTACT);
|
||||
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)) {
|
||||
@@ -364,22 +365,6 @@ public abstract class Block extends StretchableTile{
|
||||
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();
|
||||
|
||||
@Override
|
||||
|
||||
Reference in New Issue
Block a user