1 package era.mi.gui.model.wires;
3 import java.util.ArrayList;
5 import java.util.function.Consumer;
7 import era.mi.gui.model.components.GUIComponent;
8 import net.haspamelodica.swt.helper.swtobjectwrappers.Point;
9 import net.haspamelodica.swt.helper.swtobjectwrappers.Rectangle;
13 public final GUIComponent component;
15 protected double relX;
16 protected double relY;
18 private final List<Consumer<Pin>> pinMovedListeners;
20 public Pin(GUIComponent component, double relX, double relY)
22 this.component = component;
26 this.pinMovedListeners = new ArrayList<>();
28 component.addComponentMovedListener(c -> callPinMovedListeners());
31 public double getRelX()
36 public double getRelY()
41 public Point getRelPos()
43 return new Point(relX, relY);
48 Rectangle componentBounds = component.getBounds();
49 return new Point(relX + componentBounds.x, relY + componentBounds.y);
53 public void addPinMovedListener (Consumer<Pin> listener){pinMovedListeners.add (listener);}
55 public void removePinMovedListener(Consumer<Pin> listener){pinMovedListeners.remove(listener);}
57 private void callPinMovedListeners() {pinMovedListeners.forEach(l -> l.accept(this));}
60 protected void setRelPos(double relX, double relY)
64 callPinMovedListeners();