mirror of
https://github.com/SuspiciousActivity/ByteEdit.git
synced 2026-08-13 17:56:17 +00:00
170 lines
4.3 KiB
Java
170 lines
4.3 KiB
Java
/*
|
|
* 12/22/2008
|
|
* VariableCompletion.java - A completion for a variable.
|
|
* 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.text.JTextComponent;
|
|
|
|
/**
|
|
* A completion for a variable (or constant) in a programming language.
|
|
* <p>
|
|
*
|
|
* This completion type uses its <tt>shortDescription</tt> property as part of
|
|
* its summary returned by {@link #getSummary()}; for this reason, it may be a
|
|
* little longer (even much longer), if desired, than what is recommended for
|
|
* <tt>BasicCompletion</tt>s (where the <tt>shortDescription</tt> is used in
|
|
* {@link #toString()} for <tt>ListCellRenderers</tt>).
|
|
*
|
|
* @author Robert Futrell
|
|
* @version 1.0
|
|
*/
|
|
public class VariableCompletion extends BasicCompletion {
|
|
|
|
/**
|
|
* The variable's type.
|
|
*/
|
|
private String type;
|
|
/**
|
|
* What library (for example) this variable is defined in.
|
|
*/
|
|
private String definedIn;
|
|
|
|
/**
|
|
* Constructor.
|
|
*
|
|
* @param provider The parent provider.
|
|
* @param name The name of this variable.
|
|
* @param type The type of this variable (e.g. "<code>int</code>",
|
|
* "<code>String</code>", etc.).
|
|
*/
|
|
public VariableCompletion(CompletionProvider provider, String name, String type) {
|
|
super(provider, name);
|
|
this.type = type;
|
|
}
|
|
|
|
protected void addDefinitionString(StringBuilder sb) {
|
|
sb.append("<html><b>").append(getDefinitionString()).append("</b>");
|
|
}
|
|
|
|
public String getDefinitionString() {
|
|
StringBuilder sb = new StringBuilder();
|
|
// Add the return type if applicable (C macros like NULL have no type).
|
|
if (type != null) {
|
|
sb.append(type).append(' ');
|
|
}
|
|
// Add the item being described's name.
|
|
sb.append(getName());
|
|
return sb.toString();
|
|
}
|
|
|
|
/**
|
|
* Returns where this variable is defined.
|
|
*
|
|
* @return Where this variable is defined.
|
|
* @see #setDefinedIn(String)
|
|
*/
|
|
public String getDefinedIn() {
|
|
return definedIn;
|
|
}
|
|
|
|
/**
|
|
* Returns the name of this variable.
|
|
*
|
|
* @return The name.
|
|
*/
|
|
public String getName() {
|
|
return getReplacementText();
|
|
}
|
|
|
|
/**
|
|
* {@inheritDoc}
|
|
*/
|
|
@Override
|
|
public String getSummary() {
|
|
StringBuilder sb = new StringBuilder();
|
|
addDefinitionString(sb);
|
|
possiblyAddDescription(sb);
|
|
possiblyAddDefinedIn(sb);
|
|
return sb.toString();
|
|
}
|
|
|
|
/**
|
|
* Returns the tool tip text to display for mouse hovers over this completion.
|
|
* <p>
|
|
*
|
|
* Note that for this functionality to be enabled, a <tt>JTextComponent</tt>
|
|
* must be registered with the <tt>ToolTipManager</tt>, and the text component
|
|
* must know to search for this value. In the case of an
|
|
* <a href="http://fifesoft.com/rsyntaxtextarea">RSyntaxTextArea</a>, this can
|
|
* be done with a <tt>org.fife.ui.rtextarea.ToolTipSupplier</tt> that calls into
|
|
* {@link CompletionProvider#getCompletionsAt(JTextComponent, java.awt.Point)}.
|
|
*
|
|
* @return The tool tip text for this completion, or <code>null</code> if none.
|
|
*/
|
|
@Override
|
|
public String getToolTipText() {
|
|
return getDefinitionString();
|
|
}
|
|
|
|
/**
|
|
* Returns the type of this variable.
|
|
*
|
|
* @return The type.
|
|
*/
|
|
public String getType() {
|
|
return type;
|
|
}
|
|
|
|
/**
|
|
* Adds some HTML describing where this variable is defined, if this information
|
|
* is known.
|
|
*
|
|
* @param sb The buffer to append to.
|
|
*/
|
|
protected void possiblyAddDefinedIn(StringBuilder sb) {
|
|
if (definedIn != null) {
|
|
sb.append("<hr>Defined in:"); // TODO: Localize me
|
|
sb.append(" <em>").append(definedIn).append("</em>");
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Adds the description text as HTML to a buffer, if a description is defined.
|
|
*
|
|
* @param sb The buffer to append to.
|
|
* @return Whether there was a description to add.
|
|
*/
|
|
protected boolean possiblyAddDescription(StringBuilder sb) {
|
|
if (getShortDescription() != null) {
|
|
sb.append("<hr><br>");
|
|
sb.append(getShortDescription());
|
|
sb.append("<br><br><br>");
|
|
return true;
|
|
}
|
|
return false;
|
|
}
|
|
|
|
/**
|
|
* Sets where this variable is defined.
|
|
*
|
|
* @param definedIn Where this variable is defined.
|
|
* @see #getDefinedIn()
|
|
*/
|
|
public void setDefinedIn(String definedIn) {
|
|
this.definedIn = definedIn;
|
|
}
|
|
|
|
/**
|
|
* Overridden to return the name of the variable being completed.
|
|
*
|
|
* @return A string representation of this completion.
|
|
*/
|
|
@Override
|
|
public String toString() {
|
|
return getName();
|
|
}
|
|
}
|