+package net.mograsim.logic.model.editor.handles;
+
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.widgets.Display;
+
+import net.haspamelodica.swt.helper.gcs.GeneralGC;
+import net.haspamelodica.swt.helper.swtobjectwrappers.Point;
+import net.mograsim.logic.model.model.wires.Pin;
+
+public class StaticPinHandle extends PinHandle
+{
+ private final static int CIRCLE_DIAM = 2;
+ private final static int CIRCLE_RADIUS = 1;
+ private final Pin parent;
+
+ public StaticPinHandle(Pin parent)
+ {
+ super(1);
+ this.parent = parent;
+ setSize(CIRCLE_DIAM, CIRCLE_DIAM);
+ parent.addPinMovedListener((p) -> updatePos());
+ updatePos();
+ }
+
+ @Override
+ protected void render(GeneralGC gc)
+ {
+ gc.setBackground(Display.getCurrent().getSystemColor(SWT.COLOR_DARK_GREEN));
+ gc.fillOval(getPosX(), getPosY(), CIRCLE_DIAM, CIRCLE_DIAM);
+ }
+
+ private void updatePos()
+ {
+ Point pos = parent.getPos();
+ moveTo(pos.x - CIRCLE_RADIUS, pos.y - CIRCLE_RADIUS);
+ }
+
+ @Override
+ public double getCenterX()
+ {
+ return getPosX() + CIRCLE_RADIUS;
+ }
+
+ @Override
+ public double getCenterY()
+ {
+ return getPosY() + CIRCLE_RADIUS;
+ }
+
+ @Override
+ public HandleType getType()
+ {
+ return HandleType.STATIC_PIN;
+ }
+
+ @Override
+ public Pin getPin()
+ {
+ return parent;
+ }
+}
\ No newline at end of file