KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > net > sf > panoptes > view > swing > editors > MBeanInvocationDialog


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

5 package net.sf.panoptes.view.swing.editors;
6
7 import java.awt.Frame JavaDoc;
8 import java.awt.HeadlessException JavaDoc;
9 import java.awt.event.ActionEvent JavaDoc;
10 import java.awt.event.ActionListener JavaDoc;
11 import java.beans.PropertyEditorManager JavaDoc;
12 import java.nio.channels.ClosedByInterruptException JavaDoc;
13 import java.util.ArrayList JavaDoc;
14 import java.util.Iterator JavaDoc;
15
16 import javax.management.MBeanOperationInfo JavaDoc;
17 import javax.management.MBeanParameterInfo JavaDoc;
18 import javax.swing.JFrame JavaDoc;
19 import javax.swing.JOptionPane JavaDoc;
20 import javax.swing.UIManager JavaDoc;
21
22 import net.sf.panoptes.component.jmx.model.MBeanWrapper;
23 import net.sf.panoptes.controller.MainController;
24 import net.sf.panoptes.swing.DefaultFormBuilder;
25 import net.sf.panoptes.swing.dialogs.BannerDialog;
26 import net.sf.panoptes.swing.dialogs.DialogUtil;
27 import net.sf.panoptes.swing.panels.OKCancelButtonPanel;
28 import net.sf.panoptes.swing.propeditors.PropertyEditor;
29 import net.sf.panoptes.swing.propeditors.PropertyEditorRegistry;
30
31 /**
32  *
33  *
34  * @author Dag Liodden
35  * @version 0.1
36  */

37 public class MBeanInvocationDialog extends BannerDialog {
38
39     private ArrayList JavaDoc editors = new ArrayList JavaDoc();
40     private MBeanWrapper node;
41     private MBeanOperationInfo JavaDoc operation;
42     
43     public MBeanInvocationDialog(
44         Frame JavaDoc owner,
45         String JavaDoc title, final MBeanWrapper node, final MBeanOperationInfo JavaDoc operation)
46         throws HeadlessException JavaDoc {
47         super(owner, title, "MBean Operation Invocation", "Enter parameters for the invocation or drag attributes / MBeans onto the form", "icons/banners/new_wiz.gif", true, false);
48         
49         this.node = node;
50         this.operation = operation;
51         
52         OKCancelButtonPanel buttonPanel = new OKCancelButtonPanel();
53         buttonPanel.getOKButton().addActionListener(new ActionListener JavaDoc() {
54             public void actionPerformed(ActionEvent JavaDoc e) {
55                 doInvocation();
56             }
57         });
58         buttonPanel.getCancelButton().addActionListener(new ActionListener JavaDoc() {
59             public void actionPerformed(ActionEvent JavaDoc e) {
60                 setVisible(false);
61             }
62         });
63         setButtonPanel(buttonPanel.getPanel());
64         
65         
66         DefaultFormBuilder builder = new DefaultFormBuilder(DialogUtil.defaultOneColumnLayout());
67         
68         builder.appendSeparator("Parameters:");
69         MBeanParameterInfo JavaDoc[] sig = operation.getSignature();
70         for (int i = 0; i < sig.length; i++) {
71             Class JavaDoc[] ed = PropertyEditorRegistry.getEditor(sig[i].getType());
72             if (ed.length > 0) try {
73                 PropertyEditor editor = (PropertyEditor) ed[0].newInstance();
74                 editors.add(editor);
75                 builder.append(sig[i].getDescription() + ":", editor.getComponent());
76             } catch (Exception JavaDoc e) {
77                 e.printStackTrace();
78             }
79         }
80         
81         setMainPanel(builder.getPanel());
82         
83     }
84     
85     private void doInvocation() {
86         Object JavaDoc[] params = new Object JavaDoc[editors.size()];
87         String JavaDoc[] types = new String JavaDoc[editors.size()];
88         int j = 0;
89         for (Iterator JavaDoc i = editors.iterator(); i.hasNext(); ) {
90             params[j] = ((PropertyEditor) i.next()).getValue();
91             types[j] = operation.getSignature()[j].getType();
92             j++;
93                         
94         }
95         try {
96             Object JavaDoc result = node.getServer().getServerConnection().invoke(node.getObjectName(), operation.getName(), params, types);
97             setVisible(false);
98             String JavaDoc s;
99             if (result == null) s = null;
100             else s = result.toString();
101             JOptionPane.showMessageDialog(this, s, "Invocation result", JOptionPane.INFORMATION_MESSAGE);
102         } catch (Exception JavaDoc e) {
103             MainController.getInstance().displayError("Exception while invoking", e.getMessage(), e);
104         }
105         
106     }
107     
108     public static void main(String JavaDoc[] args) {
109         
110         System.out.println(PropertyEditorManager.findEditor(Integer JavaDoc.class));
111         
112         try {
113             UIManager.setLookAndFeel("com.jgoodies.plaf.plastic.PlasticXPLookAndFeel");
114         } catch (Exception JavaDoc e) {
115             e.printStackTrace();
116         }
117
118         MBeanInvocationDialog d =
119             new MBeanInvocationDialog(
120                 new JFrame JavaDoc(), "Invoke operation X", null, null);
121         d.pack();
122         d.show();
123         System.exit(0);
124     }
125
126 }
127
Popular Tags