started restructuring
This commit is contained in:
@@ -25,14 +25,6 @@ function addMessage(txt){
|
||||
messageTimer = setInterval(fadeMessage,100);
|
||||
}
|
||||
|
||||
function fadeMessage(){
|
||||
messageOpacity -= 10;
|
||||
if (messageOpacity < 1) window.clearInterval(messageTimer);
|
||||
var o = messageOpacity;
|
||||
if (o>OPAC) o=OPAC;
|
||||
$('#messages').css('opacity',o/OPAC);
|
||||
}
|
||||
|
||||
function addTile(x,y){
|
||||
return request({action:mode,tile:selected.id,x:x,y:y});
|
||||
}
|
||||
@@ -99,6 +91,14 @@ function enableMove(ev){
|
||||
return false; // otherwise body.click would also be triggered
|
||||
}
|
||||
|
||||
function fadeMessage(){
|
||||
messageOpacity -= 10;
|
||||
if (messageOpacity < 1) window.clearInterval(messageTimer);
|
||||
var o = messageOpacity;
|
||||
if (o>OPAC) o=OPAC;
|
||||
$('#messages').css('opacity',o/OPAC);
|
||||
}
|
||||
|
||||
function heartbeat(data){
|
||||
$('#heartbeat').show().fadeOut(2000);
|
||||
return false;
|
||||
@@ -168,8 +168,10 @@ function request(data){
|
||||
}
|
||||
|
||||
function runAction(ev){
|
||||
// console.log("runAction: ",ev.target.id);
|
||||
return request({action:ev.target.id,file:'default'}); // TODO: ask for name
|
||||
var clicked = ev.target;
|
||||
var realm = clicked.hasAttribute('class') ? clicked.getAttribute('class') : null;
|
||||
//console.log("runAction: ",{action: clicked.id, realm:realm});
|
||||
return request({action:ev.target.id,realm:realm}); // TODO: ask for name
|
||||
}
|
||||
|
||||
function stream(ev){
|
||||
|
||||
@@ -10,8 +10,6 @@ import java.io.OutputStreamWriter;
|
||||
import java.lang.reflect.InvocationTargetException;
|
||||
import java.net.InetSocketAddress;
|
||||
import java.net.URI;
|
||||
import java.net.URL;
|
||||
import java.net.URLClassLoader;
|
||||
import java.net.URLDecoder;
|
||||
import java.nio.charset.Charset;
|
||||
import java.nio.charset.StandardCharsets;
|
||||
|
||||
29
src/main/java/de/srsoftware/web4rail/Constants.java
Normal file
29
src/main/java/de/srsoftware/web4rail/Constants.java
Normal file
@@ -0,0 +1,29 @@
|
||||
package de.srsoftware.web4rail;
|
||||
|
||||
public interface Constants {
|
||||
public static final String ACTION = "action";
|
||||
public static final String ACTION_ADD = "add";
|
||||
public static final String ACTION_ANALYZE = "analyze";
|
||||
public static final String ACTION_CLICK = "click";
|
||||
public static final String ACTION_CONNECT = "connect";
|
||||
public static final String ACTION_EMERGENCY = "emergency";
|
||||
public static final String ACTION_FASTER10 = "faster10";
|
||||
public static final String ACTION_MOVE = "move";
|
||||
public static final String ACTION_POWER = "power";
|
||||
public static final String ACTION_PROPS = "props";
|
||||
public static final String ACTION_SAVE = "save";
|
||||
public static final String ACTION_SLOWER10 = "slower10";
|
||||
public static final String ACTION_STOP = "stop";
|
||||
public static final String ACTION_TURN = "turn";
|
||||
public static final String ACTION_UPDATE = "update";
|
||||
|
||||
public static final String REALM = "realm";
|
||||
public static final String REALM_CAR = "car";
|
||||
public static final String REALM_CU = "cu";
|
||||
public static final String REALM_LOCO = "loco";
|
||||
public static final String REALM_ROUTE = "route";
|
||||
public static final String REALM_TILE = "tile";
|
||||
public static final String REALM_TRAIN = "train";
|
||||
|
||||
public static final String ID = "id";
|
||||
}
|
||||
@@ -22,7 +22,7 @@ import de.srsoftware.web4rail.tags.Form;
|
||||
import de.srsoftware.web4rail.tags.Input;
|
||||
import de.srsoftware.web4rail.tags.Label;
|
||||
|
||||
public class ControlUnit extends Thread{
|
||||
public class ControlUnit extends Thread implements Constants{
|
||||
private static final Logger LOG = LoggerFactory.getLogger(ControlUnit.class);
|
||||
private static final String DEFAULT_HOST = "localhost";
|
||||
private static final int DEFAULT_PORT = 4303;
|
||||
@@ -117,8 +117,8 @@ public class ControlUnit extends Thread{
|
||||
public Object properties() {
|
||||
Window win = new Window("cu-props", t("Properties of the control unit"));
|
||||
Form form = new Form();
|
||||
new Input(Plan.ACTION,Plan.ACTION_UPDATE).hideIn(form);
|
||||
new Input(Plan.REALM,Plan.REALM_CU).hideIn(form);
|
||||
new Input(ACTION,ACTION_UPDATE).hideIn(form);
|
||||
new Input(REALM,REALM_CU).hideIn(form);
|
||||
Fieldset fieldset = new Fieldset(t("Server connection"));
|
||||
new Input(HOST,host).addTo(new Label(t("Hostname"))).addTo(fieldset);
|
||||
new Input(PORT,port).attr("type", "numeric").addTo(new Label(t("Port"))).addTo(fieldset);
|
||||
@@ -228,4 +228,11 @@ public class ControlUnit extends Thread{
|
||||
if (json.has(BUS)) bus = json.getInt(BUS);
|
||||
if (json.has(HOST)) host = json.getString(HOST);
|
||||
}
|
||||
|
||||
public Object process(HashMap<String, String> params) {
|
||||
String action = params.get(ACTION);
|
||||
if (action == null) throw new NullPointerException(ACTION+" should not be null!");
|
||||
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -59,7 +59,7 @@ import de.srsoftware.web4rail.tiles.TurnoutRN;
|
||||
import de.srsoftware.web4rail.tiles.TurnoutRS;
|
||||
import de.srsoftware.web4rail.tiles.TurnoutRW;
|
||||
|
||||
public class Plan {
|
||||
public class Plan implements Constants{
|
||||
public enum Direction{
|
||||
NORTH, SOUTH, EAST, WEST;
|
||||
|
||||
@@ -88,43 +88,14 @@ public class Plan {
|
||||
}
|
||||
}
|
||||
|
||||
public static final String ACTION = "action";
|
||||
private static final String ACTION_ADD = "add";
|
||||
private static final String ACTION_ANALYZE = "analyze";
|
||||
private static final String ACTION_MOVE = "move";
|
||||
private static final String ACTION_CLICK = "click";
|
||||
private static final String ACTION_SAVE = "save";
|
||||
public static final String ACTION_UPDATE = "update";
|
||||
|
||||
private static final String TILE = "tile";
|
||||
private static final Logger LOG = LoggerFactory.getLogger(Plan.class);
|
||||
private static final String X = "x";
|
||||
private static final String Y = "y";
|
||||
private static final String FILE = "file";
|
||||
private static final String DIRECTION = "direction";
|
||||
private static final String ACTION_ROUTE = "openRoute";
|
||||
public static final String ID = "id";
|
||||
private static final String ROUTE = "route";
|
||||
private static final HashMap<OutputStreamWriter,Integer> clients = new HashMap<OutputStreamWriter, Integer>();
|
||||
private static final String ACTION_TRAIN = "train";
|
||||
private static final String ACTION_LOCOS = "locos";
|
||||
private static final String ACTION_TRAINS = "trains";
|
||||
private static final String ACTION_CAR = "car";
|
||||
public static final String ACTION_ADD_LOCO = "addLoco";
|
||||
public static final String ACTION_ADD_TRAIN = "addTrain";
|
||||
public static final String ACTION_CU_PROPS = "cuProps";
|
||||
public static final String ACTION_UPDATE_CU = "update-cu";
|
||||
public static final String REALM = "realm";
|
||||
public static final String REALM_CU = "cu";
|
||||
public static final String REALM_ROUTE = "route";
|
||||
public static final String REALM_TILE = "tile";
|
||||
public static final String REALM_CAR = "car";
|
||||
private static final String ACTION_CONNECT = "connect";
|
||||
private static final String ACTION_POWER = "power";
|
||||
private static final String ACTION_EMERGENCY = "emergency";
|
||||
public static final String ACTION_FASTER10 = "faster10";
|
||||
public static final String ACTION_SLOWER10 = "slower10";
|
||||
public static final String ACTION_STOP = "stop";
|
||||
public static final String ACTION_TURN = "turn";
|
||||
|
||||
public HashMap<String,Tile> tiles = new HashMap<String,Tile>();
|
||||
private HashSet<Block> blocks = new HashSet<Block>();
|
||||
@@ -139,7 +110,7 @@ public class Plan {
|
||||
private Tag actionMenu() throws IOException {
|
||||
Tag actionMenu = new Tag("div").clazz("actions").content(t("Actions"));
|
||||
Tag actions = new Tag("div").clazz("list").content("");
|
||||
new Div("power").content(t("Toggle power")).addTo(actions);
|
||||
new Div("power").clazz(REALM_CU).content(t("Toggle power")).addTo(actions);
|
||||
new Div("save").content(t("Save plan")).addTo(actions);
|
||||
new Div("analyze").content(t("Analyze plan")).addTo(actions);
|
||||
return actions.addTo(actionMenu);
|
||||
@@ -260,7 +231,7 @@ public class Plan {
|
||||
private Tag hardwareMenu() throws IOException {
|
||||
Tag tileMenu = new Tag("div").clazz("hardware").content(t("Hardware"));
|
||||
Tag list = new Tag("div").clazz("list").content("");
|
||||
new Div(ACTION_CU_PROPS).content(t("Control unit")).addTo(list);
|
||||
new Div(ACTION_PROPS).content(t("Control unit")).addTo(list);
|
||||
return list.addTo(tileMenu);
|
||||
}
|
||||
|
||||
@@ -320,9 +291,8 @@ public class Plan {
|
||||
}
|
||||
|
||||
private Object locoAction(HashMap<String, String> params) throws IOException {
|
||||
|
||||
switch (params.get(ACTION)) {
|
||||
case ACTION_ADD_LOCO:
|
||||
case ACTION_ADD:
|
||||
new Locomotive(params.get(Locomotive.NAME));
|
||||
break;
|
||||
case ACTION_FASTER10:
|
||||
@@ -423,52 +393,23 @@ public class Plan {
|
||||
|
||||
public Object process(HashMap<String, String> params) {
|
||||
try {
|
||||
String realm = params.get(REALM);
|
||||
if (realm == null) throw new NullPointerException(REALM+" should not be null!");
|
||||
String action = params.get(ACTION);
|
||||
|
||||
if (action == null) throw new NullPointerException(ACTION+" should not be null!");
|
||||
switch (action) {
|
||||
case ACTION_ADD:
|
||||
return addTile(params.get(TILE),params.get(X),params.get(Y),null);
|
||||
case ACTION_ADD_LOCO:
|
||||
case ACTION_FASTER10:
|
||||
case ACTION_STOP:
|
||||
case ACTION_SLOWER10:
|
||||
case ACTION_TURN:
|
||||
return locoAction(params);
|
||||
case ACTION_ADD_TRAIN:
|
||||
case ACTION_TRAIN:
|
||||
return trainAction(params);
|
||||
case ACTION_ANALYZE:
|
||||
return analyze();
|
||||
case ACTION_CAR:
|
||||
switch (realm) {
|
||||
case REALM_CAR:
|
||||
return carAction(params);
|
||||
case ACTION_CLICK:
|
||||
return click(get(params.get(Tile.ID),true));
|
||||
case ACTION_CONNECT:
|
||||
return connect(params);
|
||||
case ACTION_CU_PROPS:
|
||||
return cuProps(params);
|
||||
case ACTION_LOCOS:
|
||||
return Locomotive.manager();
|
||||
case ACTION_EMERGENCY:
|
||||
power = true;
|
||||
return togglePower();
|
||||
case ACTION_MOVE:
|
||||
return moveTile(params.get(DIRECTION),params.get(Tile.ID));
|
||||
case ACTION_POWER:
|
||||
return togglePower();
|
||||
case ACTION_ROUTE:
|
||||
return routeProperties(Integer.parseInt(params.get(ID)));
|
||||
case ACTION_SAVE:
|
||||
return saveTo(params.get(FILE));
|
||||
case ACTION_TRAINS:
|
||||
return Train.manager();
|
||||
case ACTION_UPDATE:
|
||||
return update(params);
|
||||
default:
|
||||
LOG.warn("Unknown action: {}",action);
|
||||
case REALM_CU:
|
||||
return controlUnit.process(params);
|
||||
case REALM_LOCO:
|
||||
return locoAction(params);
|
||||
case REALM_TILE:
|
||||
return tileAction(params);
|
||||
case REALM_TRAIN:
|
||||
return trainAction(params);
|
||||
}
|
||||
return t("Unknown action: {}",action);
|
||||
return t("Unknown realm: {}",realm);
|
||||
} catch (Exception e) {
|
||||
String msg = e.getMessage();
|
||||
if (msg == null || msg.isEmpty()) msg = t("An unknown error occured!");
|
||||
@@ -477,6 +418,14 @@ public class Plan {
|
||||
}
|
||||
}
|
||||
|
||||
private Object tileAction(HashMap<String, String> params) throws ClassNotFoundException, InstantiationException, IllegalAccessException, IllegalArgumentException, InvocationTargetException, NoSuchMethodException, SecurityException, IOException {
|
||||
switch (params.get(Plan.ACTION)) {
|
||||
case ACTION_ADD:
|
||||
return addTile(params.get(TILE),params.get(X),params.get(Y),null);
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
private Object togglePower() throws IOException {
|
||||
power = !power;
|
||||
String PW = power?"ON":"OFF";
|
||||
@@ -487,12 +436,12 @@ public class Plan {
|
||||
private Object trainAction(HashMap<String, String> params) throws IOException {
|
||||
LOG.debug("Params: {}",params);
|
||||
switch (params.get(ACTION)) {
|
||||
case ACTION_ADD_TRAIN:
|
||||
case ACTION_ADD:
|
||||
Locomotive loco = (Locomotive) Locomotive.get(params.get(Train.LOCO_ID));
|
||||
if (loco == null) return t("unknown locomotive: {}",params.get(Locomotive.ID));
|
||||
new Train(loco);
|
||||
break;
|
||||
case ACTION_TRAIN:
|
||||
case ACTION_PROPS:
|
||||
Object result = Train.action(params);
|
||||
if (!(result instanceof Train)) return result;
|
||||
break;
|
||||
@@ -624,8 +573,8 @@ public class Plan {
|
||||
private Tag trainMenu() throws IOException {
|
||||
Tag tileMenu = new Tag("div").clazz("trains").content(t("Trains"));
|
||||
Tag tiles = new Tag("div").clazz("list").content("");
|
||||
new Div(ACTION_TRAINS).content(t("Manage trains")).addTo(tiles);
|
||||
new Div(ACTION_LOCOS).content(t("Manage locos")).addTo(tiles);
|
||||
new Div(ACTION_PROPS).clazz(REALM_TRAIN).content(t("Manage trains")).addTo(tiles);
|
||||
new Div(ACTION_PROPS).clazz(REALM_LOCO).content(t("Manage locos")).addTo(tiles);
|
||||
return tiles.addTo(tileMenu);
|
||||
}
|
||||
|
||||
@@ -642,7 +591,7 @@ public class Plan {
|
||||
break;
|
||||
case REALM_ROUTE:
|
||||
Route route = routes.get(Integer.parseInt(params.get(ID)));
|
||||
if (route == null) return t("Unknown route: {}",params.get(ROUTE));
|
||||
if (route == null) return t("Unknown route: {}",params.get(ID));
|
||||
route.update(params);
|
||||
break;
|
||||
case REALM_TILE:
|
||||
|
||||
@@ -38,7 +38,7 @@ import de.srsoftware.web4rail.tiles.Tile;
|
||||
import de.srsoftware.web4rail.tiles.Turnout;
|
||||
import de.srsoftware.web4rail.tiles.Turnout.State;
|
||||
|
||||
public class Route {
|
||||
public class Route implements Constants{
|
||||
private static final Logger LOG = LoggerFactory.getLogger(Route.class);
|
||||
static final String NAME = "name";
|
||||
static final String PATH = "path";
|
||||
@@ -367,9 +367,9 @@ public class Route {
|
||||
|
||||
public Tag propForm() {
|
||||
Form form = new Form();
|
||||
new Input(Plan.ACTION, Plan.ACTION_UPDATE).hideIn(form);
|
||||
new Input(Plan.REALM,Plan.REALM_ROUTE).hideIn(form);
|
||||
new Input(Plan.ID,id()).hideIn(form);
|
||||
new Input(ACTION, ACTION_UPDATE).hideIn(form);
|
||||
new Input(REALM,REALM_ROUTE).hideIn(form);
|
||||
new Input(ID,id()).hideIn(form);
|
||||
|
||||
Tag label = new Tag("label").content(t("name:"));
|
||||
new Tag("input").attr("type", "text").attr(NAME,"name").attr("value", name()).addTo(label);
|
||||
|
||||
@@ -20,7 +20,7 @@ import org.slf4j.LoggerFactory;
|
||||
import de.keawe.tools.translations.Translation;
|
||||
import de.srsoftware.tools.Tag;
|
||||
import de.srsoftware.web4rail.Application;
|
||||
import de.srsoftware.web4rail.Plan;
|
||||
import de.srsoftware.web4rail.Constants;
|
||||
import de.srsoftware.web4rail.Plan.Direction;
|
||||
import de.srsoftware.web4rail.Route;
|
||||
import de.srsoftware.web4rail.Window;
|
||||
@@ -36,7 +36,7 @@ import de.srsoftware.web4rail.tiles.Contact;
|
||||
import de.srsoftware.web4rail.tiles.Signal;
|
||||
import de.srsoftware.web4rail.tiles.Tile;
|
||||
|
||||
public class Train {
|
||||
public class Train implements Constants {
|
||||
private static final Logger LOG = LoggerFactory.getLogger(Train.class);
|
||||
|
||||
private static final HashMap<Long, Train> trains = new HashMap<>();
|
||||
@@ -233,7 +233,8 @@ public class Train {
|
||||
list.addTo(win);
|
||||
|
||||
Form form = new Form();
|
||||
new Input(Plan.ACTION, Plan.ACTION_ADD_TRAIN).hideIn(form);
|
||||
new Input(ACTION, ACTION_ADD).hideIn(form);
|
||||
new Input(REALM,REALM_TRAIN).hideIn(form);
|
||||
Fieldset fieldset = new Fieldset(t("add new train"));
|
||||
new Input(Train.NAME, t("new train")).addTo(new Label(t("Name:")+" ")).addTo(fieldset);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user