/* * @(#)FileSystemTree.java 9/12/2005 * * Copyright 2002 - 2005 JIDE Software Inc. All rights reserved. */ package com.jidesoft.plaf.basic; import com.jidesoft.swing.FolderChooser; import com.jidesoft.swing.JideSwingUtilities; import com.jidesoft.swing.TreeSearchable; import javax.swing.*; import javax.swing.event.TreeExpansionEvent; import javax.swing.event.TreeExpansionListener; import javax.swing.event.TreeWillExpandListener; import javax.swing.tree.ExpandVetoException; import javax.swing.tree.TreePath; import java.awt.*; import java.awt.event.MouseEvent; class BasicFileSystemTree extends JTree { public BasicFileSystemTree(FolderChooser folderChooser) { super(new BasicFileSystemTreeModel(folderChooser)); initComponents(); } protected void initComponents() { setCellRenderer(new BasicFileSystemTreeCellRenderer()); setShowsRootHandles(false); setRootVisible(false); setBorder(BorderFactory.createEmptyBorder(0, 3, 0, 3)); setRowHeight(JideSwingUtilities.getLineHeight(this, 17)); expandRow(0); FolderTreeListener treeListener = new FolderTreeListener(); addTreeWillExpandListener(treeListener); addTreeExpansionListener(treeListener); new TreeSearchable(this) { @Override protected String convertElementToString(Object object) { if (object instanceof TreePath) { Object treeNode = ((TreePath) object).getLastPathComponent(); if (treeNode instanceof BasicFileSystemTreeNode) { return ((BasicFileSystemTreeNode) treeNode).getName(); } } return super.convertElementToString(object); } }; } private class FolderTreeListener implements TreeWillExpandListener, TreeExpansionListener { private Cursor oldCursor; // ------------------------------------------------------------------------------------------ // TreeWillExpandListener methods public void treeWillExpand(TreeExpansionEvent event) throws ExpandVetoException { // change to busy cursor Window window = SwingUtilities.getWindowAncestor(BasicFileSystemTree.this); if (window != null) { oldCursor = window.getCursor(); window.setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR)); } } public void treeWillCollapse(TreeExpansionEvent event) throws ExpandVetoException { } // ------------------------------------------------------------------------------------------ // TreeExpansionListener methods public void treeExpanded(TreeExpansionEvent event) { // change cursor back Window window = SwingUtilities.getWindowAncestor(BasicFileSystemTree.this); if (window != null) { window.setCursor(oldCursor != null ? oldCursor : Cursor.getDefaultCursor()); } oldCursor = null; } public void treeCollapsed(TreeExpansionEvent event) { } } @Override public String getToolTipText(MouseEvent event) { TreePath path = getPathForLocation(event.getX(), event.getY()); if (path != null && path.getLastPathComponent() instanceof BasicFileSystemTreeNode) { BasicFileSystemTreeNode node = (BasicFileSystemTreeNode) path.getLastPathComponent(); String typeDescription = node.getTypeDescription(); if (typeDescription == null || typeDescription.length() == 0) { return node.toString(); } else { return node.toString() + " - " + typeDescription; } } else { return null; } } }