Adjusted LogicUI to new Wire / WireEnd concept
authorDaniel Kirschten <daniel.kirschten@gmx.de>
Mon, 20 May 2019 19:21:26 +0000 (21:21 +0200)
committerDaniel Kirschten <daniel.kirschten@gmx.de>
Mon, 20 May 2019 19:21:26 +0000 (21:21 +0200)
LogicUI/src/era/mi/gui/components/BasicGUIComponent.java
LogicUI/src/era/mi/gui/components/GUIAndGate.java
LogicUI/src/era/mi/gui/components/GUIManualSwitch.java
LogicUI/src/era/mi/gui/components/GUIMerger.java
LogicUI/src/era/mi/gui/components/GUIMux.java
LogicUI/src/era/mi/gui/components/GUINotGate.java
LogicUI/src/era/mi/gui/components/GUIOrGate.java
LogicUI/src/era/mi/gui/components/GUISplitter.java
LogicUI/src/era/mi/gui/examples/RSLatchGUIExample.java
LogicUI/src/era/mi/gui/wires/GUIWire.java
LogicUI/src/era/mi/gui/wires/WireConnectionPoint.java

index daebd43..db99454 100644 (file)
@@ -1,6 +1,6 @@
 package era.mi.gui.components;\r
 \r
-import era.mi.logic.wires.WireArray;\r
+import era.mi.logic.wires.Wire.WireEnd;\r
 import net.haspamelodica.swt.helper.gcs.GeneralGC;\r
 import net.haspamelodica.swt.helper.swtobjectwrappers.Point;\r
 import net.haspamelodica.swt.helper.swtobjectwrappers.Rectangle;\r
@@ -30,15 +30,15 @@ public interface BasicGUIComponent
         * Returns how many wire arrays are connected to this component. (Connections are static - they can't be removed and no new ones can be\r
         * added)\r
         */\r
-       public int getConnectedWireArraysCount();\r
+       public int getConnectedWireEndsCount();\r
 \r
        /**\r
         * Returns the n-th wire array connected to this component.\r
         */\r
-       public WireArray getConnectedWireArray(int connectionIndex);\r
+       public WireEnd getConnectedWireEnd(int connectionIndex);\r
 \r
        /**\r
         * Returns relative coordinates where the n-th wire array is connected to this component.\r
         */\r
-       public Point getWireArrayConnectionPoint(int connectionIndex);\r
+       public Point getWireEndConnectionPoint(int connectionIndex);\r
 }
\ No newline at end of file
index a08d123..ef38653 100644 (file)
@@ -6,7 +6,7 @@ import java.util.Collections;
 import java.util.List;\r
 \r
 import era.mi.logic.components.gates.AndGate;\r
-import era.mi.logic.wires.WireArray;\r
+import era.mi.logic.wires.Wire.WireEnd;\r
 import net.haspamelodica.swt.helper.gcs.GeneralGC;\r
 import net.haspamelodica.swt.helper.swtobjectwrappers.Font;\r
 import net.haspamelodica.swt.helper.swtobjectwrappers.Point;\r
@@ -18,31 +18,31 @@ public class GUIAndGate extends AndGate implements BasicGUIComponent
 \r
        private final int inputCount;\r
        private final double height;\r
-       private final List<WireArray> connectedWireArrays;\r
-       private final List<Point> wireArrayConnectionPoints;\r
+       private final List<WireEnd> connectedWireEnds;\r
+       private final List<Point> wireEndConnectionPoints;\r
 \r
-       public GUIAndGate(int processTime, WireArray out, WireArray... in)\r
+       public GUIAndGate(int processTime, WireEnd out, WireEnd... in)\r
        {\r
                super(processTime, out, in);\r
 \r
-               List<WireArray> connectedWireArraysModifiable = new ArrayList<>();\r
-               List<Point> wireArrayConnectionPointsModifiable = new ArrayList<>();\r
+               List<WireEnd> connectedWireEndsModifiable = new ArrayList<>();\r
+               List<Point> wireEndConnectionPointsModifiable = new ArrayList<>();\r
 \r
                this.inputCount = in.length;\r
                this.height = inputCount * 10;\r
 \r
                {\r
-                       connectedWireArraysModifiable.addAll(Arrays.asList(in));\r
+                       connectedWireEndsModifiable.addAll(Arrays.asList(in));\r
                        double inputHeight = 5;\r
                        for (int i = 0; i < inputCount; i++, inputHeight += 10)\r
-                               wireArrayConnectionPointsModifiable.add(new Point(0, inputHeight));\r
+                               wireEndConnectionPointsModifiable.add(new Point(0, inputHeight));\r
                }\r
 \r
-               connectedWireArraysModifiable.add(out);\r
-               wireArrayConnectionPointsModifiable.add(new Point(20, height / 2));\r
+               connectedWireEndsModifiable.add(out);\r
+               wireEndConnectionPointsModifiable.add(new Point(20, height / 2));\r
 \r
-               this.connectedWireArrays = Collections.unmodifiableList(connectedWireArraysModifiable);\r
-               this.wireArrayConnectionPoints = Collections.unmodifiableList(wireArrayConnectionPointsModifiable);\r
+               this.connectedWireEnds = Collections.unmodifiableList(connectedWireEndsModifiable);\r
+               this.wireEndConnectionPoints = Collections.unmodifiableList(wireEndConnectionPointsModifiable);\r
        }\r
 \r
        @Override\r
