//$Header: /cvsroot-fuse/mec-as2/39/mendelson/util/clientserver/clients/filesystemview/TreeCellRendererFileBrowser.java,v 1.1 2012/04/18 14:10:44 heller Exp $ package de.mendelson.util.clientserver.clients.filesystemview; import java.awt.Component; import javax.swing.Icon; import javax.swing.ImageIcon; import javax.swing.JTree; import javax.swing.filechooser.FileSystemView; import javax.swing.filechooser.FileView; import javax.swing.tree.DefaultMutableTreeNode; import javax.swing.tree.DefaultTreeCellRenderer; /* * Copyright (C) mendelson-e-commerce GmbH Berlin Germany * * This software is subject to the license agreement set forth in the license. * Please read and agree to all terms before using this software. * Other product and brand names are trademarks of their respective owners. */ /** * TreeCellRenderer that will display the icons of the config tree * @author S.Heller * @version $Revision: 1.1 $ */ public class TreeCellRendererFileBrowser extends DefaultTreeCellRenderer { private ImageIcon iconRoot = new ImageIcon(TreeCellRendererFileBrowser.class.getResource( "/de/mendelson/util/clientserver/clients/filesystemview/root16x16.gif")); private ImageIcon iconWait = new ImageIcon(TreeCellRendererFileBrowser.class.getResource( "/de/mendelson/util/clientserver/clients/filesystemview/waiting16x16.gif")); /**Stores the selected node*/ private DefaultMutableTreeNode selectedNode = null; private boolean expanded = false; /**Constructor to create Renderer for console tree*/ public TreeCellRendererFileBrowser() { super(); } @Override public Component getTreeCellRendererComponent(JTree tree, Object selectedObject, boolean sel, boolean expanded, boolean leaf, int row, boolean hasFocus) { this.selectedNode = (DefaultMutableTreeNode) selectedObject; this.expanded = expanded; return (super.getTreeCellRendererComponent(tree, selectedObject, sel, expanded, leaf, row, hasFocus)); } /**Returns the defined Icon of the entry, might be null if anything fails*/ private Icon getDefinedIcon() { Object object = this.selectedNode.getUserObject(); //is this root node? if (object == null) { return (super.getOpenIcon()); } if (object instanceof String) { return (this.iconWait); } if (!(object instanceof FileObject)) { return (super.getOpenIcon()); } FileObject userObject = (FileObject) object; if (userObject.getType() == FileObject.TYPE_DIR) { if (this.expanded) { return (super.getDefaultOpenIcon()); } else { return (super.getDefaultClosedIcon()); } } else if (userObject.getType() == FileObject.TYPE_ROOT) { return (this.iconRoot); } try { //this might fail FileSystemView view = FileSystemView.getFileSystemView(); return (view.getSystemIcon(userObject.getFile())); } catch (Throwable e) { return( null ); } } /**Gets the Icon by the type of the object*/ @Override public Icon getLeafIcon() { Icon icon = this.getDefinedIcon(); if (icon != null) { return (icon); } //nothing found: get default return (super.getLeafIcon()); } @Override public Icon getOpenIcon() { Icon icon = this.getDefinedIcon(); if (icon != null) { return (icon); } return (super.getOpenIcon()); } @Override public Icon getClosedIcon() { Icon icon = this.getDefinedIcon(); if (icon != null) { return (icon); } return (super.getClosedIcon()); } }