From 8eb61f917f31b0cff935538606df04e1c610bdf9 Mon Sep 17 00:00:00 2001 From: Daniel Kirschten Date: Tue, 28 May 2019 11:49:25 +0200 Subject: [PATCH] Added destroy for GUIComponent and GUIWire --- LogicUI/src/era/mi/gui/LogicUICanvas.java | 2 ++ LogicUI/src/era/mi/gui/model/components/GUIComponent.java | 6 ++++++ LogicUI/src/era/mi/gui/model/wires/GUIWire.java | 7 +++++++ LogicUI/src/era/mi/gui/model/wires/Pin.java | 1 + 4 files changed, 16 insertions(+) diff --git a/LogicUI/src/era/mi/gui/LogicUICanvas.java b/LogicUI/src/era/mi/gui/LogicUICanvas.java index da338013..0b7641eb 100644 --- a/LogicUI/src/era/mi/gui/LogicUICanvas.java +++ b/LogicUI/src/era/mi/gui/LogicUICanvas.java @@ -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 -> { diff --git a/LogicUI/src/era/mi/gui/model/components/GUIComponent.java b/LogicUI/src/era/mi/gui/model/components/GUIComponent.java index cf9b23a2..e266afbf 100644 --- a/LogicUI/src/era/mi/gui/model/components/GUIComponent.java +++ b/LogicUI/src/era/mi/gui/model/components/GUIComponent.java @@ -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; diff --git a/LogicUI/src/era/mi/gui/model/wires/GUIWire.java b/LogicUI/src/era/mi/gui/model/wires/GUIWire.java index 649ddb68..11213359 100644 --- a/LogicUI/src/era/mi/gui/model/wires/GUIWire.java +++ b/LogicUI/src/era/mi/gui/model/wires/GUIWire.java @@ -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(); diff --git a/LogicUI/src/era/mi/gui/model/wires/Pin.java b/LogicUI/src/era/mi/gui/model/wires/Pin.java index 3dc89677..cf596405 100644 --- a/LogicUI/src/era/mi/gui/model/wires/Pin.java +++ b/LogicUI/src/era/mi/gui/model/wires/Pin.java @@ -11,6 +11,7 @@ import net.haspamelodica.swt.helper.swtobjectwrappers.Rectangle; public class Pin { public final GUIComponent component; + protected double relX; protected double relY; -- 2.17.1