1 5 package net.sf.panoptes.view.swing.editors; 6 7 import java.awt.Frame ; 8 import java.awt.HeadlessException ; 9 import java.awt.event.ActionEvent ; 10 import java.awt.event.ActionListener ; 11 import java.beans.PropertyEditorManager ; 12 import java.nio.channels.ClosedByInterruptException ; 13 import java.util.ArrayList ; 14 import java.util.Iterator ; 15 16 import javax.management.MBeanOperationInfo ; 17 import javax.management.MBeanParameterInfo ; 18 import javax.swing.JFrame ; 19 import javax.swing.JOptionPane ; 20 import javax.swing.UIManager ; 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 37 public class MBeanInvocationDialog extends BannerDialog { 38 39 private ArrayList editors = new ArrayList (); 40 private MBeanWrapper node; 41 private MBeanOperationInfo operation; 42 43 public MBeanInvocationDialog( 44 Frame owner, 45 String title, final MBeanWrapper node, final MBeanOperationInfo operation) 46 throws HeadlessException { 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 () { 54 public void actionPerformed(ActionEvent e) { 55 doInvocation(); 56 } 57 }); 58 buttonPanel.getCancelButton().addActionListener(new ActionListener () { 59 public void actionPerformed(ActionEvent 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 [] sig = operation.getSignature(); 70 for (int i = 0; i < sig.length; i++) { 71 Class [] 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 e) { 77 e.printStackTrace(); 78 } 79 } 80 81 setMainPanel(builder.getPanel()); 82 83 } 84 85 private void doInvocation() { 86 Object [] params = new Object [editors.size()]; 87 String [] types = new String [editors.size()]; 88 int j = 0; 89 for (Iterator 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 result = node.getServer().getServerConnection().invoke(node.getObjectName(), operation.getName(), params, types); 97 setVisible(false); 98 String 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 e) { 103 MainController.getInstance().displayError("Exception while invoking", e.getMessage(), e); 104 } 105 106 } 107 108 public static void main(String [] args) { 109 110 System.out.println(PropertyEditorManager.findEditor(Integer .class)); 111 112 try { 113 UIManager.setLookAndFeel("com.jgoodies.plaf.plastic.PlasticXPLookAndFeel"); 114 } catch (Exception e) { 115 e.printStackTrace(); 116 } 117 118 MBeanInvocationDialog d = 119 new MBeanInvocationDialog( 120 new JFrame (), "Invoke operation X", null, null); 121 d.pack(); 122 d.show(); 123 System.exit(0); 124 } 125 126 } 127 | Popular Tags |