/**
*
*/
package cz.cuni.mff.peckam.java.origamist.gui.viewer.listing;
import java.awt.Component;
import java.util.Locale;
import javax.swing.JTree;
import javax.swing.tree.DefaultMutableTreeNode;
import javax.swing.tree.DefaultTreeCellRenderer;
import cz.cuni.mff.peckam.java.origamist.files.Category;
import cz.cuni.mff.peckam.java.origamist.files.File;
import cz.cuni.mff.peckam.java.origamist.services.ServiceLocator;
import cz.cuni.mff.peckam.java.origamist.services.interfaces.ConfigurationManager;
/**
* A renderer able to "render" File and Category objects.
*
* @author Martin Pecka
*/
public class ListingTreeCellRenderer extends DefaultTreeCellRenderer
{
/** */
private static final long serialVersionUID = 3865858017604226291L;
/** The renderer used to render files. */
protected final FileRenderer fileRenderer = new FileRenderer();
@Override
public Component getTreeCellRendererComponent(JTree tree, final Object value, boolean sel, boolean expanded,
boolean leaf, int row, boolean hasFocus)
{
if (!(value instanceof DefaultMutableTreeNode))
return super.getTreeCellRendererComponent(tree, value, sel, expanded, leaf, row, hasFocus);
Object nodeVal = ((DefaultMutableTreeNode) value).getUserObject();
if (nodeVal instanceof Category) {
Locale l = ServiceLocator.get(ConfigurationManager.class).get().getDiagramLocale();
String text = ((Category) nodeVal).getName(l);
super.getTreeCellRendererComponent(tree, text, sel, expanded, leaf, row, hasFocus);
setIcon(expanded ? getOpenIcon() : getClosedIcon());
setBackgroundNonSelectionColor(tree.getBackground());
return this;
} else if (nodeVal instanceof File) {
fileRenderer.configure((File) nodeVal, sel, hasFocus);
return fileRenderer;
} else {
return super.getTreeCellRendererComponent(tree, value, sel, expanded, leaf, row, hasFocus);
}
}
}