This is an automated email from the git hooks/post-receive script.

ben pushed a commit to branch master
in repository autocomplete.

commit d27dd1fa5581e333c5c768a091351e065d5dced6
Author: bobbylight <[email protected]>
Date:   Sat Dec 18 16:18:45 2010 +0000

    Parameter choice completions sorted by relevance.
    ParameterizedCompletion.Parameter can now take an arbitrary Object "type", 
so language supports can provide more data than just a string representation of 
the type.
    JavaLanguageSupport: Tweaked relevance values of the various completions.
    JavaLanguageSupport: Modified parameter choice completion renderer to look 
like standard Java completion renderer.
---
 .../ui/autocomplete/CompletionProviderBase.java    |   18 -------
 .../ui/autocomplete/ParameterizedCompletion.java   |   29 +++++++++++-
 .../ParameterizedCompletionChoicesWindow.java      |   27 +++++++++--
 .../ui/autocomplete/SortByRelevanceComparator.java |   49 ++++++++++++++++++++
 4 files changed, 99 insertions(+), 24 deletions(-)

diff --git a/src/org/fife/ui/autocomplete/CompletionProviderBase.java 
b/src/org/fife/ui/autocomplete/CompletionProviderBase.java
index dd861f8..e98117a 100644
--- a/src/org/fife/ui/autocomplete/CompletionProviderBase.java
+++ b/src/org/fife/ui/autocomplete/CompletionProviderBase.java
@@ -272,22 +272,4 @@ public abstract class CompletionProviderBase implements 
CompletionProvider {
        }
 
 
-       /**
-        * Compares two <code>Completion</code>s by their relevance before
-        * sorting them lexicographically.
-        */
-       public static class SortByRelevanceComparator implements Comparator {
-
-               public int compare(Object o1, Object o2) {
-                       Completion c1 = (Completion)o1;
-                       Completion c2 = (Completion)o2;
-                       int rel1 = c1.getRelevance();
-                       int rel2 = c2.getRelevance();
-                       int diff = rel2 - rel1;//rel1 - rel2;
-                       return diff==0 ? c1.compareTo(c2) : diff;
-               }
-
-       }
-
-
 }
