Made LogicUI compatible with ReadEnd and ReadWriteEnd
authorFabian Stemmler <stemmler@in.tum.de>
Sat, 25 May 2019 18:04:31 +0000 (20:04 +0200)
committerFabian Stemmler <stemmler@in.tum.de>
Sat, 25 May 2019 18:04:31 +0000 (20:04 +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 db99454..bf13d3e 100644 (file)
@@ -1,6 +1,6 @@
 package era.mi.gui.components;\r
 \r
-import era.mi.logic.wires.Wire.WireEnd;\r
+import era.mi.logic.wires.Wire.ReadEnd;\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
@@ -35,7 +35,7 @@ public interface BasicGUIComponent
        /**\r
         * Returns the n-th wire array connected to this component.\r
         */\r
-       public WireEnd getConnectedWireEnd(int connectionIndex);\r
+       public ReadEnd getConnectedWireEnd(int connectionIndex);\r
 \r
        /**\r
         * Returns relative coordinates where the n-th wire array is connected to this component.\r
index ef38653..003d3a4 100644 (file)
@@ -6,7 +6,8 @@ import java.util.Collections;
 import java.util.List;\r
 \r
 import era.mi.logic.components.gates.AndGate;\r
-import era.mi.logic.wires.Wire.WireEnd;\r
+import era.mi.logic.wires.Wire.ReadEnd;\r
+import era.mi.logic.wires.Wire.ReadWriteEnd;\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,14 +19,14 @@ public class GUIAndGate extends AndGate implements BasicGUIComponent
 \r
        private final int inputCount;\r
        private final double height;\r
-       private final List<WireEnd> connectedWireEnds;\r
+       private final List<ReadEnd> connectedWireEnds;\r
        private final List<Point> wireEndConnectionPoints;\r
 \r
-       public GUIAndGate(int processTime, WireEnd out, WireEnd... in)\r
+       public GUIAndGate(int processTime, ReadWriteEnd out, ReadEnd... in)\r
        {\r
                super(processTime, out, in);\r
 \r
-               List<WireEnd> connectedWireEndsModifiable = new ArrayList<>();\r
+               List<ReadEnd> connectedWireEndsModifiable = new ArrayList<>();\r
                List<Point> wireEndConnectionPointsModifiable = new ArrayList<>();\r
 \r
                this.inputCount = in.length;\r
@@ -70,7 +71,7 @@ public class GUIAndGate extends AndGate implements BasicGUIComponent
        }\r
 \r
        @Override\r
-       public WireEnd getConnectedWireEnd(int connectionIndex)\r
+       public ReadEnd getConnectedWireEnd(int connectionIndex)\r
        {\r
                return connectedWireEnds.get(connectionIndex);\r
        }\r
index 704bf76..610364e 100644 (file)
@@ -8,7 +8,8 @@ import java.util.Map;
 \r
 import era.mi.logic.components.ManualSwitch;\r
 import era.mi.logic.types.Bit;\r
-import era.mi.logic.wires.Wire.WireEnd;\r
+import era.mi.logic.wires.Wire.ReadEnd;\r
+import era.mi.logic.wires.Wire.ReadWriteEnd;\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,17 +29,17 @@ public class GUIManualSwitch extends ManualSwitch implements BasicGUIComponent
                bitNames = Collections.unmodifiableMap(bitNamesModifiable);\r
        }\r
 \r
-       private final WireEnd we;\r
-       private final List<WireEnd> connectedWireEnds;\r
+       private final ReadEnd we;\r
+       private final List<ReadEnd> connectedWireEnds;\r
        private final List<Point> wireEndConnectionPoints;\r
 \r
-       public GUIManualSwitch(WireEnd output)\r
+       public GUIManualSwitch(ReadWriteEnd output)\r
        {\r
                super(output);\r
 \r
                this.we = output;\r
 \r
-               List<WireEnd> connectedWireEndsModifiable = new ArrayList<>();\r
+               List<ReadEnd> connectedWireEndsModifiable = new ArrayList<>();\r
                List<Point> wireEndConnectionPointsModifiable = new ArrayList<>();\r
 \r
                connectedWireEndsModifiable.add(output);\r
@@ -81,7 +82,7 @@ public class GUIManualSwitch extends ManualSwitch implements BasicGUIComponent
        }\r
 \r
        @Override\r
-       public WireEnd getConnectedWireEnd(int connectionIndex)\r
+       public ReadEnd getConnectedWireEnd(int connectionIndex)\r
        {\r
                return connectedWireEnds.get(connectionIndex);\r
        }\r
index 60605fb..1919e85 100644 (file)
@@ -6,7 +6,8 @@ import java.util.Collections;
 import java.util.List;\r
 \r
 import era.mi.logic.components.Merger;\r
-import era.mi.logic.wires.Wire.WireEnd;\r
+import era.mi.logic.wires.Wire.ReadEnd;\r
+import era.mi.logic.wires.Wire.ReadWriteEnd;\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,14 +16,14 @@ public class GUIMerger extends Merger implements BasicGUIComponent
 {\r
        private final int inputCount;\r
        private final double height;\r
-       private final List<WireEnd> connectedWireEnds;\r
+       private final List<ReadEnd> connectedWireEnds;\r
        private final List<Point> WireEndConnectionPoints;\r
 \r
-       public GUIMerger(WireEnd union, WireEnd... inputs)\r
+       public GUIMerger(ReadWriteEnd union, ReadEnd... inputs)\r
        {\r
                super(union, inputs);\r
 \r
-               List<WireEnd> connectedWireEndsModifiable = new ArrayList<>();\r
+               List<ReadEnd> connectedWireEndsModifiable = new ArrayList<>();\r
                List<Point> WireEndConnectionPointsModifiable = new ArrayList<>();\r
 \r
                this.inputCount = inputs.length;\r
@@ -65,7 +66,7 @@ public class GUIMerger extends Merger implements BasicGUIComponent
        }\r
 \r
        @Override\r
-       public WireEnd getConnectedWireEnd(int connectionIndex)\r
+       public ReadEnd getConnectedWireEnd(int connectionIndex)\r
        {\r
                return connectedWireEnds.get(connectionIndex);\r
        }\r
index c615539..2da1501 100644 (file)
@@ -6,7 +6,8 @@ import java.util.Collections;
 import java.util.List;\r
 \r
 import era.mi.logic.components.Mux;\r
-import era.mi.logic.wires.Wire.WireEnd;\r
+import era.mi.logic.wires.Wire.ReadEnd;\r
+import era.mi.logic.wires.Wire.ReadWriteEnd;\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 +15,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<WireEnd> connectedWireEnds;\r
+       private final List<ReadEnd> connectedWireEnds;\r
        private final List<Point> WireEndConnectionPoints;\r
 \r
-       public GUIMux(int processTime, WireEnd out, WireEnd select, WireEnd... inputs)\r
+       public GUIMux(int processTime, ReadWriteEnd out, ReadEnd select, ReadEnd... inputs)\r
        {\r
                super(processTime, out, select, inputs);\r
 \r
@@ -26,7 +27,7 @@ public class GUIMux extends Mux implements BasicGUIComponent
                        height = 10;\r
                this.height = height;\r
 \r
-               List<WireEnd> connectedWireEndsModifiable = new ArrayList<>();\r
+               List<ReadEnd> connectedWireEndsModifiable = new ArrayList<>();\r
                List<Point> WireEndConnectionPointsModifiable = new ArrayList<>();\r
 \r
                connectedWireEndsModifiable.add(out);\r
@@ -66,7 +67,7 @@ public class GUIMux extends Mux implements BasicGUIComponent
        }\r
 \r
        @Override\r
-       public WireEnd getConnectedWireEnd(int connectionIndex)\r
+       public ReadEnd getConnectedWireEnd(int connectionIndex)\r
        {\r
                return connectedWireEnds.get(connectionIndex);\r
        }\r
index 5c4d080..2b61bd1 100644 (file)
@@ -5,7 +5,8 @@ import java.util.Collections;
 import java.util.List;\r
 \r
 import era.mi.logic.components.gates.NotGate;\r
-import era.mi.logic.wires.Wire.WireEnd;\r
+import era.mi.logic.wires.Wire.ReadEnd;\r
+import era.mi.logic.wires.Wire.ReadWriteEnd;\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,14 +16,14 @@ public class GUINotGate extends NotGate implements BasicGUIComponent
 {\r
        private static final String LABEL = "\u22651";// >=1\r
 \r
-       private final List<WireEnd> connectedWireEnds;\r
+       private final List<ReadEnd> connectedWireEnds;\r
        private final List<Point> WireEndConnectionPoints;\r
 \r
-       public GUINotGate(int processTime, WireEnd in, WireEnd out)\r
+       public GUINotGate(int processTime, ReadEnd in, ReadWriteEnd out)\r
        {\r
                super(processTime, in, out);\r
 \r
-               List<WireEnd> connectedWireEndsModifiable = new ArrayList<>();\r
+               List<ReadEnd> connectedWireEndsModifiable = new ArrayList<>();\r
                List<Point> WireEndConnectionPointsModifiable = new ArrayList<>();\r
 \r
                connectedWireEndsModifiable.add(in);\r
@@ -61,7 +62,7 @@ public class GUINotGate extends NotGate implements BasicGUIComponent
        }\r
 \r
        @Override\r
-       public WireEnd getConnectedWireEnd(int connectionIndex)\r
+       public ReadEnd getConnectedWireEnd(int connectionIndex)\r
        {\r
                return connectedWireEnds.get(connectionIndex);\r
        }\r
index bd29b26..ef5daa1 100644 (file)
@@ -6,7 +6,8 @@ import java.util.Collections;
 import java.util.List;\r
 \r
 import era.mi.logic.components.gates.OrGate;\r
-import era.mi.logic.wires.Wire.WireEnd;\r
+import era.mi.logic.wires.Wire.ReadEnd;\r
+import era.mi.logic.wires.Wire.ReadWriteEnd;\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,14 +19,14 @@ public class GUIOrGate extends OrGate implements BasicGUIComponent
 \r
        private final int inputCount;\r
        private final double height;\r
-       private final List<WireEnd> connectedWireEnds;\r
+       private final List<ReadEnd> connectedWireEnds;\r
        private final List<Point> WireEndConnectionPoints;\r
 \r
-       public GUIOrGate(int processTime, WireEnd out, WireEnd... in)\r
+       public GUIOrGate(int processTime, ReadWriteEnd out, ReadEnd... in)\r
        {\r
                super(processTime, out, in);\r
 \r
-               List<WireEnd> connectedWireEndsModifiable = new ArrayList<>();\r
+               List<ReadEnd> connectedWireEndsModifiable = new ArrayList<>();\r
                List<Point> WireEndConnectionPointsModifiable = new ArrayList<>();\r
 \r
                this.inputCount = in.length;\r
@@ -70,7 +71,7 @@ public class GUIOrGate extends OrGate implements BasicGUIComponent
        }\r
 \r
        @Override\r
-       public WireEnd getConnectedWireEnd(int connectionIndex)\r
+       public ReadEnd getConnectedWireEnd(int connectionIndex)\r
        {\r
                return connectedWireEnds.get(connectionIndex);\r
        }\r
index 3979c81..392fe83 100644 (file)
@@ -6,7 +6,8 @@ import java.util.Collections;
 import java.util.List;\r
 \r
 import era.mi.logic.components.Splitter;\r
-import era.mi.logic.wires.Wire.WireEnd;\r
+import era.mi.logic.wires.Wire.ReadEnd;\r
+import era.mi.logic.wires.Wire.ReadWriteEnd;\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,14 +16,14 @@ public class GUISplitter extends Splitter implements BasicGUIComponent
 {\r
        private final int outputCount;\r
        private final double height;\r
-       private final List<WireEnd> connectedWireEnds;\r
+       private final List<ReadEnd> connectedWireEnds;\r
        private final List<Point> WireEndConnectionPoints;\r
 \r
-       public GUISplitter(WireEnd input, WireEnd... outputs)\r
+       public GUISplitter(ReadEnd input, ReadWriteEnd... outputs)\r
        {\r
                super(input, outputs);\r
 \r
-               List<WireEnd> connectedWireEndsModifiable = new ArrayList<>();\r
+               List<ReadEnd> connectedWireEndsModifiable = new ArrayList<>();\r
                List<Point> WireEndConnectionPointsModifiable = new ArrayList<>();\r
 \r
                this.outputCount = outputs.length;\r
@@ -65,7 +66,7 @@ public class GUISplitter extends Splitter implements BasicGUIComponent
        }\r
 \r
        @Override\r
-       public WireEnd getConnectedWireEnd(int connectionIndex)\r
+       public ReadEnd getConnectedWireEnd(int connectionIndex)\r
        {\r
                return connectedWireEnds.get(connectionIndex);\r
        }\r
index 87635b1..b91ebe9 100644 (file)
@@ -33,12 +33,12 @@ public class RSLatchGUIExample
                Wire q = new Wire(1, WIRE_DELAY);\r
                Wire nq = new Wire(1, WIRE_DELAY);\r
 \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
+               GUIManualSwitch rIn = ui.addComponent(new GUIManualSwitch(r.createReadWriteEnd()), 100, 100);\r
+               GUIManualSwitch sIn = ui.addComponent(new GUIManualSwitch(s.createReadWriteEnd()), 100, 200);\r
+               GUIOrGate or1 = ui.addComponent(new GUIOrGate(OR_DELAY, t1.createReadWriteEnd(), r.createReadOnlyEnd(), nq.createReadOnlyEnd()), 160, 102.5);\r
+               GUIOrGate or2 = ui.addComponent(new GUIOrGate(OR_DELAY, t2.createReadWriteEnd(), q.createReadOnlyEnd(), s.createReadOnlyEnd()), 160, 192.5);\r
+               GUINotGate not1 = ui.addComponent(new GUINotGate(NOT_DELAY, t1.createReadOnlyEnd(), q.createReadWriteEnd()), 200, 107.5);\r
+               GUINotGate not2 = ui.addComponent(new GUINotGate(NOT_DELAY, t2.createReadOnlyEnd(), nq.createReadWriteEnd()), 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 7225e8e..31285bb 100644 (file)
@@ -35,7 +35,7 @@ public class GUIWire
                this.path[this.path.length - 2] = component2Pos.x + component2ConnectionPoint.x;\r
                this.path[this.path.length - 1] = component2Pos.y + component2ConnectionPoint.y;\r
 \r
-               wire.addObserver((initiator, oldValues) -> redraw.run());\r
+               wire.createReadOnlyEnd().addObserver((initiator, oldValues) -> redraw.run());\r
        }\r
 \r
        public void render(GeneralGC gc)\r
index 33d38df..3ccc1b4 100644 (file)
@@ -8,7 +8,7 @@ import org.eclipse.swt.graphics.Color;
 \r
 import era.mi.gui.components.BasicGUIComponent;\r
 import era.mi.logic.wires.Wire;\r
-import era.mi.logic.wires.Wire.WireEnd;\r
+import era.mi.logic.wires.Wire.ReadEnd;\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
@@ -16,13 +16,13 @@ import net.haspamelodica.swt.helper.swtobjectwrappers.Rectangle;
 public class WireConnectionPoint implements BasicGUIComponent\r
 {\r
        private final Wire wire;\r
-       private final List<WireEnd> wireEnds;\r
+       private final List<ReadEnd> wireEnds;\r
        private final int wiresCrossing;\r
 \r
        public WireConnectionPoint(Wire wire, int wiresCrossing)\r
        {\r
                this.wire = wire;\r
-               List<WireEnd> wireEndsModifiable = new ArrayList<>();\r
+               List<ReadEnd> wireEndsModifiable = new ArrayList<>();\r
                for (int i = 0; i < wiresCrossing; i++)\r
                        wireEndsModifiable.add(wire.createReadOnlyEnd());\r
                wireEnds = Collections.unmodifiableList(wireEndsModifiable);\r
@@ -52,7 +52,7 @@ public class WireConnectionPoint implements BasicGUIComponent
        }\r
 \r
        @Override\r
-       public WireEnd getConnectedWireEnd(int connectionIndex)\r
+       public ReadEnd getConnectedWireEnd(int connectionIndex)\r
        {\r
                return wireEnds.get(connectionIndex);\r
        }\r