1 19 20 package org.netbeans.modules.j2ee.ddloaders.web.multiview; 21 22 import org.netbeans.modules.j2ee.dd.api.web.Listener; 23 import org.netbeans.modules.j2ee.dd.api.web.WebApp; 24 import org.netbeans.modules.j2ee.ddloaders.web.DDDataObject; 25 import org.netbeans.modules.xml.multiview.ui.DefaultTablePanel; 26 import org.netbeans.modules.xml.multiview.ui.EditDialog; 27 import org.netbeans.modules.xml.multiview.ui.SimpleDialogPanel; 28 import org.openide.util.NbBundle; 29 30 35 public class ListenersTablePanel extends DefaultTablePanel { 36 private ListenerTableModel model; 37 private WebApp webApp; 38 private DDDataObject dObj; 39 40 41 public ListenersTablePanel(final DDDataObject dObj, final ListenerTableModel model) { 42 super(model); 43 this.model=model; 44 this.dObj=dObj; 45 removeButton.addActionListener(new java.awt.event.ActionListener () { 46 public void actionPerformed(java.awt.event.ActionEvent evt) { 47 dObj.modelUpdatedFromUI(); 48 dObj.setChangedFromUI(true); 49 int row = getTable().getSelectedRow(); 50 model.removeRow(row); 51 dObj.setChangedFromUI(false); 52 } 53 }); 54 editButton.addActionListener(new TableActionListener(false)); 55 addButton.addActionListener(new TableActionListener(true)); 56 } 57 58 void setModel(WebApp webApp, Listener[] listeners) { 59 model.setData(webApp,listeners); 60 this.webApp=webApp; 61 } 62 63 private class TableActionListener implements java.awt.event.ActionListener { 64 private boolean add; 65 TableActionListener(boolean add) { 66 this.add=add; 67 } 68 public void actionPerformed(java.awt.event.ActionEvent evt) { 69 final int row = (add?-1:getTable().getSelectedRow()); 70 String [] labels = new String []{ 71 NbBundle.getMessage(ListenersTablePanel.class,"LBL_listenerClass"), 72 NbBundle.getMessage(ListenersTablePanel.class,"LBL_description") 73 }; 74 char[] mnem = new char[] { 75 NbBundle.getMessage(ListenersTablePanel.class,"LBL_listenerClass_mnem").charAt(0), 76 NbBundle.getMessage(ListenersTablePanel.class,"LBL_description_mnem").charAt(0) 77 }; 78 SimpleDialogPanel.DialogDescriptor descriptor = new SimpleDialogPanel.DialogDescriptor(labels); 79 if (!add) { 80 String [] initValues = new String [] { 81 (String )model.getValueAt(row,0), 82 (String )model.getValueAt(row,1) 83 }; 84 descriptor.setInitValues(initValues); 85 } 86 descriptor.setMnemonics(mnem); 87 descriptor.setButtons(new boolean[]{true,false}); 88 descriptor.setTextField(new boolean[]{true,false}); 89 final SimpleDialogPanel dialogPanel = new SimpleDialogPanel(descriptor); 90 dialogPanel.getCustomizerButtons()[0].addActionListener(new java.awt.event.ActionListener () { 91 public void actionPerformed(java.awt.event.ActionEvent evt) { 92 try { 93 org.netbeans.api.project.SourceGroup[] groups = DDUtils.getJavaSourceGroups(dObj); 94 org.openide.filesystems.FileObject fo = BrowseFolders.showDialog(groups); 95 if (fo!=null) { 96 String className = DDUtils.getResourcePath(groups,fo); 97 dialogPanel.getTextComponents()[0].setText(className); 98 } 99 } catch (java.io.IOException ex) {} 100 } 101 }); 102 EditDialog dialog = new EditDialog(dialogPanel,NbBundle.getMessage(ListenersTablePanel.class,"TTL_Listener"),add) { 103 protected String validate() { 104 String [] values = dialogPanel.getValues(); 105 String name = values[0]; 106 if (name.length()==0) { 107 return NbBundle.getMessage(ListenersTablePanel.class,"TXT_EmptyListenerClass"); 108 } else { 109 Listener[] listeners = webApp.getListener(); 110 boolean exists=false; 111 for (int i=0;i<listeners.length;i++) { 112 if (row!=i && name.equals(listeners[i].getListenerClass())) { 113 exists=true; 114 break; 115 } 116 } 117 if (exists) { 118 return NbBundle.getMessage(ListenersTablePanel.class,"TXT_ListenerClassExists",name); 119 } 120 } 121 return null; 122 } 123 }; 124 if (add) dialog.setValid(false); javax.swing.event.DocumentListener docListener = new EditDialog.DocListener(dialog); 126 dialogPanel.getTextComponents()[0].getDocument().addDocumentListener(docListener); 127 128 java.awt.Dialog d = org.openide.DialogDisplayer.getDefault().createDialog(dialog); 129 d.setVisible(true); 130 dialogPanel.getTextComponents()[0].getDocument().removeDocumentListener(docListener); 131 132 if (dialog.getValue().equals(EditDialog.OK_OPTION)) { 133 dObj.modelUpdatedFromUI(); 134 dObj.setChangedFromUI(true); 135 String [] values = dialogPanel.getValues(); 136 String name = values[0]; 137 String description = values[1]; 138 if (add) model.addRow(new String []{name,description}); 139 else model.editRow(row,new String []{name,description}); 140 dObj.setChangedFromUI(false); 141 } 142 } 143 } 144 } 145 | Popular Tags |