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

