Merge branch 'development' of
[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
11 public class EditorUserInput
12 {
13         public EditorUserInput(Editor editor, EditorGUI gui)
14         {
15                 gui.logicCanvas.addMouseListener(new MouseListener()
16                 {
17                         @Override
18                         public void mouseDoubleClick(MouseEvent e)
19                         {
20                                 // TODO Auto-generated method stub
21                         }
22
23                         @Override
24                         public void mouseDown(MouseEvent e)
25                         {
26                                 Point clicked = editor.gui.logicCanvas.canvasToWorldCoords(e.x, e.y);
27                                 switch (e.button)
28                                 {
29                                 case 1:
30                                         editor.handleManager.click(clicked, e.stateMask);
31                                         break;
32                                 }
33
34                         }
35
36                         @Override
37                         public void mouseUp(MouseEvent e) {}
38                 });
39
40                 gui.logicCanvas.addMouseMoveListener((e) ->
41                 {
42                         Point dest = editor.gui.logicCanvas.canvasToWorldCoords(e.x, e.y);
43                         editor.stateManager.mouseMoved(dest.x, dest.y);
44                 });
45
46                 gui.logicCanvas.addKeyListener(new KeyListener()
47                 {
48                         
49                         @Override
50                         public void keyReleased(KeyEvent e)
51                         {
52                                 // TODO Auto-generated method stub
53                                 
54                         }
55                         
56                         @Override
57                         public void keyPressed(KeyEvent e)
58                         {
59                                 switch (e.keyCode)
60                                 {
61                                 case 'c':
62                                         if ((e.stateMask & SWT.CTRL) == SWT.CTRL)
63                                                 editor.stateManager.copy();
64                                         break;
65                                 case 'v':
66                                         if ((e.stateMask & SWT.CTRL) == SWT.CTRL)
67                                                 editor.stateManager.paste();
68                                         break;
69                                 case 'd':
70                                         if ((e.stateMask & SWT.SHIFT) == SWT.SHIFT)
71                                                 editor.stateManager.duplicate();
72                                         break;
73                                 case 'g':
74                                         editor.stateManager.grab();
75                                         break;
76                                 case 'r':
77                                         editor.stateManager.delete();
78                                         break;
79                                 case 's':
80                                         if ((e.stateMask & SWT.CTRL) == SWT.CTRL)
81                                                 editor.save();
82                                         break;
83                                 case 'a':
84                                         if ((e.stateMask & SWT.SHIFT) == SWT.SHIFT)
85                                                 editor.stateManager.add();
86                                         break;
87                                 case 'h':
88                                         editor.stateManager.boxSelect();
89                                         break;
90                                 }
91
92                         }
93                 });
94         }
95 }