overhauled registry
This commit is contained in:
@@ -12,6 +12,7 @@ import org.json.JSONArray;
|
||||
import org.json.JSONObject;
|
||||
|
||||
import de.srsoftware.tools.Tag;
|
||||
import de.srsoftware.web4rail.BaseClass;
|
||||
import de.srsoftware.web4rail.Connector;
|
||||
import de.srsoftware.web4rail.Plan.Direction;
|
||||
import de.srsoftware.web4rail.Range;
|
||||
@@ -233,11 +234,16 @@ public abstract class Block extends StretchableTile implements Comparable<Block>
|
||||
return this;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void removeChild(BaseClass child) {
|
||||
// this class has no child elements
|
||||
}
|
||||
|
||||
public static Select selector(Block preselected,Collection<Block> exclude) {
|
||||
if (isNull(exclude)) exclude = new Vector<Block>();
|
||||
Select select = new Select(Block.class.getSimpleName());
|
||||
new Tag("option").attr("value","0").content(t("unset")).addTo(select);
|
||||
for (Block block : plan.blocks()) {
|
||||
for (Block block : BaseClass.listElements(Block.class)) {
|
||||
if (exclude.contains(block)) continue;
|
||||
Tag opt = select.addOption(block.id(), block);
|
||||
if (block == preselected) opt.attr("selected", "selected");
|
||||
|
||||
@@ -7,6 +7,7 @@ import java.util.Map;
|
||||
import org.json.JSONObject;
|
||||
|
||||
import de.srsoftware.tools.Tag;
|
||||
import de.srsoftware.web4rail.BaseClass;
|
||||
import de.srsoftware.web4rail.Connector;
|
||||
import de.srsoftware.web4rail.Route;
|
||||
import de.srsoftware.web4rail.Window;
|
||||
@@ -100,6 +101,12 @@ public abstract class Bridge extends Tile {
|
||||
return t("Click other bridge to connect to!");
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void removeChild(BaseClass child) {
|
||||
if (child == counterpart) counterpart = null;
|
||||
plan.place(this);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Tag tag(Map<String, Object> replacements) throws IOException {
|
||||
Tag tag = super.tag(replacements);
|
||||
|
||||
@@ -11,6 +11,7 @@ import java.util.TreeMap;
|
||||
import org.json.JSONObject;
|
||||
|
||||
import de.srsoftware.tools.Tag;
|
||||
import de.srsoftware.web4rail.BaseClass;
|
||||
import de.srsoftware.web4rail.Window;
|
||||
import de.srsoftware.web4rail.actions.ActionList;
|
||||
import de.srsoftware.web4rail.tags.Fieldset;
|
||||
@@ -165,6 +166,11 @@ public class Contact extends Tile{
|
||||
return super.properties(preForm, formInputs, postForm);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void removeChild(BaseClass child) {
|
||||
if (child == actions) actions = null;
|
||||
}
|
||||
|
||||
public static Select selector(Contact preselect) {
|
||||
TreeMap<String,Contact> sortedSet = new TreeMap<String, Contact>(); // Map from Name to Contact
|
||||
for (Contact contact : contactsById.values()) sortedSet.put(contact.toString(), contact);
|
||||
|
||||
@@ -2,9 +2,15 @@ package de.srsoftware.web4rail.tiles;
|
||||
|
||||
import java.util.Map;
|
||||
|
||||
import de.srsoftware.web4rail.BaseClass;
|
||||
import de.srsoftware.web4rail.Connector;
|
||||
import de.srsoftware.web4rail.Plan.Direction;
|
||||
|
||||
public abstract class Cross extends Tile {
|
||||
public abstract Map<Connector,Turnout.State> offsetConnections(Direction from);
|
||||
|
||||
@Override
|
||||
protected void removeChild(BaseClass child) {
|
||||
// this class has no child elements
|
||||
}
|
||||
}
|
||||
|
||||
@@ -4,6 +4,7 @@ import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
import de.srsoftware.web4rail.BaseClass;
|
||||
import de.srsoftware.web4rail.Connector;
|
||||
import de.srsoftware.web4rail.Plan.Direction;
|
||||
import de.srsoftware.web4rail.tiles.Turnout.State;
|
||||
@@ -31,4 +32,9 @@ public class CrossPlus extends Tile{
|
||||
public List<Direction> possibleDirections() {
|
||||
return List.of(Direction.EAST,Direction.WEST,Direction.NORTH,Direction.SOUTH);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void removeChild(BaseClass child) {
|
||||
// this class has no child elements
|
||||
}
|
||||
}
|
||||
|
||||
@@ -3,6 +3,7 @@ package de.srsoftware.web4rail.tiles;
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
|
||||
import de.srsoftware.web4rail.BaseClass;
|
||||
import de.srsoftware.web4rail.Connector;
|
||||
import de.srsoftware.web4rail.Plan.Direction;
|
||||
import de.srsoftware.web4rail.tiles.Turnout.State;
|
||||
@@ -21,4 +22,9 @@ public class DiagES extends Tile{
|
||||
return new HashMap<>();
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void removeChild(BaseClass child) {
|
||||
// this class has no child elements
|
||||
}
|
||||
}
|
||||
|
||||
@@ -3,6 +3,7 @@ package de.srsoftware.web4rail.tiles;
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
|
||||
import de.srsoftware.web4rail.BaseClass;
|
||||
import de.srsoftware.web4rail.Connector;
|
||||
import de.srsoftware.web4rail.Plan.Direction;
|
||||
import de.srsoftware.web4rail.tiles.Turnout.State;
|
||||
@@ -21,4 +22,9 @@ public class DiagNE extends Tile{
|
||||
return new HashMap<>();
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void removeChild(BaseClass child) {
|
||||
// this class has no child elements
|
||||
}
|
||||
}
|
||||
|
||||
@@ -3,6 +3,7 @@ package de.srsoftware.web4rail.tiles;
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
|
||||
import de.srsoftware.web4rail.BaseClass;
|
||||
import de.srsoftware.web4rail.Connector;
|
||||
import de.srsoftware.web4rail.Plan.Direction;
|
||||
import de.srsoftware.web4rail.tiles.Turnout.State;
|
||||
@@ -20,4 +21,9 @@ public class DiagSW extends Tile{
|
||||
return new HashMap<>();
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void removeChild(BaseClass child) {
|
||||
// this class has no child elements
|
||||
}
|
||||
}
|
||||
|
||||
@@ -3,6 +3,7 @@ package de.srsoftware.web4rail.tiles;
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
|
||||
import de.srsoftware.web4rail.BaseClass;
|
||||
import de.srsoftware.web4rail.Connector;
|
||||
import de.srsoftware.web4rail.Plan.Direction;
|
||||
import de.srsoftware.web4rail.tiles.Turnout.State;
|
||||
@@ -22,4 +23,10 @@ public class DiagWN extends Tile{
|
||||
return new HashMap<>();
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void removeChild(BaseClass child) {
|
||||
// this class has no child elements
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -1,4 +1,10 @@
|
||||
package de.srsoftware.web4rail.tiles;
|
||||
|
||||
import de.srsoftware.web4rail.BaseClass;
|
||||
|
||||
public class EndE extends Tile{
|
||||
@Override
|
||||
protected void removeChild(BaseClass child) {
|
||||
// this class has no child elements
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,4 +1,11 @@
|
||||
package de.srsoftware.web4rail.tiles;
|
||||
|
||||
import de.srsoftware.web4rail.BaseClass;
|
||||
|
||||
public class EndN extends Tile{
|
||||
@Override
|
||||
protected void removeChild(BaseClass child) {
|
||||
// this class has no child elements
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -1,4 +1,10 @@
|
||||
package de.srsoftware.web4rail.tiles;
|
||||
|
||||
import de.srsoftware.web4rail.BaseClass;
|
||||
|
||||
public class EndS extends Tile{
|
||||
@Override
|
||||
protected void removeChild(BaseClass child) {
|
||||
// this class has no child elements
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,3 +1,10 @@
|
||||
package de.srsoftware.web4rail.tiles;
|
||||
|
||||
public class EndW extends Tile{}
|
||||
import de.srsoftware.web4rail.BaseClass;
|
||||
|
||||
public class EndW extends Tile{
|
||||
@Override
|
||||
protected void removeChild(BaseClass child) {
|
||||
// this class has no child elements
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,5 +1,10 @@
|
||||
package de.srsoftware.web4rail.tiles;
|
||||
|
||||
public class Eraser extends Tile {
|
||||
import de.srsoftware.web4rail.BaseClass;
|
||||
|
||||
public class Eraser extends Tile {
|
||||
@Override
|
||||
protected void removeChild(BaseClass child) {
|
||||
// this class has no child elements
|
||||
}
|
||||
}
|
||||
|
||||
@@ -11,6 +11,7 @@ import java.util.concurrent.TimeoutException;
|
||||
import org.json.JSONObject;
|
||||
|
||||
import de.srsoftware.tools.Tag;
|
||||
import de.srsoftware.web4rail.BaseClass;
|
||||
import de.srsoftware.web4rail.Command;
|
||||
import de.srsoftware.web4rail.Command.Reply;
|
||||
import de.srsoftware.web4rail.Device;
|
||||
@@ -40,7 +41,6 @@ public class Relay extends Tile implements Device{
|
||||
private String name = t("Relay");
|
||||
protected boolean state = true;
|
||||
|
||||
private static final HashMap<Id,Relay> relays = new HashMap<Id, Relay>();
|
||||
public static final boolean STATE_A = true,STATE_B=false;
|
||||
private static final String LABEL_A = "label_a";
|
||||
private static final String LABEL_B = "label_b";
|
||||
@@ -125,7 +125,6 @@ public class Relay extends Tile implements Device{
|
||||
@Override
|
||||
public Tile position(int x, int y) {
|
||||
super.position(x, y);
|
||||
relays.put(id(), this);
|
||||
return this;
|
||||
}
|
||||
|
||||
@@ -161,6 +160,11 @@ public class Relay extends Tile implements Device{
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void removeChild(BaseClass child) {
|
||||
// TODO Auto-generated method stub
|
||||
}
|
||||
|
||||
public Relay setLabel(boolean state, String tx) {
|
||||
if (state) {
|
||||
stateLabelA = tx;
|
||||
@@ -235,19 +239,11 @@ public class Relay extends Tile implements Device{
|
||||
return super.update(params);
|
||||
}
|
||||
|
||||
public static Collection<Relay> list() {
|
||||
return relays.values();
|
||||
}
|
||||
|
||||
public static Relay get(Id relayId) {
|
||||
return relays.get(relayId);
|
||||
}
|
||||
|
||||
public static Select selector(Relay preselected, Collection<Relay> exclude) {
|
||||
if (isNull(exclude)) exclude = new Vector<Relay>();
|
||||
Select select = new Select(Relay.class.getSimpleName());
|
||||
new Tag("option").attr("value","0").content(t("unset")).addTo(select);
|
||||
for (Relay relay : Relay.list()) {
|
||||
for (Relay relay : BaseClass.listElements(Relay.class)) {
|
||||
if (exclude.contains(relay)) continue;
|
||||
Tag opt = select.addOption(relay.id, relay);
|
||||
if (relay == preselected) opt.attr("selected", "selected");
|
||||
|
||||
@@ -4,6 +4,7 @@ import java.io.IOException;
|
||||
import java.util.Map;
|
||||
|
||||
import de.srsoftware.tools.Tag;
|
||||
import de.srsoftware.web4rail.BaseClass;
|
||||
import de.srsoftware.web4rail.Connector;
|
||||
import de.srsoftware.web4rail.Plan.Direction;
|
||||
import de.srsoftware.web4rail.tiles.Turnout.State;
|
||||
@@ -28,6 +29,14 @@ public class Shadow extends Tile{
|
||||
return overlay;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void removeChild(BaseClass child) {
|
||||
if (child == overlay) {
|
||||
overlay = null;
|
||||
remove();
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public Tag tag(Map<String, Object> replacements) throws IOException {
|
||||
Tag tag = super.tag(replacements);
|
||||
|
||||
@@ -7,6 +7,7 @@ import java.util.TreeSet;
|
||||
import java.util.Vector;
|
||||
|
||||
import de.srsoftware.tools.Tag;
|
||||
import de.srsoftware.web4rail.BaseClass;
|
||||
import de.srsoftware.web4rail.Plan.Direction;
|
||||
|
||||
public abstract class Signal extends Tile implements Comparable<Signal>{
|
||||
@@ -37,6 +38,11 @@ public abstract class Signal extends Tile implements Comparable<Signal>{
|
||||
}
|
||||
|
||||
public abstract boolean isAffectedFrom(Direction dir);
|
||||
|
||||
@Override
|
||||
protected void removeChild(BaseClass child) {
|
||||
// this class has no child elements
|
||||
}
|
||||
|
||||
public boolean state(String state) {
|
||||
this.state = state;
|
||||
|
||||
@@ -4,6 +4,7 @@ import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
import de.srsoftware.web4rail.BaseClass;
|
||||
import de.srsoftware.web4rail.Connector;
|
||||
import de.srsoftware.web4rail.Plan.Direction;
|
||||
import de.srsoftware.web4rail.tiles.Turnout.State;
|
||||
@@ -23,18 +24,23 @@ public class StraightH extends StretchableTile{
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public int width() {
|
||||
return stretch;
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<Direction> possibleDirections() {
|
||||
return List.of(Direction.EAST,Direction.WEST);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void removeChild(BaseClass child) {
|
||||
// this class has no child elements
|
||||
}
|
||||
|
||||
@Override
|
||||
protected String stretchType() {
|
||||
return t("Width");
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public int width() {
|
||||
return stretch;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -4,6 +4,7 @@ import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
import de.srsoftware.web4rail.BaseClass;
|
||||
import de.srsoftware.web4rail.Connector;
|
||||
import de.srsoftware.web4rail.Plan.Direction;
|
||||
import de.srsoftware.web4rail.tiles.Turnout.State;
|
||||
@@ -33,6 +34,11 @@ public class StraightV extends StretchableTile{
|
||||
return List.of(Direction.NORTH,Direction.SOUTH);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void removeChild(BaseClass child) {
|
||||
// this class has no child elements
|
||||
}
|
||||
|
||||
@Override
|
||||
protected String stretchType() {
|
||||
return t("Height");
|
||||
|
||||
@@ -11,6 +11,7 @@ import java.util.Vector;
|
||||
import org.json.JSONObject;
|
||||
|
||||
import de.srsoftware.tools.Tag;
|
||||
import de.srsoftware.web4rail.BaseClass;
|
||||
import de.srsoftware.web4rail.Window;
|
||||
import de.srsoftware.web4rail.tags.Fieldset;
|
||||
import de.srsoftware.web4rail.tags.Input;
|
||||
@@ -43,16 +44,20 @@ public class TextDisplay extends StretchableTile {
|
||||
formInputs.add(t("Text"),new Input(TEXT, text));
|
||||
return super.properties(preForm, formInputs, postForm);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void removeChild(BaseClass child) {
|
||||
// this class has no child elements
|
||||
}
|
||||
|
||||
public static Select selector(TextDisplay preselected,Collection<TextDisplay> exclude) {
|
||||
if (isNull(exclude)) exclude = new Vector<TextDisplay>();
|
||||
Select select = new Select(TextDisplay.class.getSimpleName());
|
||||
new Tag("option").attr("value","0").content(t("unset")).addTo(select);
|
||||
for (Tile tile : plan.tiles.values()) {
|
||||
if (!(tile instanceof TextDisplay)) continue;
|
||||
if (exclude.contains(tile)) continue;
|
||||
Tag opt = select.addOption(tile.id(), tile);
|
||||
if (tile == preselected) opt.attr("selected", "selected");
|
||||
for (TextDisplay display : BaseClass.listElements(TextDisplay.class)) {
|
||||
if (exclude.contains(display)) continue;
|
||||
Tag opt = select.addOption(display.id(), display);
|
||||
if (display == preselected) opt.attr("selected", "selected");
|
||||
}
|
||||
return select;
|
||||
}
|
||||
|
||||
@@ -251,10 +251,12 @@ public abstract class Tile extends BaseClass{
|
||||
return super.properties(preForm, formInputs, postForm);
|
||||
}
|
||||
|
||||
public void remove(Route route) {
|
||||
routes.remove(route);
|
||||
@Override
|
||||
public BaseClass remove() {
|
||||
plan.stream("remove "+id());
|
||||
return super.remove();
|
||||
}
|
||||
|
||||
|
||||
private static String replace(String line, Entry<String, Object> replacement) {
|
||||
String key = replacement.getKey();
|
||||
Object val = replacement.getValue();
|
||||
@@ -280,9 +282,9 @@ public abstract class Tile extends BaseClass{
|
||||
return routes;
|
||||
}
|
||||
|
||||
public static void saveAll(HashMap<Id, Tile> tiles ,String filename) throws IOException {
|
||||
public static void saveAll(String filename) throws IOException {
|
||||
BufferedWriter file = new BufferedWriter(new FileWriter(filename));
|
||||
for (Tile tile : tiles.values()) {
|
||||
for (Tile tile : BaseClass.listElements(Tile.class)) {
|
||||
if (isNull(tile) || tile instanceof Shadow) continue;
|
||||
file.append(tile.json()+"\n");
|
||||
}
|
||||
|
||||
@@ -9,6 +9,7 @@ import java.util.concurrent.TimeoutException;
|
||||
import org.json.JSONObject;
|
||||
|
||||
import de.srsoftware.tools.Tag;
|
||||
import de.srsoftware.web4rail.BaseClass;
|
||||
import de.srsoftware.web4rail.Command;
|
||||
import de.srsoftware.web4rail.Command.Reply;
|
||||
import de.srsoftware.web4rail.Device;
|
||||
@@ -139,6 +140,11 @@ public abstract class Turnout extends Tile implements Device{
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void removeChild(BaseClass child) {
|
||||
// this class has no child elements
|
||||
}
|
||||
|
||||
public State state() {
|
||||
return state;
|
||||
}
|
||||
|
||||
@@ -8,7 +8,7 @@ import de.srsoftware.web4rail.Window;
|
||||
import de.srsoftware.web4rail.tags.Fieldset;
|
||||
import de.srsoftware.web4rail.tags.Input;
|
||||
|
||||
public class TurnoutL extends Turnout {
|
||||
public abstract class TurnoutL extends Turnout {
|
||||
|
||||
private static final String LEFT = "left";
|
||||
|
||||
|
||||
@@ -8,7 +8,7 @@ import de.srsoftware.web4rail.Window;
|
||||
import de.srsoftware.web4rail.tags.Fieldset;
|
||||
import de.srsoftware.web4rail.tags.Input;
|
||||
|
||||
public class TurnoutR extends Turnout {
|
||||
public abstract class TurnoutR extends Turnout {
|
||||
|
||||
private static final String RIGHT = "right";
|
||||
|
||||
|
||||
Reference in New Issue
Block a user