X-Git-Url: https://mograsim.net/gitweb/?a=blobdiff_plain;f=LogicUI%2Fsrc%2Fera%2Fmi%2Fgui%2Fmodel%2Fwires%2FPin.java;h=3dc89677a5725d740e88e598d950680d41694479;hb=4a6a0a2c85c1a16112efaf7ca6d2b5fba3c9b466;hp=1ab740477e935391d466b9b24202038f8cc0ef4b;hpb=4d29cabdc45d68b5e5f210266dc4fbc5560dbcdd;p=Mograsim.git diff --git a/LogicUI/src/era/mi/gui/model/wires/Pin.java b/LogicUI/src/era/mi/gui/model/wires/Pin.java index 1ab74047..3dc89677 100644 --- a/LogicUI/src/era/mi/gui/model/wires/Pin.java +++ b/LogicUI/src/era/mi/gui/model/wires/Pin.java @@ -1,5 +1,9 @@ package era.mi.gui.model.wires; +import java.util.ArrayList; +import java.util.List; +import java.util.function.Consumer; + import era.mi.gui.model.components.GUIComponent; import net.haspamelodica.swt.helper.swtobjectwrappers.Point; import net.haspamelodica.swt.helper.swtobjectwrappers.Rectangle; @@ -10,11 +14,17 @@ public class Pin protected double relX; protected double relY; + private final List> pinMovedListeners; + public Pin(GUIComponent component, double relX, double relY) { this.component = component; this.relX = relX; this.relY = relY; + + this.pinMovedListeners = new ArrayList<>(); + + component.addComponentMovedListener(c -> callPinMovedListeners()); } public double getRelX() @@ -38,9 +48,18 @@ public class Pin return new Point(relX + componentBounds.x, relY + componentBounds.y); } + // @formatter:off + public void addPinMovedListener (Consumer listener){pinMovedListeners.add (listener);} + + public void removePinMovedListener(Consumer listener){pinMovedListeners.remove(listener);} + + private void callPinMovedListeners() {pinMovedListeners.forEach(l -> l.accept(this));} + // @formatter:on + protected void setRelPos(double relX, double relY) { this.relX = relX; this.relY = relY; + callPinMovedListeners(); } } \ No newline at end of file