/* * 12/21/2008 * Completion.java - Represents a single completion choice. * This library is distributed under a modified BSD license. See the included * AutoComplete.License.txt file for details. */ package org.fife.ui.autocomplete; import javax.swing.Icon; import javax.swing.text.JTextComponent; /** * Represents a completion choice. A {@link CompletionProvider} returns lists of * objects implementing this interface. A Completion contains the * following information: * * * * @author Robert Futrell * @version 1.0 * @see AbstractCompletion */ public interface Completion extends Comparable { /** * Compares this completion to another one lexicographically, ignoring case. * * @param other Another completion instance. * @return How this completion compares to the other one. */ @Override public int compareTo(Completion other); /** * Returns the portion of this completion that has already been entered into the * text component. The match is case-insensitive. *

* * This is a convenience method for: * getProvider().getAlreadyEnteredText(comp). * * @param comp The text component. * @return The already-entered portion of this completion. */ public String getAlreadyEntered(JTextComponent comp); /** * Returns the icon to use for this completion. * * @return The icon, or null for none. */ public Icon getIcon(); /** * Returns the text that the user has to (start) typing for this completion to * be offered. Note that this will usually be the same value as * {@link #getReplacementText()}, but not always (a completion could be a way to * implement shorthand, for example, "sysout" mapping to * "System.out.println("). * * @return The text the user has to (start) typing for this completion to be * offered. * @see #getReplacementText() */ public String getInputText(); /** * Returns the provider that returned this completion. * * @return The provider. */ public CompletionProvider getProvider(); /** * Returns the "relevance" of this completion. This is used when sorting * completions by their relevance. It is an abstract concept that may mean * different things to different languages, and may depend on the context of the * completion. *

* * By default, all completions have a relevance of 0. The higher * the value returned by this method, the higher up in the list this completion * will be; the lower the value returned, the lower it will be. * Completions with equal relevance values will be sorted * alphabetically. * * @return The relevance of this completion. */ public int getRelevance(); /** * Returns the text to insert as the result of this auto-completion. This is the * "complete" text, including any text that replaces what the user has already * typed. * * @return The replacement text. * @see #getInputText() */ public String getReplacementText(); /** * Returns the description of this auto-complete choice. This can be used in a * popup "description window." * * @return This item's description. This should be HTML. It may be * null if there is no description for this completion. */ public String getSummary(); /** * Returns the tool tip text to display for mouse hovers over this completion. *

* * Note that for this functionality to be enabled, a JTextComponent * must be registered with the ToolTipManager, and the text component * must know to search for this value. In the case of an * RSyntaxTextArea, this can * be done with a org.fife.ui.rtextarea.ToolTipSupplier that calls into * {@link CompletionProvider#getCompletionsAt(JTextComponent, java.awt.Point)}. * * @return The tool tip text for this completion, or null if none. */ public String getToolTipText(); }