org.fife.rsta.ac.c.CCellRenderer Maven / Gradle / Ivy
/*
* 03/21/2010
*
* Copyright (C) 2010 Robert Futrell
* robert_futrell at users.sourceforge.net
* http://fifesoft.com/rsyntaxtextarea
*
* This code is licensed under the LGPL. See the "license.txt" file included
* with this project.
*/
package org.fife.rsta.ac.c;
import java.io.File;
import java.net.MalformedURLException;
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() {
variableIcon = getIcon("var.png");
functionIcon = getIcon("function.png");
emptyIcon = new EmptyIcon(16);
}
/**
* 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);
if (url==null) {
File file = new File(resource);
try {
url = file.toURI().toURL();
} catch (MalformedURLException mue) {
mue.printStackTrace(); // Never happens
}
}
return url!=null ? new ImageIcon(url) : null;
}
/**
* {@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);
}
}