From 6458dfd39bb305188bcdd57b8d8fc613938110cd Mon Sep 17 00:00:00 2001 From: bancika Date: Fri, 21 Apr 2017 13:29:42 +0200 Subject: [PATCH] Use Mac "command" key for menu shortcuts under OSX --- .../src/org/diylc/swing/ActionFactory.java | 52 ++++++++++++------- .../swing/plugins/file/FileMenuPlugin.java | 10 +++- diylc/diylc-swing/update.xml | 4 ++ 3 files changed, 45 insertions(+), 21 deletions(-) diff --git a/diylc/diylc-swing/src/org/diylc/swing/ActionFactory.java b/diylc/diylc-swing/src/org/diylc/swing/ActionFactory.java index a94d23d7..55834545 100644 --- a/diylc/diylc-swing/src/org/diylc/swing/ActionFactory.java +++ b/diylc/diylc-swing/src/org/diylc/swing/ActionFactory.java @@ -1,5 +1,6 @@ package org.diylc.swing; +import java.awt.Toolkit; import java.awt.datatransfer.Clipboard; import java.awt.datatransfer.ClipboardOwner; import java.awt.event.ActionEvent; @@ -87,8 +88,8 @@ public class ActionFactory { return new ExportPNGAction(drawingProvider, swingUI); } - public PrintAction createPrintAction(IDrawingProvider drawingProvider) { - return new PrintAction(drawingProvider); + public PrintAction createPrintAction(IDrawingProvider drawingProvider, int keyModifiers) { + return new PrintAction(drawingProvider, keyModifiers); } public ExitAction createExitAction(IPlugInPort plugInPort) { @@ -136,7 +137,7 @@ public class ActionFactory { public SaveAsTemplateAction createSaveAsTemplateAction(IPlugInPort plugInPort) { return new SaveAsTemplateAction(plugInPort); } - + public SaveAsBlockAction createSaveAsBlockAction(IPlugInPort plugInPort) { return new SaveAsBlockAction(plugInPort); } @@ -191,7 +192,8 @@ public class ActionFactory { super(); this.plugInPort = plugInPort; putValue(AbstractAction.NAME, "New"); - putValue(AbstractAction.ACCELERATOR_KEY, KeyStroke.getKeyStroke(KeyEvent.VK_N, ActionEvent.CTRL_MASK)); + putValue(AbstractAction.ACCELERATOR_KEY, + KeyStroke.getKeyStroke(KeyEvent.VK_N, Toolkit.getDefaultToolkit().getMenuShortcutKeyMask())); putValue(AbstractAction.SMALL_ICON, IconLoader.DocumentPlain.getIcon()); } @@ -229,7 +231,8 @@ public class ActionFactory { this.plugInPort = plugInPort; this.swingUI = swingUI; putValue(AbstractAction.NAME, "Open"); - putValue(AbstractAction.ACCELERATOR_KEY, KeyStroke.getKeyStroke(KeyEvent.VK_O, ActionEvent.CTRL_MASK)); + putValue(AbstractAction.ACCELERATOR_KEY, + KeyStroke.getKeyStroke(KeyEvent.VK_O, Toolkit.getDefaultToolkit().getMenuShortcutKeyMask())); putValue(AbstractAction.SMALL_ICON, IconLoader.FolderOut.getIcon()); } @@ -299,7 +302,8 @@ public class ActionFactory { } }); putValue(AbstractAction.NAME, "Import"); - putValue(AbstractAction.ACCELERATOR_KEY, KeyStroke.getKeyStroke(KeyEvent.VK_I, ActionEvent.CTRL_MASK)); + putValue(AbstractAction.ACCELERATOR_KEY, + KeyStroke.getKeyStroke(KeyEvent.VK_I, Toolkit.getDefaultToolkit().getMenuShortcutKeyMask())); putValue(AbstractAction.SMALL_ICON, IconLoader.ElementInto.getIcon()); } @@ -352,7 +356,8 @@ public class ActionFactory { this.plugInPort = plugInPort; this.swingUI = swingUI; putValue(AbstractAction.NAME, "Save"); - putValue(AbstractAction.ACCELERATOR_KEY, KeyStroke.getKeyStroke(KeyEvent.VK_S, ActionEvent.CTRL_MASK)); + putValue(AbstractAction.ACCELERATOR_KEY, + KeyStroke.getKeyStroke(KeyEvent.VK_S, Toolkit.getDefaultToolkit().getMenuShortcutKeyMask())); putValue(AbstractAction.SMALL_ICON, IconLoader.DiskBlue.getIcon()); } @@ -416,8 +421,10 @@ public class ActionFactory { this.plugInPort = plugInPort; this.swingUI = swingUI; putValue(AbstractAction.NAME, "Save As"); - putValue(AbstractAction.ACCELERATOR_KEY, - KeyStroke.getKeyStroke(KeyEvent.VK_S, ActionEvent.CTRL_MASK | ActionEvent.SHIFT_MASK)); + putValue( + AbstractAction.ACCELERATOR_KEY, + KeyStroke.getKeyStroke(KeyEvent.VK_S, Toolkit.getDefaultToolkit().getMenuShortcutKeyMask() + | ActionEvent.SHIFT_MASK)); putValue(AbstractAction.SMALL_ICON, IconLoader.DiskBlue.getIcon()); } @@ -564,11 +571,11 @@ public class ActionFactory { private IDrawingProvider drawingProvider; - public PrintAction(IDrawingProvider drawingProvider) { + public PrintAction(IDrawingProvider drawingProvider, int keyModifiers) { super(); this.drawingProvider = drawingProvider; putValue(AbstractAction.NAME, "Print..."); - putValue(AbstractAction.ACCELERATOR_KEY, KeyStroke.getKeyStroke(KeyEvent.VK_P, ActionEvent.CTRL_MASK)); + putValue(AbstractAction.ACCELERATOR_KEY, KeyStroke.getKeyStroke(KeyEvent.VK_P, keyModifiers)); putValue(AbstractAction.SMALL_ICON, IconLoader.Print.getIcon()); } @@ -622,7 +629,8 @@ public class ActionFactory { this.clipboard = clipboard; this.clipboardOwner = clipboardOwner; putValue(AbstractAction.NAME, "Cut"); - putValue(AbstractAction.ACCELERATOR_KEY, KeyStroke.getKeyStroke(KeyEvent.VK_X, ActionEvent.CTRL_MASK)); + putValue(AbstractAction.ACCELERATOR_KEY, + KeyStroke.getKeyStroke(KeyEvent.VK_X, Toolkit.getDefaultToolkit().getMenuShortcutKeyMask())); putValue(AbstractAction.SMALL_ICON, IconLoader.Cut.getIcon()); } @@ -649,7 +657,8 @@ public class ActionFactory { this.clipboard = clipboard; this.clipboardOwner = clipboardOwner; putValue(AbstractAction.NAME, "Copy"); - putValue(AbstractAction.ACCELERATOR_KEY, KeyStroke.getKeyStroke(KeyEvent.VK_C, ActionEvent.CTRL_MASK)); + putValue(AbstractAction.ACCELERATOR_KEY, + KeyStroke.getKeyStroke(KeyEvent.VK_C, Toolkit.getDefaultToolkit().getMenuShortcutKeyMask())); putValue(AbstractAction.SMALL_ICON, IconLoader.Copy.getIcon()); } @@ -673,7 +682,8 @@ public class ActionFactory { this.plugInPort = plugInPort; this.clipboard = clipboard; putValue(AbstractAction.NAME, "Paste"); - putValue(AbstractAction.ACCELERATOR_KEY, KeyStroke.getKeyStroke(KeyEvent.VK_V, ActionEvent.CTRL_MASK)); + putValue(AbstractAction.ACCELERATOR_KEY, + KeyStroke.getKeyStroke(KeyEvent.VK_V, Toolkit.getDefaultToolkit().getMenuShortcutKeyMask())); putValue(AbstractAction.SMALL_ICON, IconLoader.Paste.getIcon()); } @@ -713,7 +723,8 @@ public class ActionFactory { super(); this.plugInPort = plugInPort; putValue(AbstractAction.NAME, "Select All"); - putValue(AbstractAction.ACCELERATOR_KEY, KeyStroke.getKeyStroke(KeyEvent.VK_A, ActionEvent.CTRL_MASK)); + putValue(AbstractAction.ACCELERATOR_KEY, + KeyStroke.getKeyStroke(KeyEvent.VK_A, Toolkit.getDefaultToolkit().getMenuShortcutKeyMask())); putValue(AbstractAction.SMALL_ICON, IconLoader.Selection.getIcon()); } @@ -734,7 +745,8 @@ public class ActionFactory { super(); this.plugInPort = plugInPort; putValue(AbstractAction.NAME, "Group Selection"); - putValue(AbstractAction.ACCELERATOR_KEY, KeyStroke.getKeyStroke(KeyEvent.VK_G, ActionEvent.CTRL_MASK)); + putValue(AbstractAction.ACCELERATOR_KEY, + KeyStroke.getKeyStroke(KeyEvent.VK_G, Toolkit.getDefaultToolkit().getMenuShortcutKeyMask())); putValue(AbstractAction.SMALL_ICON, IconLoader.Group.getIcon()); } @@ -755,7 +767,8 @@ public class ActionFactory { super(); this.plugInPort = plugInPort; putValue(AbstractAction.NAME, "Ungroup Selection"); - putValue(AbstractAction.ACCELERATOR_KEY, KeyStroke.getKeyStroke(KeyEvent.VK_U, ActionEvent.CTRL_MASK)); + putValue(AbstractAction.ACCELERATOR_KEY, + KeyStroke.getKeyStroke(KeyEvent.VK_U, Toolkit.getDefaultToolkit().getMenuShortcutKeyMask())); putValue(AbstractAction.SMALL_ICON, IconLoader.Ungroup.getIcon()); } @@ -807,7 +820,8 @@ public class ActionFactory { super(); this.plugInPort = plugInPort; putValue(AbstractAction.NAME, "Edit Selection"); - putValue(AbstractAction.ACCELERATOR_KEY, KeyStroke.getKeyStroke(KeyEvent.VK_E, ActionEvent.CTRL_MASK)); + putValue(AbstractAction.ACCELERATOR_KEY, + KeyStroke.getKeyStroke(KeyEvent.VK_E, Toolkit.getDefaultToolkit().getMenuShortcutKeyMask())); putValue(AbstractAction.SMALL_ICON, IconLoader.EditComponent.getIcon()); } @@ -867,7 +881,7 @@ public class ActionFactory { } } } - + public static class SaveAsBlockAction extends AbstractAction { private static final long serialVersionUID = 1L; diff --git a/diylc/diylc-swing/src/org/diylc/swing/plugins/file/FileMenuPlugin.java b/diylc/diylc-swing/src/org/diylc/swing/plugins/file/FileMenuPlugin.java index 767b7d5f..cc952a18 100644 --- a/diylc/diylc-swing/src/org/diylc/swing/plugins/file/FileMenuPlugin.java +++ b/diylc/diylc-swing/src/org/diylc/swing/plugins/file/FileMenuPlugin.java @@ -1,5 +1,7 @@ package org.diylc.swing.plugins.file; +import java.awt.Toolkit; +import java.awt.event.KeyEvent; import java.util.EnumSet; import java.util.List; @@ -52,11 +54,15 @@ public class FileMenuPlugin implements IPlugIn, IDynamicSubmenuHandler { swingUI.injectMenuAction(null, FILE_TITLE); swingUI.injectMenuAction(actionFactory.createExportPDFAction(drawingProvider, swingUI), FILE_TITLE); swingUI.injectMenuAction(actionFactory.createExportPNGAction(drawingProvider, swingUI), FILE_TITLE); - swingUI.injectMenuAction(actionFactory.createPrintAction(drawingProvider), FILE_TITLE); + swingUI.injectMenuAction( + actionFactory.createPrintAction(drawingProvider, Toolkit.getDefaultToolkit().getMenuShortcutKeyMask()), + FILE_TITLE); swingUI.injectSubmenu(TRACE_MASK_TITLE, IconLoader.TraceMask.getIcon(), FILE_TITLE); swingUI.injectMenuAction(actionFactory.createExportPDFAction(traceMaskDrawingProvider, swingUI), TRACE_MASK_TITLE); swingUI.injectMenuAction(actionFactory.createExportPNGAction(traceMaskDrawingProvider, swingUI), TRACE_MASK_TITLE); - swingUI.injectMenuAction(actionFactory.createPrintAction(traceMaskDrawingProvider), TRACE_MASK_TITLE); + swingUI.injectMenuAction( + actionFactory.createPrintAction(traceMaskDrawingProvider, Toolkit.getDefaultToolkit().getMenuShortcutKeyMask() + | KeyEvent.SHIFT_DOWN_MASK), TRACE_MASK_TITLE); swingUI.injectMenuAction(actionFactory.createBomAction(plugInPort), FILE_TITLE); swingUI.injectMenuAction(null, FILE_TITLE); swingUI.injectMenuAction(actionFactory.createExitAction(plugInPort), FILE_TITLE); diff --git a/diylc/diylc-swing/update.xml b/diylc/diylc-swing/update.xml index 1900ce36..18ade24d 100644 --- a/diylc/diylc-swing/update.xml +++ b/diylc/diylc-swing/update.xml @@ -1717,6 +1717,10 @@ IMPROVEMENT Show selection size in both inches and centimeters + + + IMPROVEMENT + Use Mac "command" key for menu shortcuts under OSX BUG_FIX