@@ -64,20 +64,20 @@ public class GUIAndGate extends AndGate implements BasicGUIComponent
        }\r
 \r
        @Override\r
-       public int getConnectedWireArraysCount()\r
+       public int getConnectedWireEndsCount()\r
        {\r
-               return connectedWireArrays.size();\r
+               return connectedWireEnds.size();\r
        }\r
 \r
        @Override\r
-       public WireArray getConnectedWireArray(int connectionIndex)\r
+       public WireEnd getConnectedWireEnd(int connectionIndex)\r
        {\r
-               return connectedWireArrays.get(connectionIndex);\r
+               return connectedWireEnds.get(connectionIndex);\r
        }\r
 \r
        @Override\r
-       public Point getWireArrayConnectionPoint(int connectionI)\r
+       public Point getWireEndConnectionPoint(int connectionI)\r
        {\r
-               return wireArrayConnectionPoints.get(connectionI);\r
+               return wireEndConnectionPoints.get(connectionI);\r
        }\r
 }
\ No newline at end of file
index a4d0c23..704bf76 100644 (file)
@@ -6,9 +6,9 @@ import java.util.HashMap;
 import java.util.List;\r
 import java.util.Map;\r
 \r
-import era.mi.logic.Bit;\r
 import era.mi.logic.components.ManualSwitch;\r
-import era.mi.logic.wires.WireArray;\r
+import era.mi.logic.types.Bit;\r
+import era.mi.logic.wires.Wire.WireEnd;\r
 import net.haspamelodica.swt.helper.gcs.GeneralGC;\r
 import net.haspamelodica.swt.helper.swtobjectwrappers.Font;\r
 import net.haspamelodica.swt.helper.swtobjectwrappers.Point;\r
@@ -28,24 +28,24 @@ public class GUIManualSwitch extends ManualSwitch implements BasicGUIComponent
                bitNames = Collections.unmodifiableMap(bitNamesModifiable);\r
        }\r
 \r
-       private final WireArray wa;\r
-       private final List<WireArray> connectedWireArrays;\r
-       private final List<Point> wireArrayConnectionPoints;\r
+       private final WireEnd we;\r
+       private final List<WireEnd> connectedWireEnds;\r
+       private final List<Point> wireEndConnectionPoints;\r
 \r
-       public GUIManualSwitch(WireArray output)\r
+       public GUIManualSwitch(WireEnd output)\r
        {\r
                super(output);\r
 \r
-               this.wa = output;\r
+               this.we = output;\r
 \r
-               List<WireArray> connectedWireArraysModifiable = new ArrayList<>();\r
-               List<Point> wireArrayConnectionPointsModifiable = new ArrayList<>();\r
+               List<WireEnd> connectedWireEndsModifiable = new ArrayList<>();\r
+               List<Point> wireEndConnectionPointsModifiable = new ArrayList<>();\r
 \r
-               connectedWireArraysModifiable.add(output);\r
-               wireArrayConnectionPointsModifiable.add(new Point(20, 7.5));\r
+               connectedWireEndsModifiable.add(output);\r
+               wireEndConnectionPointsModifiable.add(new Point(20, 7.5));\r
 \r
-               this.connectedWireArrays = Collections.unmodifiableList(connectedWireArraysModifiable);\r
-               this.wireArrayConnectionPoints = Collections.unmodifiableList(wireArrayConnectionPointsModifiable);\r
+               this.connectedWireEnds = Collections.unmodifiableList(connectedWireEndsModifiable);\r
+               this.wireEndConnectionPoints = Collections.unmodifiableList(wireEndConnectionPointsModifiable);\r
        }\r
 \r
        @Override\r
@@ -58,7 +58,7 @@ public class GUIManualSwitch extends ManualSwitch implements BasicGUIComponent
        public void render(GeneralGC gc)\r
        {\r
                gc.drawRectangle(0, 0, 20, 15);\r
-               String label = bitNames.get(wa.getValue());\r
+               String label = bitNames.get(we.getValue());\r
                Font oldFont = gc.getFont();\r
                Font labelFont = new Font(oldFont.getName(), 6, oldFont.getStyle());\r
                gc.setFont(labelFont);\r
@@ -75,20 +75,20 @@ public class GUIManualSwitch extends ManualSwitch implements BasicGUIComponent
        }\r
 \r
        @Override\r
-       public int getConnectedWireArraysCount()\r
+       public int getConnectedWireEndsCount()\r
        {\r
-               return connectedWireArrays.size();\r
+               return connectedWireEnds.size();\r
        }\r
 \r
        @Override\r
-       public WireArray getConnectedWireArray(int connectionIndex)\r
+       public WireEnd getConnectedWireEnd(int connectionIndex)\r
        {\r
-               return connectedWireArrays.get(connectionIndex);\r
+               return connectedWireEnds.get(connectionIndex);\r
        }\r
 \r
        @Override\r
