Added preferences for mouse button assignments
authorDaniel Kirschten <daniel.kirschten@gmx.de>
Thu, 26 Sep 2019 17:15:46 +0000 (19:15 +0200)
committerDaniel Kirschten <daniel.kirschten@gmx.de>
Thu, 26 Sep 2019 17:15:46 +0000 (19:15 +0200)
plugins/net.mograsim.logic.model.editor/src/net/mograsim/logic/model/editor/EditorUserInput.java
plugins/net.mograsim.logic.model.editor/src/net/mograsim/logic/model/editor/ui/EditorGUI.java
plugins/net.mograsim.logic.model/src/net/mograsim/logic/model/LogicUICanvas.java
plugins/net.mograsim.logic.model/src/net/mograsim/logic/model/LogicUIStandaloneGUI.java
plugins/net.mograsim.plugin.core/src/net/mograsim/plugin/MainPreferencePage.java
plugins/net.mograsim.plugin.core/src/net/mograsim/plugin/editors/SimulationViewEditor.java
plugins/net.mograsim.preferences/src/net/mograsim/preferences/DefaultPreferences.java

index 333efcd..154a81f 100644 (file)
@@ -4,6 +4,7 @@ import org.eclipse.swt.SWT;
 
 import net.haspamelodica.swt.helper.swtobjectwrappers.Point;
 import net.mograsim.logic.model.editor.ui.EditorGUI;
