The final restructured version for automatic build using maven tycho
[Mograsim.git] / net.mograsim.logic.model.editor / src / net / mograsim / logic / model / editor / states / SelectionState.java
diff --git a/net.mograsim.logic.model.editor/src/net/mograsim/logic/model/editor/states/SelectionState.java b/net.mograsim.logic.model.editor/src/net/mograsim/logic/model/editor/states/SelectionState.java
deleted file mode 100644 (file)
index baa2eff..0000000
+++ /dev/null
@@ -1,186 +0,0 @@
-package net.mograsim.logic.model.editor.states;
-
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.widgets.Display;
-
-import net.haspamelodica.swt.helper.swtobjectwrappers.Point;
-import net.haspamelodica.swt.helper.zoomablecanvas.ZoomableCanvas.ZoomedRenderer;
-import net.mograsim.logic.model.editor.Editor;
-import net.mograsim.logic.model.editor.Selection;
-import net.mograsim.logic.model.editor.handles.Handle;
-import net.mograsim.logic.model.editor.handles.PinHandle;
-import net.mograsim.logic.model.editor.handles.WireHandle;
-import net.mograsim.logic.model.editor.handles.Handle.HandleClickInfo;
-import net.mograsim.logic.model.editor.handles.WireHandle.WireHandleClickInfo;
-import net.mograsim.logic.model.editor.ui.DialogManager;
-import net.mograsim.logic.model.model.wires.MovablePin;
-import net.mograsim.logic.model.model.wires.Pin;
-import net.mograsim.logic.model.model.wires.PinUsage;
-
-public class SelectionState extends EditorState
-{
-       private final ZoomedRenderer outlineRenderer = gc ->
-       {
-               if (editor.getSelection().size() > 1)
-               {
-                       gc.setLineWidth(1);
-                       gc.setForeground(Display.getCurrent().getSystemColor(SWT.COLOR_DARK_YELLOW));
-                       gc.drawRectangle(editor.getSelection().getBounds());
-               }
-       };
-
-       public SelectionState(Editor editor, StateManager manager)
-       {
-               super(editor, manager);
-       }
-
-       @Override
-       public void add()
-       {
-               Point curserPos = editor.userInput.getWorldMousePosition();
-               editor.addComponent(curserPos.x, curserPos.y);
-       }
-
-       @Override
-       public void delete()
-       {
-               editor.deleteSelection();
-       }
-
-       @Override
-       public void copy()
-       {
-               editor.copy();
-       }
-
-       @Override
-       public void paste()
-       {
-               Point curserPos = editor.userInput.getWorldMousePosition();
-               editor.paste(curserPos.x, curserPos.y);
-       }
-
-       @Override
-       public void duplicate()
-       {
-               editor.duplicate();
-       }
-
-       @Override
-       public void grab()
-       {
-               if (!editor.getSelection().isEmpty())
-                       manager.setState(new GrabState(editor, manager));
-       }
-
-       @Override
-       public void boxSelect()
-       {
-               manager.setState(new BoxSelectionState(editor, manager));
-       }
-
-       @Override
-       public void onEntry()
-       {
-               editor.gui.logicCanvas.addZoomedRenderer(outlineRenderer);
-               editor.gui.logicCanvas.redrawThreadsafe();
-       }
-
-       @Override
-       public void onExit()
-       {
-               editor.gui.logicCanvas.removeZoomedRenderer(outlineRenderer);
-               editor.gui.logicCanvas.redrawThreadsafe();
-       }
-
-       @Override
-       public void clickedEmpty(Point clicked, int stateMask)
-       {
-               editor.getSelection().clear();
-               if ((stateMask & SWT.ALT) == SWT.ALT)
-               {
-                       String[] result = DialogManager.openMultiTextDialog("Add Pin...", "Add", "Cancel", "Name", "Logic Width", "Usage");
-                       if (result != null)
-                       {
-                               try
-                               {
-                                       Pin p = editor.toBeEdited.addSubmodelInterface(new MovablePin(editor.getSubmodel(), editor.toBeEdited, result[0],
-                                                       Integer.parseInt(result[1]), PinUsage.valueOf(result[2]), clicked.x, clicked.y));
-                                       editor.handleManager.getInterfacePinHandle(p).reqMove(clicked.x, clicked.y);
-                               }
-                               catch (NumberFormatException e)
-                               {
-                                       editor.dialogManager.openWarningDialog("Failed to create Pin!", "Bit width must be a number!");
-                               }
-                               catch (IllegalArgumentException e)
-                               {
-                                       editor.dialogManager.openWarningDialog("Failed to create Pin!", "Usage must be one of INPUT, OUTPUT, TRISTATE!");
-                               }
-                       }
-               }
-       }
-
-       @Override
-       public boolean clickedHandle(HandleClickInfo handleClickInfo)
-       {
-               switch (handleClickInfo.clicked.getType())
-               {
-               case INTERFACE_PIN:
-                       if ((handleClickInfo.stateMask & SWT.CTRL) == SWT.CTRL)
-                       {
-                               manager.setState(new CreateWireState(editor, manager, (PinHandle) handleClickInfo.clicked));
-                               break;
-                       }
-               case CORNER:
-               case COMPONENT:
-               case WIRE_POINT:
-                       boolean additive = (handleClickInfo.stateMask & SWT.SHIFT) == SWT.SHIFT;
-                       select(handleClickInfo.clicked, additive);
-                       break;
-               case STATIC_PIN:
-                       if ((handleClickInfo.stateMask & SWT.CTRL) == SWT.CTRL)
-                               manager.setState(new CreateWireState(editor, manager, (PinHandle) handleClickInfo.clicked));
-                       else
-                               return false;
-                       break;
-               case WIRE:
-                       if ((handleClickInfo.stateMask & SWT.CTRL) == SWT.CTRL)
-                       {
-                               WireHandleClickInfo info = (WireHandleClickInfo) handleClickInfo;
-                               WireHandle clicked = (WireHandle) info.clicked;
-                               clicked.parent.insertPathPoint(info.posOnWire, info.segment);
-                       } else
-                       {
-                               additive = (handleClickInfo.stateMask & SWT.SHIFT) == SWT.SHIFT;
-                               select(handleClickInfo.clicked, additive);
-                       }
-                       break;
-               default:
-                       return false;
-               }
-               return true;
-       }
-
-       private void select(Handle h, boolean additive)
-       {
-               Selection sel = editor.getSelection();
-               if (sel.contains(h))
-                       if (additive)
-                               sel.remove(h);
-                       else
-                       {
-                               if (editor.getSelection().size() > 1)
-                               {
-                                       sel.clear();
-                                       sel.add(h);
-                               } else
-                                       sel.clear();
-                       }
-               else
-               {
-                       if (!additive)
-                               sel.clear();
-                       sel.add(h);
-               }
-       }
-}