1 19 20 package org.netbeans.modules.j2ee.ddloaders.web.multiview; 21 22 import org.netbeans.modules.j2ee.dd.api.web.FilterMapping; 23 import org.netbeans.modules.j2ee.dd.api.web.WebApp; 24 import org.netbeans.modules.j2ee.dd.api.web.Filter; 25 import org.netbeans.modules.j2ee.ddloaders.web.DDDataObject; 26 import org.netbeans.modules.xml.multiview.ui.DefaultTablePanel; 27 import org.netbeans.modules.xml.multiview.ui.EditDialog; 28 import org.netbeans.modules.xml.multiview.ui.SimpleDialogPanel; 29 import org.netbeans.modules.xml.multiview.ui.SectionView; 30 import org.netbeans.modules.xml.multiview.ui.SectionPanel; 31 import org.openide.util.NbBundle; 32 import org.openide.DialogDescriptor; 33 34 39 public class FilterMappingsTablePanel extends DefaultTablePanel { 40 private FilterMappingsTableModel model; 41 private WebApp webApp; 42 private DDDataObject dObj; 43 private SectionView view; 44 45 46 public FilterMappingsTablePanel(final SectionView view, final DDDataObject dObj, final FilterMappingsTableModel model) { 47 super(model); 48 this.model=model; 49 this.dObj=dObj; 50 this.view=view; 51 webApp = dObj.getWebApp(); 52 removeButton.addActionListener(new java.awt.event.ActionListener () { 53 public void actionPerformed(java.awt.event.ActionEvent evt) { 54 55 int row = getTable().getSelectedRow(); 56 String filterName = (String )model.getValueAt(row,0); 57 dObj.modelUpdatedFromUI(); 58 dObj.setChangedFromUI(true); 59 model.removeRow(row); 60 dObj.setChangedFromUI(false); 61 Filter filter = (Filter)webApp.findBeanByName("Filter","FilterName",filterName); if (filter!=null) { 64 SectionPanel panel = view.findSectionPanel(filter); 65 panel.setTitle(((FiltersMultiViewElement.FiltersView)view).getFilterTitle(filter)); 66 } 67 } 68 }); 69 addButton.addActionListener(new TableActionListener(true)); 70 editButton.addActionListener(new TableActionListener(false)); 71 } 72 73 void setModel(WebApp webApp, FilterMapping[] mappings) { 74 model.setData(webApp,mappings); 75 this.webApp=webApp; 76 } 77 78 private class TableActionListener implements java.awt.event.ActionListener { 79 private boolean add; 80 TableActionListener(boolean add) { 81 this.add=add; 82 } 83 84 public void actionPerformed(java.awt.event.ActionEvent evt) { 85 String [] allFilters = DDUtils.getFilterNames(webApp); 86 String [] allServlets = DDUtils.getServletNames(webApp); 87 int row = (add?-1:getTable().getSelectedRow()); 88 FilterMapping mapping = null; 89 if (add) { 90 try { 91 mapping = (FilterMapping)webApp.createBean("FilterMapping"); } catch (ClassNotFoundException ex) {} 93 } else { 94 mapping = webApp.getFilterMapping(row); 95 } 96 final FilterMappingPanel dialogPanel = new FilterMappingPanel(mapping,allFilters,allServlets); 97 final EditDialog dialog = new EditDialog(dialogPanel, 98 NbBundle.getMessage(FilterMappingsTablePanel.class,"TTL_filterMapping"), 99 add) { 100 protected String validate() { 101 if (!dialogPanel.hasFilterNames()) 102 return NbBundle.getMessage(FilterMappingsTablePanel.class,"LBL_no_filters"); 103 String urlPattern = dialogPanel.getUrlPattern(); 104 if (dialogPanel.getUrlRB().isSelected() && urlPattern.length()==0) 105 return NbBundle.getMessage(FilterMappingsTablePanel.class,"TXT_missingURL"); 106 return null; 107 } 108 }; 109 if (allFilters==null || allFilters.length==0 ) dialog.checkValues(); 111 else if (add) dialog.setValid(false); javax.swing.event.DocumentListener docListener = new EditDialog.DocListener(dialog); 114 dialogPanel.getUrlTF().getDocument().addDocumentListener(docListener); 115 dialogPanel.getUrlRB().addActionListener(new java.awt.event.ActionListener () { 116 public void actionPerformed(java.awt.event.ActionEvent evt) { 117 dialog.checkValues(); 118 } 119 }); 120 dialogPanel.getServletNameRB().addActionListener(new java.awt.event.ActionListener () { 121 public void actionPerformed(java.awt.event.ActionEvent evt) { 122 dialog.checkValues(); 123 } 124 }); 125 java.awt.Dialog d = org.openide.DialogDisplayer.getDefault().createDialog(dialog); 126 d.setVisible(true); 127 dialogPanel.getUrlTF().getDocument().removeDocumentListener(docListener); 128 if (dialog.getValue().equals(EditDialog.OK_OPTION)) { 129 dObj.modelUpdatedFromUI(); 130 dObj.setChangedFromUI(true); 131 String filterName = dialogPanel.getFilterName(); 132 String urlPattern = dialogPanel.getUrlPattern(); 133 String servletName = dialogPanel.getServletName(); 134 String [] dispatcher = dialogPanel.getDispatcherTypes(); 135 if (add) { 136 model.addRow(new Object []{filterName,urlPattern,servletName,dispatcher}); 137 } else { 138 String oldName = (String )model.getValueAt(row,0); 139 model.editRow(row, new Object []{filterName,urlPattern,servletName,dispatcher}); 140 if (!filterName.equals(oldName)) { 142 Filter filter = (Filter)webApp.findBeanByName("Filter","FilterName",oldName); if (filter!=null) { 144 SectionPanel panel = view.findSectionPanel(filter); 145 panel.setTitle(((FiltersMultiViewElement.FiltersView)view).getFilterTitle(filter)); 146 } 147 } 148 } 149 dObj.setChangedFromUI(false); 150 Filter filter = (Filter)webApp.findBeanByName("Filter","FilterName",filterName); if (filter!=null) { 153 SectionPanel panel = view.findSectionPanel(filter); 154 panel.setTitle(((FiltersMultiViewElement.FiltersView)view).getFilterTitle(filter)); 155 } 156 } 157 } 158 } 159 } 160 | Popular Tags |