Added destroy for GUIComponent and GUIWire
authorDaniel Kirschten <daniel.kirschten@gmx.de>
Tue, 28 May 2019 09:49:25 +0000 (11:49 +0200)
committerDaniel Kirschten <daniel.kirschten@gmx.de>
Tue, 28 May 2019 09:49:25 +0000 (11:49 +0200)
LogicUI/src/era/mi/gui/LogicUICanvas.java
LogicUI/src/era/mi/gui/model/components/GUIComponent.java
LogicUI/src/era/mi/gui/model/wires/GUIWire.java
LogicUI/src/era/mi/gui/model/wires/Pin.java

index da33801..0b7641e 100644 (file)
@@ -29,6 +29,8 @@ public class LogicUICanvas extends ZoomableCanvas
 
                model.addComponentAddedListener(c -> redrawThreadsafe());
                model.addWireAddedListener(c -> redrawThreadsafe());
+               model.addComponentRemovedListener(c -> redrawThreadsafe());
+               model.addWireRemovedListener(c -> redrawThreadsafe());
 
                addZoomedRenderer(gc ->
                {
index cf9b23a..e266afb 100644 (file)
@@ -37,6 +37,12 @@ public abstract class GUIComponent
                model.componentCreated(this);
        }
 
+       public void destroy()
+       {
+               pins.forEach(p -> pinRemovedListeners.forEach(l -> l.accept(p)));
+               model.componentDestroyed(this);
+       }
+
        public void moveTo(double x, double y)
        {
                bounds.x = x;
index 649ddb6..1121335 100644 (file)
@@ -11,6 +11,7 @@ import net.haspamelodica.swt.helper.swtobjectwrappers.Point;
 
 public class GUIWire
 {
+       private final ViewModel model;
        private Pin pin1;
        private Pin pin2;
        private double[] path;
@@ -19,6 +20,7 @@ public class GUIWire
 
        public GUIWire(ViewModel model, Pin pin1, Pin pin2, Point... path)
        {
+               this.model = model;
                this.path = new double[path.length * 2 + 4];
                for (int srcI = 0, dstI = 2; srcI < path.length; srcI++, dstI += 2)
                {
@@ -37,6 +39,11 @@ public class GUIWire
                model.wireCreated(this);
        }
 
+       public void destroy()
+       {
+               model.wireDestroyed(this);
+       }
+
        public void render(GeneralGC gc)
        {
                Color oldFG = gc.getForeground();
index 3dc8967..cf59640 100644 (file)
@@ -11,6 +11,7 @@ import net.haspamelodica.swt.helper.swtobjectwrappers.Rectangle;
 public class Pin
 {
        public final GUIComponent component;
+
        protected double relX;
        protected double relY;