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;
protected double relX;
protected double relY;
+ private final List<Consumer<Pin>> 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()
return new Point(relX + componentBounds.x, relY + componentBounds.y);
}
+ // @formatter:off
+ public void addPinMovedListener (Consumer<Pin> listener){pinMovedListeners.add (listener);}
+
+ public void removePinMovedListener(Consumer<Pin> 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