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);
|
}
|
}
|
}
|