Merge remote-tracking branch 'origin/development' into development
[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                 gui.logicCanvas.addMouseMoveListener((e) ->
45                 {
46                         Point dest = editor.gui.logicCanvas.canvasToWorldCoords(e.x, e.y);
47                         editor.stateManager.mouseMoved(dest.x, dest.y);
48                 });
49
50                 gui.logicCanvas.addKeyListener(new KeyListener()
51                 {
52                         
53                         @Override
54                         public void keyReleased(KeyEvent e)
55                         {
56                                 // TODO Auto-generated method stub
57                                 
58                         }
59                         
60                         @Override
61                         public void keyPressed(KeyEvent e)
62                         {
63                                 switch (e.keyCode)
64                                 {
65                                 case 'c':
66                                         if ((e.stateMask & SWT.CTRL) == SWT.CTRL)
67                                                 editor.stateManager.copy();
68                                         break;
69                                 case 'v':
70                                         if ((e.stateMask & SWT.CTRL) == SWT.CTRL)
71                                                 editor.stateManager.paste();
72                                         break;
73                                 case 'd':
74                                         if ((e.stateMask & SWT.SHIFT) == SWT.SHIFT)
75                                                 editor.stateManager.duplicate();
76                                         break;
77                                 case 'g':
78                                         editor.stateManager.grab();
79                                         break;
80                                 case 'r':
81                                         editor.stateManager.delete();
82                                         break;
83                                 case 's':
84                                         if ((e.stateMask & SWT.CTRL) == SWT.CTRL)
85                                                 editor.save();
86                                         break;
87                                 case 'a':
88                                         if ((e.stateMask & SWT.SHIFT) == SWT.SHIFT)
89                                                 editor.stateManager.add();
90                                         break;
91                                 case 'h':
92                                         editor.stateManager.boxSelect();
93                                         break;
94                                 }
95
96                         }
97                 });
98         }
99         
100         public Point getCanvasMousePosition()
101         {
102                 return new Point(gui.logicCanvas.toControl(gui.display.getCursorLocation()));
103         }
104
105         public Point getWorldMousePosition()
106         {
107                 return gui.logicCanvas.canvasToWorldCoords(getCanvasMousePosition());
108         }
109 }