+import net.mograsim.preferences.Preferences;
 
 public class EditorUserInput
 {
@@ -15,15 +16,8 @@ public class EditorUserInput
                gui.logicCanvas.addListener(SWT.MouseDown, e ->
                {
                        Point clicked = editor.gui.logicCanvas.canvasToWorldCoords(e.x, e.y);
-                       switch (e.button)
-                       {
-                       case 1:
+                       if (e.button == Preferences.current().getInt("net.mograsim.logic.model.button.action"))
                                editor.handleManager.click(clicked, e.stateMask);
-                               break;
-                       default:
-                               // don't react
-                       }
-
                });
 
                gui.logicCanvas.addMouseMoveListener(e ->
index b89d587..3dfd62e 100644 (file)
@@ -21,6 +21,7 @@ import net.haspamelodica.swt.helper.zoomablecanvas.helper.ZoomableCanvasUserInpu
 import net.mograsim.logic.model.editor.Editor;
 import net.mograsim.logic.model.editor.SaveLoadManager;
 import net.mograsim.logic.model.serializing.IndirectModelComponentCreator;
+import net.mograsim.preferences.Preferences;
 
 public class EditorGUI
 {
@@ -73,8 +74,8 @@ public class EditorGUI
                setupBottomToolBar(innerComp);
 
                ZoomableCanvasUserInput userInput = new ZoomableCanvasUserInput(logicCanvas);
-               userInput.buttonDrag = 3;
-               userInput.buttonZoom = 2;
+               userInput.buttonDrag = Preferences.current().getInt("net.mograsim.logic.model.button.drag");
+               userInput.buttonZoom = Preferences.current().getInt("net.mograsim.logic.model.button.zoom");
                userInput.enableUserInput();
                new ZoomableCanvasOverlay(logicCanvas, null).enableScale();
        }
index dda6753..162e002 100644 (file)
@@ -63,7 +63,7 @@ public class LogicUICanvas extends ZoomableCanvas
 
        private void mouseDown(Event e)
        {
-               if (e.button == 1)
+               if (e.button == Preferences.current().getInt("net.mograsim.logic.model.button.action"))
                {
                        Point click = canvasToWorldCoords(e.x, e.y);
                        for (ModelComponent component : model.getComponentsByName().values())
index 49182d6..55a96a5 100644 (file)
@@ -8,6 +8,7 @@ import org.eclipse.swt.widgets.Shell;
 import net.haspamelodica.swt.helper.zoomablecanvas.helper.ZoomableCanvasOverlay;
 import net.haspamelodica.swt.helper.zoomablecanvas.helper.ZoomableCanvasUserInput;
 import net.mograsim.logic.model.model.LogicModel;
+import net.mograsim.preferences.Preferences;
 
 /**
  * Standalone simulation visualizer graphical user interface.
@@ -28,8 +29,8 @@ public class LogicUIStandaloneGUI implements Runnable
                ui = new LogicUICanvas(shell, SWT.NONE, model);
 
                ZoomableCanvasUserInput userInput = new ZoomableCanvasUserInput(ui);
-               userInput.buttonDrag = 3;
-               userInput.buttonZoom = 2;
+               userInput.buttonDrag = Preferences.current().getInt("net.mograsim.logic.model.button.drag");
+               userInput.buttonZoom = Preferences.current().getInt("net.mograsim.logic.model.button.zoom");
                userInput.enableUserInput();
                new ZoomableCanvasOverlay(ui, null).enableScale();
        }
index b647a08..7bac991 100644 (file)
@@ -27,6 +27,16 @@ public class MainPreferencePage extends FieldEditorPreferencePage implements IWo
                addField(new BooleanFieldEditor("net.mograsim.logic.model.debug.openhlsshell", "Open the debug HLS shell", parent));
                addField(new IntegerFieldEditor("net.mograsim.logic.model.debug.hlsshelldepth",
                                "Depth of components to list in the debug HLS shell", parent));
+               IntegerFieldEditor editor;
+               editor = new IntegerFieldEditor("net.mograsim.logic.model.button.action", "Mouse button for actions", parent);
+               editor.setValidRange(1, 5);
+               addField(editor);
+               editor = new IntegerFieldEditor("net.mograsim.logic.model.button.drag", "Mouse button for dragging", parent);
+               editor.setValidRange(1, 5);
+               addField(editor);
+               editor = new IntegerFieldEditor("net.mograsim.logic.model.button.zoom", "Mouse button for zooming", parent);
+               editor.setValidRange(1, 5);
+               addField(editor);
                // TODO add other preferences
        }
 }
\ No newline at end of file
index 02fc2d9..3000d65 100644 (file)
@@ -38,6 +38,7 @@ import net.mograsim.plugin.nature.ProjectMachineContext;
 import net.mograsim.plugin.tables.DisplaySettings;
 import net.mograsim.plugin.tables.mi.ActiveInstructionPreviewContentProvider;
 import net.mograsim.plugin.tables.mi.InstructionTable;
+import net.mograsim.preferences.Preferences;
 
 //TODO what if we open multiple editors?
 //TODO actually save / load register and latch states
@@ -135,8 +136,8 @@ public class SimulationViewEditor extends EditorPart
                        machine = machineOptional.get();
                        canvas = new LogicUICanvas(canvasParent, SWT.NONE, machine.getModel());
                        ZoomableCanvasUserInput userInput = new ZoomableCanvasUserInput(canvas);
-                       userInput.buttonDrag = 3;
-                       userInput.buttonZoom = 2;
+                       userInput.buttonDrag = Preferences.current().getInt("net.mograsim.logic.model.button.drag");
+                       userInput.buttonZoom = Preferences.current().getInt("net.mograsim.logic.model.button.zoom");
                        userInput.enableUserInput();
                        if (zoom > 0)
                        {
index 9b867ce..da01459 100644 (file)
@@ -25,6 +25,12 @@ public class DefaultPreferences extends Preferences
                {
                case "net.mograsim.logic.model.debug.hlsshelldepth":
                        return 0;
+               case "net.mograsim.logic.model.button.action":
+                       return 1;
+               case "net.mograsim.logic.model.button.drag":
+                       return 3;
+               case "net.mograsim.logic.model.button.zoom":
+                       return 2;
                default:
                        throw new IllegalArgumentException("Unknown int preference name: " + name);
                }