+
Index: core/src/org/netbeans/core/ShortcutsFolder.java
===================================================================
RCS file: /cvs/core/src/org/netbeans/core/ShortcutsFolder.java,v
retrieving revision 1.19
diff -u -u -r1.19 ShortcutsFolder.java
--- core/src/org/netbeans/core/ShortcutsFolder.java 27 Jul 2004 04:19:45 -0000 1.19
+++ core/src/org/netbeans/core/ShortcutsFolder.java 22 Aug 2004 10:03:30 -0000
@@ -17,6 +17,8 @@
import java.awt.*;
import java.awt.event.*;
import java.util.*;
+import java.util.Collection;
+import java.util.List;
import javax.swing.text.Keymap;
import javax.swing.*;
@@ -69,7 +71,7 @@
/** Creates new ShortcutsFolder */
- private ShortcutsFolder(DataFolder f) {
+ ShortcutsFolder(DataFolder f) {
super(f);
recreate();
}
@@ -444,7 +446,19 @@
}
}
} else {
- InstanceDataObject.remove(f, r.instanceName(), r.instanceClass());
+ String instanceName = r.instanceName();
+ if (!InstanceDataObject.remove(f, instanceName, r.instanceClass())) {
+ //We may be deleting a wildcard keystroke, and/or the
+ //order defined in the layer may not be the same as
+ //what we were fed by the shortcuts editor, so search
+ //all the possible variants
+ String[] permutations = getPermutations(instanceName);
+ for (int i=0; i < permutations.length; i++) {
+ if (InstanceDataObject.remove(f, permutations[i], r.instanceClass())) {
+ break;
+ }
+ }
+ }
}
} else { // It is '.shadow' file
FileObject root = f.getPrimaryFile();
@@ -459,6 +473,18 @@
if(foRemove != null) {
foRemove.delete();
}
+ String[] permutations = getPermutations(r.instanceName());
+ //We may be deleting a wildcard keystroke, and/or the
+ //order defined in the layer may not be the same as
+ //what we were fed by the shortcuts editor, so search
+ //all the possible variants
+ for (int i=0; i < permutations.length; i++) {
+ foRemove = root.getFileObject(permutations[i], "shadow");
+ if (foRemove != null) {
+ foRemove.delete();
+ break;
+ }
+ }
}
}
} catch (ClassNotFoundException ex) {
@@ -468,6 +494,107 @@
}
}
}
+
+ /**
+ * There is no required ordering of key modifiers (C, M, S, A), and the
+ * D (default) wildcard character can map to either C or M depending on
+ * the platform. So when we need to delete a keybinding, the editor has
+ * given us one possible ordering, but not necessarily the correct one; it
+ * has also given us a hard keybinding, but the key may really be bound to
+ * D. So, for "MAS-F5" (meta-alt-shift F5) on the pc, we need to check
+ * MSA-F5, SMA-F5, SAM-F5, AMS-F5, ASM-F5; on the mac, we also need to check
+ * the same permutations of DAS-F5, since it may be registered with the
+ * wildcard character.
+ *
+ * Finally, for each permutation, it is legal to separate characters with
+ * dashes - so for each permutation, we must also check for a hyphenated
+ * variant - i.e. for MAS-F5, we must check M-A-S-F5. Note that mixed
+ * hyphenation (M-AS-F5) is not supported. It either is or it isn't.
+ *
+ */
+ static String[] getPermutations (String name) {
+ String key = KeyEvent.META_MASK == Toolkit.getDefaultToolkit().getMenuShortcutKeyMask() ?
+ "M" : "C"; //NOI18N
+
+ int pos = name.lastIndexOf ("-"); //NOI18N
+ String keyPart = name.substring (pos);
+ String modsPart = Utilities.replaceString (name.substring (0, pos), "-", "");
+ if (modsPart.length() > 1) {
+ Collection perms = new HashSet(modsPart.length() * modsPart.length());
+ int idx = name.indexOf(key);
+ if (idx != -1) {
+ //First, try with the wildcard key. Remove all hyphens - we'll
+ //put them back later
+ StringBuffer sb = new StringBuffer(modsPart);
+ sb.replace(idx, idx+1, "D");
+ perms.add (sb.toString() + keyPart);
+ getAllPossibleOrderings (sb.toString(), keyPart, perms);
+ createHyphenatedPermutation(sb.toString().toCharArray(), perms, keyPart);
+ } else {
+ idx = name.indexOf ("D"); //NOI18N
+ if (idx != -1) {
+ StringBuffer sb = new StringBuffer(modsPart);
+ sb.replace(idx, idx+1, key);
+ perms.add (sb.toString() + keyPart);
+ getAllPossibleOrderings (sb.toString(), keyPart, perms);
+ createHyphenatedPermutation(sb.toString().toCharArray(), perms, keyPart);
+ }
+ }
+ getAllPossibleOrderings (modsPart, keyPart, perms);
+ createHyphenatedPermutation(modsPart.toCharArray(), perms, keyPart);
+ return (String[]) perms.toArray(new String[perms.size()]);
+ } else {
+ return "C".equals (modsPart) ?
+ new String[] {"D" + keyPart} : new String[0];
+ }
+ }
+
+ /**
+ * Retrieves all the possible orders for the passed in string, and puts them
+ * in the passed collection, appending toAppend
to each.
+ */
+ static void getAllPossibleOrderings (String s, String toAppend, final Collection store) {
+ char[] c = s.toCharArray();
+ mutate (c, store, 0, toAppend);
+ String[] result = (String[]) store.toArray(new String[store.size()]);
+ }
+
+ /**
+ * Recursively generates all possible orderings of the passed char array
+ */
+ private static void mutate(char[] c, Collection l, int n, String toAppend) {
+ if (n == c.length) {
+ l.add (new String(c) + toAppend);
+ createHyphenatedPermutation(c, l, toAppend);
+ return;
+ }
+ //XXX could be optimized to eliminate duplicates
+ for (int i=0; i < c.length; i++) {
+ char x = c[i];
+ c[i] = c[n];
+ c[n] = x;
+ if (n < c.length) {
+ mutate (c, l, n+1, toAppend);
+ }
+ }
+ }
+
+ /**
+ * Inserts "-" characters between each character in the char array and
+ * adds the result + toAppend to the collection.
+ */
+ static void createHyphenatedPermutation (char[] c, Collection l, String toAppend) {
+ if (c.length == 1) {
+ return;
+ }
+ StringBuffer sb = new StringBuffer (new String(c));
+ for (int i=c.length-1; i >= 1; i-=1) {
+ sb.insert (i, '-');
+ }
+ sb.append (toAppend);
+ l.add (sb.toString());
+ }
+
private static DataObject findForAction (DataFolder actionsFolder, Action a) {
if (actionsFolder == null) {
Index: core/test/unit/src/org/netbeans/core/ShortcutsFolderTest.java
===================================================================
RCS file: core/test/unit/src/org/netbeans/core/ShortcutsFolderTest.java
diff -N core/test/unit/src/org/netbeans/core/ShortcutsFolderTest.java
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ core/test/unit/src/org/netbeans/core/ShortcutsFolderTest.java 22 Aug 2004 10:03:33 -0000
@@ -0,0 +1,326 @@
+/*
+ * Sun Public License Notice
+ *
+ * The contents of this file are subject to the Sun Public License
+ * Version 1.0 (the "License"). You may not use this file except in
+ * compliance with the License. A copy of the License is available at
+ * http://www.sun.com/
+ *
+ * The Original Code is NetBeans. The Initial Developer of the Original
+ * Code is Sun Microsystems, Inc. Portions Copyright 1997-2004 Sun
+ * Microsystems, Inc. All Rights Reserved.
+ */
+package org.netbeans.core;
+
+import java.awt.Toolkit;
+import java.awt.event.ActionEvent;
+import java.awt.event.KeyEvent;
+import java.io.File;
+import java.io.IOException;
+import java.lang.ref.WeakReference;
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.Enumeration;
+import java.util.HashSet;
+import java.util.MissingResourceException;
+import java.util.Properties;
+import java.util.ResourceBundle;
+import java.util.StringTokenizer;
+import javax.swing.AbstractAction;
+import javax.swing.Action;
+import javax.swing.KeyStroke;
+import junit.framework.*;
+import org.netbeans.junit.*;
+import org.openide.ErrorManager;
+import org.openide.cookies.InstanceCookie;
+import org.openide.filesystems.FileObject;
+import org.openide.filesystems.FileSystem;
+import org.openide.filesystems.LocalFileSystem;
+import org.openide.filesystems.Repository;
+import org.openide.loaders.DataFolder;
+import org.openide.loaders.DataObject;
+import org.openide.util.Lookup;
+import org.openide.util.LookupListener;
+import org.openide.util.Utilities;
+import junit.textui.TestRunner;
+
+/**
+ * Tests shortcuts folder to ensure it handles wildcard keystrokes correctly.
+ */
+public class ShortcutsFolderTest extends NbTestCase {
+ /** Use for internal test execution inside IDE
+ * @param args command line arguments
+ */
+ public static void main(String[] args) {
+ TestRunner.run(new NbTestSuite(ShortcutsFolderTest.class));
+ }
+
+ /** Constructor required by JUnit.
+ * @param testName method name to be used as testcase
+ */
+ public ShortcutsFolderTest(String s) {
+ super(s);
+ }
+
+ public void testHyphenation (String s) {
+ HashSet set = new HashSet();
+ char[] c = new String("ABCD").toCharArray();
+ ShortcutsFolder.createHyphenatedPermutation (c, set, "-F5");
+
+ assertTrue (set.contains("A-B-C-D-F5"));
+ }
+
+ public void testPermutations () {
+ HashSet set = new HashSet();
+
+ ShortcutsFolder.getAllPossibleOrderings("BANG", "-F5", set);
+ String[] permutations = new String[] {
+ "BNAG", "BNGA", "BGNA", "BAGN", "BGAN",
+ "ANBG", "ABGN", "AGBN", "ANGB", "ABNG", "AGNB",
+ "NBGA", "NGBA", "NABG", "NGAB", "NBAG", "NAGB",
+ "GNAB", "GBAN", "GBNA", "GNBA", "GANB", "GABN",
+ };
+
+ for (int i=0; i < permutations.length; i++) {
+ assertTrue ("Permutation of BANG not generated: " + permutations[i],
+ set.contains(permutations[i] + "-F5"));
+ }
+ }
+
+ public void testPermutationsIncludeHyphenatedVariants() {
+ HashSet set = new HashSet();
+
+ ShortcutsFolder.getAllPossibleOrderings("BANG", "-F5", set);
+ String[] permutations = new String[] {
+ "B-N-A-G", "B-N-G-A", "B-G-N-A", "B-A-G-N", "B-G-A-N",
+ "A-N-B-G", "A-B-G-N", "A-G-B-N", "A-N-G-B", "A-B-N-G", "A-G-N-B",
+ "N-B-G-A", "N-G-B-A", "N-A-B-G", "N-G-A-B", "N-B-A-G", "N-A-G-B",
+ "G-N-A-B", "G-B-A-N", "G-B-N-A", "G-N-B-A", "G-A-N-B", "G-A-B-N",
+ };
+
+ for (int i=0; i < permutations.length; i++) {
+ assertTrue ("Permutation of BANG not generated: " + permutations[i],
+ set.contains(permutations[i] + "-F5"));
+ }
+ }
+
+ public void testPermutationsContainConvertedWildcard () {
+ String targetChar = (Utilities.getOperatingSystem() & Utilities.OS_MAC) != 0
+ ? "M" : "C";
+
+ String[] s = ShortcutsFolder.getPermutations("DA-F5");
+ HashSet set = new HashSet (Arrays.asList(s));
+ set.add ("DA-F5"); //Permutations will not contain the passed value
+
+ String[] permutations = new String[] {
+ targetChar+"A-F5", "A" + targetChar + "-F5",
+ targetChar+"-A-F5", "A-" + targetChar + "-F5",
+ "AD-F5", "A-D-F5", "D-A-F5"
+ };
+
+ for (int i=0; i < permutations.length; i++) {
+ assertTrue ("Permutation of DA-F5 not generated:"
+ + permutations[i] + "-(generated:" + set + ")",
+ set.contains(permutations[i]));
+ }
+ }
+
+ public void testPermutationsIncludeWildcardIfSpecifiedKeyIsToolkitAccelerator () {
+ String targetChar = (Utilities.getOperatingSystem() & Utilities.OS_MAC) != 0
+ ? "M" : "C";
+
+ String[] s = ShortcutsFolder.getPermutations(targetChar + "A-F5");
+
+ String[] permutations = new String[] {
+ "A" + targetChar + "-F5", "A-" + targetChar + "-F5",
+ "DA-F5", "D-A-F5"
+ };
+
+ HashSet set = new HashSet (Arrays.asList(s));
+ set.add (targetChar + "A-F5"); //Permutations will not contain the passed value
+
+ for (int i=0; i < permutations.length; i++) {
+ assertTrue ("Permutation of " + targetChar + "A-F5 not generated:"
+ + permutations[i] + "-(generated:" + set + ")",
+ set.contains(permutations[i].intern()));
+ }
+ }
+
+ private static String lastDir = null;
+ private File getTempDir() {
+ String outdir = System.getProperty("java.io.tmpdir"); //NOI18N
+ if (!outdir.endsWith(File.separator)) {
+ outdir += File.separator;
+ }
+ String dirname = Long.toHexString(System.currentTimeMillis());
+ lastDir = outdir + dirname + File.separator;
+ File dir = new File (outdir + dirname);
+ try {
+ dir.mkdir();
+ } catch (Exception ioe) {
+ ioe.printStackTrace();
+ fail ("Exception creating temporary dir for tests " + dirname + " - " + ioe.getMessage());
+ }
+ dir.deleteOnExit();
+ return dir;
+ }
+
+ private static Repository repository = null;
+ private FileSystem createTestingFilesystem () {
+ try {
+ LocalFileSystem result = new LocalFileSystem();
+ result.setRootDirectory(getTempDir());
+ repository = new Repository (result);
+ System.setProperty ("org.openide.util.Lookup", "org.netbeans.core.ShortcutsFolderTest$LKP");
+ return result;
+ } catch (Exception e) {
+ e.printStackTrace();
+ fail (e.getMessage());
+ }
+ return null;
+ }
+
+ private FileObject getFolderForShortcuts(FileSystem fs) {
+ FileObject result = null;
+ try {
+ result = fs.getRoot().getFileObject("Shortcuts");
+ if (result == null) {
+ result = fs.getRoot().createFolder("Shortcuts");
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ fail(e.getMessage());
+ }
+ return result;
+ }
+
+ private ShortcutsFolder createShortcutsFolder(FileSystem fs) {
+ try {
+ DataObject dob = DataObject.find(getFolderForShortcuts(fs));
+ ShortcutsFolder result = new ShortcutsFolder ((DataFolder)dob);
+ ShortcutsFolder.shortcutsFolder = result;
+ return result;
+ } catch (Exception e) {
+ e.printStackTrace();
+ fail ("Exception creating shortcuts folder on " + fs);
+ return null;
+ }
+ }
+
+ public void testShortcutsFolderDeletesShortcutWhenNameIsMisordered() throws Exception {
+ FileSystem fs = createTestingFilesystem();
+ FileObject fo = getFolderForShortcuts(fs);
+
+ FileObject data1 = fo.createData("AD-F5.instance");
+ assertNotNull(data1);
+ data1.setAttribute("instanceClass", "org.netbeans.core.ShortcutsFolderTest$TestAction");
+
+ FileObject data2 = fo.createData("AS-F5.instance");
+ assertNotNull(data2);
+ data2.setAttribute("instanceClass", "org.netbeans.core.ShortcutsFolderTest$TestAction");
+
+ File file = new File (lastDir + "Shortcuts" + File.separator + "AD-F5.instance");
+ assertTrue ("Actual file not created: " + file.getPath(), file.exists());
+
+
+ ShortcutsFolder sf = createShortcutsFolder(fs);
+ System.err.println("Created shortcuts folder " + sf);
+
+ sf.waitShortcutsFinished();
+
+ DataObject ob = DataObject.find (data1);
+ assertNotNull("Data object not found: " + data1.getPath(), ob);
+ System.err.println("Found data object " + data1);
+
+ InstanceCookie ck = (InstanceCookie) ob.getCookie(InstanceCookie.class);
+ Object obj = ck.instanceCreate();
+
+ assertTrue ("InstanceCookie was not an instanceof TestAction - " + obj, obj instanceof TestAction);
+
+ System.err.println("Got an instance: " + obj);
+
+ KeyStroke stroke = KeyStroke.getKeyStroke(KeyEvent.VK_F5, KeyEvent.ALT_MASK | Toolkit.getDefaultToolkit().getMenuShortcutKeyMask());
+ Action action = (Action) obj;
+
+ ShortcutsFolder.applyChanges(Arrays.asList(new Object[] {new ShortcutsFolder.ChangeRequest (stroke, action, false)}));
+
+ ShortcutsFolder.refreshGlobalMap();
+
+ FileObject now = fo.getFileObject ("AD-F5.instance");
+ assertNull ("File object should be deleted - ", now);
+
+ assertFalse ("File still exists: " + lastDir + "AD-F5.instance", file.exists());
+
+ file = new File (lastDir + "Shortcuts" + File.separator + "AS-F5.instance");
+ assertTrue ("File should not have been deleted: " + file.getPath(), file.exists());
+
+ }
+
+ public static class TestAction extends AbstractAction {
+ public void actionPerformed (ActionEvent ae) {}
+ }
+
+ public static class LKP extends Lookup {
+ public Object lookup (Class clazz) {
+ if (Repository.class == clazz) {
+ return repository;
+ }
+ if (ErrorManager.class == clazz) {
+ return new EM();
+ }
+ return null;
+ }
+
+ public Lookup.Result lookup (final Lookup.Template tpl) {
+ Lookup.Result r = new Lookup.Result() {
+ public Collection allInstances() {
+ if (tpl.getType() == ErrorManager.class) {
+ return Arrays.asList(new Object[] { new EM()});
+ } else {
+ return Collections.EMPTY_LIST;
+ }
+ }
+
+ public void addLookupListener (LookupListener l) {}
+
+ public void removeLookupListener (LookupListener l){}
+ };
+
+ return r;
+ }
+ }
+
+ public static class EM extends ErrorManager {
+ public Throwable attachAnnotations (Throwable t, Annotation[] arr) {
+ return t;
+ }
+
+ public void log (int i, String s) {
+ System.err.println(s);
+ }
+
+ public Annotation[] findAnnotations (Throwable t) {
+ return new Annotation[0];
+ }
+
+ public Throwable annotate (
+ Throwable t, int severity,
+ String message, String localizedMessage,
+ Throwable stackTrace, java.util.Date date
+ ) {
+ System.err.println(message);
+ t.printStackTrace();
+ return t;
+ }
+
+ public void notify (int severity, Throwable t) {
+ t.printStackTrace();
+ }
+
+ public ErrorManager getInstance(String name) {
+ return this;
+ }
+ }
+
+}
Index: core/ui/src/org/netbeans/core/ui/MenuWarmUpTask.java
===================================================================
RCS file: /cvs/core/ui/src/org/netbeans/core/ui/MenuWarmUpTask.java,v
retrieving revision 1.9
diff -u -u -r1.9 MenuWarmUpTask.java
--- core/ui/src/org/netbeans/core/ui/MenuWarmUpTask.java 19 Aug 2004 12:45:01 -0000 1.9
+++ core/ui/src/org/netbeans/core/ui/MenuWarmUpTask.java 22 Aug 2004 10:03:34 -0000
@@ -43,35 +43,6 @@
private Component[] comps;
- /**
- * Issue 32733 - the keyboard shortcut for FIND will use this method to
- * determine its visibility. For non-solaris operating systems, there is
- * no find key (XXX ask the HP folks about VMS), so that shouldn't be the
- * shortcut displayed in the menu.
- *
- * While this method doesn't really belong in a warmup task, it's silly to
- * create an extra class just for this sort of thing.
- */
- public static boolean isNotSolaris() {
- return Utilities.getOperatingSystem() != Utilities.OS_SOLARIS;
- }
-
- /**
- * Used to determine whether to bind Delete or Backspace to DeleteAction -
- * mac keyboards don't have a delete key.
- */
- public static boolean isMac() {
- return Utilities.getOperatingSystem() == Utilities.OS_MAC;
- }
-
- /**
- * Used to determine whether to bind Delete or Backspace to DeleteAction -
- * mac keyboards don't have a delete key.
- */
- public static boolean isNotMac() {
- return !isMac();
- }
-
/** Actually performs pre-heat.
*/
public void run() {
Index: core/ui/src/org/netbeans/core/ui/resources/layer.xml
===================================================================
RCS file: /cvs/core/ui/src/org/netbeans/core/ui/resources/layer.xml,v
retrieving revision 1.72
diff -u -u -r1.72 layer.xml
--- core/ui/src/org/netbeans/core/ui/resources/layer.xml 20 Aug 2004 08:34:31 -0000 1.72
+++ core/ui/src/org/netbeans/core/ui/resources/layer.xml 22 Aug 2004 10:03:35 -0000
@@ -243,7 +243,7 @@
-
+
@@ -253,21 +253,13 @@
-
-
-
-
-
-
-
-
-
+
-
+
@@ -279,7 +271,7 @@
-
+
@@ -287,22 +279,20 @@
-
+
-
-
-
+
-
+
@@ -310,18 +300,18 @@
-
+
-
+
-
+
Index: core/windows/src/org/netbeans/core/windows/resources/layer.xml
===================================================================
RCS file: /cvs/core/windows/src/org/netbeans/core/windows/resources/layer.xml,v
retrieving revision 1.32
diff -u -u -r1.32 layer.xml
--- core/windows/src/org/netbeans/core/windows/resources/layer.xml 27 Jul 2004 15:47:11 -0000 1.32
+++ core/windows/src/org/netbeans/core/windows/resources/layer.xml 22 Aug 2004 10:03:35 -0000
@@ -130,14 +130,15 @@
+
-
-
+
+
@@ -148,18 +149,18 @@
-
+
-
+
-
+
-
+
Index: debuggerjpda/ui/src/org/netbeans/modules/debugger/jpda/resources/mf-layer.xml
===================================================================
RCS file: /cvs/debuggerjpda/ui/src/org/netbeans/modules/debugger/jpda/resources/mf-layer.xml,v
retrieving revision 1.21
diff -u -u -r1.21 mf-layer.xml
--- debuggerjpda/ui/src/org/netbeans/modules/debugger/jpda/resources/mf-layer.xml 27 Jul 2004 06:29:12 -0000 1.21
+++ debuggerjpda/ui/src/org/netbeans/modules/debugger/jpda/resources/mf-layer.xml 22 Aug 2004 10:03:50 -0000
@@ -188,13 +188,13 @@
-
+
-
+
-
+
@@ -209,16 +209,16 @@
-
+
-
+
-
+
Index: editor/libsrc/org/netbeans/editor/SettingsDefaults.java
===================================================================
RCS file: /cvs/editor/libsrc/org/netbeans/editor/SettingsDefaults.java,v
retrieving revision 1.36
diff -u -u -r1.36 SettingsDefaults.java
--- editor/libsrc/org/netbeans/editor/SettingsDefaults.java 18 Aug 2004 17:22:18 -0000 1.36
+++ editor/libsrc/org/netbeans/editor/SettingsDefaults.java 22 Aug 2004 10:03:52 -0000
@@ -196,6 +196,22 @@
SettingsNames.STATUS_BAR_BOLD_COLORING
};
+
+ private static final int FIND_NEXT_KEY =
+ System.getProperty("mrj.version") == null ?
+ KeyEvent.VK_F3 : KeyEvent.VK_G;
+
+ private static final int FIND_NEXT_MASK =
+ System.getProperty("mrj.version") == null ?
+ 0 : KeyEvent.META_DOWN_MASK;
+
+ //#26854 - use Command, not Ctrl, on mac
+ private static final int MENU_MASK = java.awt.Toolkit.getDefaultToolkit().getMenuShortcutKeyMask();
+
+ //Default behavior on mac is that alt+arrows is word jumps
+ private static final int WORD_SELECT_MASK = System.getProperty("mrj.version") == null ?
+ InputEvent.CTRL_DOWN_MASK : InputEvent.ALT_DOWN_MASK;
+
public static final MultiKeyBinding[] defaultKeyBindings
= new MultiKeyBinding[] {
new MultiKeyBinding(
@@ -207,7 +223,7 @@
BaseKit.insertBreakAction
),
new MultiKeyBinding(
- KeyStroke.getKeyStroke(KeyEvent.VK_ENTER, InputEvent.CTRL_MASK),
+ KeyStroke.getKeyStroke(KeyEvent.VK_ENTER, MENU_MASK),
BaseKit.splitLineAction
),
new MultiKeyBinding(
@@ -239,7 +255,7 @@
BaseKit.deletePrevCharAction
),
/* new MultiKeyBinding(
- KeyStroke.getKeyStroke(KeyEvent.VK_H, InputEvent.CTRL_MASK | InputEvent.SHIFT_MASK),
+ KeyStroke.getKeyStroke(KeyEvent.VK_H, MENU_MASK | InputEvent.SHIFT_MASK),
BaseKit.deletePrevCharAction
),
*/ new MultiKeyBinding(
@@ -259,11 +275,11 @@
BaseKit.selectionForwardAction
),
new MultiKeyBinding(
- KeyStroke.getKeyStroke(KeyEvent.VK_RIGHT, InputEvent.CTRL_MASK),
+ KeyStroke.getKeyStroke(KeyEvent.VK_RIGHT, WORD_SELECT_MASK),
BaseKit.nextWordAction
),
new MultiKeyBinding(
- KeyStroke.getKeyStroke(KeyEvent.VK_RIGHT, InputEvent.SHIFT_MASK | InputEvent.CTRL_MASK),
+ KeyStroke.getKeyStroke(KeyEvent.VK_RIGHT, InputEvent.SHIFT_MASK | WORD_SELECT_MASK),
BaseKit.selectionNextWordAction
),
new MultiKeyBinding(
@@ -275,15 +291,15 @@
BaseKit.backwardAction
),
new MultiKeyBinding(
- KeyStroke.getKeyStroke(KeyEvent.VK_LEFT, InputEvent.SHIFT_MASK),
+ KeyStroke.getKeyStroke(KeyEvent.VK_LEFT, InputEvent.SHIFT_MASK),
BaseKit.selectionBackwardAction
),
new MultiKeyBinding(
- KeyStroke.getKeyStroke(KeyEvent.VK_LEFT, InputEvent.CTRL_MASK),
+ KeyStroke.getKeyStroke(KeyEvent.VK_LEFT, WORD_SELECT_MASK),
BaseKit.previousWordAction
),
new MultiKeyBinding(
- KeyStroke.getKeyStroke(KeyEvent.VK_LEFT, InputEvent.SHIFT_MASK | InputEvent.CTRL_MASK),
+ KeyStroke.getKeyStroke(KeyEvent.VK_LEFT, InputEvent.SHIFT_MASK | WORD_SELECT_MASK),
BaseKit.selectionPreviousWordAction
),
new MultiKeyBinding(
@@ -299,7 +315,7 @@
BaseKit.selectionDownAction
),
new MultiKeyBinding(
- KeyStroke.getKeyStroke(KeyEvent.VK_DOWN, InputEvent.CTRL_MASK),
+ KeyStroke.getKeyStroke(KeyEvent.VK_DOWN, MENU_MASK),
BaseKit.scrollUpAction
),
new MultiKeyBinding(
@@ -315,7 +331,7 @@
BaseKit.selectionUpAction
),
new MultiKeyBinding(
- KeyStroke.getKeyStroke(KeyEvent.VK_UP, InputEvent.CTRL_MASK),
+ KeyStroke.getKeyStroke(KeyEvent.VK_UP, MENU_MASK),
BaseKit.scrollDownAction
),
new MultiKeyBinding(
@@ -343,11 +359,11 @@
BaseKit.selectionBeginLineAction
),
new MultiKeyBinding(
- KeyStroke.getKeyStroke(KeyEvent.VK_HOME, InputEvent.CTRL_MASK),
+ KeyStroke.getKeyStroke(KeyEvent.VK_HOME, MENU_MASK),
BaseKit.beginAction
),
new MultiKeyBinding(
- KeyStroke.getKeyStroke(KeyEvent.VK_HOME, InputEvent.SHIFT_MASK | InputEvent.CTRL_MASK),
+ KeyStroke.getKeyStroke(KeyEvent.VK_HOME, InputEvent.SHIFT_MASK | MENU_MASK),
BaseKit.selectionBeginAction
),
new MultiKeyBinding(
@@ -359,21 +375,21 @@
BaseKit.selectionEndLineAction
),
new MultiKeyBinding(
- KeyStroke.getKeyStroke(KeyEvent.VK_END, InputEvent.CTRL_MASK),
+ KeyStroke.getKeyStroke(KeyEvent.VK_END, MENU_MASK),
BaseKit.endAction
),
new MultiKeyBinding(
- KeyStroke.getKeyStroke(KeyEvent.VK_END, InputEvent.SHIFT_MASK | InputEvent.CTRL_MASK),
+ KeyStroke.getKeyStroke(KeyEvent.VK_END, InputEvent.SHIFT_MASK | MENU_MASK),
BaseKit.selectionEndAction
),
// clipboard bindings
new MultiKeyBinding(
- KeyStroke.getKeyStroke(KeyEvent.VK_C, InputEvent.CTRL_MASK),
+ KeyStroke.getKeyStroke(KeyEvent.VK_C, MENU_MASK),
BaseKit.copyAction
),
new MultiKeyBinding(
- KeyStroke.getKeyStroke(KeyEvent.VK_INSERT, InputEvent.CTRL_MASK),
+ KeyStroke.getKeyStroke(KeyEvent.VK_INSERT, MENU_MASK),
BaseKit.copyAction
),
new MultiKeyBinding(
@@ -385,7 +401,7 @@
BaseKit.cutAction
),
new MultiKeyBinding(
- KeyStroke.getKeyStroke(KeyEvent.VK_X, InputEvent.CTRL_MASK),
+ KeyStroke.getKeyStroke(KeyEvent.VK_X, MENU_MASK),
BaseKit.cutAction
),
new MultiKeyBinding(
@@ -393,7 +409,7 @@
BaseKit.cutAction
),
new MultiKeyBinding(
- KeyStroke.getKeyStroke(KeyEvent.VK_V, InputEvent.CTRL_MASK),
+ KeyStroke.getKeyStroke(KeyEvent.VK_V, MENU_MASK),
BaseKit.pasteAction
),
new MultiKeyBinding(
@@ -405,13 +421,13 @@
BaseKit.pasteAction
),
new MultiKeyBinding(
- KeyStroke.getKeyStroke(KeyEvent.VK_V, InputEvent.CTRL_MASK | InputEvent.SHIFT_MASK),
+ KeyStroke.getKeyStroke(KeyEvent.VK_V, MENU_MASK | InputEvent.SHIFT_MASK),
BaseKit.pasteFormatedAction
),
// undo and redo bindings - handled at system level
new MultiKeyBinding(
- KeyStroke.getKeyStroke(KeyEvent.VK_Z, InputEvent.CTRL_MASK),
+ KeyStroke.getKeyStroke(KeyEvent.VK_Z, MENU_MASK),
BaseKit.undoAction
),
new MultiKeyBinding(
@@ -419,13 +435,13 @@
BaseKit.undoAction
),
new MultiKeyBinding(
- KeyStroke.getKeyStroke(KeyEvent.VK_Y, InputEvent.CTRL_MASK),
+ KeyStroke.getKeyStroke(KeyEvent.VK_Y, MENU_MASK),
BaseKit.redoAction
),
// other bindings
new MultiKeyBinding(
- KeyStroke.getKeyStroke(KeyEvent.VK_A, InputEvent.CTRL_MASK),
+ KeyStroke.getKeyStroke(KeyEvent.VK_A, MENU_MASK),
BaseKit.selectAllAction
),
new MultiKeyBinding(
@@ -436,15 +452,15 @@
BaseKit.endWordAction
),
new MultiKeyBinding(
- KeyStroke.getKeyStroke(KeyEvent.VK_W, InputEvent.CTRL_MASK),
+ KeyStroke.getKeyStroke(KeyEvent.VK_W, MENU_MASK),
BaseKit.removeWordAction
),
new MultiKeyBinding(
- KeyStroke.getKeyStroke(KeyEvent.VK_U, InputEvent.CTRL_MASK),
+ KeyStroke.getKeyStroke(KeyEvent.VK_U, MENU_MASK),
BaseKit.removeLineBeginAction
),
new MultiKeyBinding(
- KeyStroke.getKeyStroke(KeyEvent.VK_E, InputEvent.CTRL_MASK),
+ KeyStroke.getKeyStroke(KeyEvent.VK_E, MENU_MASK),
BaseKit.removeLineAction
),
new MultiKeyBinding(
@@ -452,7 +468,7 @@
BaseKit.toggleTypingModeAction
),
new MultiKeyBinding(
- KeyStroke.getKeyStroke(KeyEvent.VK_F2, InputEvent.CTRL_MASK),
+ KeyStroke.getKeyStroke(KeyEvent.VK_F2, MENU_MASK),
BaseKit.toggleBookmarkAction
),
new MultiKeyBinding(
@@ -460,15 +476,15 @@
BaseKit.gotoNextBookmarkAction
),
new MultiKeyBinding(
- KeyStroke.getKeyStroke(KeyEvent.VK_F3, 0),
+ KeyStroke.getKeyStroke(FIND_NEXT_KEY, FIND_NEXT_MASK),
BaseKit.findNextAction
),
new MultiKeyBinding(
- KeyStroke.getKeyStroke(KeyEvent.VK_F3, InputEvent.SHIFT_MASK),
+ KeyStroke.getKeyStroke(FIND_NEXT_KEY, FIND_NEXT_MASK | InputEvent.SHIFT_MASK),
BaseKit.findPreviousAction
),
new MultiKeyBinding(
- KeyStroke.getKeyStroke(KeyEvent.VK_F3, InputEvent.CTRL_MASK),
+ KeyStroke.getKeyStroke(FIND_NEXT_KEY, FIND_NEXT_MASK | InputEvent.CTRL_MASK),
BaseKit.findSelectionAction
),
new MultiKeyBinding(
@@ -476,19 +492,19 @@
BaseKit.toggleHighlightSearchAction
),
new MultiKeyBinding(
- KeyStroke.getKeyStroke(KeyEvent.VK_L, InputEvent.CTRL_MASK),
+ KeyStroke.getKeyStroke(KeyEvent.VK_L, MENU_MASK),
BaseKit.wordMatchNextAction
),
new MultiKeyBinding(
- KeyStroke.getKeyStroke(KeyEvent.VK_K, InputEvent.CTRL_MASK),
+ KeyStroke.getKeyStroke(KeyEvent.VK_K, MENU_MASK),
BaseKit.wordMatchPrevAction
),
new MultiKeyBinding(
- KeyStroke.getKeyStroke(KeyEvent.VK_T, InputEvent.CTRL_MASK),
+ KeyStroke.getKeyStroke(KeyEvent.VK_T, MENU_MASK),
BaseKit.shiftLineRightAction
),
new MultiKeyBinding(
- KeyStroke.getKeyStroke(KeyEvent.VK_D, InputEvent.CTRL_MASK),
+ KeyStroke.getKeyStroke(KeyEvent.VK_D, MENU_MASK),
BaseKit.shiftLineLeftAction
),
new MultiKeyBinding(
@@ -496,7 +512,7 @@
BaseKit.abbrevResetAction
),
new MultiKeyBinding(
- KeyStroke.getKeyStroke(KeyEvent.VK_C, InputEvent.CTRL_MASK | InputEvent.SHIFT_MASK),
+ KeyStroke.getKeyStroke(KeyEvent.VK_C, MENU_MASK | InputEvent.SHIFT_MASK),
BaseKit.annotationsCyclingAction
),
@@ -536,7 +552,7 @@
),
new MultiKeyBinding(
- KeyStroke.getKeyStroke(KeyEvent.VK_F, InputEvent.CTRL_MASK | InputEvent.SHIFT_MASK ),
+ KeyStroke.getKeyStroke(KeyEvent.VK_F, MENU_MASK | InputEvent.SHIFT_MASK ),
BaseKit.formatAction
),
new MultiKeyBinding(
@@ -582,13 +598,13 @@
),
new MultiKeyBinding(
- KeyStroke.getKeyStroke(KeyEvent.VK_M, InputEvent.CTRL_MASK),
+ KeyStroke.getKeyStroke(KeyEvent.VK_M, MENU_MASK),
BaseKit.selectNextParameterAction
),
new MultiKeyBinding(
new KeyStroke[] {
- KeyStroke.getKeyStroke(KeyEvent.VK_J, InputEvent.CTRL_MASK),
+ KeyStroke.getKeyStroke(KeyEvent.VK_J, MENU_MASK),
KeyStroke.getKeyStroke(KeyEvent.VK_S, 0),
},
BaseKit.startMacroRecordingAction
@@ -596,59 +612,59 @@
new MultiKeyBinding(
new KeyStroke[] {
- KeyStroke.getKeyStroke(KeyEvent.VK_J, InputEvent.CTRL_MASK),
+ KeyStroke.getKeyStroke(KeyEvent.VK_J, MENU_MASK),
KeyStroke.getKeyStroke(KeyEvent.VK_E, 0),
},
BaseKit.stopMacroRecordingAction
),
new MultiKeyBinding(
- KeyStroke.getKeyStroke(KeyEvent.VK_SUBTRACT, InputEvent.CTRL_MASK),
+ KeyStroke.getKeyStroke(KeyEvent.VK_SUBTRACT, MENU_MASK),
BaseKit.collapseFoldAction
),
new MultiKeyBinding(
- KeyStroke.getKeyStroke(KeyEvent.VK_ADD, InputEvent.CTRL_MASK),
+ KeyStroke.getKeyStroke(KeyEvent.VK_ADD, MENU_MASK),
BaseKit.expandFoldAction
),
new MultiKeyBinding(
- KeyStroke.getKeyStroke(KeyEvent.VK_SUBTRACT, InputEvent.CTRL_MASK | InputEvent.SHIFT_MASK),
+ KeyStroke.getKeyStroke(KeyEvent.VK_SUBTRACT, MENU_MASK | InputEvent.SHIFT_MASK),
BaseKit.collapseAllFoldsAction
),
new MultiKeyBinding(
- KeyStroke.getKeyStroke(KeyEvent.VK_ADD, InputEvent.CTRL_MASK | InputEvent.SHIFT_MASK),
+ KeyStroke.getKeyStroke(KeyEvent.VK_ADD, MENU_MASK | InputEvent.SHIFT_MASK),
BaseKit.expandAllFoldsAction
),
new MultiKeyBinding(
- KeyStroke.getKeyStroke(KeyEvent.VK_MINUS, InputEvent.CTRL_MASK),
+ KeyStroke.getKeyStroke(KeyEvent.VK_MINUS, MENU_MASK),
BaseKit.collapseFoldAction
),
new MultiKeyBinding(
- KeyStroke.getKeyStroke(KeyEvent.VK_EQUALS, InputEvent.CTRL_MASK),
+ KeyStroke.getKeyStroke(KeyEvent.VK_EQUALS, MENU_MASK),
BaseKit.expandFoldAction
),
new MultiKeyBinding(
- KeyStroke.getKeyStroke(KeyEvent.VK_PLUS, InputEvent.CTRL_MASK),
+ KeyStroke.getKeyStroke(KeyEvent.VK_PLUS, MENU_MASK),
BaseKit.expandFoldAction
),
new MultiKeyBinding(
- KeyStroke.getKeyStroke(KeyEvent.VK_MINUS, InputEvent.CTRL_MASK | InputEvent.SHIFT_MASK),
+ KeyStroke.getKeyStroke(KeyEvent.VK_MINUS, MENU_MASK | InputEvent.SHIFT_MASK),
BaseKit.collapseAllFoldsAction
),
new MultiKeyBinding(
- KeyStroke.getKeyStroke(KeyEvent.VK_EQUALS, InputEvent.CTRL_MASK | InputEvent.SHIFT_MASK),
+ KeyStroke.getKeyStroke(KeyEvent.VK_EQUALS, MENU_MASK | InputEvent.SHIFT_MASK),
BaseKit.expandAllFoldsAction
),
new MultiKeyBinding(
- KeyStroke.getKeyStroke(KeyEvent.VK_PLUS, InputEvent.CTRL_MASK | InputEvent.SHIFT_MASK),
+ KeyStroke.getKeyStroke(KeyEvent.VK_PLUS, MENU_MASK | InputEvent.SHIFT_MASK),
BaseKit.expandAllFoldsAction
),
Index: editor/libsrc/org/netbeans/editor/ext/ExtSettingsDefaults.java
===================================================================
RCS file: /cvs/editor/libsrc/org/netbeans/editor/ext/ExtSettingsDefaults.java,v
retrieving revision 1.34
diff -u -u -r1.34 ExtSettingsDefaults.java
--- editor/libsrc/org/netbeans/editor/ext/ExtSettingsDefaults.java 12 Aug 2004 12:05:19 -0000 1.34
+++ editor/libsrc/org/netbeans/editor/ext/ExtSettingsDefaults.java 22 Aug 2004 10:03:53 -0000
@@ -72,6 +72,7 @@
public static final Integer defaultJavaDocAutoPopupDelay = new Integer(200);
public static final Dimension defaultJavaDocPreferredSize = new Dimension(500, 300);
public static final Boolean defaultJavaDocAutoPopup = Boolean.TRUE;
+ private static int MENU_MASK = java.awt.Toolkit.getDefaultToolkit().getMenuShortcutKeyMask();
public static final MultiKeyBinding[] defaultExtKeyBindings
= new MultiKeyBinding[] {
@@ -81,7 +82,7 @@
),
*/
new MultiKeyBinding(
- KeyStroke.getKeyStroke(KeyEvent.VK_F, InputEvent.CTRL_MASK),
+ KeyStroke.getKeyStroke(KeyEvent.VK_F, MENU_MASK),
ExtKit.findAction
),
new MultiKeyBinding(
@@ -89,7 +90,7 @@
ExtKit.findAction
),
new MultiKeyBinding(
- KeyStroke.getKeyStroke(KeyEvent.VK_H, InputEvent.CTRL_MASK),
+ KeyStroke.getKeyStroke(KeyEvent.VK_H, MENU_MASK),
ExtKit.replaceAction
),
new MultiKeyBinding(
@@ -109,11 +110,11 @@
ExtKit.escapeAction
),
new MultiKeyBinding(
- KeyStroke.getKeyStroke(KeyEvent.VK_OPEN_BRACKET, InputEvent.CTRL_MASK),
+ KeyStroke.getKeyStroke(KeyEvent.VK_OPEN_BRACKET, MENU_MASK),
ExtKit.matchBraceAction
),
new MultiKeyBinding(
- KeyStroke.getKeyStroke(KeyEvent.VK_OPEN_BRACKET, InputEvent.CTRL_MASK | InputEvent.SHIFT_MASK),
+ KeyStroke.getKeyStroke(KeyEvent.VK_OPEN_BRACKET, MENU_MASK | InputEvent.SHIFT_MASK),
ExtKit.selectionMatchBraceAction
),
new MultiKeyBinding(
@@ -121,8 +122,8 @@
ExtKit.showPopupMenuAction
),
/* new MultiKeyBinding(
- KeyStroke.getKeyStroke(KeyEvent.VK_U, InputEvent.CTRL_MASK),
- // KeyStroke.getKeyStroke(KeyEvent.VK_BRACELEFT, InputEvent.CTRL_MASK),
+ KeyStroke.getKeyStroke(KeyEvent.VK_U, MENU_MASK),
+ // KeyStroke.getKeyStroke(KeyEvent.VK_BRACELEFT, MENU_MASK),
ExtKit.braceCodeSelectAction
),
*/
Index: editor/libsrc/org/netbeans/editor/ext/java/JavaSettingsDefaults.java
===================================================================
RCS file: /cvs/editor/libsrc/org/netbeans/editor/ext/java/JavaSettingsDefaults.java,v
retrieving revision 1.25
diff -u -u -r1.25 JavaSettingsDefaults.java
--- editor/libsrc/org/netbeans/editor/ext/java/JavaSettingsDefaults.java 18 Aug 2004 17:22:27 -0000 1.25
+++ editor/libsrc/org/netbeans/editor/ext/java/JavaSettingsDefaults.java 22 Aug 2004 10:03:53 -0000
@@ -154,20 +154,22 @@
}
public static MultiKeyBinding[] getJavaKeyBindings() {
+ int MENU_MASK = java.awt.Toolkit.getDefaultToolkit().getMenuShortcutKeyMask();
+
return new MultiKeyBinding[] {
new MultiKeyBinding(
new KeyStroke[] {
- KeyStroke.getKeyStroke(KeyEvent.VK_J, InputEvent.CTRL_MASK),
+ KeyStroke.getKeyStroke(KeyEvent.VK_J, MENU_MASK),
KeyStroke.getKeyStroke(KeyEvent.VK_D, 0)
},
"macro-debug-var" // NOI18N
),
new MultiKeyBinding(
- KeyStroke.getKeyStroke(KeyEvent.VK_T, InputEvent.CTRL_MASK | InputEvent.SHIFT_MASK),
+ KeyStroke.getKeyStroke(KeyEvent.VK_T, MENU_MASK | InputEvent.SHIFT_MASK),
ExtKit.commentAction
),
new MultiKeyBinding(
- KeyStroke.getKeyStroke(KeyEvent.VK_D, InputEvent.CTRL_MASK | InputEvent.SHIFT_MASK),
+ KeyStroke.getKeyStroke(KeyEvent.VK_D, MENU_MASK | InputEvent.SHIFT_MASK),
ExtKit.uncommentAction
)
};
Index: editor/src/org/netbeans/modules/editor/java/NbJavaSettingsInitializer.java
===================================================================
RCS file: /cvs/editor/src/org/netbeans/modules/editor/java/NbJavaSettingsInitializer.java,v
retrieving revision 1.30
diff -u -u -r1.30 NbJavaSettingsInitializer.java
--- editor/src/org/netbeans/modules/editor/java/NbJavaSettingsInitializer.java 18 Aug 2004 17:22:33 -0000 1.30
+++ editor/src/org/netbeans/modules/editor/java/NbJavaSettingsInitializer.java 22 Aug 2004 10:03:54 -0000
@@ -13,6 +13,7 @@
package org.netbeans.modules.editor.java;
+import java.awt.Toolkit;
import java.awt.event.KeyEvent;
import java.awt.event.InputEvent;
import java.util.Map;
@@ -98,6 +99,7 @@
}
public MultiKeyBinding[] getJavaKeyBindings() {
+ int mask = Toolkit.getDefaultToolkit().getMenuShortcutKeyMask();
return new MultiKeyBinding[] {
new MultiKeyBinding(
new KeyStroke[] {
@@ -127,7 +129,7 @@
),
new MultiKeyBinding(
KeyStroke.getKeyStroke(KeyEvent.VK_B,
- InputEvent.CTRL_MASK),
+ mask),
JavaKit.gotoSuperImplementationAction
),
new MultiKeyBinding(
@@ -137,7 +139,7 @@
),
// new MultiKeyBinding(
// KeyStroke.getKeyStroke(KeyEvent.VK_S,
-// InputEvent.ALT_MASK | InputEvent.CTRL_MASK),
+// InputEvent.ALT_MASK | mask),
// JavaKit.tryCatchAction
// ),
new MultiKeyBinding(
@@ -146,19 +148,19 @@
),
new MultiKeyBinding(
KeyStroke.getKeyStroke(KeyEvent.VK_SPACE,
- InputEvent.CTRL_MASK | InputEvent.SHIFT_MASK),
+ mask | InputEvent.SHIFT_MASK),
JavaKit.javaDocShowAction
),
new MultiKeyBinding(
KeyStroke.getKeyStroke(KeyEvent.VK_A,
- InputEvent.CTRL_MASK | InputEvent.ALT_MASK),
+ mask | InputEvent.ALT_MASK),
JavaKit.selectNextElementAction
),
new MultiKeyBinding(
KeyStroke.getKeyStroke(KeyEvent.VK_A,
- InputEvent.CTRL_MASK | InputEvent.ALT_MASK | InputEvent.SHIFT_MASK),
+ mask | InputEvent.ALT_MASK | InputEvent.SHIFT_MASK),
JavaKit.selectPreviousElementAction
)
Index: editor/src/org/netbeans/modules/editor/resources/XMLs/DefaultGlobalKeyBindings.xml
===================================================================
RCS file: /cvs/editor/src/org/netbeans/modules/editor/resources/XMLs/DefaultGlobalKeyBindings.xml,v
retrieving revision 1.10
diff -u -u -r1.10 DefaultGlobalKeyBindings.xml
--- editor/src/org/netbeans/modules/editor/resources/XMLs/DefaultGlobalKeyBindings.xml 12 Aug 2004 12:05:20 -0000 1.10
+++ editor/src/org/netbeans/modules/editor/resources/XMLs/DefaultGlobalKeyBindings.xml 22 Aug 2004 10:03:54 -0000
@@ -13,41 +13,42 @@
-
+
-
-
-
-
-
+
+
+
+
+
-
-
-
-
+
+
+
+
-
+
-
-
-
+
+
+
-
-
-
-
+
+
+
+
-
+
-
+
+
@@ -58,29 +59,29 @@
-
+
-
-
-
+
+
+
-
-
+
+
-
+
-
-
+
+
-
+
@@ -89,25 +90,25 @@
-
+
-
+
-
+
-
+
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
Index: editor/src/org/netbeans/modules/editor/resources/XMLs/DefaultKeyBindings.xml
===================================================================
RCS file: /cvs/editor/src/org/netbeans/modules/editor/resources/XMLs/DefaultKeyBindings.xml,v
retrieving revision 1.9
diff -u -u -r1.9 DefaultKeyBindings.xml
--- editor/src/org/netbeans/modules/editor/resources/XMLs/DefaultKeyBindings.xml 12 Aug 2004 12:05:20 -0000 1.9
+++ editor/src/org/netbeans/modules/editor/resources/XMLs/DefaultKeyBindings.xml 22 Aug 2004 10:03:54 -0000
@@ -6,15 +6,15 @@
-
+
-
+
-
-
+
+
-
-
+
+
Index: form/src/org/netbeans/modules/form/resources/layer.xml
===================================================================
RCS file: /cvs/form/src/org/netbeans/modules/form/resources/layer.xml,v
retrieving revision 1.77
diff -u -u -r1.77 layer.xml
--- form/src/org/netbeans/modules/form/resources/layer.xml 9 Jul 2004 09:28:54 -0000 1.77
+++ form/src/org/netbeans/modules/form/resources/layer.xml 22 Aug 2004 10:03:59 -0000
@@ -460,7 +460,7 @@
-
+
Index: i18n/src/org/netbeans/modules/i18n/Layer.xml
===================================================================
RCS file: /cvs/i18n/src/org/netbeans/modules/i18n/Layer.xml,v
retrieving revision 1.21
diff -u -u -r1.21 Layer.xml
--- i18n/src/org/netbeans/modules/i18n/Layer.xml 16 Mar 2004 15:29:41 -0000 1.21
+++ i18n/src/org/netbeans/modules/i18n/Layer.xml 22 Aug 2004 10:04:00 -0000
@@ -16,7 +16,7 @@
-
+
Index: ide/applemenu/src/org/netbeans/modules/applemenu/layer.xml
===================================================================
RCS file: /cvs/ide/applemenu/src/org/netbeans/modules/applemenu/layer.xml,v
retrieving revision 1.1
diff -u -u -r1.1 layer.xml
--- ide/applemenu/src/org/netbeans/modules/applemenu/layer.xml 8 Jun 2004 12:46:10 -0000 1.1
+++ ide/applemenu/src/org/netbeans/modules/applemenu/layer.xml 22 Aug 2004 10:04:01 -0000
@@ -37,6 +37,24 @@
-->
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Index: java/src/org/netbeans/modules/java/resources/mf-layer.xml
===================================================================
RCS file: /cvs/java/src/org/netbeans/modules/java/resources/mf-layer.xml,v
retrieving revision 1.50
diff -u -u -r1.50 mf-layer.xml
--- java/src/org/netbeans/modules/java/resources/mf-layer.xml 2 Aug 2004 09:39:52 -0000 1.50
+++ java/src/org/netbeans/modules/java/resources/mf-layer.xml 22 Aug 2004 10:04:15 -0000
@@ -145,7 +145,7 @@
-
+
Index: junit/src/org/netbeans/modules/junit/resources/layer.xml
===================================================================
RCS file: /cvs/junit/src/org/netbeans/modules/junit/resources/layer.xml,v
retrieving revision 1.22
diff -u -u -r1.22 layer.xml
--- junit/src/org/netbeans/modules/junit/resources/layer.xml 21 Jun 2004 07:20:01 -0000 1.22
+++ junit/src/org/netbeans/modules/junit/resources/layer.xml 22 Aug 2004 10:04:24 -0000
@@ -80,10 +80,10 @@
-
+
-
+
Index: monitor/src/org/netbeans/modules/web/monitor/resources/layer.xml
===================================================================
RCS file: /cvs/monitor/src/org/netbeans/modules/web/monitor/resources/layer.xml,v
retrieving revision 1.14
diff -u -u -r1.14 layer.xml
--- monitor/src/org/netbeans/modules/web/monitor/resources/layer.xml 26 May 2004 13:01:53 -0000 1.14
+++ monitor/src/org/netbeans/modules/web/monitor/resources/layer.xml 22 Aug 2004 10:04:31 -0000
@@ -33,7 +33,7 @@
-
+
Index: openide/src/org/openide/util/Utilities.java
===================================================================
RCS file: /cvs/openide/src/org/openide/util/Utilities.java,v
retrieving revision 1.142
diff -u -u -r1.142 Utilities.java
--- openide/src/org/openide/util/Utilities.java 30 Jul 2004 14:33:20 -0000 1.142
+++ openide/src/org/openide/util/Utilities.java 22 Aug 2004 10:04:42 -0000
@@ -1252,7 +1252,22 @@
} else {
// last text must be the key code
Integer i = (Integer)names.get (el);
+ boolean wildcard = (needed & WILDCARD_MASK) != 0;
+ //Strip out the explicit mask - KeyStroke won't know
+ //what to do with it
+ needed = needed & ~WILDCARD_MASK;
+
if (i != null) {
+ //#26854 - Default accelerator should be Command on mac
+ if (wildcard) {
+ needed |= Toolkit.getDefaultToolkit().getMenuShortcutKeyMask();
+ if ((getOperatingSystem() & OS_MAC) != 0) {
+ if (!usableKeyOnMac(i.intValue(), needed)) {
+ needed &= ~Toolkit.getDefaultToolkit().getMenuShortcutKeyMask();
+ needed |= KeyEvent.CTRL_MASK;
+ }
+ }
+ }
return KeyStroke.getKeyStroke (i.intValue (), needed);
} else {
return null;
@@ -1263,6 +1278,30 @@
return null;
}
}
+
+ private static final boolean usableKeyOnMac (int key, int mask) {
+ //All permutations fail for Q except ctrl
+ if (key == KeyEvent.VK_Q) return false;
+
+ boolean isMeta = ((mask & KeyEvent.META_MASK) != 0) ||
+ ((mask & KeyEvent.CTRL_DOWN_MASK) != 0);
+
+ boolean isAlt = ((mask & KeyEvent.ALT_MASK) != 0) ||
+ ((mask & KeyEvent.ALT_DOWN_MASK) != 0);
+
+ boolean isOnlyMeta = isMeta && (mask & ~(KeyEvent.META_DOWN_MASK | KeyEvent.META_MASK)) == 0;
+
+ //Mac OS consumes keys Command+ these keys - the app will never see
+ //them, so CTRL should not be remapped for these
+ if (isOnlyMeta) {
+ return key != KeyEvent.VK_H && key !=
+ KeyEvent.VK_SPACE && key != KeyEvent.VK_TAB;
+ } else if (key == KeyEvent.VK_D && isMeta && isAlt) {
+ return false;
+ } else {
+ return true;
+ }
+ }
/** Convert a space-separated list of user-friendly key binding names to a list of Swing key strokes.
* @param s the string with keys
@@ -1283,6 +1322,7 @@
return (KeyStroke[])arr.toArray (new KeyStroke[arr.size ()]);
}
+ private static final int WILDCARD_MASK = 32768;
/** Adds characters for modifiers to the buffer.
* @param buf buffer to add to
@@ -1308,6 +1348,10 @@
buf.append("M"); // NOI18N
b = true;
}
+ if ((modif & WILDCARD_MASK) != 0) {
+ buf.append("D");
+ b = true;
+ }
return b;
}
@@ -1332,6 +1376,9 @@
break;
case 'S':
m |= KeyEvent.SHIFT_MASK;
+ break;
+ case 'D':
+ m |= WILDCARD_MASK;
break;
default:
throw new NoSuchElementException ();
Index: projects/projectui/src/org/netbeans/modules/project/ui/resources/layer.xml
===================================================================
RCS file: /cvs/projects/projectui/src/org/netbeans/modules/project/ui/resources/layer.xml,v
retrieving revision 1.37
diff -u -u -r1.37 layer.xml
--- projects/projectui/src/org/netbeans/modules/project/ui/resources/layer.xml 17 Aug 2004 11:24:59 -0000 1.37
+++ projects/projectui/src/org/netbeans/modules/project/ui/resources/layer.xml 22 Aug 2004 10:04:48 -0000
@@ -490,31 +490,31 @@
-
+
-
+
-
+
-
+
-
+
-
+
-
+
@@ -538,15 +538,15 @@
-
+
-
+
-
+
Index: vcscore/src/org/netbeans/modules/vcscore/resources/mf-layer.xml
===================================================================
RCS file: /cvs/vcscore/src/org/netbeans/modules/vcscore/resources/mf-layer.xml,v
retrieving revision 1.43
diff -u -u -r1.43 mf-layer.xml
--- vcscore/src/org/netbeans/modules/vcscore/resources/mf-layer.xml 17 Aug 2004 15:14:10 -0000 1.43
+++ vcscore/src/org/netbeans/modules/vcscore/resources/mf-layer.xml 22 Aug 2004 10:05:03 -0000
@@ -52,13 +52,13 @@
-
+
-
+
-
+