org.fife.rsta.ac.c.CCellRenderer Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of languagesupport Show documentation
Show all versions of languagesupport Show documentation
A library adding code completion and other advanced features for Java, JavaScript, Perl, and other languages to RSyntaxTextArea.
/*
* 03/21/2010
*
* Copyright (C) 2010 Robert Futrell
* robert_futrell at users.sourceforge.net
* http://fifesoft.com/rsyntaxtextarea
*
* This library is distributed under a modified BSD license. See the included
* RSTALanguageSupport.License.txt file for details.
*/
package org.fife.rsta.ac.c;
import java.net.URL;
import javax.swing.Icon;
import javax.swing.ImageIcon;
import javax.swing.JList;
import org.fife.ui.autocomplete.Completion;
import org.fife.ui.autocomplete.CompletionCellRenderer;
import org.fife.ui.autocomplete.EmptyIcon;
import org.fife.ui.autocomplete.FunctionCompletion;
import org.fife.ui.autocomplete.VariableCompletion;
/**
* The cell renderer used for the C programming language.
*
* @author Robert Futrell
* @version 1.0
*/
class CCellRenderer extends CompletionCellRenderer {
private Icon variableIcon;
private Icon functionIcon;
private Icon emptyIcon;
/**
* Constructor.
*/
public CCellRenderer() {
emptyIcon = new EmptyIcon(16); // Should be done first
variableIcon = getIcon("var.png");
functionIcon = getIcon("function.png");
}
/**
* Returns an icon.
*
* @param resource The icon to retrieve. This should either be a file,
* or a resource loadable by the current ClassLoader.
* @return The icon.
*/
private Icon getIcon(String resource) {
URL url = getClass().getResource(resource); // Should never be null
return url!=null ? new ImageIcon(url) : emptyIcon;
}
/**
* {@inheritDoc}
*/
protected void prepareForOtherCompletion(JList list,
Completion c, int index, boolean selected, boolean hasFocus) {
super.prepareForOtherCompletion(list, c, index, selected, hasFocus);
setIcon(emptyIcon);
}
/**
* {@inheritDoc}
*/
protected void prepareForVariableCompletion(JList list,
VariableCompletion vc, int index, boolean selected,
boolean hasFocus) {
super.prepareForVariableCompletion(list, vc, index, selected,
hasFocus);
setIcon(variableIcon);
}
/**
* {@inheritDoc}
*/
protected void prepareForFunctionCompletion(JList list,
FunctionCompletion fc, int index, boolean selected,
boolean hasFocus) {
super.prepareForFunctionCompletion(list, fc, index, selected,
hasFocus);
setIcon(functionIcon);
}
}