KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > netbeans > modules > websvc > core > dev > wizard > design > NewWSDesignFromWSDLWizardIterator


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-2006 Sun
17  * Microsystems, Inc. All Rights Reserved.
18  */

19
20 package org.netbeans.modules.websvc.core.dev.wizard.design;
21
22 import org.netbeans.modules.websvc.core.dev.wizard.*;
23 import java.awt.Component JavaDoc;
24 import java.io.IOException JavaDoc;
25 import java.text.MessageFormat JavaDoc;
26 import java.util.Collections JavaDoc;
27 import java.util.NoSuchElementException JavaDoc;
28 import java.util.Set JavaDoc;
29
30 import javax.swing.JComponent JavaDoc;
31 import javax.swing.event.ChangeListener JavaDoc;
32 import org.netbeans.api.project.Project;
33 import org.netbeans.api.project.SourceGroup;
34 import org.netbeans.modules.websvc.core.CreatorProvider;
35 import org.netbeans.modules.websvc.core.ServiceCreator;
36
37 import org.openide.WizardDescriptor;
38
39 import org.netbeans.modules.j2ee.common.Util;
40 import org.netbeans.spi.java.project.support.ui.templates.JavaTemplates;
41 import org.netbeans.spi.project.ui.templates.support.Templates;
42 import org.openide.filesystems.FileObject;
43 import org.openide.loaders.DataObject;
44 import org.openide.loaders.TemplateWizard;
45 import org.openide.util.NbBundle;
46
47 /**
48  * Wizard to create a new Web project.
49  * @author Jesse Glick, Radko Najman
50  */

51 public class NewWSDesignFromWSDLWizardIterator implements TemplateWizard.Iterator {
52     
53     private Project project;
54     
55     /** Create a new wizard iterator. */
56     public NewWSDesignFromWSDLWizardIterator() {
57     }
58     
59     public static NewWSDesignFromWSDLWizardIterator create() {
60         return new NewWSDesignFromWSDLWizardIterator();
61     }
62     
63     public Set JavaDoc<DataObject> instantiate(TemplateWizard wiz) throws IOException JavaDoc {
64         FileObject template = Templates.getTemplate( wiz );
65         DataObject dTemplate = DataObject.find( template );
66         ServiceCreator creator = CreatorProvider.getServiceCreator(project, wiz);
67         
68         if (creator!=null) {
69             int type = (Integer JavaDoc)wiz.getProperty(WizardProperties.WEB_SERVICE_TYPE);
70             if(type == WizardProperties.FROM_SCRATCH){
71                 creator.createService();
72             } else{
73                 creator.createServiceFromWsdl();
74             }
75         }
76         return Collections.singleton(dTemplate);
77     }
78     
79     private transient int index;
80     private transient WizardDescriptor.Panel<WizardDescriptor>[] panels;
81     private transient TemplateWizard wiz;
82     private transient WizardDescriptor.Panel bottomPanel;
83     
84     public void initialize(TemplateWizard wiz) {
85         this.wiz = wiz;
86         index = 0;
87         
88         project = Templates.getProject(wiz);
89         
90         SourceGroup[] sourceGroups = Util.getJavaSourceGroups(project);
91         bottomPanel = new WSDesignFromWSDL(wiz, project);
92         WizardDescriptor.Panel<WizardDescriptor> firstPanel; //special case: use Java Chooser
93
if (sourceGroups.length == 0)
94             firstPanel = new FinishableProxyWizardPanel(Templates.createSimpleTargetChooser(project, sourceGroups, bottomPanel));
95         else
96             firstPanel = new FinishableProxyWizardPanel(JavaTemplates.createPackageChooser(project, sourceGroups, bottomPanel, true));
97         
98         JComponent JavaDoc comp = (JComponent JavaDoc) firstPanel.getComponent();
99         Util.changeLabelInComponent(comp, NbBundle.getMessage(NewWebServiceFromWSDLWizardIterator.class, "LBL_JavaTargetChooserPanelGUI_ClassName_Label"), NbBundle.getMessage(NewWebServiceWizardIterator.class, "LBL_Webservice_Name") );
100         Util.hideLabelAndLabelFor(comp, NbBundle.getMessage(NewWebServiceFromWSDLWizardIterator.class, "LBL_JavaTargetChooserPanelGUI_CreatedFile_Label"));
101         
102         panels = new WizardDescriptor.Panel[] {
103             firstPanel,
104         };
105         
106         // Creating steps.
107
Object JavaDoc prop = this.wiz.getProperty("WizardPanel_contentData"); // NOI18N
108
String JavaDoc[] beforeSteps = null;
109         if (prop != null && prop instanceof String JavaDoc[]) {
110             beforeSteps = (String JavaDoc[]) prop;
111         }
112         String JavaDoc[] steps = createSteps(beforeSteps, panels);
113         
114         // Make sure list of steps is accurate.
115
for (int i = 0; i < panels.length; i++) {
116             Component JavaDoc c = panels[i].getComponent();
117             if (c instanceof JComponent JavaDoc) { // assume Swing components
118
JComponent JavaDoc jc = (JComponent JavaDoc) c;
119                 // Step #.
120
jc.putClientProperty("WizardPanel_contentSelectedIndex", new Integer JavaDoc(i)); // NOI18N
121
// Step name (actually the whole list for reference).
122
jc.putClientProperty("WizardPanel_contentData", steps); // NOI18N
123
}
124         }
125     }
126     
127     public void uninitialize(TemplateWizard wiz) {
128         if (this.wiz != null) {
129             this.wiz.putProperty(WizardProperties.WEB_SERVICE_TYPE, null);
130         }
131         panels = null;
132     }
133     
134     
135     private String JavaDoc[] createSteps(String JavaDoc[] before, WizardDescriptor.Panel[] panels) {
136         int diff = 0;
137         if (before == null) {
138             before = new String JavaDoc[0];
139         } else if (before.length > 0) {
140             diff = ("...".equals(before[before.length - 1])) ? 1 : 0; // NOI18N
141
}
142         String JavaDoc[] res = new String JavaDoc[ (before.length - diff) + panels.length];
143         for (int i = 0; i < res.length; i++) {
144             if (i < (before.length - diff)) {
145                 res[i] = before[i];
146             } else {
147                 res[i] = panels[i - before.length + diff].getComponent().getName();
148             }
149         }
150         return res;
151     }
152     
153     public String JavaDoc name() {
154         return MessageFormat.format(NbBundle.getMessage(NewWebServiceWizardIterator.class, "LBL_WizardStepsCount"), (new Integer JavaDoc(index + 1)).toString(), (new Integer JavaDoc(panels.length)).toString()); //NOI18N
155
}
156     
157     public boolean hasNext() {
158         return index < panels.length - 1;
159     }
160     
161     public boolean hasPrevious() {
162         return index > 0;
163     }
164     
165     public void nextPanel() {
166         if (!hasNext()) throw new NoSuchElementException JavaDoc();
167         index++;
168     }
169     
170     public void previousPanel() {
171         if (!hasPrevious()) throw new NoSuchElementException JavaDoc();
172         index--;
173     }
174     
175     public WizardDescriptor.Panel<WizardDescriptor> current() {
176         return panels[index];
177     }
178     
179     // If nothing unusual changes in the middle of the wizard, simply:
180
public final void addChangeListener(ChangeListener JavaDoc l) {}
181     public final void removeChangeListener(ChangeListener JavaDoc l) {}
182     
183 }
184
Popular Tags