1 19 20 25 26 package org.netbeans.modules.websvc.customization.multiview; 27 28 import java.awt.Color ; 29 import java.awt.event.ActionEvent ; 30 import java.awt.event.ActionListener ; 31 import java.awt.event.ItemEvent ; 32 import java.awt.event.ItemListener ; 33 import java.beans.PropertyChangeEvent ; 34 import java.beans.PropertyChangeListener ; 35 import java.util.List ; 36 import javax.swing.JButton ; 37 import javax.swing.JComponent ; 38 import javax.swing.text.JTextComponent ; 39 import org.netbeans.modules.websvc.core.JaxWsUtils; 40 import org.netbeans.modules.websvc.customization.model.CustomizationComponentFactory; 41 import org.netbeans.modules.websvc.customization.model.DefinitionsCustomization; 42 import org.netbeans.modules.websvc.customization.model.EnableAsyncMapping; 43 import org.netbeans.modules.websvc.customization.model.EnableWrapperStyle; 44 import org.netbeans.modules.websvc.customization.model.JavaClass; 45 import org.netbeans.modules.websvc.customization.model.PortTypeCustomization; 46 import org.netbeans.modules.xml.multiview.ui.SectionView; 47 import org.netbeans.modules.xml.multiview.ui.SectionVisualTheme; 48 import org.netbeans.modules.xml.wsdl.model.Definitions; 49 import org.netbeans.modules.xml.wsdl.model.PortType; 50 import org.netbeans.modules.xml.wsdl.model.WSDLComponent; 51 import org.netbeans.modules.xml.wsdl.model.WSDLModel; 52 import org.openide.util.WeakListeners; 53 import org.netbeans.modules.xml.multiview.Error; 54 import org.openide.nodes.Node; 55 import org.openide.util.NbBundle; 56 57 61 public class PortTypePanel extends SaveableSectionInnerPanel { 62 private PortType portType; 63 private WSDLModel model; 64 private boolean wsdlDirty; 65 private DefaultItemListener defaultItemListener; 66 private ModelChangeListener modelListener; 67 private PortTypeActionListener listener; 68 private Definitions primaryDefinitions; 69 70 71 public PortTypePanel(SectionView view, PortType portType, 72 Node node, Definitions primaryDefinitions) { 73 super(view); 74 this.portType = portType; 75 this.primaryDefinitions = primaryDefinitions; 76 this.model = this.portType.getModel(); 77 initComponents(); 78 if(!isClient(node)){ 79 enableAsyncMappingCB.setVisible(false); 80 } 81 this.enableAsyncMappingCB.setBackground(SectionVisualTheme.getDocumentBackgroundColor()); 82 this.enableWrapperStyleCB.setBackground(SectionVisualTheme.getDocumentBackgroundColor()); 83 javaClassLabel.setBackground(SectionVisualTheme.getDocumentBackgroundColor()); 84 javaClassText.setBackground(SectionVisualTheme.getDocumentBackgroundColor()); 85 enableAsyncMappingCB.setToolTipText(NbBundle.getMessage(DefinitionsPanel.class, "TOOLTIP_ENABLE_ASYNC")); 86 enableWrapperStyleCB.setToolTipText(NbBundle.getMessage(DefinitionsPanel.class, "TOOLTIP_ENABLE_WRAPPER")); 87 javaClassText.setToolTipText(NbBundle.getMessage(PortTypePanel.class, "TOOLTIP_PORTTYPE_CLASS")); 88 89 syncButtons(); 90 syncJavaClass(); 91 92 defaultItemListener = new DefaultItemListener(); 93 ItemListener il = (ItemListener )WeakListeners.create(ItemListener .class, defaultItemListener, defaultJavaClassCB); 94 defaultJavaClassCB.addItemListener(il); 95 96 modelListener = new ModelChangeListener(); 97 WSDLModel primaryModel = primaryDefinitions.getModel(); 98 PropertyChangeListener pcl = WeakListeners.propertyChange(modelListener, primaryModel); 99 primaryModel.addPropertyChangeListener(pcl); 100 101 listener = new PortTypeActionListener(); 102 ActionListener eamListener = (ActionListener )WeakListeners.create(ActionListener .class, 103 listener, enableAsyncMappingCB); 104 enableAsyncMappingCB.addActionListener(eamListener); 105 ActionListener ewsListener = (ActionListener )WeakListeners.create(ActionListener .class, 106 listener, enableWrapperStyleCB); 107 enableWrapperStyleCB.addActionListener(ewsListener); 108 109 addModifier(javaClassText); 110 addModifier(defaultJavaClassCB); 111 addValidatee(javaClassText); 112 } 113 114 class PortTypeActionListener implements ActionListener { 115 public void actionPerformed(ActionEvent e) { 116 setValue((JComponent )e.getSource(), null); 117 } 118 } 119 120 class DefaultItemListener implements ItemListener { 121 public void itemStateChanged(ItemEvent e) { 122 if(defaultJavaClassCB.isSelected()){ 124 javaClassText.setBackground(Color.LIGHT_GRAY); 125 javaClassText.setEnabled(false); 126 } else{ 127 javaClassText.setEnabled(true); 128 javaClassText.setBackground(Color.WHITE); 129 javaClassText.requestFocus(); 130 } 131 } 132 133 } 134 135 class ModelChangeListener implements PropertyChangeListener { 136 public void propertyChange(PropertyChangeEvent evt) { 137 Object source = evt.getSource(); 138 if (source instanceof EnableWrapperStyle){ 139 EnableWrapperStyle ews = (EnableWrapperStyle)source; 140 WSDLComponent parent = ews.getParent(); 141 if(parent instanceof DefinitionsCustomization){ 142 syncButtons(); 143 } 144 } else if (source instanceof EnableAsyncMapping){ 145 EnableAsyncMapping eam = (EnableAsyncMapping)source; 146 WSDLComponent parent = eam.getParent(); 147 if(parent instanceof DefinitionsCustomization){ 148 syncButtons(); 149 } 150 } 151 } 152 } 153 154 private void syncJavaClass(){ 155 List <PortTypeCustomization> ee = portType.getExtensibilityElements(PortTypeCustomization.class); 156 if(ee.size() > 0) { 157 PortTypeCustomization pc = ee.get(0); 158 JavaClass jc = pc.getJavaClass(); 159 if(jc != null){ 160 setJavaClass(jc.getName()); 161 } else{ 162 this.defaultJavaClassCB.setSelected(true); 163 javaClassText.setEnabled(false); 164 javaClassText.setBackground(Color.LIGHT_GRAY); 165 } 166 } else{ 167 this.defaultJavaClassCB.setSelected(true); 168 javaClassText.setEnabled(false); 169 javaClassText.setBackground(Color.LIGHT_GRAY); 170 } 171 } 172 173 private void syncButtons(){ 174 List <PortTypeCustomization> ee = portType.getExtensibilityElements(PortTypeCustomization.class); 175 if(ee.size() > 0){ 176 PortTypeCustomization pc = ee.get(0); 177 EnableAsyncMapping eam = pc.getEnableAsyncMapping(); 178 if(eam != null){ 179 setEnableAsyncMapping(eam.isEnabled()); 180 } else{ 181 setEnableAsyncMapping(this.getAsyncMappingOfParent()); 183 } 184 EnableWrapperStyle ews = pc.getEnableWrapperStyle(); 185 if(ews != null){ 186 setEnableWrapperStyle(ews.isEnabled()); 187 } else{ 188 setEnableWrapperStyle(this.getWrapperStyleOfParent()); 190 } 191 192 193 } else{ setEnableAsyncMapping(this.getAsyncMappingOfParent()); 195 setEnableWrapperStyle(this.getWrapperStyleOfParent()); 196 197 } 198 } 199 200 private boolean getAsyncMappingOfParent(){ 201 List <DefinitionsCustomization> dcs = primaryDefinitions.getExtensibilityElements(DefinitionsCustomization.class); 202 if(dcs.size() > 0) { 203 DefinitionsCustomization dc = dcs.get(0); 204 EnableAsyncMapping asyncMapping = dc.getEnableAsyncMapping(); 205 if(asyncMapping != null){ 206 return asyncMapping.isEnabled(); 207 } 208 } 209 return false; 210 } 211 212 private boolean getWrapperStyleOfParent(){ 213 List <DefinitionsCustomization> dcs = primaryDefinitions.getExtensibilityElements(DefinitionsCustomization.class); 214 if(dcs.size() > 0){ 215 DefinitionsCustomization dc = dcs.get(0); 216 EnableWrapperStyle wrapperStyle = dc.getEnableWrapperStyle(); 217 if(wrapperStyle != null){ 218 return wrapperStyle.isEnabled(); 219 } 220 } 221 return true; 222 } 223 224 public void setEnableAsyncMapping(boolean enable){ 225 enableAsyncMappingCB.setSelected(enable); 226 } 227 228 public boolean getEnableAsyncMapping(){ 229 return enableAsyncMappingCB.isSelected(); 230 } 231 232 public void setEnableWrapperStyle(boolean enable){ 233 enableWrapperStyleCB.setSelected(enable); 234 } 235 236 public Boolean getEnableWrapperStyle(){ 237 return enableWrapperStyleCB.isSelected(); 238 } 239 240 public String getJavaClass(){ 241 return javaClassText.getText(); 242 } 243 public void setJavaClass(String name){ 244 javaClassText.setText(name); 245 } 246 247 public JComponent getErrorComponent(String string) { 248 return new JButton ("error"); 249 } 250 251 public void linkButtonPressed(Object object, String string) { 252 } 253 254 public void setValue(JComponent jComponent, Object object) { 255 List <PortTypeCustomization> ee = 256 portType.getExtensibilityElements(PortTypeCustomization.class); 257 CustomizationComponentFactory factory = CustomizationComponentFactory.getDefault(); 258 if(jComponent == javaClassText || 259 jComponent == defaultJavaClassCB){ 260 String text = javaClassText.getText(); 261 if(text != null && !text.trim().equals("") 262 && !defaultJavaClassCB.isSelected()){ 263 if(!JaxWsUtils.isJavaIdentifier(text)){ 264 return; 265 } 266 if(ee.size() == 1){ PortTypeCustomization pc = ee.get(0); 268 JavaClass jc = pc.getJavaClass(); 269 if(jc == null){ 270 try{ 271 jc = factory.createJavaClass(model); 272 model.startTransaction(); 273 jc.setName(text); pc.setJavaClass(jc); 275 wsdlDirty = true; 276 } finally{ 277 model.endTransaction(); 278 } 279 } else{ try{ 282 model.startTransaction(); 283 jc.setName(text); 284 wsdlDirty = true; 285 } finally{ 286 model.endTransaction(); 287 } 288 } 289 }else{ PortTypeCustomization pc = factory.createPortTypeCustomization(model); 292 JavaClass jc = factory.createJavaClass(model); 293 try{ 294 model.startTransaction(); 295 jc.setName(text); 296 pc.setJavaClass(jc); 297 portType.addExtensibilityElement(pc); 298 wsdlDirty = true; 299 } finally{ 300 model.endTransaction(); 301 } 302 } 303 } else{ try{ 305 if(ee.size() == 1){ 306 PortTypeCustomization pc = ee.get(0); 307 JavaClass jc = pc.getJavaClass(); 308 if(jc != null){ 309 model.startTransaction(); 310 pc.removeJavaClass(jc); 311 if(pc.getChildren().size() == 0){ 312 portType.removeExtensibilityElement(pc); 313 } 314 wsdlDirty = true; 315 } 316 } 317 } finally{ 318 model.endTransaction(); 319 } 320 } 321 } else if(jComponent == enableWrapperStyleCB){ 322 if(ee.size() == 1){ PortTypeCustomization pc = ee.get(0); 324 EnableWrapperStyle ews = pc.getEnableWrapperStyle(); 325 if(ews == null){ try{ 327 model.startTransaction(); 328 ews = factory.createEnableWrapperStyle(model); 329 ews.setEnabled(this.getEnableWrapperStyle()); 330 pc.setEnableWrapperStyle(ews); 331 wsdlDirty = true; 332 }finally{ 333 model.endTransaction(); 334 } 335 } else{ try{ 337 model.startTransaction(); 338 ews.setEnabled(this.getEnableWrapperStyle()); 339 wsdlDirty = true; 340 } finally{ 341 model.endTransaction(); 342 } 343 } 344 } else{ PortTypeCustomization pc = factory.createPortTypeCustomization(model); 347 EnableWrapperStyle ews = factory.createEnableWrapperStyle(model); 348 try{ 349 model.startTransaction(); 350 ews.setEnabled(this.getEnableWrapperStyle()); 351 pc.setEnableWrapperStyle(ews); 352 portType.addExtensibilityElement(pc); 353 wsdlDirty = true; 354 } finally{ 355 model.endTransaction(); 356 } 357 } 358 } else if(jComponent == this.enableAsyncMappingCB){ 359 if(ee.size() == 1){ PortTypeCustomization pc = ee.get(0); 361 EnableAsyncMapping eam = pc.getEnableAsyncMapping(); 362 if(eam == null){ try{ 364 model.startTransaction(); 365 eam = factory.createEnableAsyncMapping(model); 366 eam.setEnabled(this.getEnableAsyncMapping()); 367 pc.setEnableAsyncMapping(eam); 368 wsdlDirty = true; 369 } finally{ 370 model.endTransaction(); 371 } 372 } else{ try{ 374 model.startTransaction(); 375 eam.setEnabled(this.getEnableAsyncMapping()); 376 wsdlDirty = true; 377 } finally{ 378 model.endTransaction(); 379 } 380 } 381 } else{ PortTypeCustomization pc = factory.createPortTypeCustomization(model); 384 EnableAsyncMapping eam = factory.createEnableAsyncMapping(model); 385 try{ 386 model.startTransaction(); 387 eam.setEnabled(this.getEnableAsyncMapping()); 388 pc.setEnableAsyncMapping(eam); 389 portType.addExtensibilityElement(pc); 390 wsdlDirty = true; 391 } finally{ 392 model.endTransaction(); 393 } 394 } 395 } 396 } 397 398 public void documentChanged(JTextComponent comp, String val) { 399 if(comp == javaClassText){ 400 if(!JaxWsUtils.isJavaIdentifier(val)){ 401 getSectionView().getErrorPanel(). 402 setError(new Error (Error.TYPE_FATAL, 403 Error.ERROR_MESSAGE, val, comp)); 404 return; 405 } 406 } 407 getSectionView().getErrorPanel().clearError(); 408 } 409 410 public void rollbackValue(JTextComponent source) { 411 if(source == javaClassText){ 412 String className = ""; 413 List <PortTypeCustomization> ee = 414 portType.getExtensibilityElements(PortTypeCustomization.class); 415 if(ee.size() == 1){ 416 PortTypeCustomization ptc = ee.get(0); 417 JavaClass jc = ptc.getJavaClass(); 418 if(jc != null){ 419 className = jc.getName(); 420 } 421 } 422 javaClassText.setText(className); 423 } 424 } 425 426 public boolean wsdlIsDirty() { 427 return wsdlDirty; 428 } 429 430 public void save() { 431 if(wsdlDirty){ 432 this.setModelDirty(model); 433 } 434 } 435 436 437 442 private void initComponents() { 444 ewsButtonGroup = new javax.swing.ButtonGroup (); 445 eamButtonGroup = new javax.swing.ButtonGroup (); 446 javaClassLabel = new javax.swing.JLabel (); 447 javaClassText = new javax.swing.JTextField (); 448 defaultJavaClassCB = new javax.swing.JCheckBox (); 449 enableWrapperStyleCB = new javax.swing.JCheckBox (); 450 enableAsyncMappingCB = new javax.swing.JCheckBox (); 451 452 javaClassLabel.setText(java.util.ResourceBundle.getBundle("org/netbeans/modules/websvc/customization/multiview/Bundle").getString("LBL_JAVA_CLASS")); 453 javaClassLabel.getAccessibleContext().setAccessibleName(java.util.ResourceBundle.getBundle("org/netbeans/modules/websvc/customization/multiview/Bundle").getString("LBL_JAVA_CLASS")); 454 455 javaClassText.getAccessibleContext().setAccessibleName(java.util.ResourceBundle.getBundle("org/netbeans/modules/websvc/customization/multiview/Bundle").getString("LBL_JAVA_CLASS")); 456 javaClassText.getAccessibleContext().setAccessibleDescription(java.util.ResourceBundle.getBundle("org/netbeans/modules/websvc/customization/multiview/Bundle").getString("LBL_JAVA_CLASS")); 457 458 defaultJavaClassCB.setMnemonic(java.util.ResourceBundle.getBundle("org/netbeans/modules/websvc/customization/multiview/Bundle").getString("MNEMONIC_USE_DEFAULT").charAt(0)); 459 defaultJavaClassCB.setText(java.util.ResourceBundle.getBundle("org/netbeans/modules/websvc/customization/multiview/Bundle").getString("LBL_USE_DEFAULT")); 460 defaultJavaClassCB.setBorder(javax.swing.BorderFactory.createEmptyBorder(0, 0, 0, 0)); 461 defaultJavaClassCB.setMargin(new java.awt.Insets (0, 0, 0, 0)); 462 defaultJavaClassCB.getAccessibleContext().setAccessibleName(java.util.ResourceBundle.getBundle("org/netbeans/modules/websvc/customization/multiview/Bundle").getString("LBL_USE_DEFAULT")); 463 defaultJavaClassCB.getAccessibleContext().setAccessibleDescription(java.util.ResourceBundle.getBundle("org/netbeans/modules/websvc/customization/multiview/Bundle").getString("LBL_USE_DEFAULT")); 464 465 enableWrapperStyleCB.setMnemonic(java.util.ResourceBundle.getBundle("org/netbeans/modules/websvc/customization/multiview/Bundle").getString("MNEMONIC_ENABLE_WRAPPER_STYLE").charAt(0)); 466 enableWrapperStyleCB.setText(java.util.ResourceBundle.getBundle("org/netbeans/modules/websvc/customization/multiview/Bundle").getString("LBL_ENABLE_WRAPPER_STYLE")); 467 enableWrapperStyleCB.setBorder(javax.swing.BorderFactory.createEmptyBorder(0, 0, 0, 0)); 468 enableWrapperStyleCB.setMargin(new java.awt.Insets (0, 0, 0, 0)); 469 enableWrapperStyleCB.getAccessibleContext().setAccessibleName(java.util.ResourceBundle.getBundle("org/netbeans/modules/websvc/customization/multiview/Bundle").getString("LBL_ENABLE_WRAPPER_STYLE")); 470 enableWrapperStyleCB.getAccessibleContext().setAccessibleDescription(java.util.ResourceBundle.getBundle("org/netbeans/modules/websvc/customization/multiview/Bundle").getString("LBL_ENABLE_WRAPPER_STYLE")); 471 472 enableAsyncMappingCB.setMnemonic(java.util.ResourceBundle.getBundle("org/netbeans/modules/websvc/customization/multiview/Bundle").getString("MNEMONIC_ENABLE_ASYNC_CLIENT").charAt(0)); 473 enableAsyncMappingCB.setText(java.util.ResourceBundle.getBundle("org/netbeans/modules/websvc/customization/multiview/Bundle").getString("LBL_ENABLE_ASYNC_MAPPING")); 474 enableAsyncMappingCB.setBorder(javax.swing.BorderFactory.createEmptyBorder(0, 0, 0, 0)); 475 enableAsyncMappingCB.setMargin(new java.awt.Insets (0, 0, 0, 0)); 476 enableAsyncMappingCB.getAccessibleContext().setAccessibleName(java.util.ResourceBundle.getBundle("org/netbeans/modules/websvc/customization/multiview/Bundle").getString("LBL_ENABLE_ASYNC_MAPPING")); 477 enableAsyncMappingCB.getAccessibleContext().setAccessibleDescription(java.util.ResourceBundle.getBundle("org/netbeans/modules/websvc/customization/multiview/Bundle").getString("LBL_ENABLE_ASYNC_MAPPING")); 478 479 org.jdesktop.layout.GroupLayout layout = new org.jdesktop.layout.GroupLayout(this); 480 this.setLayout(layout); 481 layout.setHorizontalGroup( 482 layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING) 483 .add(layout.createSequentialGroup() 484 .add(23, 23, 23) 485 .add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING) 486 .add(enableAsyncMappingCB) 487 .add(enableWrapperStyleCB) 488 .add(layout.createSequentialGroup() 489 .add(javaClassLabel) 490 .add(16, 16, 16) 491 .add(javaClassText, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 237, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE) 492 .add(21, 21, 21) 493 .add(defaultJavaClassCB))) 494 .addContainerGap(33, Short.MAX_VALUE)) 495 ); 496 layout.setVerticalGroup( 497 layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING) 498 .add(layout.createSequentialGroup() 499 .add(26, 26, 26) 500 .add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING) 501 .add(javaClassLabel) 502 .add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.BASELINE) 503 .add(javaClassText, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 16, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE) 504 .add(defaultJavaClassCB))) 505 .add(18, 18, 18) 506 .add(enableWrapperStyleCB) 507 .add(15, 15, 15) 508 .add(enableAsyncMappingCB) 509 .addContainerGap(25, Short.MAX_VALUE)) 510 ); 511 } 513 514 private javax.swing.JCheckBox defaultJavaClassCB; 516 private javax.swing.ButtonGroup eamButtonGroup; 517 private javax.swing.JCheckBox enableAsyncMappingCB; 518 private javax.swing.JCheckBox enableWrapperStyleCB; 519 private javax.swing.ButtonGroup ewsButtonGroup; 520 private javax.swing.JLabel javaClassLabel; 521 private javax.swing.JTextField javaClassText; 522 524 } 525 | Popular Tags |