\ No newline at end of file
diff --git a/src/org/fife/ui/autocomplete/ParameterizedCompletion.java 
b/src/org/fife/ui/autocomplete/ParameterizedCompletion.java
index 05ccc41..0f776c8 100644
--- a/src/org/fife/ui/autocomplete/ParameterizedCompletion.java
+++ b/src/org/fife/ui/autocomplete/ParameterizedCompletion.java
@@ -48,10 +48,21 @@ public interface ParameterizedCompletion extends Completion 
{
        public static class Parameter {
 
                private String name;
-               private String type;
+               private Object type;
                private String desc;
 
-               public Parameter(String type, String name) {
+               /**
+                * Constructor.
+                *
+                * @param type The type of this parameter.  This may be
+                *        <code>null</code> for languages without specific 
types,
+                *        dynamic typing, etc.  Usually you'll pass a String 
for this
+                *        value, but you may pass any object representing a 
type in
+                *        your language, as long as its <code>toString()</code> 
method
+                *        returns a string representation of the type.
+                * @param name The name of the parameter.
+                */
+               public Parameter(Object type, String name) {
                        this.name = name;
                        this.type = type;
                }
@@ -64,7 +75,21 @@ public interface ParameterizedCompletion extends Completion {
                        return name;
                }
 
+               /**
+                * Returns the type of this parameter, as a string.
+                *
+                * @return The type of the parameter, or <code>null</code> for 
none.
+                */
                public String getType() {
+                       return type==null ? null : type.toString();
+               }
+
+               /**
+                * Returns the object used to describe the type of this 
parameter.
+                *
+                * @return The type object, or <code>null</code> for none.
+                */
+               public Object getTypeObject() {
                        return type;
                }
 
diff --git 
a/src/org/fife/ui/autocomplete/ParameterizedCompletionChoicesWindow.java 
b/src/org/fife/ui/autocomplete/ParameterizedCompletionChoicesWindow.java
index e9aba1c..34e89ed 100644
--- a/src/org/fife/ui/autocomplete/ParameterizedCompletionChoicesWindow.java
+++ b/src/org/fife/ui/autocomplete/ParameterizedCompletionChoicesWindow.java
@@ -27,6 +27,8 @@ import java.awt.ComponentOrientation;
 import java.awt.Rectangle;
 import java.awt.Window;
 import java.util.ArrayList;
+import java.util.Collections;
+import java.util.Comparator;
 import java.util.Iterator;
 import java.util.List;
 
@@ -70,6 +72,13 @@ public class ParameterizedCompletionChoicesWindow extends 
JWindow {
         */
        private List choicesListList;
 
+       /**
+        * Comparator used to sort completions by their relevance before sorting
+        * them lexicographically.
+        */
+       private static final Comparator sortByRelevanceComparator =
+                                                               new 
SortByRelevanceComparator();
+
 
        /**
         * Constructor.
@@ -207,6 +216,7 @@ public class ParameterizedCompletionChoicesWindow extends 
JWindow {
        public void setParameter(int param, String prefix) {
 
                model.clear();
+               List temp = new ArrayList();
 
                if (choicesListList!=null && param>=0 && 
param<choicesListList.size()) {
 
@@ -214,15 +224,24 @@ public class ParameterizedCompletionChoicesWindow extends 
JWindow {
                        for (Iterator i=choices.iterator(); i.hasNext(); ) {
                                Completion c = (Completion)i.next();
                                String choice = c.getReplacementText();
-                               if (prefix==null ||
-                                               
Util.startsWithIgnoreCase(choice, prefix)) {
-                                       model.addElement(c);
+                               if (prefix==null || 
Util.startsWithIgnoreCase(choice, prefix)) {
+                                       temp.add(c);
                                }
                        }
 
+                       // Sort completions appropriately.
+                       Comparator c = null;
+                       if (/*sortByRelevance*/true) {
+                               c = sortByRelevanceComparator;
+                       }
+                       Collections.sort(temp, c);
+                       for (int i=0; i<temp.size(); i++) {
+                               model.addElement(temp.get(i));
+                       }
+
                        int visibleRowCount = Math.min(model.size(), 10);
                        list.setVisibleRowCount(visibleRowCount);
-//list.setPreferredSize(list.getPreferredScrollableViewportSize());
+
                        // Toggle visibility, if necessary.
                        if (visibleRowCount==0 && isVisible()) {
                                setVisible(false);
diff --git a/src/org/fife/ui/autocomplete/SortByRelevanceComparator.java 
b/src/org/fife/ui/autocomplete/SortByRelevanceComparator.java
new file mode 100644
index 0000000..82039bb
--- /dev/null
+++ b/src/org/fife/ui/autocomplete/SortByRelevanceComparator.java
@@ -0,0 +1,49 @@
+/*
+ * 12/17/2010
+ *
+ * SortByRelevanceComparator.java - Sorts two Completions by relevance before
+ * sorting them lexicographically.
+ * Copyright (C) 2020 Robert Futrell
+ * robert_futrell at users.sourceforge.net
+ * http://fifesoft.com/rsyntaxtextarea
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA.
+ */
+package org.fife.ui.autocomplete;
+
+import java.util.Comparator;
+
+
+/**
+ * Compares two <code>Completion</code>s by their relevance before
+ * sorting them lexicographically.
+ *
+ * @author Robert Futrell
+ * @version 1.0
+ */
+public class SortByRelevanceComparator implements Comparator {
+
+
+       public int compare(Object o1, Object o2) {
+               Completion c1 = (Completion)o1;
+               Completion c2 = (Completion)o2;
+               int rel1 = c1.getRelevance();
+               int rel2 = c2.getRelevance();
+               int diff = rel2 - rel1;//rel1 - rel2;
+               return diff==0 ? c1.compareTo(c2) : diff;
+       }
+
+
+}
\ No newline at end of file

-- 
Alioth's /usr/local/bin/git-commit-notice on 
/srv/git.debian.org/git/pkg-java/autocomplete.git

_______________________________________________
pkg-java-commits mailing list
[email protected]
http://lists.alioth.debian.org/cgi-bin/mailman/listinfo/pkg-java-commits

Reply via email to