-       public Point getWireArrayConnectionPoint(int connectionI)\r
+       public Point getWireEndConnectionPoint(int connectionI)\r
        {\r
-               return wireArrayConnectionPoints.get(connectionI);\r
+               return wireEndConnectionPoints.get(connectionI);\r
        }\r
 }
\ No newline at end of file
index 1bf8c80..60605fb 100644 (file)
@@ -6,7 +6,7 @@ import java.util.Collections;
 import java.util.List;\r
 \r
 import era.mi.logic.components.Merger;\r
-import era.mi.logic.wires.WireArray;\r
+import era.mi.logic.wires.Wire.WireEnd;\r
 import net.haspamelodica.swt.helper.gcs.GeneralGC;\r
 import net.haspamelodica.swt.helper.swtobjectwrappers.Point;\r
 import net.haspamelodica.swt.helper.swtobjectwrappers.Rectangle;\r
@@ -15,31 +15,31 @@ public class GUIMerger extends Merger implements BasicGUIComponent
 {\r
        private final int inputCount;\r
        private final double height;\r
-       private final List<WireArray> connectedWireArrays;\r
-       private final List<Point> wireArrayConnectionPoints;\r
+       private final List<WireEnd> connectedWireEnds;\r
+       private final List<Point> WireEndConnectionPoints;\r
 \r
-       public GUIMerger(WireArray union, WireArray... inputs)\r
+       public GUIMerger(WireEnd union, WireEnd... inputs)\r
        {\r
                super(union, inputs);\r
 \r
-               List<WireArray> connectedWireArraysModifiable = new ArrayList<>();\r
-               List<Point> wireArrayConnectionPointsModifiable = new ArrayList<>();\r
+               List<WireEnd> connectedWireEndsModifiable = new ArrayList<>();\r
+               List<Point> WireEndConnectionPointsModifiable = new ArrayList<>();\r
 \r
                this.inputCount = inputs.length;\r
                this.height = (inputCount - 1) * 10;\r
 \r
                {\r
-                       connectedWireArraysModifiable.addAll(Arrays.asList(inputs));\r
+                       connectedWireEndsModifiable.addAll(Arrays.asList(inputs));\r
                        double inputHeight = 0;\r
                        for (int i = 0; i < inputCount; i++, inputHeight += 10)\r
-                               wireArrayConnectionPointsModifiable.add(new Point(0, inputHeight));\r
+                               WireEndConnectionPointsModifiable.add(new Point(0, inputHeight));\r
                }\r
 \r
-               connectedWireArraysModifiable.add(union);\r
-               wireArrayConnectionPointsModifiable.add(new Point(20, height / 2));\r
+               connectedWireEndsModifiable.add(union);\r
+               WireEndConnectionPointsModifiable.add(new Point(20, height / 2));\r
 \r
-               this.connectedWireArrays = Collections.unmodifiableList(connectedWireArraysModifiable);\r
-               this.wireArrayConnectionPoints = Collections.unmodifiableList(wireArrayConnectionPointsModifiable);\r
+               this.connectedWireEnds = Collections.unmodifiableList(connectedWireEndsModifiable);\r
+               this.WireEndConnectionPoints = Collections.unmodifiableList(WireEndConnectionPointsModifiable);\r
        }\r
 \r
        @Override\r
@@ -59,20 +59,20 @@ public class GUIMerger extends Merger implements BasicGUIComponent
        }\r
 \r
        @Override\r
-       public int getConnectedWireArraysCount()\r
+       public int getConnectedWireEndsCount()\r
        {\r
-               return connectedWireArrays.size();\r
+               return connectedWireEnds.size();\r
        }\r
 \r
        @Override\r
-       public WireArray getConnectedWireArray(int connectionIndex)\r
+       public WireEnd getConnectedWireEnd(int connectionIndex)\r
        {\r
-               return connectedWireArrays.get(connectionIndex);\r
+               return connectedWireEnds.get(connectionIndex);\r
        }\r
 \r
        @Override\r
-       public Point getWireArrayConnectionPoint(int connectionI)\r
+       public Point getWireEndConnectionPoint(int connectionI)\r
        {\r
-               return wireArrayConnectionPoints.get(connectionI);\r
+               return WireEndConnectionPoints.get(connectionI);\r
        }\r
 }
\ No newline at end of file
index e753b14..c615539 100644 (file)
@@ -6,7 +6,7 @@ import java.util.Collections;
 import java.util.List;\r
 \r
 import era.mi.logic.components.Mux;\r
-import era.mi.logic.wires.WireArray;\r
+import era.mi.logic.wires.Wire.WireEnd;\r
 import net.haspamelodica.swt.helper.gcs.GeneralGC;\r
 import net.haspamelodica.swt.helper.swtobjectwrappers.Point;\r
 import net.haspamelodica.swt.helper.swtobjectwrappers.Rectangle;\r
