Further improvements in LogicUI:
[Mograsim.git] / LogicUI / src / LogicUI.java
index 80c8522..936066a 100644 (file)
@@ -16,6 +16,7 @@ import era.mi.logic.components.Splitter;
 import era.mi.logic.components.gates.AndGate;\r
 import era.mi.logic.components.gates.NotGate;\r
 import era.mi.logic.wires.WireArray;\r
+import net.haspamelodica.swt.helper.gcs.GeneralGC;\r
 import net.haspamelodica.swt.helper.gcs.TranslatedGC;\r
 import net.haspamelodica.swt.helper.swtobjectwrappers.Point;\r
 import net.haspamelodica.swt.helper.zoomablecanvas.ZoomableCanvas;\r
@@ -40,8 +41,7 @@ public class LogicUI
                componentPositions = new HashMap<>();\r
                initComponents();\r
 \r
-               canvas.addZoomedRenderer(gc -> components.forEach(\r
-                               component -> component.render(new TranslatedGC(gc, componentPositions.get(component)))));\r
+               canvas.addZoomedRenderer(gc -> components.forEach(component -> drawComponent(gc, component)));\r
                new ZoomableCanvasUserInput(canvas).enableUserInput();\r
                new ZoomableCanvasOverlay(canvas, null).enableScale();\r
        }\r
@@ -54,6 +54,7 @@ public class LogicUI
                new NotGate(1, f, g);\r
                new Merger(h, c, g);\r
                addComponent(new GUIMux(1, i, e, h, d), 10, 10);\r
+               addComponent(new GUIMux(1, a, new WireArray(10, 1), a, b, e, f), 100, 100);\r
                new Splitter(i, k, j);\r
        }\r
        private void addComponent(BasicGUIComponent component, double x, double y)\r
@@ -61,6 +62,18 @@ public class LogicUI
                components.add(component);\r
                componentPositions.put(component, new Point(x, y));\r
        }\r
+       private void drawComponent(GeneralGC gc, BasicGUIComponent component)\r
+       {\r
+               TranslatedGC tgc = new TranslatedGC(gc, componentPositions.get(component));\r
+               component.render(tgc);\r
+               tgc.setBackground(display.getSystemColor(SWT.COLOR_BLUE));\r
+               for(int i = 0; i < component.getConnectedWireArraysCount(); i ++)\r
+               {\r
+                       Point connectionPoint = component.getWireArrayConnectionPoint(i);\r
+                       if(connectionPoint != null)\r
+                               tgc.fillOval(connectionPoint.x - 2, connectionPoint.y - 2, 4, 4);\r
+               }\r
+       }\r
        public void run()\r
        {\r
                shell.open();\r