+++ /dev/null
-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.core.wires.CoreWire;
-import net.mograsim.logic.model.model.wires.ModelWire;
-
-public class WirePointHandle extends Handle
-{
- private final static int END_OFFSET = 4;
- private final HandleManager manager;
- private boolean selected = false;
- public final ModelWire parent;
-
- private int pointIndex;
-
- public WirePointHandle(HandleManager manager, ModelWire parent, int pointIndex)
- {
- super(3);
- this.manager = manager;
- this.parent = parent;
- this.pointIndex = pointIndex;
- setSize(END_OFFSET, END_OFFSET);
- Point pathPoint = parent.getPathPoint(pointIndex);
- moveTo(pathPoint.x, pathPoint.y);
- }
-
- void updatePos()
- {
- Point p = parent.getPathPoint(pointIndex);
- moveTo(p.x, p.y);
- callRedrawListeners();
- }
-
- @Override
- public void render(GeneralGC gc)
- {
- gc.setLineWidth(1.0);
- gc.setForeground(Display.getDefault().getSystemColor(selected ? SWT.COLOR_YELLOW : SWT.COLOR_BLUE));
- gc.drawLine(getPosX(), getPosY(), getPosX() + END_OFFSET, getPosY() + END_OFFSET);
- }
-
- @Override
- public void reqMove(double x, double y)
- {
- parent.setPathPoint(new Point(x, y), pointIndex);
- }
-
- @Override
- public void onSelect()
- {
- selected = true;
- callRedrawListeners();
- }
-
- @Override
- public void onDeselect()
- {
- selected = false;
- callRedrawListeners();
- }
-
- @Override
- public void reqDelete()
- {
- manager.destroyWirePointHandle(parent, this);
- }
-
- @Override
- public HandleType getType()
- {
- return HandleType.WIRE_POINT;
- }
-
- /**
- * Sets the index of the {@link Point} within the parent {@link CoreWire}s path that is controlled by this handle
- *
- * @param index Index of the Point in the Wires path.
- * @throws IndexOutOfBoundsException
- */
- public void setIndex(int index)
- {
- this.pointIndex = index;
- updatePos();
- }
-}