[autocomplete] 60/143: Make ParameterChoicesProvider assume Completions as the choice types, and allow a custom renderer to be installed for the choices list on AutoComplete instances. Make JavaLanguageSupport take advantage of this.
Benjamin Mesing
ben at alioth.debian.org
Sat Oct 19 12:53:17 UTC 2013
This is an automated email from the git hooks/post-receive script.
ben pushed a commit to branch master
in repository autocomplete.
commit 471986c2e3b9a63dcf663433600afcd013024b52
Author: bobbylight <robert at fifesoft.com>
Date: Fri Dec 17 04:50:35 2010 +0000
Make ParameterChoicesProvider assume Completions as the choice types, and allow a custom renderer to be installed for the choices list on AutoComplete instances. Make JavaLanguageSupport take advantage of this.
---
src/org/fife/ui/autocomplete/AutoCompletion.java | 41 ++++++++++++++++++++
.../ui/autocomplete/ParameterChoicesProvider.java | 2 +-
.../ParameterizedCompletionChoicesWindow.java | 14 ++++---
3 files changed, 51 insertions(+), 6 deletions(-)
diff --git a/src/org/fife/ui/autocomplete/AutoCompletion.java b/src/org/fife/ui/autocomplete/AutoCompletion.java
index 61ddba0..da89584 100644
--- a/src/org/fife/ui/autocomplete/AutoCompletion.java
+++ b/src/org/fife/ui/autocomplete/AutoCompletion.java
@@ -147,6 +147,13 @@ public class AutoCompletion {
private boolean parameterAssistanceEnabled;
/**
+ * A renderer used for {@link Completion}s in the optional parameter
+ * choices popup window (displayed when a {@link ParameterizedCompletion}
+ * is code-completed). If this isn't set, a default renderer is used.
+ */
+ private ListCellRenderer paramChoicesRenderer;
+
+ /**
* The keystroke that triggers the completion window.
*/
private KeyStroke trigger;
@@ -387,6 +394,21 @@ public class AutoCompletion {
/**
+ * Returns the renderer to use for {@link Completion}s in the optional
+ * parameter choices popup window (displayed when a
+ * {@link ParameterizedCompletion} is code-completed). If this returns
+ * <code>null</code>, a default renderer is used.
+ *
+ * @return The renderer to use.
+ * @see #setParamChoicesRenderer(ListCellRenderer)
+ * @see #isParameterAssistanceEnabled()
+ */
+ public ListCellRenderer getParamChoicesRenderer() {
+ return paramChoicesRenderer;
+ }
+
+
+ /**
* Returns the text to replace with in the document. This is a
* "last-chance" hook for subclasses to make special modifications to the
* completion text inserted. The default implementation simply returns
@@ -890,6 +912,21 @@ public class AutoCompletion {
/**
+ * Sets the renderer to use for {@link Completion}s in the optional
+ * parameter choices popup window (displayed when a
+ * {@link ParameterizedCompletion} is code-completed). If this isn't set,
+ * a default renderer is used.
+ *
+ * @param r The renderer to use.
+ * @see #getParamChoicesRenderer()
+ * @see #setParameterAssistanceEnabled(boolean)
+ */
+ public void setParamChoicesRenderer(ListCellRenderer r) {
+ paramChoicesRenderer = r;
+ }
+
+
+ /**
* Sets whether parameter assistance is enabled. If parameter assistance
* is enabled, and a "parameterized" completion (such as a function or
* method) is inserted, the user will get "assistance" in inserting the
@@ -1008,6 +1045,10 @@ public class AutoCompletion {
if (descToolTip!=null) {
descToolTip.updateUI();
}
+ // Will practically always be a JComponent (a JLabel)
+ if (paramChoicesRenderer instanceof JComponent) {
+ ((JComponent)paramChoicesRenderer).updateUI();
+ }
}
diff --git a/src/org/fife/ui/autocomplete/ParameterChoicesProvider.java b/src/org/fife/ui/autocomplete/ParameterChoicesProvider.java
index 2303202..9e38ad1 100644
--- a/src/org/fife/ui/autocomplete/ParameterChoicesProvider.java
+++ b/src/org/fife/ui/autocomplete/ParameterChoicesProvider.java
@@ -45,7 +45,7 @@ public interface ParameterChoicesProvider {
* @param tc The text component.
* @param p The currently focused parameter.
* @return The list of parameters. This may be <code>null</code> for
- * "no parameters."
+ * "no parameters," but might also be an empty list.
*/
public List getParameterChoices(JTextComponent tc,
ParameterizedCompletion.Parameter param);
diff --git a/src/org/fife/ui/autocomplete/ParameterizedCompletionChoicesWindow.java b/src/org/fife/ui/autocomplete/ParameterizedCompletionChoicesWindow.java
index c1f7783..e9aba1c 100644
--- a/src/org/fife/ui/autocomplete/ParameterizedCompletionChoicesWindow.java
+++ b/src/org/fife/ui/autocomplete/ParameterizedCompletionChoicesWindow.java
@@ -86,13 +86,15 @@ public class ParameterizedCompletionChoicesWindow extends JWindow {
model = new DefaultListModel();
list = new JList(model);
+ if (ac.getParamChoicesRenderer()!=null) {
+ list.setCellRenderer(ac.getParamChoicesRenderer());
+ }
JScrollPane sp = new JScrollPane(list);
// Required to easily keep popup wide enough for no horiz. scroll bar
sp.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);
setContentPane(sp);
applyComponentOrientation(o);
-
setFocusableWindowState(false);
}
@@ -105,7 +107,8 @@ public class ParameterizedCompletionChoicesWindow extends JWindow {
* selected.
*/
public String getSelectedChoice() {
- return (String)list.getSelectedValue();
+ Completion c = (Completion)list.getSelectedValue();
+ return c==null ? null : c.toString();
}
@@ -209,16 +212,17 @@ public class ParameterizedCompletionChoicesWindow extends JWindow {
List choices = (List)choicesListList.get(param);
for (Iterator i=choices.iterator(); i.hasNext(); ) {
- String choice = (String)i.next();
+ Completion c = (Completion)i.next();
+ String choice = c.getReplacementText();
if (prefix==null ||
Util.startsWithIgnoreCase(choice, prefix)) {
- model.addElement(choice);
+ model.addElement(c);
}
}
int visibleRowCount = Math.min(model.size(), 10);
list.setVisibleRowCount(visibleRowCount);
-
+//list.setPreferredSize(list.getPreferredScrollableViewportSize());
// Toggle visibility, if necessary.
if (visibleRowCount==0 && isVisible()) {
setVisible(false);
--
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-java/autocomplete.git
More information about the pkg-java-commits
mailing list