1 package net.mograsim.logic.model.editor.handles;
3 import java.util.Optional;
5 import org.eclipse.swt.SWT;
6 import org.eclipse.swt.widgets.Display;
8 import net.haspamelodica.swt.helper.gcs.GeneralGC;
9 import net.haspamelodica.swt.helper.swtobjectwrappers.Point;
10 import net.haspamelodica.swt.helper.swtobjectwrappers.Rectangle;
11 import net.mograsim.logic.model.editor.Editor;
12 import net.mograsim.logic.model.editor.Editor.ComponentInfo;
13 import net.mograsim.logic.model.model.components.GUIComponent;
15 public class ComponentHandle extends Handle
17 public final GUIComponent parent;
18 private final static double POS_OFFSET = 2.0d;
19 private final static double LENGTH_OFFSET = POS_OFFSET * 2;
20 boolean selected = false;
22 public ComponentHandle(GUIComponent parent)
25 Rectangle bounds = parent.getBounds();
26 setSize(bounds.width, bounds.height);
27 parent.addComponentResizedListener((c) ->
29 Rectangle pBounds = c.getBounds();
30 setSize(pBounds.width, pBounds.height);
32 moveTo(parent.getPosX(), parent.getPosY());
36 protected void moveTo(double x, double y)
43 protected void render(GeneralGC gc)
48 gc.setForeground(Display.getCurrent().getSystemColor(SWT.COLOR_YELLOW));
49 Rectangle bounds = getBounds();
50 bounds.x -= POS_OFFSET;
51 bounds.y -= POS_OFFSET;
52 bounds.width += LENGTH_OFFSET;
53 bounds.height += LENGTH_OFFSET;
54 gc.drawRectangle(bounds);
59 public void reqMove(double x, double y)
65 public void onSelect()
68 callRedrawListeners();
72 public void onDeselect()
75 callRedrawListeners();
79 public void reqDelete()
85 public Optional<ComponentInfo> reqCopy(Point refPoint)
87 return Optional.of(new ComponentInfo(parent.getPosX() - refPoint.x, parent.getPosY() - refPoint.y, Editor.getIdentifier(parent),
88 parent.getParamsForSerializing()));
92 public HandleType getType()
94 return HandleType.COMPONENT;