/* * 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(); }