1 19 24 25 package org.netbeans.modules.j2ee.sun.share.configbean.customizers.ejbmodule; 26 27 import java.util.ArrayList ; 28 import java.util.Iterator ; 29 import java.util.List ; 30 import java.util.ResourceBundle ; 31 32 import java.awt.GridBagConstraints ; 33 import java.awt.Insets ; 34 import java.beans.PropertyVetoException ; 35 import javax.swing.ComboBoxModel ; 36 import javax.swing.DefaultComboBoxModel ; 37 import javax.swing.event.ListDataEvent ; 38 import javax.swing.event.ListDataListener ; 39 import javax.swing.event.TableModelEvent ; 40 import javax.swing.event.TableModelListener ; 41 42 import org.netbeans.modules.j2ee.sun.dd.api.CommonDDBean; 43 import org.netbeans.modules.j2ee.sun.dd.api.ejb.PmDescriptor; 44 import org.netbeans.modules.j2ee.sun.dd.api.ejb.PmDescriptors; 45 import org.netbeans.modules.j2ee.sun.dd.api.ejb.PmInuse; 46 import org.netbeans.modules.j2ee.sun.share.configbean.ASDDVersion; 47 48 import org.netbeans.modules.j2ee.sun.share.configbean.EjbJarRoot; 49 import org.netbeans.modules.j2ee.sun.share.configbean.StorageBeanFactory; 50 import org.netbeans.modules.j2ee.sun.share.configbean.Utils; 51 import org.netbeans.modules.j2ee.sun.share.configbean.customizers.common.GenericTableModel; 52 import org.netbeans.modules.j2ee.sun.share.configbean.customizers.common.GenericTablePanel; 53 import org.netbeans.modules.j2ee.sun.share.configbean.customizers.common.HelpContext; 54 import org.openide.util.Utilities; 55 56 60 public class EjbJarPmDescriptorsPanel extends javax.swing.JPanel implements TableModelListener , ListDataListener { 61 62 private static final ResourceBundle ejbjarBundle = ResourceBundle.getBundle( 63 "org.netbeans.modules.j2ee.sun.share.configbean.customizers.ejbmodule.Bundle"); 65 private EjbJarRootCustomizer masterPanel; 66 67 private PmDescriptors pmDescriptors; 68 69 private PmInUseCbxModel pmInUseModel; 70 71 private GenericTableModel pmDescriptorModel; 73 private GenericTablePanel pmDescriptorPanel; 74 75 78 public EjbJarPmDescriptorsPanel(EjbJarRootCustomizer src) { 79 masterPanel = src; 80 81 initComponents(); 82 initUserComponents(); 83 } 84 85 90 private void initComponents() { 92 java.awt.GridBagConstraints gridBagConstraints; 93 94 jLblPmInUse = new javax.swing.JLabel (); 95 jCbxPmInUse = new javax.swing.JComboBox (); 96 97 setLayout(new java.awt.GridBagLayout ()); 98 99 getAccessibleContext().setAccessibleName(ejbjarBundle.getString("ACSN_PmDescriptorsTab")); 100 getAccessibleContext().setAccessibleDescription(ejbjarBundle.getString("ACSD_PmDescriptorsTab")); 101 jLblPmInUse.setLabelFor(jCbxPmInUse); 102 jLblPmInUse.setText(java.util.ResourceBundle.getBundle("org/netbeans/modules/j2ee/sun/share/configbean/customizers/ejbmodule/Bundle").getString("LBL_Pm_In_Use")); 103 gridBagConstraints = new java.awt.GridBagConstraints (); 104 gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST; 105 gridBagConstraints.insets = new java.awt.Insets (6, 6, 0, 0); 106 add(jLblPmInUse, gridBagConstraints); 107 108 jCbxPmInUse.setToolTipText(java.util.ResourceBundle.getBundle("org/netbeans/modules/j2ee/sun/share/configbean/customizers/ejbmodule/Bundle").getString("Pm_In_Use_Tool_Tip")); 109 jCbxPmInUse.addActionListener(new java.awt.event.ActionListener () { 110 public void actionPerformed(java.awt.event.ActionEvent evt) { 111 jCbxPmInUseActionPerformed(evt); 112 } 113 }); 114 115 gridBagConstraints = new java.awt.GridBagConstraints (); 116 gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER; 117 gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL; 118 gridBagConstraints.weightx = 1.0; 119 gridBagConstraints.insets = new java.awt.Insets (6, 6, 0, 5); 120 add(jCbxPmInUse, gridBagConstraints); 121 jCbxPmInUse.getAccessibleContext().setAccessibleName(ejbjarBundle.getString("Pm_In_Use_Acsbl_Name")); 122 jCbxPmInUse.getAccessibleContext().setAccessibleDescription(ejbjarBundle.getString("Pm_In_Use_Acsbl_Desc")); 123 124 } 126 private void jCbxPmInUseActionPerformed(java.awt.event.ActionEvent evt) { updatePmInuse((PmDescriptorMapping) jCbxPmInUse.getSelectedItem()); 128 } 130 private void updatePmInuse(PmDescriptorMapping mapping) { 131 PmInuse oldPmInuse = pmDescriptors.getPmInuse(); 132 PmInuse newPmInuse = null; 133 134 if(mapping == null || mapping.getPmDescriptor() == null) { 135 pmDescriptors.setPmInuse(null); 136 } else { 137 PmDescriptor pmDescriptor = mapping.getPmDescriptor(); 138 String newPmIdentifier = pmDescriptor.getPmIdentifier(); 139 String newPmVersion = pmDescriptor.getPmVersion(); 140 141 if(oldPmInuse == null) { 142 newPmInuse = pmDescriptors.newPmInuse(); 143 pmDescriptors.setPmInuse(newPmInuse); 144 145 newPmInuse.setPmIdentifier(newPmIdentifier); 146 newPmInuse.setPmVersion(newPmVersion); 147 } else { 148 newPmInuse = oldPmInuse; 149 150 if(!Utils.strEquals(newPmIdentifier, newPmInuse.getPmIdentifier())) { 151 newPmInuse.setPmIdentifier(newPmIdentifier); 152 oldPmInuse = null; 153 } 154 if(!Utils.strEquals(newPmVersion, newPmInuse.getPmVersion())) { 155 newPmInuse.setPmVersion(newPmVersion); 156 oldPmInuse = null; 157 } 158 } 159 } 160 161 EjbJarRoot bean = masterPanel.getBean(); 162 if(bean != null && oldPmInuse != newPmInuse) { 163 bean.firePropertyChange("pmInuse", oldPmInuse, newPmInuse); bean.validateField(EjbJarRoot.FIELD_PM_DESCRIPTORS); 165 } 166 } 167 168 private javax.swing.JComboBox jCbxPmInUse; 170 private javax.swing.JLabel jLblPmInUse; 171 173 private void initUserComponents() { 174 177 ArrayList tableColumns = new ArrayList (5); 178 tableColumns.add(new GenericTableModel.ValueEntry(null, PmDescriptor.PM_IDENTIFIER, 179 ejbjarBundle, "PmIdentifier", true, true)); tableColumns.add(new GenericTableModel.ValueEntry(null, PmDescriptor.PM_VERSION, 181 ejbjarBundle, "PmVersion", true, false)); tableColumns.add(new GenericTableModel.ValueEntry(null, PmDescriptor.PM_CONFIG, 183 ejbjarBundle, "PmConfig", false, false)); tableColumns.add(new GenericTableModel.ValueEntry(null, PmDescriptor.PM_CLASS_GENERATOR, 185 ejbjarBundle, "PmClassGenerator", false, false)); tableColumns.add(new GenericTableModel.ValueEntry(null, PmDescriptor.PM_MAPPING_FACTORY, 187 ejbjarBundle, "PmMappingFactory", false, false)); 189 pmDescriptorModel = new PmDescriptorTableModel(tableColumns); 190 pmDescriptorPanel = new GenericTablePanel(pmDescriptorModel, 191 ejbjarBundle, "PmDescriptors", HelpContext.HELP_EJBJAR_PM_DESCRIPTOR_POPUP); 193 194 GridBagConstraints gridBagConstraints = new GridBagConstraints (); 195 gridBagConstraints.gridwidth = GridBagConstraints.REMAINDER; 196 gridBagConstraints.fill = GridBagConstraints.BOTH; 197 gridBagConstraints.weightx = 1.0; 198 gridBagConstraints.weighty = 1.0; 199 gridBagConstraints.insets = new Insets (6,6,0,5); 200 add(pmDescriptorPanel, gridBagConstraints); 201 } 202 203 public void addListeners() { 204 pmDescriptorModel.addTableModelListener(this); 205 pmDescriptorModel.addTableModelListener(pmInUseModel); 206 pmInUseModel.addListDataListener(this); 207 } 208 209 public void removeListeners() { 210 pmInUseModel.removeListDataListener(this); 211 pmDescriptorModel.removeTableModelListener(pmInUseModel); 212 pmDescriptorModel.removeTableModelListener(this); 213 } 214 215 218 public void initFields(EjbJarRoot bean) { 219 pmDescriptors = bean.getPmDescriptors(); 220 pmDescriptorPanel.setModel(pmDescriptors, bean.getAppServerVersion()); 221 222 pmInUseModel = new PmInUseCbxModel(pmDescriptorModel); 223 jCbxPmInUse.setModel(pmInUseModel); 224 225 Object selectedPmDescriptor = null; 226 PmInuse pmInuse = pmDescriptors.getPmInuse(); 227 if(pmInuse != null) { 228 selectedPmDescriptor = pmInUseModel.getElementByName(pmInuse.getPmIdentifier(), pmInuse.getPmVersion()); 229 } 230 jCbxPmInUse.setSelectedItem(selectedPmDescriptor); 231 } 232 233 private static class PmInUseCbxModel extends DefaultComboBoxModel implements TableModelListener { 234 235 private final GenericTableModel pmDescriptorTableModel; 236 237 public PmInUseCbxModel(final GenericTableModel tableModel) { 238 pmDescriptorTableModel = tableModel; 239 240 246 List rows = pmDescriptorTableModel.getData(); 248 Iterator iter = rows.iterator(); 249 while(iter.hasNext()) { 250 addElement(new PmDescriptorMapping((PmDescriptor) iter.next())); 251 } 252 } 253 254 public Object getElementByName(String pmIdentifier, String pmVersion) { 255 int len = getSize(); 256 for(int i = 0; i < len; i++) { 257 PmDescriptorMapping mapping = (PmDescriptorMapping) getElementAt(i); 258 if(mapping != null) { 259 PmDescriptor pmDescriptor = mapping.getPmDescriptor(); 260 if(pmDescriptor != null && 261 Utils.strEquals(pmDescriptor.getPmIdentifier(), pmIdentifier) && 262 Utils.strEquals(pmDescriptor.getPmVersion(), pmVersion)) { 263 return mapping; 264 } 265 } 266 } 267 return null; 268 } 269 270 public void tableChanged(TableModelEvent e) { 271 if(TableModelEvent.UPDATE == e.getType()) { 272 fireContentsChanged(this, e.getFirstRow(), e.getLastRow()); 273 } else if(TableModelEvent.DELETE == e.getType()) { 274 int firstRow = Math.min(e.getFirstRow(), e.getLastRow()); 275 int lastRow = Math.max(e.getFirstRow(), e.getLastRow()); 276 for(int i = lastRow; i >= firstRow; i--) { 277 removeElementAt(i); 278 } 279 } else if(TableModelEvent.INSERT == e.getType()) { 280 int firstRow = Math.min(e.getFirstRow(), e.getLastRow()); 281 int lastRow = Math.max(e.getFirstRow(), e.getLastRow()); 282 List rows = pmDescriptorTableModel.getData(); 283 for(int i = firstRow; i <= lastRow; i++) { 284 insertElementAt(new PmDescriptorMapping((PmDescriptor) rows.get(i)), i); 285 } 286 } 287 } 288 } 289 290 private static class PmDescriptorTableModel extends GenericTableModel { 291 public PmDescriptorTableModel(List tableColumns) { 292 super(PmDescriptors.PM_DESCRIPTOR, pmDescriptorFactory, tableColumns); 293 } 294 295 public boolean alreadyExists(Object [] values) { 296 boolean exists = false; 297 298 List children = getChildren(); 299 for(Iterator iter = children.iterator(); iter.hasNext(); ) { 300 PmDescriptor descriptor = (PmDescriptor) iter.next(); 301 if(match((String ) values[0], descriptor.getPmIdentifier()) && 302 match((String ) values[1], descriptor.getPmVersion())) { 303 exists = true; 304 break; 305 } 306 } 307 308 return exists; 309 } 310 311 private final boolean match(String a, String b) { 312 boolean result = false; 313 314 if(a == b) { 315 result = true; 316 } else if(a != null && b != null && a.equals(b)) { 317 result = true; 318 } 319 320 return result; 321 } 322 323 public boolean alreadyExists(String keyPropertyValue) { 324 return false; 327 } 328 } 329 330 333 public void tableChanged(TableModelEvent e) { 334 EjbJarRoot bean = masterPanel.getBean(); 335 if(bean != null) { 336 Object eventSource = e.getSource(); 337 if(eventSource == pmDescriptorModel) { 338 bean.firePropertyChange("pmDescriptors", null, pmDescriptors); 340 } 341 } 342 } 343 344 347 public void intervalRemoved(ListDataEvent e) { 348 } 350 351 public void intervalAdded(ListDataEvent e) { 352 Object eventSource = e.getSource(); 353 if(eventSource == pmInUseModel) { 354 Object selectedItem = jCbxPmInUse.getSelectedItem(); 355 if(selectedItem == null && pmInUseModel.getSize() > 0) { 356 jCbxPmInUse.setSelectedIndex(0); 357 } 358 } 359 } 360 361 public void contentsChanged(ListDataEvent e) { 362 Object eventSource = e.getSource(); 363 if(eventSource == pmInUseModel) { 364 updatePmInuse((PmDescriptorMapping) jCbxPmInUse.getSelectedItem()); 366 } 367 } 368 369 static GenericTableModel.ParentPropertyFactory pmDescriptorFactory = 372 new GenericTableModel.ParentPropertyFactory() { 373 public CommonDDBean newParentProperty(ASDDVersion asVersion) { 374 return StorageBeanFactory.getStorageBeanFactory(asVersion).createPmDescriptor(); 375 } 376 }; 377 378 } 379 | Popular Tags |