1 19 20 package org.netbeans.modules.xml.wsdl.ui.view.treeeditor.newtype; 21 22 import java.awt.Dialog ; 23 import java.awt.event.ActionEvent ; 24 import java.awt.event.ActionListener ; 25 import java.beans.PropertyChangeEvent ; 26 import java.beans.PropertyChangeListener ; 27 import java.io.IOException ; 28 import java.util.Collection ; 29 import java.util.HashMap ; 30 import java.util.Map ; 31 32 import org.netbeans.modules.xml.wsdl.model.Binding; 33 import org.netbeans.modules.xml.wsdl.model.Definitions; 34 import org.netbeans.modules.xml.wsdl.model.Port; 35 import org.netbeans.modules.xml.wsdl.model.PortType; 36 import org.netbeans.modules.xml.wsdl.model.Service; 37 import org.netbeans.modules.xml.wsdl.model.WSDLComponent; 38 import org.netbeans.modules.xml.wsdl.model.WSDLModel; 39 import org.netbeans.modules.xml.wsdl.ui.actions.ActionHelper; 40 import org.netbeans.modules.xml.wsdl.ui.actions.NameGenerator; 41 import org.netbeans.modules.xml.wsdl.ui.view.BindingConfigurationDialogPanel; 42 import org.netbeans.modules.xml.wsdl.ui.view.wizard.localized.LocalizedTemplate; 43 import org.netbeans.modules.xml.wsdl.ui.view.wizard.localized.LocalizedTemplateGroup; 44 import org.netbeans.modules.xml.wsdl.ui.wizard.BindingGenerator; 45 import org.netbeans.modules.xml.wsdl.ui.wizard.WizardBindingConfigurationStep; 46 import org.openide.DialogDescriptor; 47 import org.openide.DialogDisplayer; 48 import org.openide.filesystems.FileObject; 49 import org.openide.util.HelpCtx; 50 import org.openide.util.NbBundle; 51 import org.openide.util.datatransfer.NewType; 52 53 public class BindingAndServiceNewType extends NewType { 54 private PortType mPortType; 55 56 public BindingAndServiceNewType(WSDLComponent portType) { 57 mPortType = (PortType) portType; 58 } 59 60 61 @Override 62 public String getName() { 63 return NbBundle.getMessage(BindingAndServiceNewType.class, "LBL_NewType_BindingAndService"); 64 } 65 66 67 @Override 68 public void create() throws IOException { 69 final WSDLModel model = mPortType.getModel(); 70 FileObject fo = (FileObject) model.getModelSource().getLookup().lookup(FileObject.class); 71 final BindingConfigurationDialogPanel panel = new BindingConfigurationDialogPanel(model); 72 String bindingName = mPortType.getName() + "Binding"; 73 NameGenerator nameGen = NameGenerator.getInstance(); 74 if (nameGen.isBindingExists(bindingName, model)) { 75 bindingName = nameGen.generateUniqueBindingName(bindingName, model); 76 } 77 panel.setBindingName(bindingName); 78 79 80 String svcName = fo.getName() + "Service"; 81 Definitions def = model.getDefinitions(); 82 Collection <Service> services = def.getServices(); 83 Service service = null; 84 if (services != null && !services.isEmpty()) { 85 service = services.iterator().next(); 86 svcName = service.getName(); 87 } 88 89 panel.setServiceName(svcName); 90 String portName = panel.getBindingName() + "Port"; 91 if (service != null) { 92 if (nameGen.isServicePortExists(portName, service)) { 93 portName = nameGen.generateUniqueServicePortName(portName, service); 94 } 95 } 96 panel.setServicePortName(portName); 97 98 99 final DialogDescriptor descriptor = new DialogDescriptor(panel, 100 NbBundle.getMessage(BindingAndServiceNewType.class, "LBL_Generate_Binding_and_ServicePort"), 101 true, 102 DialogDescriptor.OK_CANCEL_OPTION, 103 DialogDescriptor.OK_OPTION, 104 DialogDescriptor.DEFAULT_ALIGN, 105 new HelpCtx(BindingAndServiceNewType.class), 106 null); 107 final PropertyChangeListener pcl = new PropertyChangeListener () { 108 public void propertyChange(PropertyChangeEvent evt) { 109 if(evt.getSource()== panel && evt.getPropertyName().equals(BindingConfigurationDialogPanel.APPLY_CHANGE)) { 110 descriptor.setValid(((Boolean ) evt.getNewValue()).booleanValue()); 111 } 112 } 113 }; 114 panel.addPropertyChangeListener(pcl); 115 ActionListener al = new ActionListener () { 117 @SuppressWarnings ("unchecked") 118 public void actionPerformed(ActionEvent evt) { 119 if (evt.getSource().equals(DialogDescriptor.OK_OPTION) || 120 evt.getSource().equals(DialogDescriptor.CANCEL_OPTION) || 121 evt.getSource().equals(DialogDescriptor.CLOSED_OPTION)) { 122 panel.removePropertyChangeListener(pcl); 123 } 124 if (evt.getSource().equals(DialogDescriptor.OK_OPTION)) { 125 String bindName = panel.getBindingName(); 126 LocalizedTemplateGroup bindingType = panel.getBindingType(); 127 LocalizedTemplate bindingSubType = panel.getBindingSubType(); 129 String serviceName = panel.getServiceName(); 130 String servicePortName = panel.getServicePortName(); 131 Map configurationMap = new HashMap (); 132 133 configurationMap.put(WizardBindingConfigurationStep.BINDING_NAME, bindName); 134 configurationMap.put(WizardBindingConfigurationStep.BINDING_TYPE, bindingType); 135 136 137 configurationMap.put(WizardBindingConfigurationStep.BINDING_SUBTYPE, bindingSubType); 138 139 141 configurationMap.put(WizardBindingConfigurationStep.SERVICE_NAME, serviceName); 142 configurationMap.put(WizardBindingConfigurationStep.SERVICEPORT_NAME, servicePortName); 143 model.startTransaction(); 144 BindingGenerator generator = new BindingGenerator(model, mPortType, configurationMap); 145 generator.execute(); 146 Binding binding = generator.getBinding(); 147 Port port = generator.getPort(); 148 149 String targetNamespace = model.getDefinitions().getTargetNamespace(); 150 if(binding != null) { 151 bindingSubType.getMProvider().postProcess(targetNamespace, binding); 152 } 153 if(port != null) { 154 bindingSubType.getMProvider().postProcess(targetNamespace, port); 155 } 156 157 model.endTransaction(); 158 ActionHelper.selectNode(binding); 159 } 160 } 161 }; 162 descriptor.setButtonListener(al); 163 descriptor.setValid(true); 164 Dialog dialog = DialogDisplayer.getDefault().createDialog(descriptor); 165 dialog.setVisible(true); 166 dialog.toFront(); 167 } 168 169 } 170 | Popular Tags |