X-Git-Url: https://mograsim.net/gitweb/?a=blobdiff_plain;f=net.mograsim.logic.ui%2Fsrc%2Fnet%2Fmograsim%2Flogic%2Fui%2Fmodel%2Fwires%2FPin.java;h=8c0333a4121a934940db8a4d8324956f64e4d9c2;hb=e7193d1fb16edc79e9cc3d8adcfb71caecd8463b;hp=f3a78023ffd5c8f2674ae0009243df0a630f401a;hpb=07faf07e3acb8b2afdc2bf65a46bc868faaed0f8;p=Mograsim.git diff --git a/net.mograsim.logic.ui/src/net/mograsim/logic/ui/model/wires/Pin.java b/net.mograsim.logic.ui/src/net/mograsim/logic/ui/model/wires/Pin.java index f3a78023..8c0333a4 100644 --- a/net.mograsim.logic.ui/src/net/mograsim/logic/ui/model/wires/Pin.java +++ b/net.mograsim.logic.ui/src/net/mograsim/logic/ui/model/wires/Pin.java @@ -8,6 +8,7 @@ import net.mograsim.logic.ui.model.components.GUIComponent; import net.haspamelodica.swt.helper.swtobjectwrappers.Point; import net.haspamelodica.swt.helper.swtobjectwrappers.Rectangle; +//TODO add an ID and/or a name public class Pin { public final GUIComponent component; @@ -17,6 +18,7 @@ public class Pin protected double relY; private final List> pinMovedListeners; + private final List redrawListeners; public Pin(GUIComponent component, int logicWidth, double relX, double relY) { @@ -26,6 +28,7 @@ public class Pin this.relY = relY; this.pinMovedListeners = new ArrayList<>(); + this.redrawListeners = new ArrayList<>(); component.addComponentMovedListener(c -> callPinMovedListeners()); } @@ -51,18 +54,23 @@ public class Pin return new Point(relX + componentBounds.x, relY + componentBounds.y); } + protected void setRelPos(double relX, double relY) + { + this.relX = relX; + this.relY = relY; + callPinMovedListeners(); + callRedrawListeners(); + } + // @formatter:off public void addPinMovedListener (Consumer listener){pinMovedListeners.add (listener);} + public void addRedrawListener (Runnable listener){redrawListeners .add (listener);} public void removePinMovedListener(Consumer listener){pinMovedListeners.remove(listener);} + public void removeRedrawListener (Runnable listener){redrawListeners .remove(listener);} private void callPinMovedListeners() {pinMovedListeners.forEach(l -> l.accept(this));} + private void callRedrawListeners () {redrawListeners .forEach(l -> l.run ( ));} // @formatter:on - protected void setRelPos(double relX, double relY) - { - this.relX = relX; - this.relY = relY; - callPinMovedListeners(); - } } \ No newline at end of file