This is an automated email from the ASF dual-hosted git repository. ebakke pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/netbeans.git
commit 81c25719953416a62de7ac1e94e0ade18396a390 Author: Eirik Bakke <eba...@ultorg.com> AuthorDate: Sat Mar 25 17:50:10 2023 -0400 Replace calls to KeyEvent.getKeyText with Actions.keyStrokeToString where safe/appropriate. The Actions.keyStrokeToString method shows more user-friendly keyboard shortcut strings on MacOS, and in some other cases. This commit replaces calls to KeyEvent.getKeyText with Actions.keyStrokeToString in various places around the NetBeans codebase, for cases where I'm reasonably sure that the resulting string is used only for UI display purposes. The options.keymap module has not been touched, as this module probably makes assumptions about the format of the generated shortcut strings, e.g. for persistence of keymap configuration. Displaying better shortcut strings on MacOS in the Keymap options pane is better left as a separate project. For this commit, all occurrences of the following strings were reviewed, via "git grep": * KeyEvent.getKeyText * KeyEvent.getKeyModifiersText * InputEvent.getModifiersExText --- .../org/netbeans/jellytools/actions/Action.java | 6 ++--- .../bookmarks/ui/GotoLineOrBookmarkPanel.java | 5 ++-- .../src/org/netbeans/editor/MultiKeymap.java | 3 ++- .../editor/lib2/actions/EditorActionUtilities.java | 31 +++------------------- .../java/editor/overridden/ComputeAnnotations.java | 4 +-- .../modules/java/navigation/ToolTipManagerEx.java | 6 ++++- .../o.n.core/src/org/netbeans/core/NbKeymap.java | 13 ++------- .../modules/profiler/api/ActionsSupport.java | 20 ++++---------- 8 files changed, 24 insertions(+), 64 deletions(-) diff --git a/harness/jellytools.platform/src/org/netbeans/jellytools/actions/Action.java b/harness/jellytools.platform/src/org/netbeans/jellytools/actions/Action.java index da3b74d6e7..8aa364c31c 100644 --- a/harness/jellytools.platform/src/org/netbeans/jellytools/actions/Action.java +++ b/harness/jellytools.platform/src/org/netbeans/jellytools/actions/Action.java @@ -23,7 +23,6 @@ import java.awt.Container; import java.awt.EventQueue; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; -import java.awt.event.KeyEvent; import javax.swing.KeyStroke; import javax.swing.tree.TreePath; @@ -44,6 +43,7 @@ import org.netbeans.jemmy.operators.Operator.ComponentVisualizer; import org.netbeans.jemmy.operators.Operator.DefaultStringComparator; import org.netbeans.jemmy.operators.Operator.StringComparator; import org.netbeans.jemmy.util.EmptyVisualizer; +import org.openide.awt.Actions; import org.openide.cookies.InstanceCookie; import org.openide.filesystems.FileObject; import org.openide.filesystems.FileUtil; @@ -1281,8 +1281,8 @@ public class Action { */ @Override public String toString() { - String s = KeyEvent.getKeyModifiersText(getKeyModifiers()); - return s + (s.length() > 0 ? "+" : "") + KeyEvent.getKeyText(getKeyCode()); + return Actions.keyStrokeToString( + KeyStroke.getKeyStroke(getKeyCode(), getKeyModifiers())); } } } diff --git a/ide/editor.bookmarks/src/org/netbeans/modules/editor/bookmarks/ui/GotoLineOrBookmarkPanel.java b/ide/editor.bookmarks/src/org/netbeans/modules/editor/bookmarks/ui/GotoLineOrBookmarkPanel.java index fbbb4abea5..e6f6c9834a 100644 --- a/ide/editor.bookmarks/src/org/netbeans/modules/editor/bookmarks/ui/GotoLineOrBookmarkPanel.java +++ b/ide/editor.bookmarks/src/org/netbeans/modules/editor/bookmarks/ui/GotoLineOrBookmarkPanel.java @@ -68,6 +68,7 @@ import org.netbeans.modules.editor.bookmarks.BookmarkInfo; import org.netbeans.modules.editor.bookmarks.BookmarkManager; import org.netbeans.modules.editor.bookmarks.BookmarkUtils; import org.openide.actions.GotoAction; +import org.openide.awt.Actions; import org.openide.util.NbBundle; import org.openide.util.actions.SystemAction; @@ -193,10 +194,8 @@ public class GotoLineOrBookmarkPanel extends JPanel implements ActionListener, F JPanel southPanel = new JPanel(); southPanel.setLayout(new GridBagLayout()); JLabel keyChooserLabel = new JLabel(); - String ksText = KeyEvent.getKeyModifiersText(ks.getModifiers()) + "+" + // NOI18N - KeyEvent.getKeyText(ks.getKeyCode()); keyChooserLabel.setText(NbBundle.getMessage(GotoLineOrBookmarkPanel.class, - "CTL_gotoDialogBookmarkKeyChooserLabel", ksText)); + "CTL_gotoDialogBookmarkKeyChooserLabel", Actions.keyStrokeToString(ks))); InputMap inputMap = rootPane.getInputMap(JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT); inputMap.put(ks, "openKeyChooser"); rootPane.getActionMap().put("openKeyChooser", new AbstractAction() { diff --git a/ide/editor.lib/src/org/netbeans/editor/MultiKeymap.java b/ide/editor.lib/src/org/netbeans/editor/MultiKeymap.java index 41cd390f9e..46ddc0c109 100644 --- a/ide/editor.lib/src/org/netbeans/editor/MultiKeymap.java +++ b/ide/editor.lib/src/org/netbeans/editor/MultiKeymap.java @@ -35,6 +35,7 @@ import javax.swing.text.DefaultEditorKit; import javax.swing.KeyStroke; import javax.swing.Action; import javax.swing.AbstractAction; +import org.openide.awt.Actions; import org.openide.awt.StatusDisplayer; import org.openide.util.Lookup; @@ -134,7 +135,7 @@ public class MultiKeymap implements Keymap { StringBuffer text = new StringBuffer(); for (Iterator it = globalContextList.iterator(); it.hasNext();) { - text.append(getKeyText((KeyStroke)it.next())).append(' '); + text.append(Actions.keyStrokeToString((KeyStroke) it.next())).append(' '); } StatusDisplayer.getDefault().setStatusText(text.toString()); } diff --git a/ide/editor.lib2/src/org/netbeans/modules/editor/lib2/actions/EditorActionUtilities.java b/ide/editor.lib2/src/org/netbeans/modules/editor/lib2/actions/EditorActionUtilities.java index ff142413d7..5976bf38e0 100644 --- a/ide/editor.lib2/src/org/netbeans/modules/editor/lib2/actions/EditorActionUtilities.java +++ b/ide/editor.lib2/src/org/netbeans/modules/editor/lib2/actions/EditorActionUtilities.java @@ -47,6 +47,7 @@ import org.netbeans.api.editor.mimelookup.MimePath; import org.netbeans.api.editor.settings.KeyBindingSettings; import org.netbeans.api.editor.settings.MultiKeyBinding; import org.netbeans.spi.editor.AbstractEditorAction; +import org.openide.awt.Actions; import org.openide.filesystems.FileObject; import org.openide.util.ImageUtilities; import org.openide.util.Lookup; @@ -184,7 +185,7 @@ public final class EditorActionUtilities { * @return mnemonic of the keystroke. */ public static String getKeyMnemonic(KeyStroke key) { - return appendKeyMnemonic(new StringBuilder(20), key).toString(); + return Actions.keyStrokeToString(key); } public static String getKeyMnemonic(List<KeyStroke> keys) { @@ -193,37 +194,11 @@ public final class EditorActionUtilities { if (sb.length() > 0) { sb.append(' '); //NOI18N } - appendKeyMnemonic(sb, key); + sb.append(Actions.keyStrokeToString(key)); } return sb.toString(); } - public static String appendKeyMnemonic(StringBuilder sb, KeyStroke key) { - String sk = org.openide.util.Utilities.keyToString(key); - int mods = key.getModifiers(); - if ((mods & KeyEvent.CTRL_MASK) != 0) { - sb.append("Ctrl+"); // NOI18N - } - if ((mods & KeyEvent.ALT_MASK) != 0) { - sb.append("Alt+"); // NOI18N - } - if ((mods & KeyEvent.SHIFT_MASK) != 0) { - sb.append("Shift+"); // NOI18N - } - if ((mods & KeyEvent.META_MASK) != 0) { - sb.append("Meta+"); // NOI18N - } - - int i = sk.indexOf('-'); //NOI18N - if (i != -1) { - sk = sk.substring(i + 1); - } - sb.append(sk); - - return sb.toString(); - } - - public static SearchableEditorKit getGlobalActionsKit() { synchronized (EditorActionUtilities.class) { if (globalActionsKit == null) { diff --git a/java/java.editor/src/org/netbeans/modules/java/editor/overridden/ComputeAnnotations.java b/java/java.editor/src/org/netbeans/modules/java/editor/overridden/ComputeAnnotations.java index 9c66e8029b..73b0d730df 100644 --- a/java/java.editor/src/org/netbeans/modules/java/editor/overridden/ComputeAnnotations.java +++ b/java/java.editor/src/org/netbeans/modules/java/editor/overridden/ComputeAnnotations.java @@ -20,7 +20,6 @@ package org.netbeans.modules.java.editor.overridden; import com.sun.source.tree.ClassTree; import com.sun.source.tree.MethodTree; -import java.awt.event.KeyEvent; import com.sun.source.tree.Tree; import java.util.Collection; import java.util.Collections; @@ -49,6 +48,7 @@ import org.netbeans.api.java.source.JavaSource.Phase; import org.netbeans.modules.parsing.api.Snapshot; import org.netbeans.modules.parsing.spi.*; import org.netbeans.modules.parsing.spi.Parser.Result; +import org.openide.awt.Actions; import org.openide.text.NbDocument; import org.openide.util.NbBundle; @@ -245,7 +245,7 @@ public class ComputeAnnotations extends JavaParserResultTask<Result> { for (MultiKeyBinding mkb : kbs.getKeyBindings()) { if (actionName.equals(mkb.getActionName())) { KeyStroke ks = mkb.getKeyStrokeCount() > 0 ? mkb.getKeyStroke(0) : null; - return ks != null ? KeyEvent.getKeyModifiersText(ks.getModifiers()) + '+' + KeyEvent.getKeyText(ks.getKeyCode()) : null; + return ks != null ? Actions.keyStrokeToString(ks) : null; } } return null; diff --git a/java/java.navigation/src/org/netbeans/modules/java/navigation/ToolTipManagerEx.java b/java/java.navigation/src/org/netbeans/modules/java/navigation/ToolTipManagerEx.java index 8d250a2a57..6126a38b74 100644 --- a/java/java.navigation/src/org/netbeans/modules/java/navigation/ToolTipManagerEx.java +++ b/java/java.navigation/src/org/netbeans/modules/java/navigation/ToolTipManagerEx.java @@ -35,6 +35,7 @@ import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.JPopupMenu; import javax.swing.JScrollPane; +import javax.swing.KeyStroke; import javax.swing.Popup; import javax.swing.PopupFactory; import javax.swing.SwingUtilities; @@ -44,6 +45,7 @@ import org.netbeans.api.annotations.common.NonNull; import org.netbeans.api.editor.mimelookup.MimeLookup; import org.netbeans.api.editor.mimelookup.MimePath; import org.netbeans.api.editor.settings.SimpleValueNames; +import org.openide.awt.Actions; import org.openide.nodes.Node; import org.openide.util.NbBundle; import org.openide.util.RequestProcessor; @@ -760,8 +762,10 @@ final class ToolTipManagerEx extends MouseAdapter implements MouseMotionListener JScrollPane scroll = new JScrollPane( content ); scroll.setHorizontalScrollBarPolicy( JScrollPane.HORIZONTAL_SCROLLBAR_NEVER ); add( scroll, new GridBagConstraints(0,0,1,1,1.0,1.0,GridBagConstraints.CENTER,GridBagConstraints.BOTH,new Insets(0,0,0,0),0,0) ); + String shownKeyStroke = Actions.keyStrokeToString(KeyStroke.getKeyStroke( + KeyEvent.VK_F1, Utilities.isMac() ? KeyEvent.VK_META : KeyEvent.CTRL_DOWN_MASK)); shortcut = new JLabel( NbBundle.getMessage( ToolTipManagerEx.class, "HINT_EnlargeJavaDocToolip", //NOI18N - Utilities.isMac() ? KeyEvent.getKeyText(KeyEvent.VK_META)+"+F1" : "Ctrl+F1" ) ); //NOI18N //NOI18N + shownKeyStroke ) ); shortcut.setHorizontalAlignment( JLabel.CENTER ); shortcut.setBorder( BorderFactory.createLineBorder(Color.black) ); add( shortcut, new GridBagConstraints(0,1,1,1,0.0,0.0,GridBagConstraints.CENTER,GridBagConstraints.BOTH,new Insets(0,0,0,0),0,0) ); diff --git a/platform/o.n.core/src/org/netbeans/core/NbKeymap.java b/platform/o.n.core/src/org/netbeans/core/NbKeymap.java index 98d74770a0..388cda8f0f 100644 --- a/platform/o.n.core/src/org/netbeans/core/NbKeymap.java +++ b/platform/o.n.core/src/org/netbeans/core/NbKeymap.java @@ -39,6 +39,7 @@ import javax.swing.Action; import javax.swing.KeyStroke; import javax.swing.text.Keymap; import org.openide.awt.AcceleratorBinding; +import org.openide.awt.Actions; import org.openide.awt.StatusDisplayer; import org.openide.cookies.InstanceCookie; import org.openide.filesystems.FileAttributeEvent; @@ -281,20 +282,10 @@ public final class NbKeymap implements Keymap, Comparator<KeyStroke> { StringBuilder text = new StringBuilder(); for (KeyStroke ks: context) { - text.append(getKeyText(ks)).append(' '); + text.append(Actions.keyStrokeToString(ks)).append(' '); } StatusDisplayer.getDefault().setStatusText(text.toString()); } - - private static String getKeyText (KeyStroke keyStroke) { - if (keyStroke == null) return ""; - String modifText = KeyEvent.getKeyModifiersText - (keyStroke.getModifiers ()); - if ("".equals (modifText)) - return KeyEvent.getKeyText (keyStroke.getKeyCode ()); - return modifText + "+" + // NOI18N - KeyEvent.getKeyText (keyStroke.getKeyCode ()); - } private static final Logger LOG = Logger.getLogger(NbKeymap.class.getName()); diff --git a/profiler/profiler.api/src/org/netbeans/modules/profiler/api/ActionsSupport.java b/profiler/profiler.api/src/org/netbeans/modules/profiler/api/ActionsSupport.java index 5c7f792dc0..164eb51126 100644 --- a/profiler/profiler.api/src/org/netbeans/modules/profiler/api/ActionsSupport.java +++ b/profiler/profiler.api/src/org/netbeans/modules/profiler/api/ActionsSupport.java @@ -23,8 +23,8 @@ import javax.swing.Action; import javax.swing.ActionMap; import javax.swing.InputMap; import javax.swing.KeyStroke; -import javax.swing.UIManager; import org.netbeans.modules.profiler.spi.ActionsSupportProvider; +import org.openide.awt.Actions; import org.openide.util.Lookup; /** @@ -35,22 +35,12 @@ import org.openide.util.Lookup; public final class ActionsSupport { public static final KeyStroke NO_KEYSTROKE = KeyStroke.getKeyStroke(KeyEvent.VK_UNDEFINED, 0); - - private static String ACC_DELIMITER; + public static String keyAcceleratorString(KeyStroke keyStroke) { - if (keyStroke == null || NO_KEYSTROKE.equals(keyStroke)) return null; - - String keyText = KeyEvent.getKeyText(keyStroke.getKeyCode()); - - int modifiers = keyStroke.getModifiers(); - if (modifiers == 0) return keyText; - - if (ACC_DELIMITER == null) { - ACC_DELIMITER = UIManager.getString("MenuItem.acceleratorDelimiter"); // NOI18N - if (ACC_DELIMITER == null) ACC_DELIMITER = "+"; // NOI18N // Note: NetBeans default, Swing uses '-' by default + if (keyStroke == null || NO_KEYSTROKE.equals(keyStroke)) { + return null; } - - return KeyEvent.getKeyModifiersText(modifiers) + ACC_DELIMITER + keyText; + return Actions.keyStrokeToString(keyStroke); } public static KeyStroke registerAction(String actionKey, Action action, ActionMap actionMap, InputMap inputMap) { --------------------------------------------------------------------- To unsubscribe, e-mail: commits-unsubscr...@netbeans.apache.org For additional commands, e-mail: commits-h...@netbeans.apache.org For further information about the NetBeans mailing lists, visit: https://cwiki.apache.org/confluence/display/NETBEANS/Mailing+lists