diff --git a/css/style.css b/css/style.css index f3de76b..ddfdd07 100644 --- a/css/style.css +++ b/css/style.css @@ -7,8 +7,8 @@ svg polygon, svg rect{ - fill:rgb(0,0,255); - stroke-width:3; + fill:rgb(0,255,255); + stroke-width:5; stroke:rgb(0,0,0); } diff --git a/pom.xml b/pom.xml new file mode 100644 index 0000000..58d5446 --- /dev/null +++ b/pom.xml @@ -0,0 +1,64 @@ + + 4.0.0 + de.srsoftware + web4rail + 0.0.1 + Web4Rail + Java Model Railway Control + https://github.com/StephanRichter/Web4Rail + + SRSoftware + https://srsoftware.de + + + + + MIT License + http://www.opensource.org/licenses/mit-license.php + + + + + + Stephan Richter + s.richter@srsoftware.de + SRSoftware + http://www.srsoftware.de + + + + + + de.srsoftware + tools + 1.1.6 + compile + + + de.srsoftware + local-config + 0.0.7 + compile + + + de.srsoftware + tools.translations + 1.1.2 + compile + + + + + + + maven-compiler-plugin + 3.8.0 + + 11 + + + + + \ No newline at end of file diff --git a/src/main/java/de/srsoftware/web4rail/Application.java b/src/main/java/de/srsoftware/web4rail/Application.java index a43b8e5..f1bde47 100644 --- a/src/main/java/de/srsoftware/web4rail/Application.java +++ b/src/main/java/de/srsoftware/web4rail/Application.java @@ -20,6 +20,7 @@ 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; @@ -42,6 +43,7 @@ public class Application { 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)); diff --git a/src/main/java/de/srsoftware/web4rail/Plan.java b/src/main/java/de/srsoftware/web4rail/Plan.java index eca09b5..abf54b1 100644 --- a/src/main/java/de/srsoftware/web4rail/Plan.java +++ b/src/main/java/de/srsoftware/web4rail/Plan.java @@ -1,5 +1,6 @@ package de.srsoftware.web4rail; +import java.io.IOException; import java.util.HashMap; import java.util.Map.Entry; @@ -25,7 +26,7 @@ public class Plan { return column == null ? null : column.get(y); } - public Page html() { + public Page html() throws IOException { Page page = new Page(); for (Entry> column : tiles.entrySet()) { int x = column.getKey(); diff --git a/src/main/java/de/srsoftware/web4rail/tiles/DiagNE.java b/src/main/java/de/srsoftware/web4rail/tiles/DiagNE.java index dbb4104..26b6c2d 100644 --- a/src/main/java/de/srsoftware/web4rail/tiles/DiagNE.java +++ b/src/main/java/de/srsoftware/web4rail/tiles/DiagNE.java @@ -1,20 +1,5 @@ package de.srsoftware.web4rail.tiles; -import de.srsoftware.tools.Tag; - public class DiagNE extends Tile{ - public String html() { - Tag svg = new Tag("svg") - .id("tile-"+x+"-"+y) - .clazz(classes) - .size(100,100) - .attr("viewbox", "0 0 100 100") - .style("left: "+(30*x)+"px; top: "+(30*y)+"px"); - - new Tag("polygon") - .attr("points","35,0 65,0 100,35 100,65") - .addTo(svg); - - return svg.toString(); - } + } diff --git a/src/main/java/de/srsoftware/web4rail/tiles/DiagSW.java b/src/main/java/de/srsoftware/web4rail/tiles/DiagSW.java index cd2a2eb..6ed33f6 100644 --- a/src/main/java/de/srsoftware/web4rail/tiles/DiagSW.java +++ b/src/main/java/de/srsoftware/web4rail/tiles/DiagSW.java @@ -1,20 +1,5 @@ package de.srsoftware.web4rail.tiles; -import de.srsoftware.tools.Tag; - public class DiagSW extends Tile{ - public String html() { - Tag svg = new Tag("svg") - .id("tile-"+x+"-"+y) - .clazz(classes) - .size(100,100) - .attr("viewbox", "0 0 100 100") - .style("left: "+(30*x)+"px; top: "+(30*y)+"px"); - - new Tag("polygon") - .attr("points","0,35 65,100 35,100 0,65") - .addTo(svg); - - return svg.toString(); - } + } diff --git a/src/main/java/de/srsoftware/web4rail/tiles/DiagWN.java b/src/main/java/de/srsoftware/web4rail/tiles/DiagWN.java index f41e7ba..e8f82a9 100644 --- a/src/main/java/de/srsoftware/web4rail/tiles/DiagWN.java +++ b/src/main/java/de/srsoftware/web4rail/tiles/DiagWN.java @@ -1,20 +1,4 @@ package de.srsoftware.web4rail.tiles; -import de.srsoftware.tools.Tag; - public class DiagWN extends Tile{ - public String html() { - Tag svg = new Tag("svg") - .id("tile-"+x+"-"+y) - .clazz(classes) - .size(100,100) - .attr("viewbox", "0 0 100 100") - .style("left: "+(30*x)+"px; top: "+(30*y)+"px"); - - new Tag("polygon") - .attr("points","35,0 65,0 0,65 0,35") - .addTo(svg); - - return svg.toString(); - } } diff --git a/src/main/java/de/srsoftware/web4rail/tiles/EndE.java b/src/main/java/de/srsoftware/web4rail/tiles/EndE.java index f2ba47d..5aaa474 100644 --- a/src/main/java/de/srsoftware/web4rail/tiles/EndE.java +++ b/src/main/java/de/srsoftware/web4rail/tiles/EndE.java @@ -1,22 +1,4 @@ package de.srsoftware.web4rail.tiles; -import de.srsoftware.tools.Tag; - public class EndE extends Tile{ - public String html() { - Tag svg = new Tag("svg") - .id("tile-"+x+"-"+y) - .clazz(classes) - .size(100,100) - .attr("viewbox", "0 0 100 100") - .style("left: "+(30*x)+"px; top: "+(30*y)+"px"); - - new Tag("rect") - .size(60,30) - .pos(40,35) - .addTo(svg); - - return svg.toString(); - } - } diff --git a/src/main/java/de/srsoftware/web4rail/tiles/EndW.java b/src/main/java/de/srsoftware/web4rail/tiles/EndW.java new file mode 100644 index 0000000..f0439e6 --- /dev/null +++ b/src/main/java/de/srsoftware/web4rail/tiles/EndW.java @@ -0,0 +1,5 @@ +package de.srsoftware.web4rail.tiles; + +import de.srsoftware.tools.Tag; + +public class EndW extends Tile{} diff --git a/src/main/java/de/srsoftware/web4rail/tiles/StraightH.java b/src/main/java/de/srsoftware/web4rail/tiles/StraightH.java index c89bf11..155cc13 100644 --- a/src/main/java/de/srsoftware/web4rail/tiles/StraightH.java +++ b/src/main/java/de/srsoftware/web4rail/tiles/StraightH.java @@ -1,21 +1,4 @@ package de.srsoftware.web4rail.tiles; -import de.srsoftware.tools.Tag; - public class StraightH extends StretchableTile{ - public String html() { - Tag svg = new Tag("svg") - .id("tile-"+x+"-"+y) - .clazz(classes) - .size(100,100) - .attr("viewbox", "0 0 100 100") - .style("left: "+(30*x)+"px; top: "+(30*y)+"px"); - - new Tag("rect") - .size(100,30) - .pos(0,35) - .addTo(svg); - - return svg.toString(); - } } diff --git a/src/main/java/de/srsoftware/web4rail/tiles/StraightV.java b/src/main/java/de/srsoftware/web4rail/tiles/StraightV.java index 9cf0a82..94f5201 100644 --- a/src/main/java/de/srsoftware/web4rail/tiles/StraightV.java +++ b/src/main/java/de/srsoftware/web4rail/tiles/StraightV.java @@ -1,21 +1,5 @@ package de.srsoftware.web4rail.tiles; -import de.srsoftware.tools.Tag; - public class StraightV extends StretchableTile{ - public String html() { - Tag svg = new Tag("svg") - .id("tile-"+x+"-"+y) - .clazz(classes) - .size(100,100) - .attr("viewbox", "0 0 100 100") - .style("left: "+(30*x)+"px; top: "+(30*y)+"px"); - - new Tag("rect") - .size(30,100) - .pos(35,0) - .addTo(svg); - - return svg.toString(); - } + } diff --git a/src/main/java/de/srsoftware/web4rail/tiles/Tile.java b/src/main/java/de/srsoftware/web4rail/tiles/Tile.java index 6b77e33..b04b9d4 100644 --- a/src/main/java/de/srsoftware/web4rail/tiles/Tile.java +++ b/src/main/java/de/srsoftware/web4rail/tiles/Tile.java @@ -1,6 +1,10 @@ package de.srsoftware.web4rail.tiles; +import java.io.File; +import java.io.IOException; +import java.nio.charset.StandardCharsets; import java.util.HashSet; +import java.util.Scanner; import de.keawe.tools.translations.Translation; import de.srsoftware.tools.Tag; @@ -21,20 +25,33 @@ public abstract class Tile { return this; } - public String html() { + public String html() throws IOException { + Tag svg = new Tag("svg") .id("tile-"+x+"-"+y) .clazz(classes) .size(100,100) .attr("viewbox", "0 0 100 100") .style("left: "+(30*x)+"px; top: "+(30*y)+"px"); - new Tag("title").content(t("No display defined for this tile ({})",getClass().getSimpleName())).addTo(svg); - new Tag("text") + File file = new File(System.getProperty("user.dir")+"/svg/"+getClass().getSimpleName()+".svg"); + if (file.exists()) { + Scanner scanner = new Scanner(file, StandardCharsets.UTF_8); + StringBuffer sb = new StringBuffer(); + while (scanner.hasNextLine()) { + String line = scanner.nextLine(); + if (line.startsWith("")) continue; + sb.append(line+"\n"); + } + scanner.close(); + svg.content(sb.toString()); + } else { + new Tag("title").content(t("No display defined for this tile ({})",getClass().getSimpleName())).addTo(svg); + new Tag("text") .pos(35,70) .content("?") .addTo(svg); - + } return svg.toString(); } diff --git a/src/main/java/de/srsoftware/web4rail/tiles/TurnoutSE.java b/src/main/java/de/srsoftware/web4rail/tiles/TurnoutSE.java index 9944630..ee83b32 100644 --- a/src/main/java/de/srsoftware/web4rail/tiles/TurnoutSE.java +++ b/src/main/java/de/srsoftware/web4rail/tiles/TurnoutSE.java @@ -1,25 +1,4 @@ package de.srsoftware.web4rail.tiles; -import de.srsoftware.tools.Tag; - public class TurnoutSE extends Turnout{ - public String html() { - Tag svg = new Tag("svg") - .id("tile-"+x+"-"+y) - .clazz(classes) - .size(100,100) - .attr("viewbox", "0 0 100 100") - .style("left: "+(30*x)+"px; top: "+(30*y)+"px"); - - new Tag("rect") - .size(30,100) - .pos(35,0) - .addTo(svg); - - new Tag("polygon") - .attr("points","35,100 100,35 100,65 65,100") - .addTo(svg); - - return svg.toString(); - } } diff --git a/src/main/java/de/srsoftware/web4rail/tiles/TurnoutSW.java b/src/main/java/de/srsoftware/web4rail/tiles/TurnoutSW.java index 30b761f..fda194a 100644 --- a/src/main/java/de/srsoftware/web4rail/tiles/TurnoutSW.java +++ b/src/main/java/de/srsoftware/web4rail/tiles/TurnoutSW.java @@ -1,25 +1,5 @@ package de.srsoftware.web4rail.tiles; -import de.srsoftware.tools.Tag; - public class TurnoutSW extends Turnout{ - public String html() { - Tag svg = new Tag("svg") - .id("tile-"+x+"-"+y) - .clazz(classes) - .size(100,100) - .attr("viewbox", "0 0 100 100") - .style("left: "+(30*x)+"px; top: "+(30*y)+"px"); - - new Tag("rect") - .size(30,100) - .pos(35,0) - .addTo(svg); - - new Tag("polygon") - .attr("points","0,35 65,100 35,100 0,65") - .addTo(svg); - - return svg.toString(); - } + } diff --git a/src/main/java/de/srsoftware/web4rail/tiles/TurnoutWS.java b/src/main/java/de/srsoftware/web4rail/tiles/TurnoutWS.java index 2e841ee..2246d0e 100644 --- a/src/main/java/de/srsoftware/web4rail/tiles/TurnoutWS.java +++ b/src/main/java/de/srsoftware/web4rail/tiles/TurnoutWS.java @@ -1,25 +1,5 @@ package de.srsoftware.web4rail.tiles; -import de.srsoftware.tools.Tag; - public class TurnoutWS extends Turnout{ - public String html() { - Tag svg = new Tag("svg") - .id("tile-"+x+"-"+y) - .clazz(classes) - .size(100,100) - .attr("viewbox", "0 0 100 100") - .style("left: "+(30*x)+"px; top: "+(30*y)+"px"); - - new Tag("rect") - .size(100,30) - .pos(0,35) - .addTo(svg); - - new Tag("polygon") - .attr("points","0,35 65,100 35,100 0,65") - .addTo(svg); - - return svg.toString(); - } + } diff --git a/svg/DiagNE.svg b/svg/DiagNE.svg new file mode 100644 index 0000000..98b3cae --- /dev/null +++ b/svg/DiagNE.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/svg/DiagSW.svg b/svg/DiagSW.svg new file mode 100644 index 0000000..bd98f0a --- /dev/null +++ b/svg/DiagSW.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/svg/DiagWN.svg b/svg/DiagWN.svg new file mode 100644 index 0000000..52919aa --- /dev/null +++ b/svg/DiagWN.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/svg/EndE.svg b/svg/EndE.svg new file mode 100644 index 0000000..6e8f8a4 --- /dev/null +++ b/svg/EndE.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/svg/EndW.svg b/svg/EndW.svg new file mode 100644 index 0000000..cbbbb64 --- /dev/null +++ b/svg/EndW.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/svg/StraightH.svg b/svg/StraightH.svg new file mode 100644 index 0000000..4f713e6 --- /dev/null +++ b/svg/StraightH.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/svg/StraightV.svg b/svg/StraightV.svg new file mode 100644 index 0000000..57ee84e --- /dev/null +++ b/svg/StraightV.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/svg/TurnoutSE.svg b/svg/TurnoutSE.svg new file mode 100644 index 0000000..da2f755 --- /dev/null +++ b/svg/TurnoutSE.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/svg/TurnoutSW.svg b/svg/TurnoutSW.svg new file mode 100644 index 0000000..c944fc8 --- /dev/null +++ b/svg/TurnoutSW.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/svg/TurnoutWS.svg b/svg/TurnoutWS.svg new file mode 100644 index 0000000..6ced723 --- /dev/null +++ b/svg/TurnoutWS.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file