KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > net > sf > panoptes > view > swing > MBeanTreeFrame


1 /*
2  * Created on Sep 2, 2003
3  *
4  */

5 package net.sf.panoptes.view.swing;
6
7 import java.awt.BorderLayout JavaDoc;
8 import java.awt.Component JavaDoc;
9 import java.awt.Event JavaDoc;
10 import java.awt.event.ActionEvent JavaDoc;
11 import java.awt.event.MouseAdapter JavaDoc;
12 import java.awt.event.MouseEvent JavaDoc;
13
14 import javax.swing.Action JavaDoc;
15 import javax.swing.BorderFactory JavaDoc;
16 import javax.swing.JInternalFrame JavaDoc;
17 import javax.swing.JLabel JavaDoc;
18 import javax.swing.JPanel JavaDoc;
19 import javax.swing.JScrollPane JavaDoc;
20 import javax.swing.JToolBar JavaDoc;
21 import javax.swing.JTree JavaDoc;
22 import javax.swing.border.BevelBorder JavaDoc;
23 import javax.swing.event.TreeModelListener JavaDoc;
24 import javax.swing.event.TreeSelectionEvent JavaDoc;
25 import javax.swing.event.TreeSelectionListener JavaDoc;
26 import javax.swing.tree.DefaultTreeCellRenderer JavaDoc;
27 import javax.swing.tree.TreeModel JavaDoc;
28 import javax.swing.tree.TreePath JavaDoc;
29
30 import net.sf.panoptes.controller.MainController;
31 import net.sf.panoptes.controller.actions.BaseAction;
32 import net.sf.panoptes.controller.actions.ExternalizeFrameAction;
33 import net.sf.panoptes.model.node.Node;
34
35 /**
36  * @author Dag Liodden
37  * @version 0.1
38  */

39 public class MBeanTreeFrame extends JInternalFrame JavaDoc {
40
41     private JTree JavaDoc mbeanTree;
42     private MainWindowSwing parent;
43     private JPanel JavaDoc statusBar;
44     private JLabel JavaDoc statusLabel;
45     private Node selectedNode = null;
46     private JToolBar JavaDoc toolBar;
47     private TreeModel JavaDoc treeModel;
48     private Node rootNode;
49     private final MBeanTreeFrame instance;
50     private Action JavaDoc exploreAction;
51
52     public MBeanTreeFrame(Node rootNode, final MainWindowSwing parent) {
53         super("", true, true, true, true);
54         instance = this;
55         setTitle("Exploring " + rootNode.getConfigDescriptor().getName());
56         this.parent = parent;
57         this.rootNode = rootNode;
58         JPanel JavaDoc contentPane = new JPanel JavaDoc(new BorderLayout JavaDoc());
59
60         createActions();
61         createToolBar();
62         createTree();
63
64         contentPane.add(toolBar, BorderLayout.NORTH);
65         contentPane.add(new JScrollPane JavaDoc(mbeanTree), BorderLayout.CENTER);
66
67         statusBar = new JPanel JavaDoc(new BorderLayout JavaDoc());
68         statusBar.setBorder(BorderFactory.createBevelBorder(BevelBorder.LOWERED));
69         statusLabel = new JLabel JavaDoc(rootNode.getClass().getName(), JLabel.LEFT);
70         statusBar.add(statusLabel, BorderLayout.WEST);
71
72         contentPane.add(statusBar, BorderLayout.SOUTH);
73
74         this.setContentPane(contentPane);
75         mbeanTree.setSelectionPath(new TreePath JavaDoc(rootNode));
76     }
77
78     private void createToolBar() {
79         toolBar = new JToolBar JavaDoc();
80         toolBar.add(exploreAction);
81         toolBar.add(new ExternalizeFrameAction(this));
82     }
83
84     private void createTree() {
85         mbeanTree = new JTree JavaDoc();
86         treeModel = new MBeanTreeModel(rootNode);
87         mbeanTree.setModel(treeModel);
88         mbeanTree.setCellRenderer(new DefaultTreeCellRenderer JavaDoc() {
89
90             public Component JavaDoc getTreeCellRendererComponent(
91                 JTree JavaDoc tree,
92                 Object JavaDoc value,
93                 boolean sel,
94                 boolean expanded,
95                 boolean leaf,
96                 int row,
97                 boolean hasFocus) {
98
99                 Component JavaDoc c =
100                     super.getTreeCellRendererComponent(
101                         tree,
102                         value,
103                         sel,
104                         expanded,
105                         leaf,
106                         row,
107                         hasFocus);
108                 Node n = (Node) value;
109                 setText(n.getConfigDescriptor().getName());
110                 String JavaDoc iconName = n.getConfigDescriptor().getIconName();
111                 setIcon(ImageCache.get(iconName));
112                 return c;
113             }
114         });
115
116         mbeanTree.addMouseListener(new MouseAdapter JavaDoc() {
117             public void mousePressed(MouseEvent JavaDoc e) {
118                 maybeShowPopup(e);
119             }
120
121             public void mouseReleased(MouseEvent JavaDoc e) {
122                 maybeShowPopup(e);
123             }
124             private void maybeShowPopup(MouseEvent JavaDoc e) {
125                 //if (e.isPopupTrigger()) {
126
if (e.getModifiers() == Event.META_MASK) {
127                     TreePath JavaDoc selPath = mbeanTree.getPathForLocation(e.getX(), e.getY());
128                     Node n = (Node) selPath.getLastPathComponent();
129
130                     if (n == null)
131                         return;
132                     parent.constructPopupMenu(n, instance).show(mbeanTree, e.getX(), e.getY());
133                 }
134             }
135         });
136
137         mbeanTree.addTreeSelectionListener(new TreeSelectionListener JavaDoc() {
138             public void valueChanged(TreeSelectionEvent JavaDoc e) {
139                 TreePath JavaDoc path = e.getNewLeadSelectionPath();
140                 if (path == null)
141                     return;
142                 Object JavaDoc o = path.getLastPathComponent();
143                 if (o instanceof Node) {
144                     selectedNode = (Node) o;
145                     statusLabel.setText(
146                         selectedNode.getConfigDescriptor().getDescription()
147                             + " - ("
148                             + selectedNode.getClass().getName()
149                             + ")");
150                 }
151
152             }
153         });
154     }
155
156     private void createActions() {
157         ClassLoader JavaDoc cl = MBeanTreeFrame.class.getClassLoader();
158         /**
159          * Save
160          */

161         exploreAction = new BaseAction("Explore from here", "icons/explore.gif") {
162             public void actionPerformed(ActionEvent JavaDoc e) {
163                 MBeanTreeFrame f = new MBeanTreeFrame(selectedNode, parent);
164                 f.pack();
165                 MainController.getInstance().getDesktop().add(f);
166                 f.setVisible(true);
167             }
168         };
169
170     }
171 }
172
Popular Tags