@@ -14,10 +14,10 @@ import net.haspamelodica.swt.helper.swtobjectwrappers.Rectangle;
 public class GUIMux extends Mux implements BasicGUIComponent\r
 {\r
        private final double height;\r
-       private final List<WireArray> connectedWireArrays;\r
-       private final List<Point> wireArrayConnectionPoints;\r
+       private final List<WireEnd> connectedWireEnds;\r
+       private final List<Point> WireEndConnectionPoints;\r
 \r
-       public GUIMux(int processTime, WireArray out, WireArray select, WireArray... inputs)\r
+       public GUIMux(int processTime, WireEnd out, WireEnd select, WireEnd... inputs)\r
        {\r
                super(processTime, out, select, inputs);\r
 \r
@@ -26,25 +26,25 @@ public class GUIMux extends Mux implements BasicGUIComponent
                        height = 10;\r
                this.height = height;\r
 \r
-               List<WireArray> connectedWireArraysModifiable = new ArrayList<>();\r
-               List<Point> wireArrayConnectionPointsModifiable = new ArrayList<>();\r
+               List<WireEnd> connectedWireEndsModifiable = new ArrayList<>();\r
+               List<Point> WireEndConnectionPointsModifiable = new ArrayList<>();\r
 \r
-               connectedWireArraysModifiable.add(out);\r
-               wireArrayConnectionPointsModifiable.add(new Point(20, 10 + height / 2));\r
+               connectedWireEndsModifiable.add(out);\r
+               WireEndConnectionPointsModifiable.add(new Point(20, 10 + height / 2));\r
 \r
-               connectedWireArraysModifiable.add(select);\r
-               wireArrayConnectionPointsModifiable.add(new Point(10, 5));\r
+               connectedWireEndsModifiable.add(select);\r
+               WireEndConnectionPointsModifiable.add(new Point(10, 5));\r
 \r
                {\r
-                       connectedWireArraysModifiable.addAll(Arrays.asList(inputs));\r
+                       connectedWireEndsModifiable.addAll(Arrays.asList(inputs));\r
                        double inputHeightIncrement = (height + 20) / inputs.length;\r
                        double inputHeight = inputHeightIncrement / 2;\r
                        for (int i = 0; i < inputs.length; i++, inputHeight += inputHeightIncrement)\r
-                               wireArrayConnectionPointsModifiable.add(new Point(0, inputHeight));\r
+                               WireEndConnectionPointsModifiable.add(new Point(0, inputHeight));\r
                }\r
 \r
-               this.connectedWireArrays = Collections.unmodifiableList(connectedWireArraysModifiable);\r
-               this.wireArrayConnectionPoints = Collections.unmodifiableList(wireArrayConnectionPointsModifiable);\r
+               this.connectedWireEnds = Collections.unmodifiableList(connectedWireEndsModifiable);\r
+               this.WireEndConnectionPoints = Collections.unmodifiableList(WireEndConnectionPointsModifiable);\r
        }\r
 \r
        @Override\r
@@ -60,20 +60,20 @@ public class GUIMux extends Mux implements BasicGUIComponent
        }\r
 \r
        @Override\r
-       public int getConnectedWireArraysCount()\r
+       public int getConnectedWireEndsCount()\r
        {\r
-               return connectedWireArrays.size();\r
+               return connectedWireEnds.size();\r
        }\r
 \r
        @Override\r
-       public WireArray getConnectedWireArray(int connectionIndex)\r
+       public WireEnd getConnectedWireEnd(int connectionIndex)\r
        {\r
-               return connectedWireArrays.get(connectionIndex);\r
+               return connectedWireEnds.get(connectionIndex);\r
        }\r
 \r
        @Override\r
-       public Point getWireArrayConnectionPoint(int connectionI)\r
+       public Point getWireEndConnectionPoint(int connectionI)\r
        {\r
-               return wireArrayConnectionPoints.get(connectionI);\r
+               return WireEndConnectionPoints.get(connectionI);\r
        }\r
 }
\ No newline at end of file
index 71e1d13..5c4d080 100644 (file)
@@ -5,7 +5,7 @@ import java.util.Collections;
 import java.util.List;\r
 \r
 import era.mi.logic.components.gates.NotGate;\r
-import era.mi.logic.wires.WireArray;\r
+import era.mi.logic.wires.Wire.WireEnd;\r
 import net.haspamelodica.swt.helper.gcs.GeneralGC;\r
 import net.haspamelodica.swt.helper.swtobjectwrappers.Font;\r
 import net.haspamelodica.swt.helper.swtobjectwrappers.Point;\r
