X-Git-Url: https://mograsim.net/gitweb/?a=blobdiff_plain;f=LogicUI%2Fsrc%2Fera%2Fmi%2Fgui%2Fmodel%2Fwires%2FGUIWire.java;h=8ecf1c459309751a50a7ffc0b5e2483119bbb1fa;hb=dbdd4bbf4d1a1709f74aecbb3212ef29f4c82d0f;hp=649ddb688f586660ed2209c8aafd765cd039c4b1;hpb=f2886cbd57dd08b797921fc2421b41bd92915799;p=Mograsim.git diff --git a/LogicUI/src/era/mi/gui/model/wires/GUIWire.java b/LogicUI/src/era/mi/gui/model/wires/GUIWire.java index 649ddb68..8ecf1c45 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,22 +20,42 @@ 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) { this.path[dstI + 0] = path[srcI].x; this.path[dstI + 1] = path[srcI].y; } - // TODO support moving pins - Point pos; - pos = pin1.getPos(); + + this.pin1 = pin1; + this.pin2 = pin2; + + pin1.addPinMovedListener(p -> pin1Moved()); + pin2.addPinMovedListener(p -> pin2Moved()); + pin1Moved(); + pin2Moved(); + + model.wireCreated(this); + } + + private void pin1Moved() + { + Point pos = pin1.getPos(); this.path[0] = pos.x; this.path[1] = pos.y; - pos = pin2.getPos(); + } + + private void pin2Moved() + { + Point pos = pin2.getPos(); this.path[this.path.length - 2] = pos.x; this.path[this.path.length - 1] = pos.y; + } - model.wireCreated(this); + public void destroy() + { + model.wireDestroyed(this); } public void render(GeneralGC gc)