diff -r 0369444246b5 java.editor/src/org/netbeans/modules/editor/java/JavaCompletionProvider.java --- a/java.editor/src/org/netbeans/modules/editor/java/JavaCompletionProvider.java Thu Apr 09 13:19:09 2009 +0200 +++ b/java.editor/src/org/netbeans/modules/editor/java/JavaCompletionProvider.java Fri Apr 10 17:25:28 2009 +0100 @@ -2427,7 +2427,7 @@ (Utilities.isShowDeprecatedMembers() || !elements.isDeprecated(e)) && (!isStatic || e.getModifiers().contains(STATIC)) && tu.isAccessible(scope, e, t) && - !Utilities.isExcluded(Utilities.getElementName(e.getEnclosingElement(), true) + "." + sn); //NOI18N + (!Utilities.isExcludeMethods() || !Utilities.isExcluded(Utilities.getElementName(e.getEnclosingElement(), true) + "." + sn)); //NOI18N } return false; } @@ -2614,7 +2614,7 @@ isOfKindAndType(((ExecutableType)asMemberOf(e, t, types)).getReturnType(), e, kinds, baseType, scope, trees, types) && (isSuperCall && e.getModifiers().contains(PROTECTED) || tu.isAccessible(scope, e, isSuperCall && enclType != null ? enclType : t)) && (!isStatic || e.getModifiers().contains(STATIC)) && - !Utilities.isExcluded(Utilities.getElementName(e.getEnclosingElement(), true) + "." + sn); //NOI18N + (!Utilities.isExcludeMethods() || !Utilities.isExcluded(Utilities.getElementName(e.getEnclosingElement(), true) + "." + sn)); //NOI18N case CLASS: case ENUM: case INTERFACE: @@ -2719,7 +2719,10 @@ for(Element e : pe.getEnclosedElements()) { if (e.getKind().isClass() || e.getKind().isInterface()) { String name = e.getSimpleName().toString(); - if (startsWith(env, name, prefix) && (Utilities.isShowDeprecatedMembers() || !elements.isDeprecated(e)) && trees.isAccessible(scope, (TypeElement)e) && isOfKindAndType(e.asType(), e, kinds, baseType, scope, trees, types)) { + if (startsWith(env, name, prefix) && (Utilities.isShowDeprecatedMembers() || !elements.isDeprecated(e)) + && trees.isAccessible(scope, (TypeElement)e) + && isOfKindAndType(e.asType(), e, kinds, baseType, scope, trees, types) + && !Utilities.isExcluded(Utilities.getElementName(e, true))) { results.add(JavaCompletionItem.createTypeItem((TypeElement)e, (DeclaredType)e.asType(), anchorOffset, false, elements.isDeprecated(e), insideNew, isOfSmartType(env, e.asType(), smartTypes))); } } diff -r 0369444246b5 java.editor/src/org/netbeans/modules/editor/java/Utilities.java --- a/java.editor/src/org/netbeans/modules/editor/java/Utilities.java Thu Apr 09 13:19:09 2009 +0200 +++ b/java.editor/src/org/netbeans/modules/editor/java/Utilities.java Fri Apr 10 17:25:28 2009 +0100 @@ -56,6 +56,7 @@ import com.sun.source.util.Trees; import java.util.*; +import java.util.concurrent.atomic.AtomicBoolean; import java.util.concurrent.atomic.AtomicReference; import java.util.prefs.PreferenceChangeEvent; import java.util.prefs.PreferenceChangeListener; @@ -89,22 +90,23 @@ * @author Dusan Balek * @author Sam Halliday */ -public class Utilities { +public final class Utilities { private static final String CAPTURED_WILDCARD = ""; //NOI18N private static final String ERROR = ""; //NOI18N private static final String UNKNOWN = ""; //NOI18N - private static boolean caseSensitive = true; - private static boolean showDeprecatedMembers = true; - private static boolean guessMethodArguments = true; - private static boolean autoPopupOnJavaIdentifierPart = true; - private static String javaCompletionAutoPopupTriggers = null; - private static String javaCompletionSelectors = null; - private static String javadocCompletionAutoPopupTriggers = null; + private static volatile boolean caseSensitive = true; + private static volatile boolean showDeprecatedMembers = true; + private static volatile boolean guessMethodArguments = true; + private static volatile boolean autoPopupOnJavaIdentifierPart = true; + private static volatile boolean javaCompletionExcluderMethods; + private static volatile String javaCompletionAutoPopupTriggers = null; + private static volatile String javaCompletionSelectors = null; + private static volatile String javadocCompletionAutoPopupTriggers = null; - private static boolean inited; - private static Preferences preferences; + private static final AtomicBoolean inited = new AtomicBoolean(false); + private static volatile Preferences preferences; private static final PreferenceChangeListener preferencesTracker = new PreferenceChangeListener() { public void preferenceChange(PreferenceChangeEvent evt) { String settingName = evt == null ? null : evt.getKey(); @@ -131,17 +133,20 @@ } if (settingName == null || CodeCompletionPanel.JAVA_COMPLETION_BLACKLIST.equals(settingName)) { String blacklist = preferences.get(CodeCompletionPanel.JAVA_COMPLETION_BLACKLIST, CodeCompletionPanel.JAVA_COMPLETION_BLACKLIST_DEFAULT); - updateExcluder(exclude, blacklist); + updateExcluder(excludeRef, blacklist); } if (settingName == null || CodeCompletionPanel.JAVA_COMPLETION_WHITELIST.equals(settingName)) { String whitelist = preferences.get(CodeCompletionPanel.JAVA_COMPLETION_WHITELIST, CodeCompletionPanel.JAVA_COMPLETION_WHITELIST_DEFAULT); - updateExcluder(include, whitelist); + updateExcluder(includeRef, whitelist); + } + if (settingName == null || CodeCompletionPanel.JAVA_COMPLETION_EXCLUDER_METHODS.equals(settingName)) { + javaCompletionExcluderMethods = preferences.getBoolean(CodeCompletionPanel.JAVA_COMPLETION_EXCLUDER_METHODS, CodeCompletionPanel.JAVA_COMPLETION_EXCLUDER_METHODS_DEFAULT); } } }; - private static String cachedPrefix = null; - private static Pattern cachedPattern = null; + private static volatile String cachedPrefix = null; + private static volatile Pattern cachedPattern = null; public static boolean startsWith(String theString, String prefix) { if (theString == null || theString.length() == 0 || ERROR.equals(theString)) @@ -225,8 +230,8 @@ return javadocCompletionAutoPopupTriggers; } - static private volatile AtomicReference> exclude; - static private volatile AtomicReference> include; + static private volatile AtomicReference> excludeRef = new AtomicReference>(); + static private volatile AtomicReference> includeRef = new AtomicReference>(); private static void updateExcluder(AtomicReference> existing, String updated) { Collection nue = new LinkedList(); @@ -236,7 +241,7 @@ } String[] entries = updated.split(","); //NOI18N for (String entry : entries) { - if (entry != null && entry.length() != 0) { + if (entry.length() != 0) { nue.add(entry); } } @@ -244,18 +249,29 @@ } /** + * @return the user setting for whether the excluder should operate on methods + */ + public static boolean isExcludeMethods(){ + lazyInit(); + return javaCompletionExcluderMethods; + } + + /** * @param fqn Fully Qualified Name (including method names). Packages names are expected to - * end in a trailing "." + * end in a trailing "." except the default package. * @return */ public static boolean isExcluded(final CharSequence fqn) { - if (fqn == null || fqn.length() == 0 || fqn.equals(".")) { //NOI18N + if (fqn == null || fqn.length() == 0) { return true; } lazyInit(); String s = fqn.toString(); - if (!include.get().isEmpty()) { - for (String entry : include.get()) { + Collection include = includeRef.get(); + Collection exclude = excludeRef.get(); + + if (include != null && !include.isEmpty()) { + for (String entry : include) { if (entry.length() > fqn.length()) { if (entry.startsWith(s)) { return false; @@ -266,8 +282,8 @@ } } - if (!exclude.get().isEmpty()) { - for (String entry : exclude.get()) { + if (exclude != null && !exclude.isEmpty()) { + for (String entry : exclude) { if (entry.length() <= fqn.length() && s.startsWith(entry)) { return true; } @@ -278,11 +294,7 @@ } private static void lazyInit() { - if (!inited) { - inited = true; - Collection empty = Collections.emptySet(); - exclude = new AtomicReference>(empty); - include = new AtomicReference>(empty); + if (inited.compareAndSet(false, true)) { preferences = MimeLookup.getLookup(JavaKit.JAVA_MIME_TYPE).lookup(Preferences.class); preferences.addPreferenceChangeListener(WeakListeners.create(PreferenceChangeListener.class, preferencesTracker, preferences)); preferencesTracker.preferenceChange(null); @@ -851,6 +863,9 @@ return found; } + + private Utilities() { + } } diff -r 0369444246b5 java.editor/src/org/netbeans/modules/java/editor/javadoc/JavadocCompletionQuery.java --- a/java.editor/src/org/netbeans/modules/java/editor/javadoc/JavadocCompletionQuery.java Thu Apr 09 13:19:09 2009 +0200 +++ b/java.editor/src/org/netbeans/modules/java/editor/javadoc/JavadocCompletionQuery.java Fri Apr 10 17:25:28 2009 +0100 @@ -762,8 +762,10 @@ // isOfKindAndType(asMemberOf(e, t, types), e, kinds, baseType, scope, trees, types) && tu.isAccessible(scope, e, t); case METHOD: - return Utilities.startsWith(e.getSimpleName().toString(), prefix) && - (Utilities.isShowDeprecatedMembers() || !elements.isDeprecated(e)); + String sn = e.getSimpleName().toString(); + return Utilities.startsWith(sn, prefix) && + (Utilities.isShowDeprecatedMembers() || !elements.isDeprecated(e)) && + (!Utilities.isExcludeMethods() || !Utilities.isExcluded(Utilities.getElementName(e.getEnclosingElement(), true) + "." + sn)); //NOI18N // && // isOfKindAndType(((ExecutableType)asMemberOf(e, t, types)).getReturnType(), e, kinds, baseType, scope, trees, types) && // (isSuperCall && e.getModifiers().contains(PROTECTED) || tu.isAccessible(scope, e, isSuperCall && enclType != null ? enclType : t)) && @@ -1042,7 +1044,10 @@ for(Element e : pe.getEnclosedElements()) { if (e.getKind().isClass() || e.getKind().isInterface()) { String name = e.getSimpleName().toString(); - if (Utilities.startsWith(name, prefix) && (Utilities.isShowDeprecatedMembers() || !elements.isDeprecated(e)) && trees.isAccessible(scope, (TypeElement)e) && isOfKindAndType(e.asType(), e, kinds, baseType, scope, trees, types)) { + if (Utilities.startsWith(name, prefix) && (Utilities.isShowDeprecatedMembers() || !elements.isDeprecated(e)) + && trees.isAccessible(scope, (TypeElement)e) + && isOfKindAndType(e.asType(), e, kinds, baseType, scope, trees, types) + && !Utilities.isExcluded(Utilities.getElementName(e, true))) { items.add(JavadocCompletionItem.createTypeItem((TypeElement) e, substitutionOffset, false, elements.isDeprecated(e)/*, isOfSmartType(env, e.asType(), smartTypes)*/)); } } diff -r 0369444246b5 java.editor/src/org/netbeans/modules/java/editor/options/Bundle.properties --- a/java.editor/src/org/netbeans/modules/java/editor/options/Bundle.properties Thu Apr 09 13:19:09 2009 +0200 +++ b/java.editor/src/org/netbeans/modules/java/editor/options/Bundle.properties Fri Apr 10 17:25:28 2009 +0100 @@ -124,10 +124,15 @@ CodeCompletionPanel.javaCompletionExcludeTable.columnModel.title3_1=Title 4 CodeCompletionPanel.javaCompletionExcludeTable.columnModel.title2_1=Title 3 CodeCompletionPanel.javaCompletionExcludeTable.columnModel.title1_1=Title 2 +CodeCompletionPanel.javaCompletionExcluderAddButton.text=Add +CodeCompletionPanel.javaCompletionExcluderRemoveButton.text=Remove +CodeCompletionPanel.javaCompletionExcluderCloseButton.text=Close +CodeCompletionPanel.javaCompletionExcluderEditButton.text=Edit CodeCompletionPanel.javaCompletionExcludeScrollPane.TabConstraints.tabTitle=Exclude -CodeCompletionPanel.javaCompletionExcludeTable.columnModel.title0=Fully Qualified Name prefix -CodeCompletionPanel.javaCompletionExcluderAddButton.text=Add CodeCompletionPanel.javaCompletionIncludeScrollPane.TabConstraints.tabTitle=Include -CodeCompletionPanel.javaCompletionExcluderRemoveButton.text=Remove -CodeCompletionPanel.javaCompletionExcluderFrame.title=Java Completion Excluder -CodeCompletionPanel.javaCompletionExcluderCloseButton.text=Close +CodeCompletionPanel.javaCompletionExcluderDialogCancelButton.text=Cancel +CodeCompletionPanel.javaCompletionExcluderDialogTextField.text= +CodeCompletionPanel.javaCompletionExcluderDialogOkButton.text=OK +CodeCompletionPanel.javaCompletionExcluderDialogLabel.text=Enter prefix for fully qualified packages, classes or methods. Wildcards are accepted, but will be ignored. Examples:
sun, sun., sun.*, java.lang.Object.wait +CodeCompletionPanel.javaCompletionExcluderMethodsCheckBox.text=Apply rules to methods +CodeCompletionPanel.javaCompletionExcluderDialog1.title=Java Completion Excluder diff -r 0369444246b5 java.editor/src/org/netbeans/modules/java/editor/options/CodeCompletionPanel.form --- a/java.editor/src/org/netbeans/modules/java/editor/options/CodeCompletionPanel.form Thu Apr 09 13:19:09 2009 +0200 +++ b/java.editor/src/org/netbeans/modules/java/editor/options/CodeCompletionPanel.form Fri Apr 10 17:25:28 2009 +0100 @@ -2,31 +2,124 @@
- + - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - + + + + + + + + + + + + + + + - + @@ -37,14 +130,19 @@ + + + + + + + - - @@ -73,28 +171,7 @@ - - - - - -
-
- - - - - <ResourceString bundle="org/netbeans/modules/java/editor/options/Bundle.properties" key="CodeCompletionPanel.javaCompletionExcludeTable.columnModel.title0" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, "{key}")"/> - - - - - - - - - -
+
@@ -114,28 +191,7 @@ - - - - - -
-
- - - - - <ResourceString bundle="org/netbeans/modules/java/editor/options/Bundle.properties" key="CodeCompletionPanel.javaCompletionExcludeTable.columnModel.title0" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, "{key}")"/> - - - - - - - - - -
+
@@ -169,6 +225,26 @@ + + + + + + + + + + + + + + + + + + + + diff -r 0369444246b5 java.editor/src/org/netbeans/modules/java/editor/options/CodeCompletionPanel.java --- a/java.editor/src/org/netbeans/modules/java/editor/options/CodeCompletionPanel.java Thu Apr 09 13:19:09 2009 +0200 +++ b/java.editor/src/org/netbeans/modules/java/editor/options/CodeCompletionPanel.java Fri Apr 10 17:25:28 2009 +0100 @@ -42,18 +42,12 @@ package org.netbeans.modules.java.editor.options; import java.awt.Component; -import java.util.Arrays; -import java.util.Collection; -import java.util.TreeSet; -import java.util.Vector; import java.util.prefs.Preferences; +import javax.swing.DefaultListModel; import javax.swing.JComponent; -import javax.swing.JTable; +import javax.swing.JList; import javax.swing.event.DocumentEvent; import javax.swing.event.DocumentListener; -import javax.swing.event.TableModelEvent; -import javax.swing.event.TableModelListener; -import javax.swing.table.DefaultTableModel; import org.netbeans.modules.options.editor.spi.PreferencesCustomizer; import org.openide.util.HelpCtx; @@ -62,7 +56,7 @@ * @author Dusan Balek * @author Sam Halliday */ -public class CodeCompletionPanel extends javax.swing.JPanel implements DocumentListener, TableModelListener { +public class CodeCompletionPanel extends javax.swing.JPanel implements DocumentListener { public static final String JAVA_AUTO_POPUP_ON_IDENTIFIER_PART = "javaAutoPopupOnIdentifierPart"; //NOI18N public static final boolean JAVA_AUTO_POPUP_ON_IDENTIFIER_PART_DEFAULT = false; @@ -78,19 +72,15 @@ public static final String JAVA_COMPLETION_WHITELIST_DEFAULT = ""; //NOI18N public static final String JAVA_COMPLETION_BLACKLIST = "javaCompletionBlacklist"; //NOI18N public static final String JAVA_COMPLETION_BLACKLIST_DEFAULT = ""; //NOI18N + public static final String JAVA_COMPLETION_EXCLUDER_METHODS = "javaCompletionExcluderMethods"; //NOI18N + public static final boolean JAVA_COMPLETION_EXCLUDER_METHODS_DEFAULT = false; + + private static final String JAVA_FQN_REGEX = "[$\\w._]*"; private final Preferences preferences; - private void initExcluderTable(JTable table, String pref) { - String[] entries = pref.split(","); //NOI18N - DefaultTableModel model = (DefaultTableModel) table.getModel(); - for (String entry : entries) { - if (entry.length() > 0) { - model.addRow(new String[]{entry}); - } - } - model.addTableModelListener(this); - } + // editing is null if a new entry is to be created, otherwise the entry to be replaced + private volatile String editing; /** Creates new form FmtTabsIndents */ public CodeCompletionPanel(Preferences p) { @@ -100,21 +90,48 @@ javaAutoPopupOnIdentifierPart.setSelected(preferences.getBoolean(JAVA_AUTO_POPUP_ON_IDENTIFIER_PART, JAVA_AUTO_POPUP_ON_IDENTIFIER_PART_DEFAULT)); javaAutoCompletionTriggersField.setText(preferences.get(JAVA_AUTO_COMPLETION_TRIGGERS, JAVA_AUTO_COMPLETION_TRIGGERS_DEFAULT)); javaCompletionSelectorsField.setText(preferences.get(JAVA_COMPLETION_SELECTORS, JAVA_COMPLETION_SELECTORS_DEFAULT)); - javadocAutoCompletionTriggersField.setText(preferences.get(JAVADOC_AUTO_COMPLETION_TRIGGERS, JAVADOC_AUTO_COMPLETION_TRIGGERS_DEFAULT)); + javadocAutoCompletionTriggersField.setText(preferences.get(JAVADOC_AUTO_COMPLETION_TRIGGERS, JAVADOC_AUTO_COMPLETION_TRIGGERS_DEFAULT)); String blacklist = preferences.get(JAVA_COMPLETION_BLACKLIST, JAVA_COMPLETION_BLACKLIST_DEFAULT); - initExcluderTable(javaCompletionExcludeTable, blacklist); + initExcluderList(javaCompletionExcludeJlist, blacklist); String whitelist = preferences.get(JAVA_COMPLETION_WHITELIST, JAVA_COMPLETION_WHITELIST_DEFAULT); - initExcluderTable(javaCompletionIncludeTable, whitelist); + initExcluderList(javaCompletionIncludeJlist, whitelist); + javaCompletionExcluderMethodsCheckBox.setSelected(preferences.getBoolean(JAVA_COMPLETION_EXCLUDER_METHODS, JAVA_COMPLETION_EXCLUDER_METHODS_DEFAULT)); + javaCompletionExcluderDialog2.getRootPane().setDefaultButton(javaCompletionExcluderDialogOkButton); + + // can't NetBeans visual editor do these automatically? + javaCompletionExcluderDialog1.pack(); + javaCompletionExcluderDialog1.setLocationRelativeTo(this); + javaCompletionExcluderDialog2.pack(); + javaCompletionExcluderDialog2.setLocationRelativeTo(this); + javaAutoCompletionTriggersField.getDocument().addDocumentListener(this); javaCompletionSelectorsField.getDocument().addDocumentListener(this); javadocAutoCompletionTriggersField.getDocument().addDocumentListener(this); + } + + private void initExcluderList(JList jList, String list) { + DefaultListModel model = new DefaultListModel(); + String [] entries = list.split(","); //NOI18N + for (String entry : entries){ + if (entry.length() != 0) + model.addElement(entry); + } + jList.setModel(model); + } + + // existing is null if add is required + private void openExcluderEditor() { + assert !javaCompletionExcluderDialog2.isVisible(); + javaCompletionExcluderDialogTextField.setText(editing); + javaCompletionExcluderDialog2.setVisible(true); + javaCompletionExcluderDialogTextField.requestFocus(); } public static PreferencesCustomizer.Factory getCustomizerFactory() { return new PreferencesCustomizer.Factory() { public PreferencesCustomizer create(Preferences preferences) { - return new CodeCompletionPreferencesCusromizer(preferences); + return new CodeCompletionPreferencesCustomizer(preferences); } }; } @@ -131,60 +148,6 @@ update(e); } - // allows common excluder buttons to know which table to act on - private JTable getSelectedExcluderTable() { - Component selected = javaCompletionExcluderTab.getSelectedComponent(); - if (selected == javaCompletionExcludeScrollPane) { - return javaCompletionExcludeTable; - } else if (selected == javaCompletionIncludeScrollPane) { - return javaCompletionIncludeTable; - } else { - throw new RuntimeException(selected.getName()); - } - } - - // listen to changes in the excluder lists, and do sanity checking on input - public void tableChanged(TableModelEvent e) { - DefaultTableModel model = (DefaultTableModel) e.getSource(); - String pref; - if (model == javaCompletionExcludeTable.getModel()) { - pref = JAVA_COMPLETION_BLACKLIST; - } else if (model == javaCompletionIncludeTable.getModel()) { - pref = JAVA_COMPLETION_WHITELIST; - } else { - throw new RuntimeException(); - } - @SuppressWarnings("unchecked") - Vector> data = model.getDataVector(); - Collection entries = new TreeSet(); - for (Vector row : data) { - String entry = row.elementAt(0); - if (entry == null) { - continue; - } - // users can enter wildcards, which is the same as the raw prefix - if (entry.contains("*")) - entry = entry.replaceAll("\\*", ""); - entry = entry.trim(); - if (entry.length() == 0) { - continue; - } - // this could be checked by a custom editor on input - if (!entry.matches("[$\\w._]*")) { //NOI18N - continue; - } - entries.add(entry); - } - StringBuilder builder = new StringBuilder(); - for (String entry : entries) { - if (builder.length() > 0) { - builder.append(","); //NOI18N - } - builder.append(entry); - } - preferences.put(pref, builder.toString()); - } - /** This method is called from within the constructor to * initialize the form. * WARNING: Do NOT modify this code. The content of this method is @@ -193,15 +156,22 @@ // //GEN-BEGIN:initComponents private void initComponents() { - javaCompletionExcluderFrame = new javax.swing.JFrame(); + javaCompletionExcluderDialog2 = new javax.swing.JDialog(); + javaCompletionExcluderDialogTextField = new javax.swing.JTextField(); + javaCompletionExcluderDialogOkButton = new javax.swing.JButton(); + javaCompletionExcluderDialogLabel = new javax.swing.JLabel(); + javaCompletionExcluderDialogCancelButton = new javax.swing.JButton(); + javaCompletionExcluderDialog1 = new javax.swing.JDialog(); javaCompletionExcluderTab = new javax.swing.JTabbedPane(); javaCompletionExcludeScrollPane = new javax.swing.JScrollPane(); - javaCompletionExcludeTable = new javax.swing.JTable(); + javaCompletionExcludeJlist = new javax.swing.JList(); javaCompletionIncludeScrollPane = new javax.swing.JScrollPane(); - javaCompletionIncludeTable = new javax.swing.JTable(); + javaCompletionIncludeJlist = new javax.swing.JList(); javaCompletionExcluderAddButton = new javax.swing.JButton(); javaCompletionExcluderRemoveButton = new javax.swing.JButton(); javaCompletionExcluderCloseButton = new javax.swing.JButton(); + javaCompletionExcluderEditButton = new javax.swing.JButton(); + javaCompletionExcluderMethodsCheckBox = new javax.swing.JCheckBox(); javaCompletionPane = new javax.swing.JPanel(); guessMethodArguments = new javax.swing.JCheckBox(); javaAutoPopupOnIdentifierPart = new javax.swing.JCheckBox(); @@ -215,52 +185,73 @@ javaCompletionExcluderLabel = new javax.swing.JLabel(); javaCompletionExcluderButton = new javax.swing.JButton(); - javaCompletionExcluderFrame.setTitle(org.openide.util.NbBundle.getMessage(CodeCompletionPanel.class, "CodeCompletionPanel.javaCompletionExcluderFrame.title")); // NOI18N - javaCompletionExcluderFrame.setAlwaysOnTop(true); - javaCompletionExcluderFrame.setMinimumSize(new java.awt.Dimension(409, 233)); - javaCompletionExcluderFrame.setUndecorated(true); + javaCompletionExcluderDialog2.setModal(true); + javaCompletionExcluderDialog2.setUndecorated(true); - javaCompletionExcludeTable.setModel(new javax.swing.table.DefaultTableModel( - new Object [][] { - - }, - new String [] { - "Fully Qualified Name prefix" - } - ) { - Class[] types = new Class [] { - java.lang.String.class - }; - - public Class getColumnClass(int columnIndex) { - return types [columnIndex]; + javaCompletionExcluderDialogTextField.setText(org.openide.util.NbBundle.getMessage(CodeCompletionPanel.class, "CodeCompletionPanel.javaCompletionExcluderDialogTextField.text")); // NOI18N + javaCompletionExcluderDialogTextField.addKeyListener(new java.awt.event.KeyAdapter() { + public void keyTyped(java.awt.event.KeyEvent evt) { + javaCompletionExcluderDialogTextFieldKeyTyped(evt); } }); - javaCompletionExcludeTable.getTableHeader().setReorderingAllowed(false); - javaCompletionExcludeScrollPane.setViewportView(javaCompletionExcludeTable); - javaCompletionExcludeTable.getColumnModel().getColumn(0).setHeaderValue(org.openide.util.NbBundle.getMessage(CodeCompletionPanel.class, "CodeCompletionPanel.javaCompletionExcludeTable.columnModel.title0")); // NOI18N + + org.openide.awt.Mnemonics.setLocalizedText(javaCompletionExcluderDialogOkButton, org.openide.util.NbBundle.getMessage(CodeCompletionPanel.class, "CodeCompletionPanel.javaCompletionExcluderDialogOkButton.text")); // NOI18N + javaCompletionExcluderDialogOkButton.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + javaCompletionExcluderDialogOkButtonActionPerformed(evt); + } + }); + + org.openide.awt.Mnemonics.setLocalizedText(javaCompletionExcluderDialogLabel, org.openide.util.NbBundle.getMessage(CodeCompletionPanel.class, "CodeCompletionPanel.javaCompletionExcluderDialogLabel.text")); // NOI18N + + org.openide.awt.Mnemonics.setLocalizedText(javaCompletionExcluderDialogCancelButton, org.openide.util.NbBundle.getMessage(CodeCompletionPanel.class, "CodeCompletionPanel.javaCompletionExcluderDialogCancelButton.text")); // NOI18N + javaCompletionExcluderDialogCancelButton.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + javaCompletionExcluderDialogCancelButtonActionPerformed(evt); + } + }); + + org.jdesktop.layout.GroupLayout javaCompletionExcluderDialog2Layout = new org.jdesktop.layout.GroupLayout(javaCompletionExcluderDialog2.getContentPane()); + javaCompletionExcluderDialog2.getContentPane().setLayout(javaCompletionExcluderDialog2Layout); + javaCompletionExcluderDialog2Layout.setHorizontalGroup( + javaCompletionExcluderDialog2Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING) + .add(javaCompletionExcluderDialog2Layout.createSequentialGroup() + .addContainerGap() + .add(javaCompletionExcluderDialog2Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.TRAILING, false) + .add(org.jdesktop.layout.GroupLayout.LEADING, javaCompletionExcluderDialogLabel, 0, 0, Short.MAX_VALUE) + .add(org.jdesktop.layout.GroupLayout.LEADING, javaCompletionExcluderDialogTextField, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 307, Short.MAX_VALUE)) + .addPreferredGap(org.jdesktop.layout.LayoutStyle.UNRELATED) + .add(javaCompletionExcluderDialog2Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING, false) + .add(javaCompletionExcluderDialogOkButton, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .add(javaCompletionExcluderDialogCancelButton, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) + .addContainerGap(org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) + ); + javaCompletionExcluderDialog2Layout.setVerticalGroup( + javaCompletionExcluderDialog2Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING) + .add(org.jdesktop.layout.GroupLayout.TRAILING, javaCompletionExcluderDialog2Layout.createSequentialGroup() + .add(javaCompletionExcluderDialog2Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.TRAILING) + .add(javaCompletionExcluderDialog2Layout.createSequentialGroup() + .addContainerGap() + .add(javaCompletionExcluderDialogLabel) + .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) + .add(javaCompletionExcluderDialog2Layout.createSequentialGroup() + .addContainerGap() + .add(javaCompletionExcluderDialogCancelButton) + .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED))) + .add(javaCompletionExcluderDialog2Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.BASELINE) + .add(javaCompletionExcluderDialogTextField, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE) + .add(javaCompletionExcluderDialogOkButton)) + .add(61, 61, 61)) + ); + + javaCompletionExcluderDialog1.setTitle(org.openide.util.NbBundle.getMessage(CodeCompletionPanel.class, "CodeCompletionPanel.javaCompletionExcluderDialog1.title")); // NOI18N + javaCompletionExcluderDialog1.setModal(true); + + javaCompletionExcludeScrollPane.setViewportView(javaCompletionExcludeJlist); javaCompletionExcluderTab.addTab(org.openide.util.NbBundle.getMessage(CodeCompletionPanel.class, "CodeCompletionPanel.javaCompletionExcludeScrollPane.TabConstraints.tabTitle"), javaCompletionExcludeScrollPane); // NOI18N - javaCompletionIncludeTable.setModel(new javax.swing.table.DefaultTableModel( - new Object [][] { - - }, - new String [] { - "Fully Qualified Name prefix" - } - ) { - Class[] types = new Class [] { - java.lang.String.class - }; - - public Class getColumnClass(int columnIndex) { - return types [columnIndex]; - } - }); - javaCompletionIncludeTable.getTableHeader().setReorderingAllowed(false); - javaCompletionIncludeScrollPane.setViewportView(javaCompletionIncludeTable); - javaCompletionIncludeTable.getColumnModel().getColumn(0).setHeaderValue(org.openide.util.NbBundle.getMessage(CodeCompletionPanel.class, "CodeCompletionPanel.javaCompletionExcludeTable.columnModel.title0")); // NOI18N + javaCompletionIncludeScrollPane.setViewportView(javaCompletionIncludeJlist); javaCompletionExcluderTab.addTab(org.openide.util.NbBundle.getMessage(CodeCompletionPanel.class, "CodeCompletionPanel.javaCompletionIncludeScrollPane.TabConstraints.tabTitle"), javaCompletionIncludeScrollPane); // NOI18N @@ -285,34 +276,58 @@ } }); - org.jdesktop.layout.GroupLayout javaCompletionExcluderFrameLayout = new org.jdesktop.layout.GroupLayout(javaCompletionExcluderFrame.getContentPane()); - javaCompletionExcluderFrame.getContentPane().setLayout(javaCompletionExcluderFrameLayout); - javaCompletionExcluderFrameLayout.setHorizontalGroup( - javaCompletionExcluderFrameLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING) - .add(org.jdesktop.layout.GroupLayout.TRAILING, javaCompletionExcluderFrameLayout.createSequentialGroup() + org.openide.awt.Mnemonics.setLocalizedText(javaCompletionExcluderEditButton, org.openide.util.NbBundle.getMessage(CodeCompletionPanel.class, "CodeCompletionPanel.javaCompletionExcluderEditButton.text")); // NOI18N + javaCompletionExcluderEditButton.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + javaCompletionExcluderEditButtonActionPerformed(evt); + } + }); + + org.openide.awt.Mnemonics.setLocalizedText(javaCompletionExcluderMethodsCheckBox, org.openide.util.NbBundle.getMessage(CodeCompletionPanel.class, "CodeCompletionPanel.javaCompletionExcluderMethodsCheckBox.text")); // NOI18N + javaCompletionExcluderMethodsCheckBox.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + javaCompletionExcluderMethodsCheckBoxActionPerformed(evt); + } + }); + + org.jdesktop.layout.GroupLayout javaCompletionExcluderDialog1Layout = new org.jdesktop.layout.GroupLayout(javaCompletionExcluderDialog1.getContentPane()); + javaCompletionExcluderDialog1.getContentPane().setLayout(javaCompletionExcluderDialog1Layout); + javaCompletionExcluderDialog1Layout.setHorizontalGroup( + javaCompletionExcluderDialog1Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING) + .add(javaCompletionExcluderDialog1Layout.createSequentialGroup() .addContainerGap() - .add(javaCompletionExcluderTab, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 298, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE) - .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED) - .add(javaCompletionExcluderFrameLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING, false) - .add(javaCompletionExcluderCloseButton, 0, 0, Short.MAX_VALUE) - .add(javaCompletionExcluderRemoveButton, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) - .add(javaCompletionExcluderAddButton, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) - .addContainerGap(10, Short.MAX_VALUE)) + .add(javaCompletionExcluderDialog1Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING) + .add(javaCompletionExcluderDialog1Layout.createSequentialGroup() + .add(javaCompletionExcluderTab, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 298, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE) + .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED) + .add(javaCompletionExcluderDialog1Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING, false) + .add(javaCompletionExcluderEditButton, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .add(javaCompletionExcluderRemoveButton, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .add(javaCompletionExcluderAddButton, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))) + .add(javaCompletionExcluderDialog1Layout.createSequentialGroup() + .add(javaCompletionExcluderMethodsCheckBox) + .add(125, 125, 125) + .add(javaCompletionExcluderCloseButton, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 93, Short.MAX_VALUE))) + .addContainerGap(org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) ); - javaCompletionExcluderFrameLayout.setVerticalGroup( - javaCompletionExcluderFrameLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING) - .add(javaCompletionExcluderFrameLayout.createSequentialGroup() - .add(javaCompletionExcluderFrameLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING) - .add(javaCompletionExcluderFrameLayout.createSequentialGroup() + javaCompletionExcluderDialog1Layout.setVerticalGroup( + javaCompletionExcluderDialog1Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING) + .add(javaCompletionExcluderDialog1Layout.createSequentialGroup() + .add(javaCompletionExcluderDialog1Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING) + .add(javaCompletionExcluderDialog1Layout.createSequentialGroup() .addContainerGap() - .add(javaCompletionExcluderTab, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 221, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)) - .add(javaCompletionExcluderFrameLayout.createSequentialGroup() + .add(javaCompletionExcluderTab, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 221, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE) + .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED) + .add(javaCompletionExcluderDialog1Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.BASELINE) + .add(javaCompletionExcluderMethodsCheckBox) + .add(javaCompletionExcluderCloseButton))) + .add(javaCompletionExcluderDialog1Layout.createSequentialGroup() .add(59, 59, 59) .add(javaCompletionExcluderAddButton) .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED) - .add(javaCompletionExcluderRemoveButton) - .add(63, 63, 63) - .add(javaCompletionExcluderCloseButton))) + .add(javaCompletionExcluderEditButton) + .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED) + .add(javaCompletionExcluderRemoveButton))) .addContainerGap(org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) ); @@ -361,7 +376,7 @@ .add(javaCompletionPaneLayout.createSequentialGroup() .addContainerGap() .add(javaCompletionPaneLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING) - .add(jSeparator1, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 337, Short.MAX_VALUE) + .add(jSeparator1, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 511, Short.MAX_VALUE) .add(javaCompletionPaneLayout.createSequentialGroup() .add(javadocAutoCompletionTriggersLabel) .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED) @@ -371,24 +386,24 @@ .add(javaCompletionPaneLayout.createSequentialGroup() .addContainerGap() .add(javaCompletionPaneLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING) - .add(guessMethodArguments) + .add(guessMethodArguments) .add(javaCompletionPaneLayout.createSequentialGroup() - .add(javaAutoCompletionTriggersLabel) - .add(34, 34, 34) - .add(javaAutoCompletionTriggersField, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 86, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)) - .add(javaAutoPopupOnIdentifierPart) + .add(javaAutoCompletionTriggersLabel) + .add(34, 34, 34) + .add(javaAutoCompletionTriggersField, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 86, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)) + .add(javaAutoPopupOnIdentifierPart) .add(javaCompletionPaneLayout.createSequentialGroup() .add(javaCompletionPaneLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.TRAILING) .add(javaCompletionExcluderLabel) .add(javaCompletionSelectorsLabel)) .add(javaCompletionPaneLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING) .add(javaCompletionPaneLayout.createSequentialGroup() - .add(30, 30, 30) - .add(javaCompletionSelectorsField, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 86, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)) + .add(30, 30, 30) + .add(javaCompletionSelectorsField, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 86, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)) .add(org.jdesktop.layout.GroupLayout.TRAILING, javaCompletionPaneLayout.createSequentialGroup() .add(23, 23, 23) .add(javaCompletionExcluderButton, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 93, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE))))) - .addContainerGap(25, Short.MAX_VALUE))) + .addContainerGap(199, Short.MAX_VALUE))) ); javaCompletionPaneLayout.setVerticalGroup( javaCompletionPaneLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING) @@ -402,18 +417,18 @@ .addContainerGap(23, Short.MAX_VALUE)) .add(javaCompletionPaneLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING) .add(javaCompletionPaneLayout.createSequentialGroup() - .addContainerGap() + .addContainerGap() .add(guessMethodArguments, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 23, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE) - .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED) + .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED) .add(javaCompletionPaneLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.BASELINE) - .add(javaAutoCompletionTriggersLabel) - .add(javaAutoCompletionTriggersField, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)) - .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED) - .add(javaAutoPopupOnIdentifierPart) - .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED) + .add(javaAutoCompletionTriggersLabel) + .add(javaAutoCompletionTriggersField, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)) + .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED) + .add(javaAutoPopupOnIdentifierPart) + .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED) .add(javaCompletionPaneLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.BASELINE) - .add(javaCompletionSelectorsLabel) - .add(javaCompletionSelectorsField, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)) + .add(javaCompletionSelectorsLabel) + .add(javaCompletionSelectorsField, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)) .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED) .add(javaCompletionPaneLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.BASELINE) .add(javaCompletionExcluderButton) @@ -442,38 +457,111 @@ }//GEN-LAST:event_guessMethodArgumentsActionPerformed private void javaCompletionExcluderButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_javaCompletionExcluderButtonActionPerformed - if (javaCompletionExcluderFrame.isVisible()) - return; - javaCompletionExcluderFrame.pack(); - javaCompletionExcluderFrame.setLocationRelativeTo(this); - javaCompletionExcluderFrame.setVisible(true); + assert !javaCompletionExcluderDialog1.isVisible(); + javaCompletionExcluderDialog1.setVisible(true); }//GEN-LAST:event_javaCompletionExcluderButtonActionPerformed + // allows common excluder buttons to know which table to act on + private JList getSelectedExcluderList() { + Component selected = javaCompletionExcluderTab.getSelectedComponent(); + if (selected == javaCompletionExcludeScrollPane) { + return javaCompletionExcludeJlist; + } else if (selected == javaCompletionIncludeScrollPane) { + return javaCompletionIncludeJlist; + } else { + throw new RuntimeException(selected.getName()); + } + } + private void javaCompletionExcluderAddButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_javaCompletionExcluderAddButtonActionPerformed - JTable table = getSelectedExcluderTable(); - DefaultTableModel model = (DefaultTableModel) table.getModel(); - int rows = model.getRowCount(); - model.setRowCount(rows + 1); - table.editCellAt(rows, 0); - table.requestFocus(); + openExcluderEditor(); }//GEN-LAST:event_javaCompletionExcluderAddButtonActionPerformed private void javaCompletionExcluderRemoveButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_javaCompletionExcluderRemoveButtonActionPerformed - JTable table = getSelectedExcluderTable(); - int[] rows = table.getSelectedRows(); - if (rows.length == 0) - return; + JList list = getSelectedExcluderList(); + int[] rows = list.getSelectedIndices(); + DefaultListModel model = (DefaultListModel) list.getModel(); // remove rows in descending order: row numbers change when a row is removed - Arrays.sort(rows); - DefaultTableModel model = (DefaultTableModel) table.getModel(); for (int row = rows.length - 1; row >= 0; row--) { - model.removeRow(rows[row]); + model.remove(rows[row]); } }//GEN-LAST:event_javaCompletionExcluderRemoveButtonActionPerformed private void javaCompletionExcluderCloseButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_javaCompletionExcluderCloseButtonActionPerformed - javaCompletionExcluderFrame.setVisible(false); + javaCompletionExcluderDialog1.setVisible(false); }//GEN-LAST:event_javaCompletionExcluderCloseButtonActionPerformed + + private void javaCompletionExcluderEditButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_javaCompletionExcluderEditButtonActionPerformed + JList list = getSelectedExcluderList(); + int index = list.getSelectedIndex(); + if (index == -1) + return; + DefaultListModel model = (DefaultListModel) list.getModel(); + editing = (String) model.getElementAt(index); + openExcluderEditor(); +}//GEN-LAST:event_javaCompletionExcluderEditButtonActionPerformed + + private void javaCompletionExcluderMethodsCheckBoxActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_javaCompletionExcluderMethodsCheckBoxActionPerformed + preferences.putBoolean(JAVA_COMPLETION_EXCLUDER_METHODS, javaCompletionExcluderMethodsCheckBox.isSelected()); +}//GEN-LAST:event_javaCompletionExcluderMethodsCheckBoxActionPerformed + + private void javaCompletionExcluderDialogOkButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_javaCompletionExcluderDialogOkButtonActionPerformed + JList list = getSelectedExcluderList(); + String text = javaCompletionExcluderDialogTextField.getText(); + DefaultListModel model = (DefaultListModel) list.getModel(); + int index = model.size(); + if (editing != null){ + // if this was an "edit" rather than "add", then remove the old entry first + index = model.indexOf(editing); + model.remove(index); + editing = null; + } + String[] entries = text.split(","); // NOI18N + for (String entry : entries) { + // strip wildcards + if (entry.contains("*")) + entry = entry.replaceAll("\\*", ""); + entry = entry.trim(); + if (entry.length() != 0 && entry.matches(JAVA_FQN_REGEX)){ + model.insertElementAt(entry, index); + index++; + } + } + StringBuilder builder = new StringBuilder(); + for (int i = 0 ; i < model.size() ; i++) { + String entry = (String) model.getElementAt(i); + if (builder.length() > 0) { + builder.append(","); //NOI18N + } + builder.append(entry); + } + String pref; + if (list == javaCompletionExcludeJlist) + pref = JAVA_COMPLETION_BLACKLIST; + else if (list == javaCompletionIncludeJlist) + pref = JAVA_COMPLETION_WHITELIST; + else + throw new RuntimeException(list.getName()); + + preferences.put(pref, builder.toString()); + javaCompletionExcluderDialog2.setVisible(false); + javaCompletionExcluderDialogTextField.setText(null); + }//GEN-LAST:event_javaCompletionExcluderDialogOkButtonActionPerformed + + private void javaCompletionExcluderDialogCancelButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_javaCompletionExcluderDialogCancelButtonActionPerformed + javaCompletionExcluderDialog2.setVisible(false); + javaCompletionExcluderDialogTextField.setText(null); + editing = null; + }//GEN-LAST:event_javaCompletionExcluderDialogCancelButtonActionPerformed + + private void javaCompletionExcluderDialogTextFieldKeyTyped(java.awt.event.KeyEvent evt) {//GEN-FIRST:event_javaCompletionExcluderDialogTextFieldKeyTyped + char c = evt.getKeyChar(); + // could use javax.lang.model.SourceVersion.isIdentifier if we had Java 6 + if (c != ' ' && c != ',' && c != '*' && !String.valueOf(c).matches(JAVA_FQN_REGEX)) { + getToolkit().beep(); + evt.consume(); + } + }//GEN-LAST:event_javaCompletionExcluderDialogTextFieldKeyTyped private void update(DocumentEvent e) { if (e.getDocument() == javaAutoCompletionTriggersField.getDocument()) @@ -490,17 +578,24 @@ private javax.swing.JTextField javaAutoCompletionTriggersField; private javax.swing.JLabel javaAutoCompletionTriggersLabel; private javax.swing.JCheckBox javaAutoPopupOnIdentifierPart; + private javax.swing.JList javaCompletionExcludeJlist; private javax.swing.JScrollPane javaCompletionExcludeScrollPane; - private javax.swing.JTable javaCompletionExcludeTable; private javax.swing.JButton javaCompletionExcluderAddButton; private javax.swing.JButton javaCompletionExcluderButton; private javax.swing.JButton javaCompletionExcluderCloseButton; - private javax.swing.JFrame javaCompletionExcluderFrame; + private javax.swing.JDialog javaCompletionExcluderDialog1; + private javax.swing.JDialog javaCompletionExcluderDialog2; + private javax.swing.JButton javaCompletionExcluderDialogCancelButton; + private javax.swing.JLabel javaCompletionExcluderDialogLabel; + private javax.swing.JButton javaCompletionExcluderDialogOkButton; + private javax.swing.JTextField javaCompletionExcluderDialogTextField; + private javax.swing.JButton javaCompletionExcluderEditButton; private javax.swing.JLabel javaCompletionExcluderLabel; + private javax.swing.JCheckBox javaCompletionExcluderMethodsCheckBox; private javax.swing.JButton javaCompletionExcluderRemoveButton; private javax.swing.JTabbedPane javaCompletionExcluderTab; + private javax.swing.JList javaCompletionIncludeJlist; private javax.swing.JScrollPane javaCompletionIncludeScrollPane; - private javax.swing.JTable javaCompletionIncludeTable; private javax.swing.JPanel javaCompletionPane; private javax.swing.JTextField javaCompletionSelectorsField; private javax.swing.JLabel javaCompletionSelectorsLabel; @@ -508,11 +603,11 @@ private javax.swing.JLabel javadocAutoCompletionTriggersLabel; // End of variables declaration//GEN-END:variables - private static class CodeCompletionPreferencesCusromizer implements PreferencesCustomizer { + private static class CodeCompletionPreferencesCustomizer implements PreferencesCustomizer { private final Preferences preferences; - private CodeCompletionPreferencesCusromizer(Preferences p) { + private CodeCompletionPreferencesCustomizer(Preferences p) { preferences = p; }