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;
14 import net.mograsim.logic.model.serializing.IdentifierGetter;
16 public class ComponentHandle extends Handle
18 public final GUIComponent parent;
19 private final static double POS_OFFSET = 2.0d;
20 private final static double LENGTH_OFFSET = POS_OFFSET * 2;
21 boolean selected = false;
23 public ComponentHandle(GUIComponent parent)
27 Rectangle bounds = parent.getBounds();
28 setSize(bounds.width, bounds.height);
29 parent.addComponentResizedListener((c) ->
31 Rectangle pBounds = c.getBounds();
32 setSize(pBounds.width, pBounds.height);
34 moveTo(parent.getPosX(), parent.getPosY());
38 protected void moveTo(double x, double y)
45 protected void render(GeneralGC gc)
50 gc.setForeground(Display.getCurrent().getSystemColor(SWT.COLOR_YELLOW));
51 Rectangle bounds = getBounds();
52 bounds.x -= POS_OFFSET;
53 bounds.y -= POS_OFFSET;
54 bounds.width += LENGTH_OFFSET;
55 bounds.height += LENGTH_OFFSET;
56 gc.drawRectangle(bounds);
61 public void reqMove(double x, double y)
67 public void onSelect()
70 callRedrawListeners();
74 public void onDeselect()
77 callRedrawListeners();
81 public void reqDelete()
87 public Optional<ComponentInfo> reqCopy(Point refPoint)
89 return Optional.of(new ComponentInfo(parent.getPosX() - refPoint.x, parent.getPosY() - refPoint.y, Editor.getIdentifier(parent),
90 parent.getParamsForSerializing(new IdentifierGetter())));
94 public HandleType getType()
96 return HandleType.COMPONENT;