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.awt.event.FocusEvent ; 12 import java.awt.event.FocusListener ; 13 import java.util.Iterator ; 14 15 import javax.management.MalformedObjectNameException ; 16 import javax.management.ObjectName ; 17 import javax.swing.JButton ; 18 import javax.swing.JCheckBox ; 19 import javax.swing.JFrame ; 20 import javax.swing.JPanel ; 21 import javax.swing.JScrollPane ; 22 import javax.swing.JTable ; 23 import javax.swing.JTextField ; 24 import javax.swing.UIManager ; 25 import javax.swing.table.DefaultTableModel ; 26 27 import net.sf.panoptes.component.jmx.model.MBeanQuery; 28 import net.sf.panoptes.swing.DefaultFormBuilder; 29 import net.sf.panoptes.swing.dialogs.BannerDialog; 30 import net.sf.panoptes.swing.panels.OKCancelButtonPanel; 31 import net.sf.panoptes.view.swing.tables.DefaultNodeTableCellRenderer; 32 33 import com.jgoodies.forms.layout.FormLayout; 34 35 41 public class QueryEditor extends BannerDialog { 42 43 private JTextField name = new JTextField (); 44 private JTextField description = new JTextField (); 45 private JTextField objectName = new JTextField ("*:*"); 46 private JTextField queryExp = new JTextField (); 47 private JCheckBox aliasCheck = new JCheckBox (); 48 private JTextField alias = new JTextField (); 49 private JTable testTable; 50 private DefaultTableModel testTableModel; 51 private MBeanQuery query; 52 53 public QueryEditor(Frame owner, MBeanQuery queryNode) throws HeadlessException { 54 super( 55 owner, 56 "Create MBean Query", 57 "Create", 58 "Create a query for retrieving Management Beans", 59 "icons/banners/query_wiz.gif", 60 false, 61 true); 62 63 this.query = queryNode; 64 if (queryNode != null) { 65 name.setText(queryNode.getConfigDescriptor().getName()); 66 description.setText(queryNode.getConfigDescriptor().getDescription()); 67 objectName.setText(queryNode.getObjectName().toString()); 68 } 69 70 createTable(); 71 setMainPanel(createMainPanel()); 72 setButtonPanel(new OKCancelButtonPanel().getPanel()); 73 } 74 75 private void createTable() { 76 testTableModel = new DefaultTableModel (); 77 testTableModel.addColumn("ObjectName"); 78 testTable = new JTable (testTableModel); 79 testTable.getColumnModel().getColumn(0).setCellRenderer(new DefaultNodeTableCellRenderer()); 80 } 81 82 private JPanel createMainPanel() { 83 FormLayout layout = new FormLayout("right:max(40dlu;pref), 3dlu, 170dlu:grow, 7dlu", ""); 84 DefaultFormBuilder builder = new DefaultFormBuilder(layout); 85 builder.setDefaultDialogBorder(); 86 87 builder.append("Name:", name); 88 builder.append("Description:", description); 89 builder.append("ObjectName:", objectName); 90 objectName.addFocusListener(new FocusListener () { 91 public void focusGained(FocusEvent e) { 92 setFeedBack(""); 93 } 94 95 public void focusLost(FocusEvent e) { 96 try { 97 new ObjectName (objectName.getText()); 98 setFeedBack(""); 99 } catch (MalformedObjectNameException ex) { 100 setFeedBack("Invalid query: " + ex.getMessage()); 101 } 102 } 103 }); 104 105 builder.append("QueryExp:", queryExp); 106 queryExp.setEnabled(false); 107 builder.append("Give this query an alias?", aliasCheck); 108 builder.append("Alias name:", alias); 109 110 JButton btnTest = new JButton ("Test"); 111 btnTest.addActionListener(new ActionListener () { 112 public void actionPerformed(ActionEvent e) { 113 testQuery(); 114 } 115 }); 116 builder.append(btnTest); 117 builder.nextLine(); 118 builder.appendSeparator("Test results:"); 119 builder.appendRow("90dlu:grow"); 120 builder.append(new JScrollPane (testTable), 3); 121 return builder.getPanel(); 122 } 123 124 private void testQuery() { 125 try { 126 query.setQuery(new ObjectName (objectName.getText()), null); 127 } catch (MalformedObjectNameException e) { 128 setFeedBack("Cannot test since objectname is invalid"); 129 return; 130 } 131 while (testTableModel.getColumnCount() > 1) testTableModel.removeRow(0); 132 query.refresh(); 133 for (Iterator i = query.getChildren().iterator(); i.hasNext();) { 134 testTableModel.addRow(new Object [] { i.next() }); 135 } 136 testTable.doLayout(); 137 } 138 139 public static void main(String [] args) { 140 try { 141 UIManager.setLookAndFeel("com.jgoodies.plaf.plastic.PlasticXPLookAndFeel"); 142 } catch (Exception e) { 143 e.printStackTrace(); 144 } 145 146 QueryEditor e = new QueryEditor(new JFrame ("Test"), null); 147 e.pack(); 148 e.show(); 149 } 150 151 } 152 | Popular Tags |