Mercurial > hg > release > thermostat-0.9
changeset 64:41210ed840cf
Keep root of the host/vm tree expanded whenever possible
author | Omair Majid <omajid@redhat.com> |
---|---|
date | Wed, 01 Feb 2012 15:17:25 -0500 |
parents | ce467a831e45 |
children | ad21cb32aad1 |
files | src/com/redhat/thermostat/client/ui/MainWindow.java |
diffstat | 1 files changed, 39 insertions(+), 1 deletions(-) [+] |
line wrap: on
line diff
--- a/src/com/redhat/thermostat/client/ui/MainWindow.java Tue Jan 31 17:19:30 2012 -0500 +++ b/src/com/redhat/thermostat/client/ui/MainWindow.java Wed Feb 01 15:17:25 2012 -0500 @@ -66,12 +66,15 @@ import javax.swing.ToolTipManager; import javax.swing.event.DocumentEvent; import javax.swing.event.DocumentListener; +import javax.swing.event.TreeModelEvent; +import javax.swing.event.TreeModelListener; import javax.swing.event.TreeSelectionEvent; import javax.swing.event.TreeSelectionListener; import javax.swing.text.BadLocationException; import javax.swing.text.Document; import javax.swing.tree.DefaultMutableTreeNode; import javax.swing.tree.DefaultTreeCellRenderer; +import javax.swing.tree.DefaultTreeModel; import javax.swing.tree.TreeModel; import javax.swing.tree.TreePath; import javax.swing.tree.TreeSelectionModel; @@ -108,6 +111,7 @@ searchField = new JTextField(); TreeModel model = facade.getHostVmTree(); agentVmTree = new JTree(model); + model.addTreeModelListener(new KeepRootExpandedListener(agentVmTree)); agentVmTree.getSelectionModel().setSelectionMode(TreeSelectionModel.SINGLE_TREE_SELECTION); agentVmTree.setCellRenderer(new AgentVmTreeCellRenderer()); ToolTipManager.sharedInstance().registerComponent(agentVmTree); @@ -115,7 +119,7 @@ setupMenus(); setupPanels(); - + this.setPreferredSize(new Dimension(800, 600)); agentVmTree.setSelectionPath(new TreePath(((DefaultMutableTreeNode) model.getRoot()).getPath())); @@ -291,6 +295,40 @@ } } + private static class KeepRootExpandedListener implements TreeModelListener { + + private JTree toModify; + + public KeepRootExpandedListener(JTree treeToModify) { + toModify = treeToModify; + } + + @Override + public void treeStructureChanged(TreeModelEvent e) { + ensureRootIsExpanded((DefaultTreeModel) e.getSource()); + } + + @Override + public void treeNodesRemoved(TreeModelEvent e) { + ensureRootIsExpanded((DefaultTreeModel) e.getSource()); + } + + @Override + public void treeNodesInserted(TreeModelEvent e) { + ensureRootIsExpanded((DefaultTreeModel) e.getSource()); + } + + @Override + public void treeNodesChanged(TreeModelEvent e) { + ensureRootIsExpanded((DefaultTreeModel) e.getSource()); + } + + private void ensureRootIsExpanded(DefaultTreeModel model) { + DefaultMutableTreeNode root = (DefaultMutableTreeNode) model.getRoot(); + toModify.expandPath(new TreePath(root.getPath())); + } + } + private static class AgentVmTreeCellRenderer extends DefaultTreeCellRenderer { private static final long serialVersionUID = 4444642511815252481L;