@@ -15,24 +15,24 @@ public class GUINotGate extends NotGate implements BasicGUIComponent
 {\r
        private static final String LABEL = "\u22651";// >=1\r
 \r
-       private final List<WireArray> connectedWireArrays;\r
-       private final List<Point> wireArrayConnectionPoints;\r
+       private final List<WireEnd> connectedWireEnds;\r
+       private final List<Point> WireEndConnectionPoints;\r
 \r
-       public GUINotGate(int processTime, WireArray in, WireArray out)\r
+       public GUINotGate(int processTime, WireEnd in, WireEnd out)\r
        {\r
                super(processTime, in, out);\r
 \r
-               List<WireArray> connectedWireArraysModifiable = new ArrayList<>();\r
-               List<Point> wireArrayConnectionPointsModifiable = new ArrayList<>();\r
+               List<WireEnd> connectedWireEndsModifiable = new ArrayList<>();\r
+               List<Point> WireEndConnectionPointsModifiable = new ArrayList<>();\r
 \r
-               connectedWireArraysModifiable.add(in);\r
-               wireArrayConnectionPointsModifiable.add(new Point(0, 5));\r
+               connectedWireEndsModifiable.add(in);\r
+               WireEndConnectionPointsModifiable.add(new Point(0, 5));\r
 \r
-               connectedWireArraysModifiable.add(out);\r
-               wireArrayConnectionPointsModifiable.add(new Point(20, 5));\r
+               connectedWireEndsModifiable.add(out);\r
+               WireEndConnectionPointsModifiable.add(new Point(20, 5));\r
 \r
-               this.connectedWireArrays = Collections.unmodifiableList(connectedWireArraysModifiable);\r
-               this.wireArrayConnectionPoints = Collections.unmodifiableList(wireArrayConnectionPointsModifiable);\r
+               this.connectedWireEnds = Collections.unmodifiableList(connectedWireEndsModifiable);\r
+               this.WireEndConnectionPoints = Collections.unmodifiableList(WireEndConnectionPointsModifiable);\r
        }\r
 \r
        @Override\r
@@ -55,20 +55,20 @@ public class GUINotGate extends NotGate implements BasicGUIComponent
        }\r
 \r
        @Override\r
-       public int getConnectedWireArraysCount()\r
+       public int getConnectedWireEndsCount()\r
        {\r
-               return connectedWireArrays.size();\r
+               return connectedWireEnds.size();\r
        }\r
 \r
        @Override\r
-       public WireArray getConnectedWireArray(int connectionIndex)\r
+       public WireEnd getConnectedWireEnd(int connectionIndex)\r
        {\r
-               return connectedWireArrays.get(connectionIndex);\r
+               return connectedWireEnds.get(connectionIndex);\r
        }\r
 \r
        @Override\r
-       public Point getWireArrayConnectionPoint(int connectionI)\r
+       public Point getWireEndConnectionPoint(int connectionI)\r
        {\r
-               return wireArrayConnectionPoints.get(connectionI);\r
+               return WireEndConnectionPoints.get(connectionI);\r
        }\r
 }
\ No newline at end of file
index 039dbe3..bd29b26 100644 (file)
@@ -6,7 +6,7 @@ import java.util.Collections;
 import java.util.List;\r
 \r
 import era.mi.logic.components.gates.OrGate;\r
-import era.mi.logic.wires.WireArray;\r
+import era.mi.logic.wires.Wire.WireEnd;\r
 import net.haspamelodica.swt.helper.gcs.GeneralGC;\r
 import net.haspamelodica.swt.helper.swtobjectwrappers.Font;\r
 import net.haspamelodica.swt.helper.swtobjectwrappers.Point;\r
@@ -18,31 +18,31 @@ public class GUIOrGate extends OrGate implements BasicGUIComponent
 \r
        private final int inputCount;\r
        private final double height;\r
-       private final List<WireArray> connectedWireArrays;\r
-       private final List<Point> wireArrayConnectionPoints;\r
+       private final List<WireEnd> connectedWireEnds;\r
+       private final List<Point> WireEndConnectionPoints;\r
 \r
-       public GUIOrGate(int processTime, WireArray out, WireArray... in)\r
+       public GUIOrGate(int processTime, WireEnd out, WireEnd... in)\r
        {\r
                super(processTime, out, in);\r
 \r
-               List<WireArray> connectedWireArraysModifiable = new ArrayList<>();\r
-               List<Point> wireArrayConnectionPointsModifiable = new ArrayList<>();\r
+               List<WireEnd> connectedWireEndsModifiable = new ArrayList<>();\r
+               List<Point> WireEndConnectionPointsModifiable = new ArrayList<>();\r
 \r
                this.inputCount = in.length;\r
                this.height = inputCount * 10;\r
 \r
                {\r
-                       connectedWireArraysModifiable.addAll(Arrays.asList(in));\r
+                       connectedWireEndsModifiable.addAll(Arrays.asList(in));\r
                        double inputHeight = 5;\r
                        for (int i = 0; i < inputCount; i++, inputHeight += 10)\r
-                               wireArrayConnectionPointsModifiable.add(new Point(0, inputHeight));\r
+                               WireEndConnectionPointsModifiable.add(new Point(0, inputHeight));\r
                }\r
 \r
-               connectedWireArraysModifiable.add(out);\r
-               wireArrayConnectionPointsModifiable.add(new Point(20, height / 2));\r
+               connectedWireEndsModifiable.add(out);\r
+               WireEndConnectionPointsModifiable.add(new Point(20, height / 2));\r
 \r
-               this.connectedWireArrays = Collections.unmodifiableList(connectedWireArraysModifiable);\r
-               this.wireArrayConnectionPoints = Collections.unmodifiableList(wireArrayConnectionPointsModifiable);\r
+               this.connectedWireEnds = Collections.unmodifiableList(connectedWireEndsModifiable);\r
+               this.WireEndConnectionPoints = Collections.unmodifiableList(WireEndConnectionPointsModifiable);\r
        }\r
 \r
        @Override\r
