Browse Source

preparing property dialog

lookup-tables
Stephan Richter 5 years ago
parent
commit
b14b8fff15
  1. 17
      resources/css/style.css
  2. 24
      resources/js/plan.js
  3. 43
      src/main/java/de/srsoftware/web4rail/Application.java
  4. 7
      src/main/java/de/srsoftware/web4rail/Plan.java
  5. 14
      src/main/java/de/srsoftware/web4rail/Window.java
  6. 5
      src/main/java/de/srsoftware/web4rail/tiles/Tile.java

17
resources/css/style.css

@ -75,6 +75,23 @@ svg text{ @@ -75,6 +75,23 @@ svg text{
background: yellow;
}
#tile-properties{
position: fixed;
top: 10px;
bottom: 10px;
left: 10px;
right: 10px;
background: yellow;
}
.closebtn{
position: absolute;
right: 10px;
font-size: 30px;
background: gray;
color: white;
}
#Eraser polygon{
stroke: red;
}

24
resources/js/plan.js

@ -31,16 +31,34 @@ function addTile(x,y){ @@ -31,16 +31,34 @@ function addTile(x,y){
}
function bodyClick(ev){
console.log('bodyClick:',ev);
//console.log('bodyClick:',ev);
switch (mode){
case undefined:
case null: return;
case undefined:
case null:
return clickTile(ev.clientX,ev.clientY);
case ADD:
return addTile(ev.clientX,ev.clientY);
}
console.log(ev.clientX,ev.clientY);
}
function clickTile(x,y){
console.log("clickTile:",x,y);
x = Math.floor(x/SQUARE);
y = Math.floor(y/SQUARE);
if ($('#tile-'+x+'-'+y).length > 0){
$.ajax({
url : PLAN,
method : POST,
data : {action:'openProps',x:x,y:y},
success: function(resp){
$('body').append($(resp));
}
});
}
return false;
}
function closeMenu(ev){
console.log('closeMenu:',ev);
if (selected != null) $(selected).css('border','');

43
src/main/java/de/srsoftware/web4rail/Application.java

@ -22,16 +22,6 @@ import com.sun.net.httpserver.HttpServer; @@ -22,16 +22,6 @@ import com.sun.net.httpserver.HttpServer;
import de.keawe.localconfig.Configuration;
import de.keawe.tools.translations.Translation;
import de.srsoftware.web4rail.tiles.DiagNE;
import de.srsoftware.web4rail.tiles.DiagSW;
import de.srsoftware.web4rail.tiles.DiagWN;
import de.srsoftware.web4rail.tiles.EndE;
import de.srsoftware.web4rail.tiles.EndW;
import de.srsoftware.web4rail.tiles.StraightH;
import de.srsoftware.web4rail.tiles.StraightV;
import de.srsoftware.web4rail.tiles.TurnoutSE;
import de.srsoftware.web4rail.tiles.TurnoutSW;
import de.srsoftware.web4rail.tiles.TurnoutWS;
public class Application {
private static Plan plan;
@ -42,18 +32,6 @@ public class Application { @@ -42,18 +32,6 @@ public class Application {
public static void main(String[] args) throws IOException, ClassNotFoundException, InstantiationException, IllegalAccessException, IllegalArgumentException, InvocationTargetException, NoSuchMethodException, SecurityException {
Configuration config = new Configuration(Configuration.dir("Web4Rail")+"/app.config");
LOG.debug("Config: {}",config);
plan = Plan.load("default.plan");
/*plan = new Plan();
plan.set(0, 0, new StraightH());
plan.set(1, 0, new DiagSW());
plan.set(1, 1, new StraightV());
plan.set(1, 2, new DiagNE());
plan.set(2, 2, new TurnoutWS());
plan.set(3, 2, new DiagWN());
plan.set(3, 1, new TurnoutSE());
plan.set(3, 0, new TurnoutSW());
plan.set(2, 0, new EndE());
plan.set(4, 1, new EndW());*/
InetSocketAddress addr = new InetSocketAddress(config.getOrAdd(PORT, 8080));
HttpServer server = HttpServer.create(addr, 0);
server.createContext("/plan", client -> sendPlan(client));
@ -61,6 +39,7 @@ public class Application { @@ -61,6 +39,7 @@ public class Application {
server.createContext("/js" , client -> sendFile(client));
server.setExecutor(java.util.concurrent.Executors.newCachedThreadPool());
server.start();
plan = Plan.load("default.plan");
Desktop.getDesktop().browse(URI.create("http://localhost:"+config.getInt(PORT)+"/plan"));
}
@ -107,18 +86,16 @@ public class Application { @@ -107,18 +86,16 @@ public class Application {
return params;
}
private static void send(HttpExchange client, Page response) throws IOException {
byte[] html = response.html().toString().getBytes(UTF8);
client.getResponseHeaders().add("content-type", "text/html");
client.sendResponseHeaders(200, html.length);
OutputStream os = client.getResponseBody();
os.write(html);
os.close();
}
private static void send(HttpExchange client, Object response) throws IOException {
byte[] html;
if (response instanceof Page) {
html = ((Page)response).html().toString().getBytes(UTF8);
client.getResponseHeaders().add("content-type", "text/html");
} else {
html = response.toString().getBytes(UTF8);
client.getResponseHeaders().add("content-type", "text/plain");
}
private static void send(HttpExchange client, String response) throws IOException {
byte[] html = response.getBytes(UTF8);
client.getResponseHeaders().add("content-type", "text/plain");
client.sendResponseHeaders(200, html.length);
OutputStream os = client.getResponseBody();
os.write(html);

7
src/main/java/de/srsoftware/web4rail/Plan.java

@ -38,6 +38,7 @@ public class Plan { @@ -38,6 +38,7 @@ public class Plan {
private static final String X = "x";
private static final String Y = "y";
private static final String NAME = "name";
private static final String ACTION_PROPS = "openProps";
private HashMap<Integer,HashMap<Integer,Tile>> tiles = new HashMap<Integer,HashMap<Integer,Tile>>();
@ -105,7 +106,7 @@ public class Plan { @@ -105,7 +106,7 @@ public class Plan {
return menu;
}
public String process(HashMap<String, String> params) {
public Object process(HashMap<String, String> params) {
try {
String action = params.get(ACTION);
@ -116,6 +117,8 @@ public class Plan { @@ -116,6 +117,8 @@ public class Plan {
return t("Added {}",tile.getClass().getSimpleName());
case ACTION_SAVE:
return saveTo(params.get(NAME));
case ACTION_PROPS:
return Tile.propMenu();
default:
LOG.warn("Unknown action: {}",action);
}
@ -175,6 +178,4 @@ public class Plan { @@ -175,6 +178,4 @@ public class Plan {
tiles.append(new Eraser().html());
return new Tag("div").clazz("list").content(tiles.toString()).addTo(tileMenu);
}
}

14
src/main/java/de/srsoftware/web4rail/Window.java

@ -0,0 +1,14 @@ @@ -0,0 +1,14 @@
package de.srsoftware.web4rail;
import de.srsoftware.tools.Tag;
public class Window extends Tag{
private static final long serialVersionUID = 9035075889261889575L;
public Window(String id) {
super("div");
id(id);
new Tag("div").clazz("closebtn").attr("onclick", "$('#"+id+"').remove(); return false").content("&times;").addTo(this);
}
}

5
src/main/java/de/srsoftware/web4rail/tiles/Tile.java

@ -9,6 +9,7 @@ import java.util.Scanner; @@ -9,6 +9,7 @@ import java.util.Scanner;
import de.keawe.tools.translations.Translation;
import de.srsoftware.tools.Tag;
import de.srsoftware.web4rail.Application;
import de.srsoftware.web4rail.Window;
public abstract class Tile {
@ -61,4 +62,8 @@ public abstract class Tile { @@ -61,4 +62,8 @@ public abstract class Tile {
return Translation.get(Application.class, txt, fills);
}
public static Tag propMenu() {
return new Window("tile-properties").content("Eigenschaften...");
}
}

Loading…
Cancel
Save