KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > sape > carbon > services > console > MBeanFrame


1 package org.sape.carbon.services.console;
2
3 import java.awt.Component JavaDoc;
4 import java.util.Iterator JavaDoc;
5 import java.util.TreeMap JavaDoc;
6
7 import javax.management.MBeanAttributeInfo JavaDoc;
8 import javax.management.MBeanInfo JavaDoc;
9 import javax.management.MBeanNotificationInfo JavaDoc;
10 import javax.management.MBeanOperationInfo JavaDoc;
11 import javax.management.MBeanServer JavaDoc;
12 import javax.management.ObjectName JavaDoc;
13 import javax.swing.BoxLayout JavaDoc;
14 import javax.swing.JInternalFrame JavaDoc;
15 import javax.swing.JPanel JavaDoc;
16 import javax.swing.JScrollPane JavaDoc;
17
18 import org.sape.carbon.core.exception.ExceptionUtility;
19
20
21 /**
22  * This frame represents a single Managed bean. It holds tabs of panes related
23  * to the object attributes, operations and notifications.
24  *
25  * Copyright 2002 Sapient
26  * @since carbon 1.0
27  * @author Greg Hinkle, January 2002
28  * @version $Revision: 1.4 $($Author: ghinkl $ / $Date: 2003/04/04 01:11:49 $)
29  */

