Restructured the Preferences system
[Mograsim.git] / plugins / net.mograsim.logic.model.editor / src / net / mograsim / logic / model / editor / EditorUserInput.java
1 package net.mograsim.logic.model.editor;
2
3 import static net.mograsim.logic.model.preferences.RenderPreferences.ACTION_BUTTON;
4
5 import org.eclipse.swt.SWT;
6
7 import net.haspamelodica.swt.helper.swtobjectwrappers.Point;
8 import net.mograsim.logic.model.editor.ui.EditorGUI;
9
10 public class EditorUserInput
11 {
12         private final EditorGUI gui;
13
14         public EditorUserInput(Editor editor)
15         {
16                 this.gui = editor.gui;
17                 gui.logicCanvas.addListener(SWT.MouseDown, e ->
18                 {
19                         Point clicked = editor.gui.logicCanvas.canvasToWorldCoords(e.x, e.y);
20                         if (e.button == editor.renderPrefs.getInt(ACTION_BUTTON))
21                                 editor.handleManager.click(clicked, e.stateMask);
22                 });
23
24                 gui.logicCanvas.addMouseMoveListener(e ->
25                 {
26                         Point dest = editor.gui.logicCanvas.canvasToWorldCoords(e.x, e.y);
27                         editor.stateManager.mouseMoved(dest.x, dest.y);
28                 });
29
30                 gui.logicCanvas.addListener(SWT.KeyDown, e ->
31                 {
32                         switch (e.keyCode)
33                         {
34                         case 'c':
35                                 if ((e.stateMask & SWT.CTRL) == SWT.CTRL)
36                                         editor.stateManager.copy();
37                                 break;
38                         case 'v':
39                                 if ((e.stateMask & SWT.CTRL) == SWT.CTRL)
40                                         editor.stateManager.paste();
41                                 break;
42                         case 'd':
43                                 if ((e.stateMask & SWT.SHIFT) == SWT.SHIFT)
44                                         editor.stateManager.duplicate();
45                                 break;
46                         case 'g':
47                                 editor.stateManager.grab();
48                                 break;
49                         case 'r':
50                                 editor.stateManager.delete();
51                                 break;
52                         case 's':
53                                 if ((e.stateMask & SWT.CTRL) == SWT.CTRL)
54                                         editor.save();
55                                 break;
56                         case 'a':
57                                 if ((e.stateMask & SWT.SHIFT) == SWT.SHIFT)
58                                         editor.stateManager.add();
59                                 break;
60                         case 'h':
61                                 editor.stateManager.boxSelect();
62                                 break;
63                         default:
64                                 // don't react
65                         }
66                 });
67         }
68
69         public Point getCanvasMousePosition()
70         {
71                 return new Point(gui.logicCanvas.toControl(gui.display.getCursorLocation()));
72         }
73
74         public Point getWorldMousePosition()
75         {
76                 return gui.logicCanvas.canvasToWorldCoords(getCanvasMousePosition());
77         }
78 }