The final restructured version for automatic build using maven tycho
[Mograsim.git] / plugins / net.mograsim.logic.model.editor / src / net / mograsim / logic / model / editor / EditorUserInput.java
diff --git a/plugins/net.mograsim.logic.model.editor/src/net/mograsim/logic/model/editor/EditorUserInput.java b/plugins/net.mograsim.logic.model.editor/src/net/mograsim/logic/model/editor/EditorUserInput.java
new file mode 100644 (file)
index 0000000..feae04f
--- /dev/null
@@ -0,0 +1,111 @@
+package net.mograsim.logic.model.editor;
+
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.events.KeyEvent;
+import org.eclipse.swt.events.KeyListener;
+import org.eclipse.swt.events.MouseEvent;
+import org.eclipse.swt.events.MouseListener;
+
+import net.haspamelodica.swt.helper.swtobjectwrappers.Point;
+import net.mograsim.logic.model.editor.ui.EditorGUI;
+
+public class EditorUserInput
+{
+       private final EditorGUI gui;
+
+       public EditorUserInput(Editor editor)
+       {
+               this.gui = editor.gui;
+               gui.logicCanvas.addMouseListener(new MouseListener()
+               {
+                       @Override
+                       public void mouseDoubleClick(MouseEvent e)
+                       {
+                               // TODO Auto-generated method stub
+                       }
+
+                       @Override
+                       public void mouseDown(MouseEvent e)
+                       {
+                               Point clicked = editor.gui.logicCanvas.canvasToWorldCoords(e.x, e.y);
+                               switch (e.button)
+                               {
+                               case 1:
+                                       editor.handleManager.click(clicked, e.stateMask);
+                                       break;
+                               }
+
+                       }
+
+                       @Override
+                       public void mouseUp(MouseEvent e)
+                       {
+                       }
+               });
+
+               gui.logicCanvas.addMouseMoveListener((e) ->
+               {
+                       Point dest = editor.gui.logicCanvas.canvasToWorldCoords(e.x, e.y);
+                       editor.stateManager.mouseMoved(dest.x, dest.y);
+               });
+
+               gui.logicCanvas.addKeyListener(new KeyListener()
+               {
+
+                       @Override
+                       public void keyReleased(KeyEvent e)
+                       {
+                               // TODO Auto-generated method stub
+
+                       }
+
+                       @Override
+                       public void keyPressed(KeyEvent e)
+                       {
+                               switch (e.keyCode)
+                               {
+                               case 'c':
+                                       if ((e.stateMask & SWT.CTRL) == SWT.CTRL)
+                                               editor.stateManager.copy();
+                                       break;
+                               case 'v':
+                                       if ((e.stateMask & SWT.CTRL) == SWT.CTRL)
+                                               editor.stateManager.paste();
+                                       break;
+                               case 'd':
+                                       if ((e.stateMask & SWT.SHIFT) == SWT.SHIFT)
+                                               editor.stateManager.duplicate();
+                                       break;
+                               case 'g':
+                                       editor.stateManager.grab();
+                                       break;
+                               case 'r':
+                                       editor.stateManager.delete();
+                                       break;
+                               case 's':
+                                       if ((e.stateMask & SWT.CTRL) == SWT.CTRL)
+                                               editor.save();
+                                       break;
+                               case 'a':
+                                       if ((e.stateMask & SWT.SHIFT) == SWT.SHIFT)
+                                               editor.stateManager.add();
+                                       break;
+                               case 'h':
+                                       editor.stateManager.boxSelect();
+                                       break;
+                               }
+
+                       }
+               });
+       }
+
+       public Point getCanvasMousePosition()
+       {
+               return new Point(gui.logicCanvas.toControl(gui.display.getCursorLocation()));
+       }
+
+       public Point getWorldMousePosition()
+       {
+               return gui.logicCanvas.canvasToWorldCoords(getCanvasMousePosition());
+       }
+}
\ No newline at end of file