feae04f3aca4781bd735cdb9c4039ccf58dab2fc
[Mograsim.git] / net.mograsim.logic.model.editor / src / net / mograsim / logic / model / editor / EditorUserInput.java
1 package net.mograsim.logic.model.editor;
2
3 import org.eclipse.swt.SWT;
4 import org.eclipse.swt.events.KeyEvent;
5 import org.eclipse.swt.events.KeyListener;
6 import org.eclipse.swt.events.MouseEvent;
7 import org.eclipse.swt.events.MouseListener;
8
9 import net.haspamelodica.swt.helper.swtobjectwrappers.Point;
10 import net.mograsim.logic.model.editor.ui.EditorGUI;
11
12 public class EditorUserInput
13 {
14         private final EditorGUI gui;
15
16         public EditorUserInput(Editor editor)
17         {
18                 this.gui = editor.gui;
19                 gui.logicCanvas.addMouseListener(new MouseListener()
20                 {
21                         @Override
22                         public void mouseDoubleClick(MouseEvent e)
23                         {
24                                 // TODO Auto-generated method stub
25                         }
26
27                         @Override
28                         public void mouseDown(MouseEvent e)
29                         {
30                                 Point clicked = editor.gui.logicCanvas.canvasToWorldCoords(e.x, e.y);
31                                 switch (e.button)
32                                 {
33                                 case 1:
34                                         editor.handleManager.click(clicked, e.stateMask);
35                                         break;
36                                 }
37
38                         }
39
40                         @Override
41                         public void mouseUp(MouseEvent e)
42                         {
43                         }
44                 });
45
46                 gui.logicCanvas.addMouseMoveListener((e) ->
47                 {
48                         Point dest = editor.gui.logicCanvas.canvasToWorldCoords(e.x, e.y);
49                         editor.stateManager.mouseMoved(dest.x, dest.y);
50                 });
51
52                 gui.logicCanvas.addKeyListener(new KeyListener()
53                 {
54
55                         @Override
56                         public void keyReleased(KeyEvent e)
57                         {
58                                 // TODO Auto-generated method stub
59
60                         }
61
62                         @Override
63                         public void keyPressed(KeyEvent e)
64                         {
65                                 switch (e.keyCode)
66                                 {
67                                 case 'c':
68                                         if ((e.stateMask & SWT.CTRL) == SWT.CTRL)
69                                                 editor.stateManager.copy();
70                                         break;
71                                 case 'v':
72                                         if ((e.stateMask & SWT.CTRL) == SWT.CTRL)
73                                                 editor.stateManager.paste();
74                                         break;
75                                 case 'd':
76                                         if ((e.stateMask & SWT.SHIFT) == SWT.SHIFT)
77                                                 editor.stateManager.duplicate();
78                                         break;
79                                 case 'g':
80                                         editor.stateManager.grab();
81                                         break;
82                                 case 'r':
83                                         editor.stateManager.delete();
84                                         break;
85                                 case 's':
86                                         if ((e.stateMask & SWT.CTRL) == SWT.CTRL)
87                                                 editor.save();
88                                         break;
89                                 case 'a':
90                                         if ((e.stateMask & SWT.SHIFT) == SWT.SHIFT)
91                                                 editor.stateManager.add();
92                                         break;
93                                 case 'h':
94                                         editor.stateManager.boxSelect();
95                                         break;
96                                 }
97
98                         }
99                 });
100         }
101
102         public Point getCanvasMousePosition()
103         {
104                 return new Point(gui.logicCanvas.toControl(gui.display.getCursorLocation()));
105         }
106
107         public Point getWorldMousePosition()
108         {
109                 return gui.logicCanvas.canvasToWorldCoords(getCanvasMousePosition());
110         }
111 }