30 public class MBeanFrame extends JInternalFrame JavaDoc {
31    
32     MBeanServer JavaDoc server;
33     ObjectName JavaDoc objectName;
34     MBeanInfo JavaDoc info;
35     
36     /** Creates new form MBeanFrame */
37     public MBeanFrame(MBeanServer JavaDoc server, ObjectName JavaDoc objectName) {
38          
39          try {
40             this.server = server;
41             this.objectName = objectName;
42             this.info = server.getMBeanInfo(this.objectName);
43         } catch (Exception JavaDoc e) {
44             e.printStackTrace();
45         }
46         
47         this.setTitle(this.objectName.getCanonicalName());
48         initComponents();
49         this.serverLabelValue.setText("?"); //(this.connector != null)?this.connector.getRemoteHostName():"unknown");
50
this.nameLabelValue.setText(this.objectName.toString());
51         this.descriptionValue.setText(this.info.getDescription());
52         
53         
54         try {
55             
56             Class JavaDoc componentClass;
57             try {
58                 // This works for components and dynamic proxies that don't
59
// have very good class names (i.e. "Proxy$23")
60
componentClass = (Class JavaDoc) server.invoke(this.objectName,"getClass",new Object JavaDoc[] {}, new String JavaDoc[] {});
61             } catch (Exception JavaDoc e) {
62                 // This works for any normal MBean
63
componentClass = Class.forName(this.info.getClassName(),true,this.getClass().getClassLoader());
64             }
65             
66             /*
67             Class[] classes = componentClass.getInterfaces();
68             for (int i=0;i< 1; classes.length;i++) {
69                 addProfileTab(classes[i]);
70             }
71             */

72             addProfileTab("Managed Bean");
73         } catch (Exception JavaDoc e) {
74             SingletonExceptionViewer.getInstance().addException(e);
75         }
76     }
77
78     
79     private void addProfileTab(String JavaDoc name) {
80         MBeanProfilePanel profilePane = new MBeanProfilePanel();
81         
82         
83         Component JavaDoc attrPane = addProfileAttributes();
84         profilePane.addTab(attrPane, "Attributes");
85         
86         
87         JScrollPane JavaDoc operPane = addProfileOperations();
88         profilePane.addTab(operPane, "Operations");
89         
90         JScrollPane JavaDoc notifPane = addNotifications();
91         profilePane.addTab(notifPane, "Notification");
92         
93         
94         this.profileTabPane.add(profilePane,name); //shortClassName(profileClass));
95
}
96     
97     
98     private JScrollPane JavaDoc addNotifications() {
99         JScrollPane JavaDoc notifPanel = newPanel();
100         MBeanNotificationInfo JavaDoc[] notifs = this.info.getNotifications();
101         for (int i = 0; i < notifs.length; i++) {
102             try {
103                 NotificationPanel notificationPanel =
104                     new NotificationPanel(
105                         this.objectName,
106                         notifs[i],
107                         this.server);
108                 
109                 ((JPanel JavaDoc)notifPanel.getViewport().getView()).add(notificationPanel);
110             } catch (Exception JavaDoc e) {
111                 System.out.println(ExceptionUtility.printStackTracesToString(e));
112             }
113         }
114         return notifPanel;
115     }
116     
117     
118     private AttributesPanel addProfileAttributes() {
119         // BeanInfo beanInfo = Introspector.getBeanInfo(profileClass);
120

121         AttributesPanel attrPane = new AttributesPanel(this.objectName,this.server);
122         MBeanAttributeInfo JavaDoc[] attrs = this.info.getAttributes();
123         TreeMap JavaDoc map = new TreeMap JavaDoc();
124         for (int i = 0; i < attrs.length; i++) {
125             map.put(attrs[i].getName(), attrs[i]);
126         }
127         
128         Iterator JavaDoc attributes = map.values().iterator();
129         while (attributes.hasNext()) {
130             MBeanAttributeInfo JavaDoc attributeInfo =
131                 (MBeanAttributeInfo JavaDoc) attributes.next();
132             try {
133                 
134                 Object JavaDoc value = this.server.getAttribute(this.objectName, attributeInfo.getName());
135                 AttributePanel attrPanel = new AttributePanel(
136                     this.objectName, attributeInfo, this.server);
137
138
139                 attrPane.addRow(attrPanel);
140             } catch (Exception JavaDoc e) {
141                 System.out.println(ExceptionUtility.printStackTracesToString(e));
142             }
143         }
144         return attrPane;
145     }
146     
147     private JScrollPane JavaDoc addProfileOperations() {
148         JScrollPane JavaDoc operPane = newPanel();
149         MBeanOperationInfo JavaDoc[] opers = this.info.getOperations();
150         for (int i = 0; i < opers.length; i++) {
151             try {
152                 //Object value = this.server.getAttribute(this.objectName,attrs[i].getName());
153
OperationPanel operationPanel =
154                     new OperationPanel(
155                         this.objectName,
156                         opers[i],
157                         this.server);
158                 
159                 ((JPanel JavaDoc)operPane.getViewport().getView()).add(operationPanel);
160             } catch (Exception JavaDoc e) {
161                 System.out.println(ExceptionUtility.printStackTracesToString(e));
162             }
163         }
164         return operPane;
165     }
166     
167     private static JScrollPane JavaDoc newPanel() {
168         JPanel JavaDoc panel = new JPanel JavaDoc();
169         BoxLayout JavaDoc layout = new BoxLayout JavaDoc(panel,BoxLayout.Y_AXIS);
170         panel.setLayout(layout);
171         JScrollPane JavaDoc scrollPane = new JScrollPane JavaDoc();
172         scrollPane.setViewportView(panel);
173         //panel.add(new JScrollPane(panel));
174
return scrollPane;
175     }
176     
177     private static String JavaDoc shortClassName(Class JavaDoc theClass) {
178         String JavaDoc className = theClass.getName();
179         return className.substring(className.lastIndexOf('.') + 1);
180     }
181     
182     /** This method is called from within the constructor to
183      * initialize the form.
184      * WARNING: Do NOT modify this code. The content of this method is
185      * always regenerated by the Form Editor.
186      */

187     private void initComponents() {//GEN-BEGIN:initComponents
188
java.awt.GridBagConstraints JavaDoc gridBagConstraints;
189
190         headerPanel = new javax.swing.JPanel JavaDoc();
191         nameLabel = new javax.swing.JLabel JavaDoc();
192         nameLabelValue = new javax.swing.JLabel JavaDoc();
193         descriptionLabel = new javax.swing.JLabel JavaDoc();
194         descriptionValue = new javax.swing.JTextArea JavaDoc();
195         serverLabel = new javax.swing.JLabel JavaDoc();
196         serverLabelValue = new javax.swing.JLabel JavaDoc();
197         statusBarPanel = new javax.swing.JPanel JavaDoc();
198         jLabel1 = new javax.swing.JLabel JavaDoc();
199         tabAndButtonPanel = new javax.swing.JPanel JavaDoc();
200         profileTabPane = new javax.swing.JTabbedPane JavaDoc();
201
202         setBackground(new java.awt.Color JavaDoc(255, 255, 255));
203         setClosable(true);
204         setIconifiable(true);
205         setMaximizable(true);
206         setResizable(true);
207         setDoubleBuffered(true);
208         headerPanel.setLayout(new java.awt.GridBagLayout JavaDoc());
209
210         headerPanel.setBackground(new java.awt.Color JavaDoc(204, 204, 204));
211         headerPanel.setBorder(new javax.swing.border.BevelBorder JavaDoc(javax.swing.border.BevelBorder.RAISED));
212         nameLabel.setText("Name");
213         gridBagConstraints = new java.awt.GridBagConstraints JavaDoc();
214         gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST;
215         gridBagConstraints.insets = new java.awt.Insets JavaDoc(3, 3, 3, 3);
216         headerPanel.add(nameLabel, gridBagConstraints);
217
218         nameLabelValue.setFont(new java.awt.Font JavaDoc("Dialog", 0, 12));
219         nameLabelValue.setText("component name");
220         gridBagConstraints = new java.awt.GridBagConstraints JavaDoc();
221         gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
222         gridBagConstraints.insets = new java.awt.Insets JavaDoc(3, 3, 3, 3);
223         headerPanel.add(nameLabelValue, gridBagConstraints);
224
225         descriptionLabel.setText("Description");
226         gridBagConstraints = new java.awt.GridBagConstraints JavaDoc();
227         gridBagConstraints.gridx = 0;
228         gridBagConstraints.gridy = 2;
229         gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST;
230         gridBagConstraints.insets = new java.awt.Insets JavaDoc(3, 3, 3, 3);
231         headerPanel.add(descriptionLabel, gridBagConstraints);
232
233         descriptionValue.setBackground(new java.awt.Color JavaDoc(204, 204, 204));
234         descriptionValue.setEditable(false);
235         descriptionValue.setLineWrap(true);
236         descriptionValue.setText("The description value...");
237         descriptionValue.setWrapStyleWord(true);
238         descriptionValue.setOpaque(false);
239         gridBagConstraints = new java.awt.GridBagConstraints JavaDoc();
240         gridBagConstraints.gridx = 1;
241         gridBagConstraints.gridy = 2;
242         gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER;
243         gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
244         gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
245         gridBagConstraints.weightx = 1.0;
246         gridBagConstraints.insets = new java.awt.Insets JavaDoc(3, 3, 3, 3);
247         headerPanel.add(descriptionValue, gridBagConstraints);
248
249         serverLabel.setText("Server");
250         gridBagConstraints = new java.awt.GridBagConstraints JavaDoc();
251         gridBagConstraints.gridx = 0;
252         gridBagConstraints.gridy = 1;
253         gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST;
254         gridBagConstraints.insets = new java.awt.Insets JavaDoc(3, 3, 3, 3);
255         headerPanel.add(serverLabel, gridBagConstraints);
256
257         serverLabelValue.setFont(new java.awt.Font JavaDoc("Dialog", 0, 12));
258         serverLabelValue.setText("server name");
259         gridBagConstraints = new java.awt.GridBagConstraints JavaDoc();
260         gridBagConstraints.gridx = 1;
261         gridBagConstraints.gridy = 1;
262         gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
263         gridBagConstraints.insets = new java.awt.Insets JavaDoc(3, 3, 3, 3);
264         headerPanel.add(serverLabelValue, gridBagConstraints);
265
266         getContentPane().add(headerPanel, java.awt.BorderLayout.NORTH);
267
268         statusBarPanel.setLayout(new java.awt.BorderLayout JavaDoc());
269
270         statusBarPanel.setBorder(new javax.swing.border.CompoundBorder JavaDoc(new javax.swing.border.SoftBevelBorder JavaDoc(javax.swing.border.BevelBorder.RAISED), new javax.swing.border.SoftBevelBorder JavaDoc(javax.swing.border.BevelBorder.LOWERED)));
271         jLabel1.setFont(new java.awt.Font JavaDoc("Dialog", 0, 12));
272         jLabel1.setText("Status bar...");
273         jLabel1.setToolTipText("");
274         statusBarPanel.add(jLabel1, java.awt.BorderLayout.CENTER);
275
276         getContentPane().add(statusBarPanel, java.awt.BorderLayout.SOUTH);
277
278         tabAndButtonPanel.setLayout(new java.awt.BorderLayout JavaDoc());
279
280         profileTabPane.setBackground(new java.awt.Color JavaDoc(255, 255, 255));
281         tabAndButtonPanel.add(profileTabPane, java.awt.BorderLayout.CENTER);
282
283         getContentPane().add(tabAndButtonPanel, java.awt.BorderLayout.CENTER);
284
285         setBounds(0, 0, 587, 427);
286     }//GEN-END:initComponents
287

288     
289     // Variables declaration - do not modify//GEN-BEGIN:variables
290
private javax.swing.JLabel JavaDoc jLabel1;
291     private javax.swing.JLabel JavaDoc serverLabel;
292     private javax.swing.JLabel JavaDoc nameLabel;
293     private javax.swing.JPanel JavaDoc headerPanel;
294     private javax.swing.JPanel JavaDoc tabAndButtonPanel;
295     private javax.swing.JLabel JavaDoc descriptionLabel;
296     private javax.swing.JLabel JavaDoc serverLabelValue;
297     private javax.swing.JLabel JavaDoc nameLabelValue;
298     private javax.swing.JTabbedPane JavaDoc profileTabPane;
299     private javax.swing.JTextArea JavaDoc descriptionValue;
300     private javax.swing.JPanel JavaDoc statusBarPanel;
301     // End of variables declaration//GEN-END:variables
302

303 }
304
Popular Tags