package org.trade.ui.base; import java.awt.Font; import javax.swing.JTree; import javax.swing.tree.DefaultMutableTreeNode; import javax.swing.tree.DefaultTreeModel; import javax.swing.tree.TreeModel; import javax.swing.tree.TreeNode; import javax.swing.tree.TreePath; import javax.swing.tree.TreeSelectionModel; /** */ public class Tree extends JTree { /** * */ private static final long serialVersionUID = 7628661248589428064L; /** * Constructor for Tree. * * @param model * DefaultTreeModel */ public Tree(DefaultTreeModel model) { super(model); this.getSelectionModel().setSelectionMode(TreeSelectionModel.SINGLE_TREE_SELECTION); this.setRowHeight(18); this.setFont(new Font("dialog", Font.PLAIN, 12)); this.setExpandsSelectedPaths(true); } /** * Method findTreePathByObject. * * @param tofind * Object * @return TreePath */ public TreePath findTreePathByObject(Object tofind) { return findTreePathByObject(this.getModel(), (TreeNode) this.getModel().getRoot(), this.getPathForRow(0), tofind); } /** * Method findTreePathByObject. * * @param model * TreeModel * @param base * TreeNode * @param parent * TreePath * @param tofind * Object * @return TreePath */ private TreePath findTreePathByObject(TreeModel model, TreeNode base, TreePath parent, Object tofind) { int childCount = model.getChildCount(base); for (int i = 0; i < childCount; i++) { DefaultMutableTreeNode child = (DefaultMutableTreeNode) model.getChild(base, i); if (child.getUserObject().equals(tofind)) { return parent.pathByAddingChild(child); } if (!model.isLeaf(child)) { TreePath foundTreePath = findTreePathByObject(model, child, parent.pathByAddingChild(child), tofind); if (null != foundTreePath) return foundTreePath; } } return null; } }