@@ -64,20 +64,20 @@ public class GUIOrGate extends OrGate implements BasicGUIComponent
        }\r
 \r
        @Override\r
-       public int getConnectedWireArraysCount()\r
+       public int getConnectedWireEndsCount()\r
        {\r
-               return connectedWireArrays.size();\r
+               return connectedWireEnds.size();\r
        }\r
 \r
        @Override\r
-       public WireArray getConnectedWireArray(int connectionIndex)\r
+       public WireEnd getConnectedWireEnd(int connectionIndex)\r
        {\r
-               return connectedWireArrays.get(connectionIndex);\r
+               return connectedWireEnds.get(connectionIndex);\r
        }\r
 \r
        @Override\r
-       public Point getWireArrayConnectionPoint(int connectionI)\r
+       public Point getWireEndConnectionPoint(int connectionI)\r
        {\r
-               return wireArrayConnectionPoints.get(connectionI);\r
+               return WireEndConnectionPoints.get(connectionI);\r
        }\r
 }
\ No newline at end of file
index c39e428..3979c81 100644 (file)
@@ -6,7 +6,7 @@ import java.util.Collections;
 import java.util.List;\r
 \r
 import era.mi.logic.components.Splitter;\r
-import era.mi.logic.wires.WireArray;\r
+import era.mi.logic.wires.Wire.WireEnd;\r
 import net.haspamelodica.swt.helper.gcs.GeneralGC;\r
 import net.haspamelodica.swt.helper.swtobjectwrappers.Point;\r
 import net.haspamelodica.swt.helper.swtobjectwrappers.Rectangle;\r
@@ -15,31 +15,31 @@ public class GUISplitter extends Splitter implements BasicGUIComponent
 {\r
        private final int outputCount;\r
        private final double height;\r
-       private final List<WireArray> connectedWireArrays;\r
-       private final List<Point> wireArrayConnectionPoints;\r
+       private final List<WireEnd> connectedWireEnds;\r
+       private final List<Point> WireEndConnectionPoints;\r
 \r
-       public GUISplitter(WireArray input, WireArray... outputs)\r
+       public GUISplitter(WireEnd input, WireEnd... outputs)\r
        {\r
                super(input, outputs);\r
 \r
-               List<WireArray> connectedWireArraysModifiable = new ArrayList<>();\r
-               List<Point> wireArrayConnectionPointsModifiable = new ArrayList<>();\r
+               List<WireEnd> connectedWireEndsModifiable = new ArrayList<>();\r
+               List<Point> WireEndConnectionPointsModifiable = new ArrayList<>();\r
 \r
                this.outputCount = outputs.length;\r
                this.height = (outputCount - 1) * 10;\r
 \r
-               connectedWireArraysModifiable.add(input);\r
-               wireArrayConnectionPointsModifiable.add(new Point(0, height / 2));\r
+               connectedWireEndsModifiable.add(input);\r
+               WireEndConnectionPointsModifiable.add(new Point(0, height / 2));\r
 \r
                {\r
-                       connectedWireArraysModifiable.addAll(Arrays.asList(outputs));\r
+                       connectedWireEndsModifiable.addAll(Arrays.asList(outputs));\r
                        double outputHeight = 0;\r
                        for (int i = 0; i < outputCount; i++, outputHeight += 10)\r
-                               wireArrayConnectionPointsModifiable.add(new Point(20, outputHeight));\r
+                               WireEndConnectionPointsModifiable.add(new Point(20, outputHeight));\r
                }\r
 \r
-               this.connectedWireArrays = Collections.unmodifiableList(connectedWireArraysModifiable);\r
-               this.wireArrayConnectionPoints = Collections.unmodifiableList(wireArrayConnectionPointsModifiable);\r
+               this.connectedWireEnds = Collections.unmodifiableList(connectedWireEndsModifiable);\r
+               this.WireEndConnectionPoints = Collections.unmodifiableList(WireEndConnectionPointsModifiable);\r
        }\r
 \r
        @Override\r
@@ -59,20 +59,20 @@ public class GUISplitter extends Splitter implements BasicGUIComponent
        }\r
 \r
        @Override\r
-       public int getConnectedWireArraysCount()\r
+       public int getConnectedWireEndsCount()\r
        {\r
-               return connectedWireArrays.size();\r
+               return connectedWireEnds.size();\r
        }\r
 \r
        @Override\r
-       public WireArray getConnectedWireArray(int connectionIndex)\r
+       public WireEnd getConnectedWireEnd(int connectionIndex)\r
        {\r
-               return connectedWireArrays.get(connectionIndex);\r
+               return connectedWireEnds.get(connectionIndex);\r
        }\r
 \r
        @Override\r
-       public Point getWireArrayConnectionPoint(int connectionI)\r
+       public Point getWireEndConnectionPoint(int connectionI)\r
        {\r
-               return wireArrayConnectionPoints.get(connectionI);\r
+               return WireEndConnectionPoints.get(connectionI);\r
        }\r
 }
