/**
*
*/
package org.korsakow.ide.ui.resourceexplorer;
import java.awt.Component;
import javax.swing.JLabel;
import javax.swing.JTree;
import javax.swing.SwingConstants;
import javax.swing.tree.DefaultTreeCellRenderer;
import org.korsakow.ide.resources.ResourceType;
import org.korsakow.ide.ui.components.tree.FolderNode;
import org.korsakow.ide.ui.components.tree.KNode;
import org.korsakow.ide.ui.components.tree.ResourceNode;
/**
* Handles rendering of the TreeTable's tree column.
* @author d
*
*/
public class ResourceTreeCellRenderer extends DefaultTreeCellRenderer
{
public ResourceTreeCellRenderer()
{
}
public Component getTreeCellRendererComponent(JTree tree, FolderNode value,
boolean selected, boolean expanded, boolean leaf, int row,
boolean hasFocus)
{
JLabel label = (JLabel) super.getTreeCellRendererComponent(tree, value.getName(), selected, expanded, false, row, hasFocus);
// use platform folder icon
//label.setIcon(UIResourceManager.getIcon(UIResourceManager.ICON_FOLDER));
return label;
}
public Component getTreeCellRendererComponent(JTree tree, ResourceNode value,
boolean selected, boolean expanded, boolean leaf, int row,
boolean hasFocus)
{
String name = value.getName();
if (name == null || name.isEmpty()) {
name = value.getType().getDisplayString();
}
JLabel label = (JLabel) super.getTreeCellRendererComponent(tree, name, selected, expanded, leaf, row, hasFocus);
ResourceType resourceType = value.getResourceType();
setIcon(resourceType.getIcon());
setHorizontalTextPosition(SwingConstants.RIGHT);
setHorizontalAlignment(SwingConstants.CENTER);
setVerticalAlignment(SwingConstants.CENTER);
return label;
}
public Component getTreeCellRendererComponent(JTree tree, KNode value,
boolean selected, boolean expanded, boolean leaf, int row,
boolean hasFocus)
{
return super.getTreeCellRendererComponent(tree, (value).getName(), selected, expanded, leaf, row, hasFocus);
}
@Override
public Component getTreeCellRendererComponent(JTree tree, Object value,
boolean selected, boolean expanded, boolean leaf, int row,
boolean hasFocus)
{
if (value instanceof FolderNode)
getTreeCellRendererComponent(tree, (FolderNode)value, selected, expanded, leaf, row, hasFocus);
else
if (value instanceof ResourceNode)
getTreeCellRendererComponent(tree, (ResourceNode)value, selected, expanded, leaf, row, hasFocus);
else
if (value instanceof KNode)
getTreeCellRendererComponent(tree, (KNode)value, selected, expanded, leaf, row, hasFocus);
else
super.getTreeCellRendererComponent(tree, value, selected, expanded, leaf, row, hasFocus);
// apparently this changed between JDK 5 and 6
this.setHorizontalAlignment(JLabel.LEFT);
return this;
}
}