[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