\ No newline at end of file
index e5890d7..df4ff0c 100644 (file)
@@ -6,7 +6,7 @@ import era.mi.gui.components.GUINotGate;
 import era.mi.gui.components.GUIOrGate;\r
 import era.mi.gui.wires.WireConnectionPoint;\r
 import era.mi.logic.Simulation;\r
-import era.mi.logic.wires.WireArray;\r
+import era.mi.logic.wires.Wire;\r
 import net.haspamelodica.swt.helper.swtobjectwrappers.Point;\r
 \r
 public class RSLatchGUIExample\r
@@ -25,19 +25,19 @@ public class RSLatchGUIExample
        private static void initComponents(LogicUI ui)\r
        {\r
                Simulation.TIMELINE.reset();\r
-               WireArray r = new WireArray(1, WIRE_DELAY);\r
-               WireArray s = new WireArray(1, WIRE_DELAY);\r
-               WireArray t2 = new WireArray(1, WIRE_DELAY);\r
-               WireArray t1 = new WireArray(1, WIRE_DELAY);\r
-               WireArray q = new WireArray(1, WIRE_DELAY);\r
-               WireArray nq = new WireArray(1, WIRE_DELAY);\r
+               Wire r = new Wire(1, WIRE_DELAY);\r
+               Wire s = new Wire(1, WIRE_DELAY);\r
+               Wire t2 = new Wire(1, WIRE_DELAY);\r
+               Wire t1 = new Wire(1, WIRE_DELAY);\r
+               Wire q = new Wire(1, WIRE_DELAY);\r
+               Wire nq = new Wire(1, WIRE_DELAY);\r
 \r
-               GUIManualSwitch rIn = ui.addComponent(new GUIManualSwitch(r), 100, 100);\r
-               GUIManualSwitch sIn = ui.addComponent(new GUIManualSwitch(s), 100, 200);\r
-               GUIOrGate or1 = ui.addComponent(new GUIOrGate(OR_DELAY, t1, r, nq), 160, 102.5);\r
-               GUIOrGate or2 = ui.addComponent(new GUIOrGate(OR_DELAY, t2, q, s), 160, 192.5);\r
-               GUINotGate not1 = ui.addComponent(new GUINotGate(NOT_DELAY, t1, q), 200, 107.5);\r
-               GUINotGate not2 = ui.addComponent(new GUINotGate(NOT_DELAY, t2, nq), 200, 197.5);\r
+               GUIManualSwitch rIn = ui.addComponent(new GUIManualSwitch(r.createEnd()), 100, 100);\r
+               GUIManualSwitch sIn = ui.addComponent(new GUIManualSwitch(s.createEnd()), 100, 200);\r
+               GUIOrGate or1 = ui.addComponent(new GUIOrGate(OR_DELAY, t1.createEnd(), r.createReadOnlyEnd(), nq.createReadOnlyEnd()), 160, 102.5);\r
+               GUIOrGate or2 = ui.addComponent(new GUIOrGate(OR_DELAY, t2.createEnd(), q.createReadOnlyEnd(), s.createReadOnlyEnd()), 160, 192.5);\r
+               GUINotGate not1 = ui.addComponent(new GUINotGate(NOT_DELAY, t1.createReadOnlyEnd(), q.createEnd()), 200, 107.5);\r
+               GUINotGate not2 = ui.addComponent(new GUINotGate(NOT_DELAY, t2.createReadOnlyEnd(), nq.createEnd()), 200, 197.5);\r
 \r
                WireConnectionPoint p1 = ui.addComponent(new WireConnectionPoint(q, 3), 250, 112.5);\r
                WireConnectionPoint p2 = ui.addComponent(new WireConnectionPoint(nq, 3), 250, 202.5);\r
index 977b95f..7225e8e 100644 (file)
@@ -6,24 +6,24 @@ import org.eclipse.swt.SWT;
 import org.eclipse.swt.graphics.Color;\r
 \r
 import era.mi.gui.components.BasicGUIComponent;\r
-import era.mi.logic.Bit;\r
-import era.mi.logic.wires.WireArray;\r
+import era.mi.logic.types.Bit;\r
+import era.mi.logic.wires.Wire;\r
 import net.haspamelodica.swt.helper.gcs.GeneralGC;\r
 import net.haspamelodica.swt.helper.swtobjectwrappers.Point;\r
 \r
 public class GUIWire\r
 {\r
-       private final WireArray wa;\r
+       private final Wire wire;\r
        private final double[] path;\r
 \r
        public GUIWire(Runnable redraw, BasicGUIComponent component1, int component1ConnectionIndex, Point component1Pos,\r
                        BasicGUIComponent component2, int component2ConnectionIndex, Point component2Pos, Point... path)\r
        {\r
-               this.wa = component1.getConnectedWireArray(component1ConnectionIndex);\r
-               if (!Objects.equals(wa, component2.getConnectedWireArray(component2ConnectionIndex)))\r
+               this.wire = component1.getConnectedWireEnd(component1ConnectionIndex).getWire();\r
+               if (!Objects.equals(wire, component2.getConnectedWireEnd(component2ConnectionIndex).getWire()))\r
                        throw new IllegalArgumentException("Given connection points are not connected!");\r
                this.path = new double[path.length * 2 + 4];\r
-               Point component1ConnectionPoint = component1.getWireArrayConnectionPoint(component1ConnectionIndex);\r
+               Point component1ConnectionPoint = component1.getWireEndConnectionPoint(component1ConnectionIndex);\r
                this.path[0] = component1Pos.x + component1ConnectionPoint.x;\r
                this.path[1] = component1Pos.y + component1ConnectionPoint.y;\r
                for (int srcI = 0, dstI = 2; srcI < path.length; srcI++, dstI += 2)\r
@@ -31,18 +31,18 @@ public class GUIWire
                        this.path[dstI + 0] = path[srcI].x;\r
                        this.path[dstI + 1] = path[srcI].y;\r
                }\r
-               Point component2ConnectionPoint = component2.getWireArrayConnectionPoint(component2ConnectionIndex);\r
+               Point component2ConnectionPoint = component2.getWireEndConnectionPoint(component2ConnectionIndex);\r
                this.path[this.path.length - 2] = component2Pos.x + component2ConnectionPoint.x;\r
                this.path[this.path.length - 1] = component2Pos.y + component2ConnectionPoint.y;\r
 \r
-               wa.addObserver((initiator, oldValues) -> redraw.run());\r
+               wire.addObserver((initiator, oldValues) -> redraw.run());\r
        }\r
 \r
        public void render(GeneralGC gc)\r
        {\r
                Color oldFG = gc.getForeground();\r
-               if (wa.length == 1)\r
-                       gc.setForeground(gc.getDevice().getSystemColor(getSWTColorConstantForBit(wa.getValue())));\r
+               if (wire.length == 1)\r
+                       gc.setForeground(gc.getDevice().getSystemColor(getSWTColorConstantForBit(wire.getValue())));\r
                gc.drawPolyline(path);\r
                gc.setForeground(oldFG);\r
        }\r
index 4b10f1c..33d38df 100644 (file)
@@ -1,21 +1,31 @@
 package era.mi.gui.wires;\r
 \r
+import java.util.ArrayList;\r
+import java.util.Collections;\r
+import java.util.List;\r
+\r
 import org.eclipse.swt.graphics.Color;\r
 \r
 import era.mi.gui.components.BasicGUIComponent;\r
-import era.mi.logic.wires.WireArray;\r
+import era.mi.logic.wires.Wire;\r
+import era.mi.logic.wires.Wire.WireEnd;\r
 import net.haspamelodica.swt.helper.gcs.GeneralGC;\r
 import net.haspamelodica.swt.helper.swtobjectwrappers.Point;\r
 import net.haspamelodica.swt.helper.swtobjectwrappers.Rectangle;\r
 \r
 public class WireConnectionPoint implements BasicGUIComponent\r
 {\r
-       private final WireArray wa;\r
+       private final Wire wire;\r
+       private final List<WireEnd> wireEnds;\r
        private final int wiresCrossing;\r
 \r
-       public WireConnectionPoint(WireArray wa, int wiresCrossing)\r
+       public WireConnectionPoint(Wire wire, int wiresCrossing)\r
        {\r
-               this.wa = wa;\r
+               this.wire = wire;\r
+               List<WireEnd> wireEndsModifiable = new ArrayList<>();\r
+               for (int i = 0; i < wiresCrossing; i++)\r
+                       wireEndsModifiable.add(wire.createReadOnlyEnd());\r
+               wireEnds = Collections.unmodifiableList(wireEndsModifiable);\r
                this.wiresCrossing = wiresCrossing;\r
        }\r
 \r
@@ -23,8 +33,8 @@ public class WireConnectionPoint implements BasicGUIComponent
        public void render(GeneralGC gc)\r
        {\r
                Color oldBG = gc.getBackground();\r
-               if (wa.length == 1)\r
-                       gc.setBackground(gc.getDevice().getSystemColor(GUIWire.getSWTColorConstantForBit(wa.getValue())));\r
+               if (wire.length == 1)\r
+                       gc.setBackground(gc.getDevice().getSystemColor(GUIWire.getSWTColorConstantForBit(wire.getValue())));\r
                gc.fillOval(-1, -1, 2, 2);\r
                gc.setBackground(oldBG);\r
        }\r
@@ -36,19 +46,19 @@ public class WireConnectionPoint implements BasicGUIComponent
        }\r
 \r
        @Override\r
-       public int getConnectedWireArraysCount()\r
+       public int getConnectedWireEndsCount()\r
        {\r
                return wiresCrossing;\r
        }\r
 \r
        @Override\r
-       public WireArray getConnectedWireArray(int connectionIndex)\r
+       public WireEnd getConnectedWireEnd(int connectionIndex)\r
        {\r
-               return wa;\r
+               return wireEnds.get(connectionIndex);\r
        }\r
 \r
        @Override\r
-       public Point getWireArrayConnectionPoint(int connectionIndex)\r
+       public Point getWireEndConnectionPoint(int connectionIndex)\r
        {\r
                return new Point(0, 0);\r
        }\r