package com.vci.client.ui.tree; import java.util.Enumeration; import javax.swing.JTree; import javax.swing.event.TreeModelEvent; import javax.swing.event.TreeModelListener; import javax.swing.tree.DefaultTreeCellRenderer; import javax.swing.tree.DefaultTreeModel; import javax.swing.tree.TreeNode; import javax.swing.tree.TreePath; /** * VCIBaseTree as the base tree in all vci java project. * */ public class VCIBaseTree extends JTree{ /** * */ private static final long serialVersionUID = -3374434957495661429L; public VCIBaseTree(DefaultTreeModel treeModel) { this(treeModel, null); } public VCIBaseTree(DefaultTreeModel treeModel, DefaultTreeCellRenderer treeCellRenderer) { super(treeModel); this.putClientProperty("JTree.lineStyle", "Angled"); this.setCellRenderer(treeCellRenderer); this.setEditable(false); treeModel.addTreeModelListener(new TreeModelListener() { public void treeNodesInserted(TreeModelEvent e) { try { scrollPathToVisible(new TreePath(e.getPath())); } catch (Exception ae) { ae.printStackTrace(); } } public void treeNodesRemoved(TreeModelEvent e) { try { scrollPathToVisible(new TreePath(e.getPath())); } catch (Exception ae) { ae.printStackTrace(); } } public void treeNodesChanged(TreeModelEvent e) { try { scrollPathToVisible(new TreePath(e.getPath())); } catch (Exception ae) { ae.printStackTrace(); } } public void treeStructureChanged(TreeModelEvent e) { try { scrollPathToVisible(new TreePath(e.getPath())); } catch (Exception ae) { ae.printStackTrace(); } } }); } public void expandAllTreeNode(TreePath parent, boolean expand) { TreeNode node = (TreeNode) parent.getLastPathComponent(); if (node.getChildCount() >= 0) { for (Enumeration e = node.children(); e.hasMoreElements();) { TreeNode n = (TreeNode) e.nextElement(); TreePath path = parent.pathByAddingChild(n); expandAllTreeNode(path, expand); } } if (expand) { this.expandPath(parent); } else { this.collapsePath(parent); } } }