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;
14 protected double relX;
15 protected double relY;
17 private final List<Consumer<Pin>> pinMovedListeners;
19 public Pin(GUIComponent component, double relX, double relY)
21 this.component = component;
25 this.pinMovedListeners = new ArrayList<>();
27 component.addComponentMovedListener(c -> callPinMovedListeners());
30 public double getRelX()
35 public double getRelY()
40 public Point getRelPos()
42 return new Point(relX, relY);
47 Rectangle componentBounds = component.getBounds();
48 return new Point(relX + componentBounds.x, relY + componentBounds.y);
52 public void addPinMovedListener (Consumer<Pin> listener){pinMovedListeners.add (listener);}
54 public void removePinMovedListener(Consumer<Pin> listener){pinMovedListeners.remove(listener);}
56 private void callPinMovedListeners() {pinMovedListeners.forEach(l -> l.accept(this));}
59 protected void setRelPos(double relX, double relY)
63 callPinMovedListeners();