KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > netbeans > modules > xml > wsdl > ui > view > treeeditor > newtype > BindingAndServiceNewType


1 /*
2  * The contents of this file are subject to the terms of the Common Development
3  * and Distribution License (the License). You may not use this file except in
4  * compliance with the License.
5  *
6  * You can obtain a copy of the License at http://www.netbeans.org/cddl.html
7  * or http://www.netbeans.org/cddl.txt.
8  *
9  * When distributing Covered Code, include this CDDL Header Notice in each file
10  * and include the License file at http://www.netbeans.org/cddl.txt.
11  * If applicable, add the following below the CDDL Header, with the fields
12  * enclosed by brackets [] replaced by your own identifying information:
13  * "Portions Copyrighted [year] [name of copyright owner]"
14  *
15  * The Original Software is NetBeans. The Initial Developer of the Original
16  * Software is Sun Microsystems, Inc. Portions Copyright 1997-2007 Sun
17  * Microsystems, Inc. All Rights Reserved.
18  */

19
20 package org.netbeans.modules.xml.wsdl.ui.view.treeeditor.newtype;
21
22 import java.awt.Dialog JavaDoc;
23 import java.awt.event.ActionEvent JavaDoc;
24 import java.awt.event.ActionListener JavaDoc;
25 import java.beans.PropertyChangeEvent JavaDoc;
26 import java.beans.PropertyChangeListener JavaDoc;
27 import java.io.IOException JavaDoc;
28 import java.util.Collection JavaDoc;
29 import java.util.HashMap JavaDoc;
30 import java.util.Map JavaDoc;
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 JavaDoc
62     public String JavaDoc getName() {
63         return NbBundle.getMessage(BindingAndServiceNewType.class, "LBL_NewType_BindingAndService");
64     }
65     
66     
67     @Override JavaDoc
68     public void create() throws IOException JavaDoc {
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 JavaDoc 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 JavaDoc svcName = fo.getName() + "Service";
81         Definitions def = model.getDefinitions();
82         Collection JavaDoc<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 JavaDoc 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 JavaDoc pcl = new PropertyChangeListener JavaDoc() {
108             public void propertyChange(PropertyChangeEvent JavaDoc evt) {
109                 if(evt.getSource()== panel && evt.getPropertyName().equals(BindingConfigurationDialogPanel.APPLY_CHANGE)) {
110                     descriptor.setValid(((Boolean JavaDoc) evt.getNewValue()).booleanValue());
111                 }
112             }
113         };
114         panel.addPropertyChangeListener(pcl);
115         // dialog's action listener
116
ActionListener JavaDoc al = new ActionListener JavaDoc() {
117             @SuppressWarnings JavaDoc("unchecked")
118             public void actionPerformed(ActionEvent JavaDoc 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 JavaDoc bindName = panel.getBindingName();
126                     LocalizedTemplateGroup bindingType = panel.getBindingType();
127                     //this could be null for a binding which does not have a sub type
128
LocalizedTemplate bindingSubType = panel.getBindingSubType();
129                     String JavaDoc serviceName = panel.getServiceName();
130                     String JavaDoc servicePortName = panel.getServicePortName();
131                     Map JavaDoc configurationMap = new HashMap JavaDoc();
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                     //service and port
140

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 JavaDoc 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 JavaDoc dialog = DialogDisplayer.getDefault().createDialog(descriptor);
165         dialog.setVisible(true);
166         dialog.toFront();
167     }
168     
169 }
170
Popular Tags