This Bugzilla instance is a read-only archive of historic NetBeans bug reports. To report a bug in NetBeans please follow the project's instructions for reporting issues.

View | Details | Raw Unified | Return to bug 222525
Collapse All | Expand All

(-)a/web.client.samples/src/org/netbeans/modules/web/client/samples/AngularJSPhoneCat.java (-7 / +7 lines)
Lines 44-50 Link Here
44
44
45
import org.netbeans.api.templates.TemplateRegistration;
45
import org.netbeans.api.templates.TemplateRegistration;
46
import org.netbeans.modules.web.client.samples.wizard.iterator.OnlineSampleWizardIterator;
46
import org.netbeans.modules.web.client.samples.wizard.iterator.OnlineSampleWizardIterator;
47
import org.netbeans.modules.web.clientproject.spi.SiteTemplateImplementation;
47
import org.netbeans.modules.web.client.samples.wizard.iterator.OnlineSiteTemplate;
48
import org.netbeans.modules.web.clientproject.createprojectapi.CreateProjectProperties;
48
import org.openide.filesystems.FileObject;
49
import org.openide.filesystems.FileObject;
49
import org.openide.util.NbBundle;
50
import org.openide.util.NbBundle;
50
51
Lines 65-73 Link Here
65
public class AngularJSPhoneCat extends OnlineSampleWizardIterator {
66
public class AngularJSPhoneCat extends OnlineSampleWizardIterator {
66
67
67
    @Override
68
    @Override
68
    protected SiteTemplateImplementation getSiteTemplate() {
69
    protected OnlineSiteTemplate getSiteTemplate() {
69
        return new AngularJSTemplate(
70
        return new AngularJSTemplate(
70
                "ANGULAR-SAMPLE",
71
                getProjectName(),
71
                getProjectName(),
72
                getProjectZipURL(),
72
                getProjectZipURL(),
73
                "angular-angular-phonecat-step-11-0-g9aebada.zip"); // NOI18N
73
                "angular-angular-phonecat-step-11-0-g9aebada.zip"); // NOI18N
Lines 85-103 Link Here
85
85
86
    private static class AngularJSTemplate extends OnlineSiteTemplate {
86
    private static class AngularJSTemplate extends OnlineSiteTemplate {
87
87
88
        public AngularJSTemplate(String id, String name, String url, String zipName) {
88
        public AngularJSTemplate(String name, String url, String zipName) {
89
            super(id, name, url, zipName);
89
            super(name, url, zipName);
90
        }
90
        }
91
91
92
        @Override
92
        @Override
93
        public void configure(SiteTemplateImplementation.ProjectProperties projectProperties) {
93
        public void configure(CreateProjectProperties projectProperties) {
94
            projectProperties.setSiteRootFolder("app"); // NOI18N
94
            projectProperties.setSiteRootFolder("app"); // NOI18N
95
            projectProperties.setTestFolder("test"); // NOI18N
95
            projectProperties.setTestFolder("test"); // NOI18N
96
            projectProperties.setConfigFolder("config"); // NOI18N
96
            projectProperties.setConfigFolder("config"); // NOI18N
97
        }
97
        }
98
98
99
        @Override
99
        @Override
100
        protected FileObject getTargetDir(FileObject projectDir, ProjectProperties projectProperties) {
100
        protected FileObject getTargetDir(FileObject projectDir, CreateProjectProperties projectProperties) {
101
            return projectDir;
101
            return projectDir;
102
        }
102
        }
103
    }
103
    }
(-)a/web.client.samples/src/org/netbeans/modules/web/client/samples/BackboneHelloWorld.java (-3 / +3 lines)
Lines 44-50 Link Here
44
44
45
import org.netbeans.api.templates.TemplateRegistration;
45
import org.netbeans.api.templates.TemplateRegistration;
46
import org.netbeans.modules.web.client.samples.wizard.iterator.OnlineSampleWizardIterator;
46
import org.netbeans.modules.web.client.samples.wizard.iterator.OnlineSampleWizardIterator;
47
import org.netbeans.modules.web.clientproject.spi.SiteTemplateImplementation;
47
import org.netbeans.modules.web.client.samples.wizard.iterator.OnlineSiteTemplate;
48
import org.openide.util.NbBundle;
48
import org.openide.util.NbBundle;
49
49
50
/**
50
/**
Lines 64-71 Link Here
64
public class BackboneHelloWorld extends OnlineSampleWizardIterator {
64
public class BackboneHelloWorld extends OnlineSampleWizardIterator {
65
65
66
    @Override
66
    @Override
67
    protected SiteTemplateImplementation getSiteTemplate() {
67
    protected OnlineSiteTemplate getSiteTemplate() {
68
        return new OnlineSiteTemplate("BACKBONE-HELLO-WORLD", getProjectName(), getProjectZipURL(), "hello-backbonejs-gh-pages.zip"); // NOI18N
68
        return new OnlineSiteTemplate(getProjectName(), getProjectZipURL(), "hello-backbonejs-gh-pages.zip"); // NOI18N
69
    }
69
    }
70
70
71
    @Override
71
    @Override
(-)a/web.client.samples/src/org/netbeans/modules/web/client/samples/BackboneJQueryMobile.java (-3 / +3 lines)
Lines 44-50 Link Here
44
44
45
import org.netbeans.api.templates.TemplateRegistration;
45
import org.netbeans.api.templates.TemplateRegistration;
46
import org.netbeans.modules.web.client.samples.wizard.iterator.OnlineSampleWizardIterator;
46
import org.netbeans.modules.web.client.samples.wizard.iterator.OnlineSampleWizardIterator;
47
import org.netbeans.modules.web.clientproject.spi.SiteTemplateImplementation;
47
import org.netbeans.modules.web.client.samples.wizard.iterator.OnlineSiteTemplate;
48
import org.openide.util.NbBundle;
48
import org.openide.util.NbBundle;
49
49
50
/**
50
/**
Lines 64-71 Link Here
64
public class BackboneJQueryMobile extends OnlineSampleWizardIterator {
64
public class BackboneJQueryMobile extends OnlineSampleWizardIterator {
65
65
66
    @Override
66
    @Override
67
    protected SiteTemplateImplementation getSiteTemplate() {
67
    protected OnlineSiteTemplate getSiteTemplate() {
68
        return new OnlineSiteTemplate("BACKBONE-JQUERY-MOBILE", getProjectName(), getProjectZipURL(), "backbone-jquerymobile-master.zip"); // NOI18N
68
        return new OnlineSiteTemplate(getProjectName(), getProjectZipURL(), "backbone-jquerymobile-master.zip"); // NOI18N
69
    }
69
    }
70
70
71
    @Override
71
    @Override
(-)a/web.client.samples/src/org/netbeans/modules/web/client/samples/BackboneWineCellar.java (-7 / +8 lines)
Lines 44-50 Link Here
44
44
45
import org.netbeans.api.templates.TemplateRegistration;
45
import org.netbeans.api.templates.TemplateRegistration;
46
import org.netbeans.modules.web.client.samples.wizard.iterator.OnlineSampleWizardIterator;
46
import org.netbeans.modules.web.client.samples.wizard.iterator.OnlineSampleWizardIterator;
47
import org.netbeans.modules.web.clientproject.spi.SiteTemplateImplementation;
47
import org.netbeans.modules.web.client.samples.wizard.iterator.OnlineSiteTemplate;
48
import org.netbeans.modules.web.clientproject.createprojectapi.CreateProjectProperties;
48
import org.openide.filesystems.FileObject;
49
import org.openide.filesystems.FileObject;
49
import org.openide.util.NbBundle;
50
import org.openide.util.NbBundle;
50
51
Lines 65-72 Link Here
65
public class BackboneWineCellar extends OnlineSampleWizardIterator {
66
public class BackboneWineCellar extends OnlineSampleWizardIterator {
66
67
67
    @Override
68
    @Override
68
    protected SiteTemplateImplementation getSiteTemplate() {
69
    protected OnlineSiteTemplate getSiteTemplate() {
69
        return new BackboneWineCellarTemplate("BACKBONE-WINE-CELLAR", getProjectName(), getProjectZipURL(), "backbone-cellar-master.zip"); // NOI18N
70
        return new BackboneWineCellarTemplate(getProjectName(), getProjectZipURL(), "backbone-cellar-master.zip"); // NOI18N
70
    }
71
    }
71
72
72
    @Override
73
    @Override
Lines 81-97 Link Here
81
82
82
    private static class BackboneWineCellarTemplate extends OnlineSiteTemplate {
83
    private static class BackboneWineCellarTemplate extends OnlineSiteTemplate {
83
84
84
        public BackboneWineCellarTemplate(String id, String name, String url, String zipName) {
85
        public BackboneWineCellarTemplate(String name, String url, String zipName) {
85
            super(id, name, url, zipName);
86
            super(name, url, zipName);
86
        }
87
        }
87
88
88
        @Override
89
        @Override
89
        public void configure(SiteTemplateImplementation.ProjectProperties projectProperties) {
90
        public void configure(CreateProjectProperties projectProperties) {
90
            projectProperties.setSiteRootFolder("bootstrap"); // NOI18N
91
            projectProperties.setSiteRootFolder("bootstrap"); // NOI18N
91
        }
92
        }
92
93
93
        @Override
94
        @Override
94
        protected FileObject getTargetDir(FileObject projectDir, ProjectProperties projectProperties) {
95
        protected FileObject getTargetDir(FileObject projectDir, CreateProjectProperties projectProperties) {
95
            return projectDir;
96
            return projectDir;
96
        }
97
        }
97
    }
98
    }
(-)a/web.client.samples/src/org/netbeans/modules/web/client/samples/EmberJSTrek.java (-3 / +3 lines)
Lines 44-50 Link Here
44
44
45
import org.netbeans.api.templates.TemplateRegistration;
45
import org.netbeans.api.templates.TemplateRegistration;
46
import org.netbeans.modules.web.client.samples.wizard.iterator.OnlineSampleWizardIterator;
46
import org.netbeans.modules.web.client.samples.wizard.iterator.OnlineSampleWizardIterator;
47
import org.netbeans.modules.web.clientproject.spi.SiteTemplateImplementation;
47
import org.netbeans.modules.web.client.samples.wizard.iterator.OnlineSiteTemplate;
48
import org.openide.util.NbBundle;
48
import org.openide.util.NbBundle;
49
49
50
/**
50
/**
Lines 64-71 Link Here
64
public class EmberJSTrek extends OnlineSampleWizardIterator {
64
public class EmberJSTrek extends OnlineSampleWizardIterator {
65
65
66
    @Override
66
    @Override
67
    protected SiteTemplateImplementation getSiteTemplate() {
67
    protected OnlineSiteTemplate getSiteTemplate() {
68
        return new OnlineSiteTemplate("EMBER-JS-TREK", getProjectName(), getProjectZipURL(), "trek-ember-tutorial-master.zip"); // NOI18N
68
        return new OnlineSiteTemplate(getProjectName(), getProjectZipURL(), "trek-ember-tutorial-master.zip"); // NOI18N
69
    }
69
    }
70
70
71
    @Override
71
    @Override
(-)a/web.client.samples/src/org/netbeans/modules/web/client/samples/KnockoutJSGameList.java (-7 / +8 lines)
Lines 44-50 Link Here
44
44
45
import org.netbeans.api.templates.TemplateRegistration;
45
import org.netbeans.api.templates.TemplateRegistration;
46
import org.netbeans.modules.web.client.samples.wizard.iterator.OnlineSampleWizardIterator;
46
import org.netbeans.modules.web.client.samples.wizard.iterator.OnlineSampleWizardIterator;
47
import org.netbeans.modules.web.clientproject.spi.SiteTemplateImplementation;
47
import org.netbeans.modules.web.client.samples.wizard.iterator.OnlineSiteTemplate;
48
import org.netbeans.modules.web.clientproject.createprojectapi.CreateProjectProperties;
48
import org.openide.filesystems.FileObject;
49
import org.openide.filesystems.FileObject;
49
import org.openide.util.NbBundle;
50
import org.openide.util.NbBundle;
50
51
Lines 65-72 Link Here
65
public class KnockoutJSGameList extends OnlineSampleWizardIterator {
66
public class KnockoutJSGameList extends OnlineSampleWizardIterator {
66
67
67
    @Override
68
    @Override
68
    protected SiteTemplateImplementation getSiteTemplate() {
69
    protected OnlineSiteTemplate getSiteTemplate() {
69
        return new KnockoutJSGameListTemplate("KNOCKOUT-JS-GAME-LIST", getProjectName(), getProjectZipURL(), "KnockoutJS.Tips-master.zip"); // NOI18N
70
        return new KnockoutJSGameListTemplate(getProjectName(), getProjectZipURL(), "KnockoutJS.Tips-master.zip"); // NOI18N
70
    }
71
    }
71
72
72
    @Override
73
    @Override
Lines 86-102 Link Here
86
87
87
    private static class KnockoutJSGameListTemplate extends OnlineSiteTemplate {
88
    private static class KnockoutJSGameListTemplate extends OnlineSiteTemplate {
88
89
89
        public KnockoutJSGameListTemplate(String id, String name, String url, String zipName) {
90
        public KnockoutJSGameListTemplate(String name, String url, String zipName) {
90
            super(id, name, url, zipName);
91
            super(name, url, zipName);
91
        }
92
        }
92
93
93
        @Override
94
        @Override
94
        public void configure(SiteTemplateImplementation.ProjectProperties projectProperties) {
95
        public void configure(CreateProjectProperties projectProperties) {
95
            projectProperties.setSiteRootFolder("src"); // NOI18N
96
            projectProperties.setSiteRootFolder("src"); // NOI18N
96
        }
97
        }
97
98
98
        @Override
99
        @Override
99
        protected FileObject getTargetDir(FileObject projectDir, SiteTemplateImplementation.ProjectProperties projectProperties) {
100
        protected FileObject getTargetDir(FileObject projectDir, CreateProjectProperties projectProperties) {
100
            return projectDir;
101
            return projectDir;
101
        }
102
        }
102
    }
103
    }
(-)a/web.client.samples/src/org/netbeans/modules/web/client/samples/wizard/iterator/OnlineSampleWizardIterator.java (-114 / +27 lines)
Lines 48-69 Link Here
48
import java.util.LinkedHashSet;
48
import java.util.LinkedHashSet;
49
import java.util.Set;
49
import java.util.Set;
50
import org.netbeans.api.progress.ProgressHandle;
50
import org.netbeans.api.progress.ProgressHandle;
51
import org.netbeans.api.project.FileOwnerQuery;
51
import org.netbeans.api.project.Project;
52
import org.netbeans.api.project.ProjectManager;
53
import org.netbeans.modules.web.client.samples.wizard.WizardConstants;
52
import org.netbeans.modules.web.client.samples.wizard.WizardConstants;
54
import org.netbeans.modules.web.client.samples.wizard.ui.OnlineSamplePanel;
53
import org.netbeans.modules.web.client.samples.wizard.ui.OnlineSamplePanel;
55
import org.netbeans.modules.web.clientproject.ClientSideProject;
54
import org.netbeans.modules.web.clientproject.createprojectapi.ClientSideProjectGenerator;
56
import org.netbeans.modules.web.clientproject.ClientSideProjectConstants;
55
import org.netbeans.modules.web.clientproject.createprojectapi.CreateProjectProperties;
57
import org.netbeans.modules.web.clientproject.ClientSideProjectType;
58
import org.netbeans.modules.web.clientproject.sites.OnlineSites;
59
import org.netbeans.modules.web.clientproject.sites.SiteHelper;
60
import org.netbeans.modules.web.clientproject.spi.ClientProjectExtender;
61
import org.netbeans.modules.web.clientproject.spi.SiteTemplateImplementation;
62
import org.netbeans.modules.web.clientproject.spi.SiteTemplateImplementation.ProjectProperties;
63
import org.netbeans.modules.web.clientproject.util.ClientSideProjectUtilities;
64
import org.netbeans.spi.project.support.ant.AntProjectHelper;
65
import org.netbeans.spi.project.support.ant.EditableProperties;
66
import org.netbeans.spi.project.support.ant.ProjectGenerator;
67
import org.netbeans.spi.project.ui.support.ProjectChooser;
56
import org.netbeans.spi.project.ui.support.ProjectChooser;
68
import org.openide.DialogDisplayer;
57
import org.openide.DialogDisplayer;
69
import org.openide.NotifyDescriptor;
58
import org.openide.NotifyDescriptor;
Lines 71-81 Link Here
71
import org.openide.WizardDescriptor.Panel;
60
import org.openide.WizardDescriptor.Panel;
72
import org.openide.filesystems.FileObject;
61
import org.openide.filesystems.FileObject;
73
import org.openide.filesystems.FileUtil;
62
import org.openide.filesystems.FileUtil;
74
import org.openide.util.Lookup;
75
import org.openide.util.NbBundle;
63
import org.openide.util.NbBundle;
76
import org.w3c.dom.Document;
77
import org.w3c.dom.Element;
78
import org.w3c.dom.NodeList;
79
64
80
/**
65
/**
81
 *
66
 *
Lines 89-111 Link Here
89
    protected OnlineSampleWizardIterator() {
74
    protected OnlineSampleWizardIterator() {
90
    }
75
    }
91
76
92
    protected abstract SiteTemplateImplementation getSiteTemplate();
77
    protected abstract OnlineSiteTemplate getSiteTemplate();
93
    protected abstract String getProjectName();
78
    protected abstract String getProjectName();
94
    protected abstract String getProjectZipURL();
79
    protected abstract String getProjectZipURL();
95
80
96
81
97
    public static class OnlineSiteTemplate extends OnlineSites {
98
99
        public OnlineSiteTemplate(String id, String name, String url, String zipName) {
100
            this(id, name, "", url, zipName); // NOI18N
101
        }
102
103
        public OnlineSiteTemplate(String id, String name, String description, String url, String zipName) {
104
            super(id, name, description, url, new File(SiteHelper.getJsLibsDirectory(), zipName));
105
        }
106
    }
107
108
109
    @Override
82
    @Override
110
    protected Panel[] createPanels(WizardDescriptor wizard) {
83
    protected Panel[] createPanels(WizardDescriptor wizard) {
111
        wizard.putProperty(WizardConstants.SAMPLE_PROJECT_NAME, getProjectName());
84
        wizard.putProperty(WizardConstants.SAMPLE_PROJECT_NAME, getProjectName());
Lines 132-138 Link Here
132
     */
105
     */
133
106
134
    @NbBundle.Messages({
107
    @NbBundle.Messages({
135
        "OnlineSampleWizardIterator.creatingProject=Creating project..."
108
        "OnlineSampleWizardIterator.creatingProject=Creating project...",
109
        "OnlineSampleWizardIterator.applyingTemplate=Applying template..."
136
    })
110
    })
137
    @Override
111
    @Override
138
    public Set instantiate(ProgressHandle handle) throws IOException {
112
    public Set instantiate(ProgressHandle handle) throws IOException {
Lines 148-170 Link Here
148
        }
122
        }
149
        final FileObject projectDirFO = FileUtil.toFileObject(projectDir);
123
        final FileObject projectDirFO = FileUtil.toFileObject(projectDir);
150
124
151
        AntProjectHelper projectHelper = ProjectGenerator.createProject(projectDirFO, ClientSideProjectType.TYPE);
125
        CreateProjectProperties props = new CreateProjectProperties();
152
        setProjectName(projectHelper, name);
126
        props.setProjectDir(projectDirFO);
127
        props.setProjectName(name);
128
        props.setStartFile(getStartFile());
129
130
        OnlineSiteTemplate siteTemplate = getSiteTemplate();
131
        if (siteTemplate != null) {
132
            siteTemplate.configure(props);
133
        }
134
135
        Project project = ClientSideProjectGenerator.createProject(props);
153
136
154
        // Always open top dir as a project:
137
        // Always open top dir as a project:
155
        files.add(projectDirFO);
138
        files.add(projectDirFO);
156
139
157
        ClientSideProject project = (ClientSideProject) FileOwnerQuery.getOwner(projectHelper.getProjectDirectory());
140
        if (siteTemplate != null) {
141
            handle.progress(Bundle.OnlineSampleWizardIterator_applyingTemplate());
142
            applySiteTemplate(project.getProjectDirectory(), props, siteTemplate, handle);
143
        }
158
144
159
        // Setting start file
145
        FileObject siteRoot = project.getProjectDirectory().getFileObject(props.getSiteRootFolder());
160
        EditableProperties properties = projectHelper.getProperties(AntProjectHelper.PROJECT_PROPERTIES_PATH);
146
        assert siteRoot != null;
161
        properties.put(ClientSideProjectConstants.PROJECT_START_FILE, getStartFile());
147
        FileObject startFile = siteRoot.getFileObject(props.getStartFile()); // NOI18N
162
        projectHelper.putProperties(AntProjectHelper.PROJECT_PROPERTIES_PATH, properties);
163
164
        FileObject siteRoot = instantiate(handle, descriptor, project);
165
166
        // start file
167
        FileObject startFile = siteRoot.getFileObject(getStartFile()); // NOI18N
168
        if (startFile != null) {
148
        if (startFile != null) {
169
            files.add(startFile);
149
            files.add(startFile);
170
        }
150
        }
Lines 182-268 Link Here
182
        return "index.html";
162
        return "index.html";
183
    }
163
    }
184
164
185
    private void setProjectName(final AntProjectHelper projectHelper, final String name) {
186
        ProjectManager.mutex().writeAccess(new Runnable() {
187
            @Override
188
            public void run() {
189
                Element data = projectHelper.getPrimaryConfigurationData(true);
190
                Document document = data.getOwnerDocument();
191
                NodeList nameList = data.getElementsByTagNameNS(ClientSideProjectType.PROJECT_CONFIGURATION_NAMESPACE, "name"); // NOI18N
192
                Element nameElement;
193
                if (nameList.getLength() == 1) {
194
                    nameElement = (Element) nameList.item(0);
195
                    NodeList deadKids = nameElement.getChildNodes();
196
                    while (deadKids.getLength() > 0) {
197
                        nameElement.removeChild(deadKids.item(0));
198
                    }
199
                } else {
200
                    nameElement = document.createElementNS(ClientSideProjectType.PROJECT_CONFIGURATION_NAMESPACE, "name"); // NOI18N
201
                    data.insertBefore(nameElement, data.getChildNodes().item(0));
202
                }
203
                nameElement.appendChild(document.createTextNode(name));
204
                projectHelper.putPrimaryConfigurationData(data, true);
205
            }
206
        });
207
    }
208
209
    @NbBundle.Messages({
210
        "OnlineSampleWizardIterator.applyingTemplate=Applying template..."
211
    })
212
    private FileObject instantiate(ProgressHandle handle, WizardDescriptor wizardDescriptor, ClientSideProject project) throws IOException {
213
        AntProjectHelper projectHelper = project.getProjectHelper();
214
        SiteTemplateImplementation siteTemplate = getSiteTemplate();
215
216
        ProjectProperties projectProperties = new ProjectProperties();
217
        projectProperties.setSiteRootFolder(ClientSideProjectConstants.DEFAULT_SITE_ROOT_FOLDER);
218
        projectProperties.setTestFolder(ClientSideProjectConstants.DEFAULT_TEST_FOLDER);
219
        projectProperties.setConfigFolder(ClientSideProjectConstants.DEFAULT_CONFIG_FOLDER);
220
221
        if (siteTemplate != null) {
222
            siteTemplate.configure(projectProperties);
223
            initProject(project, projectProperties);
224
225
            handle.progress(Bundle.OnlineSampleWizardIterator_applyingTemplate());
226
            applySiteTemplate(projectHelper.getProjectDirectory(), projectProperties, siteTemplate, handle);
227
        } else {
228
            // init standard project
229
            initProject(project, projectProperties);
230
        }
231
232
        // get application dir:
233
        FileObject siteRootDir = project.getSiteRootFolder();
234
        assert siteRootDir != null;
235
236
        // apply extenders
237
        //no extenders for online samples
238
//        for (ClientProjectExtender extender : Lookup.getDefault().lookupAll(ClientProjectExtender.class)) {
239
//            extender.apply(project.getProjectDirectory(), siteRootDir, (String) wizardDescriptor.getProperty(LIBRARIES_PATH));
240
//        }
241
242
        return siteRootDir;
243
    }
244
245
    private void initProject(ClientSideProject project, SiteTemplateImplementation.ProjectProperties properties) throws IOException {
246
        ClientSideProjectUtilities.initializeProject(project,
247
                properties.getSiteRootFolder(),
248
                properties.getTestFolder(),
249
                properties.getConfigFolder());
250
    }
251
252
    @NbBundle.Messages({
165
    @NbBundle.Messages({
253
        "# {0} - template name",
166
        "# {0} - template name",
254
        "OnlineSampleWizardIterator.error.applyingSiteTemplate=Cannot apply template \"{0}\"."
167
        "OnlineSampleWizardIterator.error.applyingSiteTemplate=Cannot apply template \"{0}\"."
255
    })
168
    })
256
    private void applySiteTemplate(
169
    private void applySiteTemplate(
257
            final FileObject projectDir,
170
            final FileObject projectDir,
258
            final SiteTemplateImplementation.ProjectProperties projectProperties,
171
            final CreateProjectProperties props,
259
            final SiteTemplateImplementation siteTemplate,
172
            final OnlineSiteTemplate siteTemplate,
260
            final ProgressHandle handle) {
173
            final ProgressHandle handle) {
261
174
262
        assert !EventQueue.isDispatchThread();
175
        assert !EventQueue.isDispatchThread();
263
        final String templateName = siteTemplate.getName();
176
        final String templateName = siteTemplate.getName();
264
        try {
177
        try {
265
            siteTemplate.apply(projectDir, projectProperties, handle);
178
            siteTemplate.apply(projectDir, props, handle);
266
        } catch (IOException ex) {
179
        } catch (IOException ex) {
267
            errorOccured(Bundle.OnlineSampleWizardIterator_error_applyingSiteTemplate(templateName));
180
            errorOccured(Bundle.OnlineSampleWizardIterator_error_applyingSiteTemplate(templateName));
268
        }
181
        }
(-)a/web.clientproject/src/org/netbeans/modules/web/clientproject/sites/OnlineSites.java (-154 / +14 lines)
Lines 39-113 Link Here
39
 *
39
 *
40
 * Portions Copyrighted 2012 Sun Microsystems, Inc.
40
 * Portions Copyrighted 2012 Sun Microsystems, Inc.
41
 */
41
 */
42
package org.netbeans.modules.web.clientproject.sites;
42
package org.netbeans.modules.web.client.samples.wizard.iterator;
43
43
44
import org.netbeans.modules.web.clientproject.api.sites.SiteHelper;
44
import java.awt.EventQueue;
45
import java.awt.EventQueue;
45
import java.io.File;
46
import java.io.File;
46
import java.io.IOException;
47
import java.io.IOException;
47
import java.util.Collection;
48
import java.util.logging.Logger;
48
import java.util.logging.Logger;
49
import org.netbeans.api.progress.ProgressHandle;
49
import org.netbeans.api.progress.ProgressHandle;
50
import org.netbeans.modules.web.clientproject.spi.SiteTemplateImplementation;
50
import org.netbeans.modules.web.clientproject.api.network.NetworkException;
51
import org.netbeans.modules.web.clientproject.util.FileUtilities;
51
import org.netbeans.modules.web.clientproject.api.network.NetworkSupport;
52
import org.netbeans.modules.web.clientproject.createprojectapi.CreateProjectProperties;
52
import org.openide.filesystems.FileObject;
53
import org.openide.filesystems.FileObject;
53
import org.openide.util.NbBundle;
54
import org.openide.util.lookup.ServiceProvider;
55
54
56
55
57
public abstract class OnlineSites implements SiteTemplateImplementation {
56
public class OnlineSiteTemplate {
58
57
59
    private static final Logger LOGGER = Logger.getLogger(OnlineSites.class.getName());
58
    private static final Logger LOGGER = Logger.getLogger(OnlineSiteTemplate.class.getName());
60
59
61
    private final String name;
60
    private final String name;
62
    private final String url;
61
    private final String url;
63
    private final File libFile;
62
    private final File libFile;
64
    private final String description;
65
    private final String id;
66
63
67
64
    public OnlineSiteTemplate(String name, String url, String zipName) {
68
69
    protected OnlineSites(String id, String name, String description, String url, File libFile) {
70
        this.id = id;
71
        this.name = name;
65
        this.name = name;
72
        this.description = description;
73
        this.url = url;
66
        this.url = url;
74
        this.libFile = libFile;
67
        this.libFile = new File(SiteHelper.getJsLibsDirectory(), zipName);
75
    }
68
    }
76
69
77
    @Override
78
    public String getId() {
79
        return id;
80
    }
81
82
    @Override
83
    public String getName() {
70
    public String getName() {
84
        return name;
71
        return name;
85
    }
72
    }
86
73
87
    @Override
88
    public String getDescription() {
89
        return description;
90
    }
91
92
    @Override
93
    public boolean isPrepared() {
74
    public boolean isPrepared() {
94
        return libFile.isFile();
75
        return libFile.isFile();
95
    }
76
    }
96
77
97
    @Override
78
    public void prepare() throws NetworkException, IOException, InterruptedException {
98
    public void prepare() throws IOException {
99
        assert !EventQueue.isDispatchThread();
79
        assert !EventQueue.isDispatchThread();
100
        assert !isPrepared();
80
        assert !isPrepared();
101
        SiteHelper.download(url, libFile, null);
81
        NetworkSupport.download(url, libFile);
102
    }
82
    }
103
83
104
    @Override
84
    public void configure(CreateProjectProperties projectProperties) {
105
    public void configure(ProjectProperties projectProperties) {
106
        // noop by default
107
    }
85
    }
108
86
109
    @Override
87
    public final void apply(FileObject projectDir, CreateProjectProperties projectProperties, ProgressHandle handle) throws IOException {
110
    public final void apply(FileObject projectDir, ProjectProperties projectProperties, ProgressHandle handle) throws IOException {
111
        assert !EventQueue.isDispatchThread();
88
        assert !EventQueue.isDispatchThread();
112
        if (!isPrepared()) {
89
        if (!isPrepared()) {
113
            // not correctly prepared, user has to know about it already
90
            // not correctly prepared, user has to know about it already
Lines 117-241 Link Here
117
        SiteHelper.unzipProjectTemplate(getTargetDir(projectDir, projectProperties), libFile, handle);
94
        SiteHelper.unzipProjectTemplate(getTargetDir(projectDir, projectProperties), libFile, handle);
118
    }
95
    }
119
96
120
    protected FileObject getTargetDir(FileObject projectDir, ProjectProperties projectProperties) {
97
    protected FileObject getTargetDir(FileObject projectDir, CreateProjectProperties projectProperties) {
121
        // by default, extract template to site root
98
        // by default, extract template to site root
122
        return projectDir.getFileObject(projectProperties.getSiteRootFolder());
99
        return projectDir.getFileObject(projectProperties.getSiteRootFolder());
123
    }
100
    }
124
125
    @Override
126
    public Collection<String> supportedLibraries() {
127
        return SiteHelper.stripRootFolder(FileUtilities.listJsFilesFromZipFile(libFile));
128
    }
129
130
    //~ Inner classes
131
132
    @ServiceProvider(service=SiteTemplateImplementation.class, position=150)
133
    public static class SiteAngularJsSeed extends OnlineSites {
134
135
        private static final String SITE_ROOT_FOLDER = "app"; // NOI18N
136
        private static final String TEST_FOLDER = "test"; // NOI18N
137
        private static final String CONFIG_FOLDER = "config"; // NOI18N
138
139
140
        @NbBundle.Messages({"SiteAngularJsSeed.name=AngularJS Seed",
141
                "SiteAngularJsSeed.description=Site template for AngularJS projects."})
142
        public SiteAngularJsSeed() {
143
            super("ANGULAR", Bundle.SiteAngularJsSeed_name(), Bundle.SiteAngularJsSeed_description(), // NOI18N
144
                    "https://github.com/angular/angular-seed/zipball/master", // NOI18N
145
                    new File(SiteHelper.getJsLibsDirectory(), "angularjs-seed.zip")); // NOI18N
146
        }
147
148
        @Override
149
        public void configure(ProjectProperties projectProperties) {
150
            projectProperties.setSiteRootFolder(SITE_ROOT_FOLDER)
151
                    .setTestFolder(TEST_FOLDER)
152
                    .setConfigFolder(CONFIG_FOLDER);
153
        }
154
155
        @Override
156
        protected FileObject getTargetDir(FileObject projectDir, ProjectProperties projectProperties) {
157
            return projectDir;
158
        }
159
160
    }
161
162
    @NbBundle.Messages("SiteInitializr.description=Site template from initializr.com.")
163
    @ServiceProvider(service=SiteTemplateImplementation.class, position=200)
164
    public static class BootstrapSiteInitializr extends OnlineSites {
165
166
        @NbBundle.Messages("BootstrapSiteInitializr.name=Initializr: Bootstrap")
167
        public BootstrapSiteInitializr() {
168
            super("BOOTSTRAP", Bundle.BootstrapSiteInitializr_name(), // NOI18N
169
                    Bundle.SiteInitializr_description(),
170
                    "http://www.initializr.com/builder?boot-hero&jquerydev&h5bp-iecond&h5bp-chromeframe&h5bp-analytics&h5bp-favicon&h5bp-appletouchicons&modernizrrespond&izr-emptyscript&boot-css&boot-scripts", // NOI18N
171
                    new File(SiteHelper.getJsLibsDirectory(), "initializr-bootstrap-latest.zip")); // NOI18N
172
        }
173
174
    }
175
176
    @ServiceProvider(service=SiteTemplateImplementation.class, position=210)
177
    public static class ClassicSiteInitializr extends OnlineSites {
178
179
        @NbBundle.Messages("ClassicSiteInitializr.name=Initializr: Classic")
180
        public ClassicSiteInitializr() {
181
            super("INIT.CLASSIC", Bundle.ClassicSiteInitializr_name(), // NOI18N
182
                Bundle.SiteInitializr_description(),
183
                "http://www.initializr.com/builder?h5bp-content&modernizr&jquerydev&h5bp-iecond&h5bp-chromeframe&h5bp-analytics&h5bp-htaccess&h5bp-favicon&h5bp-appletouchicons&h5bp-scripts&h5bp-robots&h5bp-humans&h5bp-404&h5bp-adobecrossdomain&h5bp-css&h5bp-csshelpers&h5bp-mediaqueryprint&h5bp-mediaqueries", // NOI18N
184
                    new File(SiteHelper.getJsLibsDirectory(), "initializr-classic-latest.zip")); // NOI18N
185
        }
186
187
    }
188
189
    @ServiceProvider(service=SiteTemplateImplementation.class, position=220)
190
    public static class ResponsiveSiteInitializr extends OnlineSites {
191
192
        @NbBundle.Messages("ResponsiveSiteInitializr.name=Initializr: Responsive")
193
        public ResponsiveSiteInitializr() {
194
            super("INIT.RESP", Bundle.ResponsiveSiteInitializr_name(), // NOI18N
195
                    Bundle.SiteInitializr_description(),
196
                    "http://www.initializr.com/builder?izr-responsive&jquerydev&h5bp-iecond&h5bp-chromeframe&h5bp-analytics&h5bp-favicon&h5bp-appletouchicons&modernizrrespond&h5bp-css&h5bp-csshelpers&h5bp-mediaqueryprint&izr-emptyscript", // NOI18N
197
                    new File(SiteHelper.getJsLibsDirectory(), "initializr-responsive-latest.zip")); // NOI18N
198
        }
199
200
    }
201
202
    @ServiceProvider(service=SiteTemplateImplementation.class, position=300)
203
    public static class SiteHtml5BoilerplateV4 extends OnlineSites {
204
205
        @NbBundle.Messages({"SiteHtml5BoilerplateV4.name=HTML5 Boilerplate v4.0.0",
206
                "SiteHtml5BoilerplateV4.description=Site template from html5boilerplate.com. Version: 4.0.0"})
207
        public SiteHtml5BoilerplateV4() {
208
            super("INIT.BOILER4", Bundle.SiteHtml5BoilerplateV4_name(), Bundle.SiteHtml5BoilerplateV4_description(), // NOI18N
209
                    "https://github.com/h5bp/html5-boilerplate/zipball/v4.0.0", // NOI18N
210
                    new File(SiteHelper.getJsLibsDirectory(), "html5-boilerplate-400.zip")); // NOI18N
211
        }
212
213
    }
214
215
    @ServiceProvider(service=SiteTemplateImplementation.class, position=320)
216
    public static class SiteHtml5BoilerplateV3 extends OnlineSites {
217
218
        @NbBundle.Messages({"SiteHtml5Boilerplate.name=HTML5 Boilerplate v3.0.2",
219
                "SiteHtml5Boilerplate.description=Site template from html5boilerplate.com. Version: 3.0.2"})
220
        public SiteHtml5BoilerplateV3() {
221
            super("INIT.BOILER3", Bundle.SiteHtml5Boilerplate_name(), Bundle.SiteHtml5Boilerplate_description(), // NOI18N
222
                    "https://github.com/h5bp/html5-boilerplate/zipball/v3.0.2", // NOI18N
223
                    new File(SiteHelper.getJsLibsDirectory(), "html5-boilerplate-302.zip")); // NOI18N
224
        }
225
226
    }
227
228
    @ServiceProvider(service=SiteTemplateImplementation.class, position=400)
229
    public static class SiteTwitterBootstrap extends OnlineSites {
230
231
        @NbBundle.Messages({"SiteTwitterBootstrap.name=Twitter Bootstrap",
232
                "SiteTwitterBootstrap.description=Site template from twitter.github.com/bootstrap"})
233
        public SiteTwitterBootstrap() {
234
            super("TWITTER", Bundle.SiteTwitterBootstrap_name(), Bundle.SiteTwitterBootstrap_description(), // NOI18N
235
                    "http://twitter.github.com/bootstrap/assets/bootstrap.zip", // NOI18N
236
                    new File(SiteHelper.getJsLibsDirectory(), "twitter-bootstrap.zip")); // NOI18N
237
        }
238
239
    }
240
241
}
101
}
(-)a/web.client.samples/src/org/netbeans/modules/web/client/samples/wizard/iterator/SampleWizardIterator.java (-1 lines)
Lines 44-50 Link Here
44
44
45
import java.io.BufferedReader;
45
import java.io.BufferedReader;
46
import java.io.FileInputStream;
46
import java.io.FileInputStream;
47
import java.io.FileReader;
48
import java.io.IOException;
47
import java.io.IOException;
49
import java.io.InputStream;
48
import java.io.InputStream;
50
import java.io.InputStreamReader;
49
import java.io.InputStreamReader;
(-)a/web.client.samples/src/org/netbeans/modules/web/client/samples/wizard/ui/OnlineSampleVisualPanel.java (-3 / +6 lines)
Lines 53-66 Link Here
53
import org.netbeans.api.progress.ProgressHandle;
53
import org.netbeans.api.progress.ProgressHandle;
54
import org.netbeans.api.progress.ProgressHandleFactory;
54
import org.netbeans.api.progress.ProgressHandleFactory;
55
import org.netbeans.modules.web.client.samples.wizard.WizardConstants;
55
import org.netbeans.modules.web.client.samples.wizard.WizardConstants;
56
import org.netbeans.modules.web.client.samples.wizard.iterator.OnlineSiteTemplate;
56
import org.netbeans.modules.web.clientproject.api.network.NetworkException;
57
import org.netbeans.modules.web.clientproject.api.network.NetworkException;
57
import org.netbeans.modules.web.clientproject.api.network.NetworkSupport;
58
import org.netbeans.modules.web.clientproject.api.network.NetworkSupport;
58
import org.netbeans.modules.web.clientproject.spi.SiteTemplateImplementation;
59
import org.netbeans.modules.web.clientproject.api.util.ValidationUtilities;
59
import org.netbeans.modules.web.clientproject.util.ValidationUtilities;
60
import org.netbeans.spi.project.ui.support.ProjectChooser;
60
import org.netbeans.spi.project.ui.support.ProjectChooser;
61
import org.openide.WizardDescriptor;
61
import org.openide.WizardDescriptor;
62
import org.openide.filesystems.FileChooserBuilder;
62
import org.openide.filesystems.FileChooserBuilder;
63
import org.openide.filesystems.FileUtil;
63
import org.openide.filesystems.FileUtil;
64
import org.openide.util.Exceptions;
64
import org.openide.util.NbBundle;
65
import org.openide.util.NbBundle;
65
66
66
/**
67
/**
Lines 184-190 Link Here
184
    public String prepareTemplate() {
185
    public String prepareTemplate() {
185
        assert !EventQueue.isDispatchThread();
186
        assert !EventQueue.isDispatchThread();
186
187
187
        final SiteTemplateImplementation siteTemplate = (SiteTemplateImplementation) descriptor.getProperty(WizardConstants.SAMPLE_TEMPLATE);
188
        final OnlineSiteTemplate siteTemplate = (OnlineSiteTemplate) descriptor.getProperty(WizardConstants.SAMPLE_TEMPLATE);
188
        final String templateName = siteTemplate.getName();
189
        final String templateName = siteTemplate.getName();
189
190
190
        if (siteTemplate.isPrepared()) {
191
        if (siteTemplate.isPrepared()) {
Lines 202-207 Link Here
202
                    if (!NetworkSupport.showNetworkErrorDialog(ex.getFailedRequests())) {
203
                    if (!NetworkSupport.showNetworkErrorDialog(ex.getFailedRequests())) {
203
                        return Bundle.SiteTemplateWizard_error_preparing(templateName);
204
                        return Bundle.SiteTemplateWizard_error_preparing(templateName);
204
                    }
205
                    }
206
                } catch (InterruptedException ex) {
207
                    return Bundle.SiteTemplateWizard_error_preparing(templateName);
205
                }
208
                }
206
            }
209
            }
207
        } catch (IOException ex) {
210
        } catch (IOException ex) {
(-)a/web.clientproject.api/manifest.mf (-1 / +1 lines)
Lines 1-5 Link Here
1
Manifest-Version: 1.0
1
Manifest-Version: 1.0
2
OpenIDE-Module: org.netbeans.modules.web.clientproject.api
2
OpenIDE-Module: org.netbeans.modules.web.clientproject.api
3
OpenIDE-Module-Localizing-Bundle: org/netbeans/modules/web/clientproject/api/Bundle.properties
3
OpenIDE-Module-Localizing-Bundle: org/netbeans/modules/web/clientproject/api/Bundle.properties
4
OpenIDE-Module-Specification-Version: 1.36
4
OpenIDE-Module-Specification-Version: 1.37
5
5
(-)a/web.clientproject.api/nbproject/project.xml (+1 lines)
Lines 208-213 Link Here
208
                <package>org.netbeans.modules.web.clientproject.api.network</package>
208
                <package>org.netbeans.modules.web.clientproject.api.network</package>
209
                <package>org.netbeans.modules.web.clientproject.api.util</package>
209
                <package>org.netbeans.modules.web.clientproject.api.util</package>
210
                <package>org.netbeans.modules.web.clientproject.api.validation</package>
210
                <package>org.netbeans.modules.web.clientproject.api.validation</package>
211
                <package>org.netbeans.modules.web.clientproject.api.sites</package>
211
                <package>org.netbeans.modules.web.clientproject.spi</package>
212
                <package>org.netbeans.modules.web.clientproject.spi</package>
212
                <package>org.netbeans.modules.web.clientproject.spi.platform</package>
213
                <package>org.netbeans.modules.web.clientproject.spi.platform</package>
213
            </friend-packages>
214
            </friend-packages>
(-)a/web.clientproject/src/org/netbeans/modules/web/clientproject/sites/SiteHelper.java (-1 / +1 lines)
Lines 39-45 Link Here
39
 *
39
 *
40
 * Portions Copyrighted 2012 Sun Microsystems, Inc.
40
 * Portions Copyrighted 2012 Sun Microsystems, Inc.
41
 */
41
 */
42
package org.netbeans.modules.web.clientproject.sites;
42
package org.netbeans.modules.web.clientproject.api.sites;
43
43
44
import java.awt.EventQueue;
44
import java.awt.EventQueue;
45
import java.io.File;
45
import java.io.File;
(-)a/web.clientproject/src/org/netbeans/modules/web/clientproject/util/ValidationUtilities.java (-1 / +1 lines)
Lines 39-45 Link Here
39
 *
39
 *
40
 * Portions Copyrighted 2012 Sun Microsystems, Inc.
40
 * Portions Copyrighted 2012 Sun Microsystems, Inc.
41
 */
41
 */
42
package org.netbeans.modules.web.clientproject.util;
42
package org.netbeans.modules.web.clientproject.api.util;
43
43
44
import java.io.File;
44
import java.io.File;
45
45
(-)a/web.clientproject/nbproject/project.xml (-5 / +1 lines)
Lines 300-310 Link Here
300
            </test-dependencies>
300
            </test-dependencies>
301
            <friend-packages>
301
            <friend-packages>
302
                <friend>org.netbeans.modules.web.client.samples</friend>
302
                <friend>org.netbeans.modules.web.client.samples</friend>
303
                <package>org.netbeans.modules.web.clientproject</package>
303
                <package>org.netbeans.modules.web.clientproject.createprojectapi</package>
304
                <package>org.netbeans.modules.web.clientproject.sites</package>
305
                <package>org.netbeans.modules.web.clientproject.util</package>
306
                <!-- the exported API is going to be removed soon:
307
                 see issue "222525 - Get rid of the web.clientproject exported API" -->
308
            </friend-packages>
304
            </friend-packages>
309
        </data>
305
        </data>
310
    </configuration>
306
    </configuration>
(-)a/web.clientproject/src/org/netbeans/modules/web/clientproject/createprojectapi/ClientSideProjectGenerator.java (+75 lines)
Line 0 Link Here
1
/*
2
 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
3
 *
4
 * Copyright 2013 Oracle and/or its affiliates. All rights reserved.
5
 *
6
 * Oracle and Java are registered trademarks of Oracle and/or its affiliates.
7
 * Other names may be trademarks of their respective owners.
8
 *
9
 * The contents of this file are subject to the terms of either the GNU
10
 * General Public License Version 2 only ("GPL") or the Common
11
 * Development and Distribution License("CDDL") (collectively, the
12
 * "License"). You may not use this file except in compliance with the
13
 * License. You can obtain a copy of the License at
14
 * http://www.netbeans.org/cddl-gplv2.html
15
 * or nbbuild/licenses/CDDL-GPL-2-CP. See the License for the
16
 * specific language governing permissions and limitations under the
17
 * License.  When distributing the software, include this License Header
18
 * Notice in each file and include the License file at
19
 * nbbuild/licenses/CDDL-GPL-2-CP.  Oracle designates this
20
 * particular file as subject to the "Classpath" exception as provided
21
 * by Oracle in the GPL Version 2 section of the License file that
22
 * accompanied this code. If applicable, add the following below the
23
 * License Header, with the fields enclosed by brackets [] replaced by
24
 * your own identifying information:
25
 * "Portions Copyrighted [year] [name of copyright owner]"
26
 *
27
 * If you wish your version of this file to be governed by only the CDDL
28
 * or only the GPL Version 2, indicate your decision by adding
29
 * "[Contributor] elects to include this software in this distribution
30
 * under the [CDDL or GPL Version 2] license." If you do not indicate a
31
 * single choice of license, a recipient has the option to distribute
32
 * your version of this file under either the CDDL, the GPL Version 2 or
33
 * to extend the choice of license to its licensees as provided above.
34
 * However, if you add GPL Version 2 code and therefore, elected the GPL
35
 * Version 2 license, then the option applies only if the new code is
36
 * made subject to such option by the copyright holder.
37
 *
38
 * Contributor(s):
39
 *
40
 * Portions Copyrighted 2013 Sun Microsystems, Inc.
41
 */
42
package org.netbeans.modules.web.clientproject.createprojectapi;
43
44
import java.io.IOException;
45
import org.netbeans.api.annotations.common.NonNull;
46
import org.netbeans.api.project.FileOwnerQuery;
47
import org.netbeans.api.project.Project;
48
import org.netbeans.modules.web.clientproject.ClientSideProject;
49
import org.netbeans.modules.web.clientproject.spi.SiteTemplateImplementation.ProjectProperties;
50
import org.netbeans.modules.web.clientproject.util.ClientSideProjectUtilities;
51
import org.netbeans.spi.project.support.ant.AntProjectHelper;
52
53
public final class ClientSideProjectGenerator {
54
55
    private ClientSideProjectGenerator() {
56
    }
57
58
    /**
59
     * Creates a new empty Web Client Side project according to the given {@link ProjectProperties}.
60
     *
61
     * @param properties used for project setup
62
     * @return project
63
     * @throws IOException in case something went wrong
64
     */
65
    public static Project createProject(@NonNull CreateProjectProperties properties) throws IOException {
66
        AntProjectHelper h = ClientSideProjectUtilities.setupProject(properties.getProjectDir(), properties.getProjectName());
67
        ClientSideProject p = (ClientSideProject)FileOwnerQuery.getOwner(h.getProjectDirectory());
68
        ClientSideProjectUtilities.initializeProject(p,
69
                    properties.getSiteRootFolder(),
70
                    properties.getTestFolder(),
71
                    properties.getConfigFolder());
72
        return p;
73
    }
74
75
}
(-)a/web.clientproject/src/org/netbeans/modules/web/clientproject/createprojectapi/CreateProjectProperties.java (+221 lines)
Line 0 Link Here
1
/*
2
 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
3
 *
4
 * Copyright 2013 Oracle and/or its affiliates. All rights reserved.
5
 *
6
 * Oracle and Java are registered trademarks of Oracle and/or its affiliates.
7
 * Other names may be trademarks of their respective owners.
8
 *
9
 * The contents of this file are subject to the terms of either the GNU
10
 * General Public License Version 2 only ("GPL") or the Common
11
 * Development and Distribution License("CDDL") (collectively, the
12
 * "License"). You may not use this file except in compliance with the
13
 * License. You can obtain a copy of the License at
14
 * http://www.netbeans.org/cddl-gplv2.html
15
 * or nbbuild/licenses/CDDL-GPL-2-CP. See the License for the
16
 * specific language governing permissions and limitations under the
17
 * License.  When distributing the software, include this License Header
18
 * Notice in each file and include the License file at
19
 * nbbuild/licenses/CDDL-GPL-2-CP.  Oracle designates this
20
 * particular file as subject to the "Classpath" exception as provided
21
 * by Oracle in the GPL Version 2 section of the License file that
22
 * accompanied this code. If applicable, add the following below the
23
 * License Header, with the fields enclosed by brackets [] replaced by
24
 * your own identifying information:
25
 * "Portions Copyrighted [year] [name of copyright owner]"
26
 *
27
 * If you wish your version of this file to be governed by only the CDDL
28
 * or only the GPL Version 2, indicate your decision by adding
29
 * "[Contributor] elects to include this software in this distribution
30
 * under the [CDDL or GPL Version 2] license." If you do not indicate a
31
 * single choice of license, a recipient has the option to distribute
32
 * your version of this file under either the CDDL, the GPL Version 2 or
33
 * to extend the choice of license to its licensees as provided above.
34
 * However, if you add GPL Version 2 code and therefore, elected the GPL
35
 * Version 2 license, then the option applies only if the new code is
36
 * made subject to such option by the copyright holder.
37
 *
38
 * Contributor(s):
39
 *
40
 * Portions Copyrighted 2013 Sun Microsystems, Inc.
41
 */
42
package org.netbeans.modules.web.clientproject.createprojectapi;
43
44
import org.netbeans.api.annotations.common.CheckForNull;
45
import org.netbeans.api.annotations.common.NonNull;
46
import org.netbeans.modules.web.clientproject.ClientSideProjectConstants;
47
import org.openide.filesystems.FileObject;
48
import org.openide.util.Parameters;
49
50
public final class CreateProjectProperties {
51
52
    private FileObject projectDir;
53
    private String projectName;
54
    private String startFile;
55
    private String siteRootFolder;
56
    private String testFolder;
57
    private String configFolder;
58
    private String encoding;
59
60
    public CreateProjectProperties() {
61
        setSiteRootFolder(ClientSideProjectConstants.DEFAULT_SITE_ROOT_FOLDER);
62
        setTestFolder(ClientSideProjectConstants.DEFAULT_TEST_FOLDER);
63
        setConfigFolder(ClientSideProjectConstants.DEFAULT_CONFIG_FOLDER);
64
    }
65
66
    /**
67
     * Get project directory, usually relative path.
68
     *
69
     * @return project directory, usually relative path; never returns
70
     * {@code null} or empty string
71
     */
72
    @NonNull
73
    public FileObject getProjectDir() {
74
        return projectDir;
75
    }
76
77
    /**
78
     * Set project directory, never {@code null} or empty string.
79
     *
80
     * @param projectDir project directory, never {@code null} or empty string
81
     * @return itself
82
     */
83
    public CreateProjectProperties setProjectDir(FileObject projectDir) {
84
        this.projectDir = projectDir;
85
        return this;
86
    }
87
88
    /**
89
     * Get project name.
90
     *
91
     * @return project name; never returns {@code null} or empty string
92
     */
93
    @NonNull
94
    public String getProjectName() {
95
        return projectName;
96
    }
97
98
    /**
99
     * Set project name, never {@code null} or empty string.
100
     *
101
     * @param projectName project name, never {@code null} or empty string
102
     * @return itself
103
     */
104
    public CreateProjectProperties setProjectName(String projectName) {
105
        this.projectName = projectName;
106
        return this;
107
    }
108
109
    /**
110
     * Get start file.
111
     *
112
     * @return start file; never returns {@code null} or empty string
113
     */
114
    @NonNull
115
    public String getStartFile() {
116
        return startFile;
117
    }
118
119
    /**
120
     * Set start file, never {@code null} or empty string.
121
     *
122
     * @param startFile start file, never {@code null} or empty string
123
     * @return itself
124
     */
125
    public CreateProjectProperties setStartFile(String startFile) {
126
        this.startFile = startFile;
127
        return this;
128
    }
129
130
    /**
131
     * Get Site Root folder, usually relative path.
132
     *
133
     * @return Site Root folder, usually relative path; never returns
134
     * {@code null} or empty string
135
     */
136
    @NonNull
137
    public String getSiteRootFolder() {
138
        return siteRootFolder;
139
    }
140
141
    /**
142
     * Set Site Root folder, never {@code null} or empty string.
143
     *
144
     * @param siteRootFolder Site Root folder, never {@code null} or empty
145
     * string
146
     * @return itself
147
     */
148
    public CreateProjectProperties setSiteRootFolder(@NonNull String siteRootFolder) {
149
        Parameters.notEmpty("siteRootFolder", siteRootFolder);
150
        this.siteRootFolder = siteRootFolder;
151
        return this;
152
    }
153
154
    /**
155
     * Get Test folder, usually relative path.
156
     *
157
     * @return Test folder, usually relative path; can be {@code null} if no
158
     * Test folder is present
159
     */
160
    @CheckForNull
161
    public String getTestFolder() {
162
        return testFolder;
163
    }
164
165
    /**
166
     * Set Test folder, can be {@code null} if there are no tests available.
167
     *
168
     * @param testFolder Test folder, can be {@code null} if there are no tests
169
     * available
170
     * @return itself
171
     */
172
    public CreateProjectProperties setTestFolder(String testFolder) {
173
        this.testFolder = testFolder;
174
        return this;
175
    }
176
177
    /**
178
     * Get Config folder, usually relative path.
179
     *
180
     * @return Config folder, usually relative path; can be {@code null} if no
181
     * Config folder is present
182
     */
183
    @CheckForNull
184
    public String getConfigFolder() {
185
        return configFolder;
186
    }
187
188
    /**
189
     * Set Config folder, can be {@code null} if there is no config available.
190
     *
191
     * @param configFolder Config folder, can be {@code null} if there is no
192
     * config available
193
     * @return itself
194
     */
195
    public CreateProjectProperties setConfigFolder(String configFolder) {
196
        this.configFolder = configFolder;
197
        return this;
198
    }
199
200
    /**
201
     * Get encoding.
202
     *
203
     * @return Encoding; can be {@code null} if no encoding is present
204
     */
205
    @NonNull
206
    public String getEncoding() {
207
        return encoding;
208
    }
209
210
    /**
211
     * Set encoding, can be {@code null} if there is no encoding available.
212
     *
213
     * @param encoding encoding, can be {@code null} if there is no encoding
214
     * available
215
     * @return itself
216
     */
217
    public CreateProjectProperties setEncoding(String encoding) {
218
        this.encoding = encoding;
219
        return this;
220
    }
221
}
(-)a/web.clientproject/src/org/netbeans/modules/web/clientproject/sites/OnlineSites.java (+1 lines)
Lines 41-46 Link Here
41
 */
41
 */
42
package org.netbeans.modules.web.clientproject.sites;
42
package org.netbeans.modules.web.clientproject.sites;
43
43
44
import org.netbeans.modules.web.clientproject.api.sites.SiteHelper;
44
import java.awt.EventQueue;
45
import java.awt.EventQueue;
45
import java.io.File;
46
import java.io.File;
46
import java.io.IOException;
47
import java.io.IOException;
(-)a/web.clientproject/src/org/netbeans/modules/web/clientproject/sites/SiteMobileBoilerplate.java (+1 lines)
Lines 41-46 Link Here
41
 */
41
 */
42
package org.netbeans.modules.web.clientproject.sites;
42
package org.netbeans.modules.web.clientproject.sites;
43
43
44
import org.netbeans.modules.web.clientproject.api.sites.SiteHelper;
44
import java.awt.EventQueue;
45
import java.awt.EventQueue;
45
import java.io.File;
46
import java.io.File;
46
import java.io.IOException;
47
import java.io.IOException;
(-)a/web.clientproject/src/org/netbeans/modules/web/clientproject/sites/SiteZip.java (+1 lines)
Lines 41-46 Link Here
41
 */
41
 */
42
package org.netbeans.modules.web.clientproject.sites;
42
package org.netbeans.modules.web.clientproject.sites;
43
43
44
import org.netbeans.modules.web.clientproject.api.sites.SiteHelper;
44
import java.awt.EventQueue;
45
import java.awt.EventQueue;
45
import java.io.File;
46
import java.io.File;
46
import java.io.IOException;
47
import java.io.IOException;
(-)a/web.clientproject/src/org/netbeans/modules/web/clientproject/ui/wizard/ExistingClientSideProject.java (-1 / +1 lines)
Lines 58-64 Link Here
58
import javax.swing.event.DocumentEvent;
58
import javax.swing.event.DocumentEvent;
59
import javax.swing.event.DocumentListener;
59
import javax.swing.event.DocumentListener;
60
import org.netbeans.modules.web.clientproject.util.ClientSideProjectUtilities;
60
import org.netbeans.modules.web.clientproject.util.ClientSideProjectUtilities;
61
import org.netbeans.modules.web.clientproject.util.ValidationUtilities;
61
import org.netbeans.modules.web.clientproject.api.util.ValidationUtilities;
62
import org.openide.awt.Mnemonics;
62
import org.openide.awt.Mnemonics;
63
import org.openide.filesystems.FileChooserBuilder;
63
import org.openide.filesystems.FileChooserBuilder;
64
import org.openide.filesystems.FileUtil;
64
import org.openide.filesystems.FileUtil;
(-)a/web.clientproject/src/org/netbeans/modules/web/clientproject/ui/wizard/NewClientSideProject.java (-1 / +1 lines)
Lines 47-53 Link Here
47
import javax.swing.event.DocumentEvent;
47
import javax.swing.event.DocumentEvent;
48
import javax.swing.event.DocumentListener;
48
import javax.swing.event.DocumentListener;
49
import org.netbeans.modules.web.clientproject.util.ClientSideProjectUtilities;
49
import org.netbeans.modules.web.clientproject.util.ClientSideProjectUtilities;
50
import org.netbeans.modules.web.clientproject.util.ValidationUtilities;
50
import org.netbeans.modules.web.clientproject.api.util.ValidationUtilities;
51
import org.netbeans.spi.project.ui.support.ProjectChooser;
51
import org.netbeans.spi.project.ui.support.ProjectChooser;
52
import org.openide.filesystems.FileChooserBuilder;
52
import org.openide.filesystems.FileChooserBuilder;
53
import org.openide.filesystems.FileUtil;
53
import org.openide.filesystems.FileUtil;

Return to bug 222525