+++ /dev/null
-package net.mograsim.logic.model.editor.handles;
-
-import java.util.Optional;
-
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.widgets.Display;
-
-import net.haspamelodica.swt.helper.gcs.GeneralGC;
-import net.haspamelodica.swt.helper.swtobjectwrappers.Font;
-import net.haspamelodica.swt.helper.swtobjectwrappers.Point;
-import net.haspamelodica.swt.helper.swtobjectwrappers.Rectangle;
-import net.mograsim.logic.model.editor.Editor.ComponentInfo;
-import net.mograsim.logic.model.model.LogicModelModifiable;
-import net.mograsim.logic.model.model.components.ModelComponent;
-import net.mograsim.logic.model.serializing.IdentifyParams;
-
-public class ComponentHandle extends Handle
-{
- private final LogicModelModifiable model;
- public final ModelComponent parent;
- private final static double POS_OFFSET = 2.0d;
- private final static double LENGTH_OFFSET = POS_OFFSET * 2;
- boolean selected = false;
-
- public ComponentHandle(LogicModelModifiable model, ModelComponent parent)
- {
- super(4);
- this.model = model;
- this.parent = parent;
- Rectangle bounds = parent.getBounds();
- setSize(bounds.width, bounds.height);
- parent.addComponentResizedListener((c) ->
- {
- Rectangle pBounds = c.getBounds();
- setSize(pBounds.width, pBounds.height);
- });
- moveTo(parent.getPosX(), parent.getPosY());
- }
-
- @Override
- protected void moveTo(double x, double y)
- {
- super.moveTo(x, y);
- parent.moveTo(x, y);
- }
-
- @Override
- protected void render(GeneralGC gc)
- {
- if (selected)
- {
- gc.setLineWidth(2);
- gc.setForeground(Display.getCurrent().getSystemColor(SWT.COLOR_YELLOW));
- Rectangle bounds = getBounds();
- bounds.x -= POS_OFFSET;
- bounds.y -= POS_OFFSET;
- bounds.width += LENGTH_OFFSET;
- bounds.height += LENGTH_OFFSET;
- gc.drawRectangle(bounds);
- Font oldFont = gc.getFont();
- gc.setFont(new Font(oldFont.getName(), 5, oldFont.getStyle()));
- gc.setForeground(Display.getCurrent().getSystemColor(SWT.COLOR_BLACK));
- gc.drawText(parent.getName(), bounds.x, bounds.y, true);
- gc.setFont(oldFont);
- }
- }
-
- @Override
- public void reqMove(double x, double y)
- {
- moveTo(x, y);
- }
-
- @Override
- public void onSelect()
- {
- selected = true;
- callRedrawListeners();
- }
-
- @Override
- public void onDeselect()
- {
- selected = false;
- callRedrawListeners();
- }
-
- @Override
- public void reqDelete()
- {
- model.destroyComponent(parent);
- }
-
- @Override
- public Optional<ComponentInfo> reqCopy(Point refPoint)
- {
- IdentifyParams idParams = new IdentifyParams();
- return Optional.of(new ComponentInfo(parent.getPosX() - refPoint.x, parent.getPosY() - refPoint.y,
- parent.getIDForSerializing(idParams), parent.getParamsForSerializingJSON(idParams)));
- }
-
- @Override
- public HandleType getType()
- {
- return HandleType.COMPONENT;
- }
-}
\ No newline at end of file