author | Eugene Ostroukhov <eugeneo@symbian.org> |
Tue, 31 Aug 2010 15:21:04 -0700 | |
changeset 480 | b6d992b9b998 |
parent 477 | b616697678bf |
child 484 | f5df819c1852 |
permissions | -rw-r--r-- |
463
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
1 |
/** |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
2 |
* Copyright (c) 2010 Symbian Foundation and/or its subsidiary(-ies). |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
3 |
* All rights reserved. |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
4 |
* This component and the accompanying materials are made available |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
5 |
* under the terms of the License "Eclipse Public License v1.0" |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
6 |
* which accompanies this distribution, and is available |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
7 |
* at the URL "http://www.eclipse.org/legal/epl-v10.html". |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
8 |
* |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
9 |
* Initial Contributors: |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
10 |
* Symbian Foundation - initial contribution. |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
11 |
* Contributors: |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
12 |
* Description: |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
13 |
* Overview: |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
14 |
* Details: |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
15 |
* Platforms/Drives/Compatibility: |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
16 |
* Assumptions/Requirement/Pre-requisites: |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
17 |
* Failures and causes: |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
18 |
*/ |
475
77edd0cbdfe0
Removed old new project wizard
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
473
diff
changeset
|
19 |
package org.symbian.tools.tmw.ui.project; |
463
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
20 |
|
467
5a2901872fcf
WRTKit facet was introduced
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
466
diff
changeset
|
21 |
import java.util.Arrays; |
5a2901872fcf
WRTKit facet was introduced
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
466
diff
changeset
|
22 |
import java.util.Collection; |
463
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
23 |
import java.util.Collections; |
467
5a2901872fcf
WRTKit facet was introduced
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
466
diff
changeset
|
24 |
import java.util.HashSet; |
463
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
25 |
import java.util.Set; |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
26 |
|
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
27 |
import org.eclipse.core.databinding.DataBindingContext; |
473 | 28 |
import org.eclipse.core.resources.IncrementalProjectBuilder; |
467
5a2901872fcf
WRTKit facet was introduced
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
466
diff
changeset
|
29 |
import org.eclipse.core.runtime.CoreException; |
463
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
30 |
import org.eclipse.core.runtime.IPath; |
467
5a2901872fcf
WRTKit facet was introduced
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
466
diff
changeset
|
31 |
import org.eclipse.core.runtime.IProgressMonitor; |
5a2901872fcf
WRTKit facet was introduced
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
466
diff
changeset
|
32 |
import org.eclipse.core.runtime.SubProgressMonitor; |
463
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
33 |
import org.eclipse.jface.viewers.IStructuredSelection; |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
34 |
import org.eclipse.jface.wizard.IWizardPage; |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
35 |
import org.eclipse.ui.INewWizard; |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
36 |
import org.eclipse.ui.IWorkbench; |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
37 |
import org.eclipse.wst.common.project.facet.core.IFacetedProject; |
467
5a2901872fcf
WRTKit facet was introduced
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
466
diff
changeset
|
38 |
import org.eclipse.wst.common.project.facet.core.IFacetedProject.Action; |
463
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
39 |
import org.eclipse.wst.common.project.facet.core.IFacetedProjectWorkingCopy; |
467
5a2901872fcf
WRTKit facet was introduced
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
466
diff
changeset
|
40 |
import org.eclipse.wst.common.project.facet.core.IProjectFacet; |
463
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
41 |
import org.eclipse.wst.common.project.facet.core.IProjectFacetVersion; |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
42 |
import org.eclipse.wst.common.project.facet.core.runtime.IRuntime; |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
43 |
import org.eclipse.wst.common.project.facet.ui.ModifyFacetedProjectWizard; |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
44 |
import org.symbian.tools.tmw.core.TMWCore; |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
45 |
import org.symbian.tools.tmw.core.projects.IFProjSupport; |
480 | 46 |
import org.symbian.tools.tmw.core.projects.IProjectSetupConfig; |
475
77edd0cbdfe0
Removed old new project wizard
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
473
diff
changeset
|
47 |
import org.symbian.tools.tmw.internal.ui.wizard.NewApplicationDetailsWizardPage; |
77edd0cbdfe0
Removed old new project wizard
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
473
diff
changeset
|
48 |
import org.symbian.tools.tmw.internal.ui.wizard.NewApplicationFacetsWizardPage; |
77edd0cbdfe0
Removed old new project wizard
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
473
diff
changeset
|
49 |
import org.symbian.tools.tmw.internal.ui.wizard.NewApplicationTemplateWizardPage; |
77edd0cbdfe0
Removed old new project wizard
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
473
diff
changeset
|
50 |
import org.symbian.tools.tmw.internal.ui.wizard.PageContributions; |
77edd0cbdfe0
Removed old new project wizard
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
473
diff
changeset
|
51 |
import org.symbian.tools.tmw.internal.ui.wizard.WizardContext; |
463
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
52 |
|
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
53 |
/** |
477
b616697678bf
Providers can now specify fixed facets on per-runtime basis. Those facets will not be shown to users in the project creation wizard
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
475
diff
changeset
|
54 |
* This is the wizard that guides through new mobile application project creation. |
b616697678bf
Providers can now specify fixed facets on per-runtime basis. Those facets will not be shown to users in the project creation wizard
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
475
diff
changeset
|
55 |
* |
463
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
56 |
* @author Eugene Ostroukhov (eugeneo@symbian.org) |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
57 |
*/ |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
58 |
public final class NewApplicationWizard extends ModifyFacetedProjectWizard implements INewWizard { |
475
77edd0cbdfe0
Removed old new project wizard
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
473
diff
changeset
|
59 |
public static final String ID = "org.symbian.tools.tmw.newproject"; |
477
b616697678bf
Providers can now specify fixed facets on per-runtime basis. Those facets will not be shown to users in the project creation wizard
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
475
diff
changeset
|
60 |
|
465
87920e15f8eb
Added a way to contribute wizard pages for templates
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
463
diff
changeset
|
61 |
private final PageContributions contributions = new PageContributions(); |
463
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
62 |
private final DataBindingContext databindingContext = new DataBindingContext(); |
477
b616697678bf
Providers can now specify fixed facets on per-runtime basis. Those facets will not be shown to users in the project creation wizard
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
475
diff
changeset
|
63 |
private IWizardPage[] staticPages; |
463
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
64 |
private NewApplicationDetailsWizardPage firstPage; |
466
129c94e78375
Project creation from the templates was implemented
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
465
diff
changeset
|
65 |
private IProjectTemplate template = null; |
129c94e78375
Project creation from the templates was implemented
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
465
diff
changeset
|
66 |
private INewApplicationWizardPage[] templatePages = new INewApplicationWizardPage[0]; |
463
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
67 |
private final WizardContext wizardContext = new WizardContext(); |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
68 |
|
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
69 |
public NewApplicationWizard() { |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
70 |
setShowFacetsSelectionPage(false); |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
71 |
} |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
72 |
|
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
73 |
public void addPages() { |
477
b616697678bf
Providers can now specify fixed facets on per-runtime basis. Those facets will not be shown to users in the project creation wizard
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
475
diff
changeset
|
74 |
firstPage = new NewApplicationDetailsWizardPage(wizardContext, databindingContext); |
463
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
75 |
addPage(this.firstPage); |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
76 |
final IFacetedProject project = getFacetedProject(); |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
77 |
final Set<IProjectFacetVersion> facets; |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
78 |
if (project == null) { |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
79 |
facets = Collections.emptySet(); |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
80 |
} else { |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
81 |
facets = project.getProjectFacets(); |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
82 |
} |
477
b616697678bf
Providers can now specify fixed facets on per-runtime basis. Those facets will not be shown to users in the project creation wizard
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
475
diff
changeset
|
83 |
final IWizardPage facetsPage = new NewApplicationFacetsWizardPage(facets, getFacetedProjectWorkingCopy()); |
463
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
84 |
addPage(facetsPage); |
477
b616697678bf
Providers can now specify fixed facets on per-runtime basis. Those facets will not be shown to users in the project creation wizard
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
475
diff
changeset
|
85 |
final IWizardPage templatesPage = new NewApplicationTemplateWizardPage(wizardContext, databindingContext); |
463
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
86 |
addPage(templatesPage); |
477
b616697678bf
Providers can now specify fixed facets on per-runtime basis. Those facets will not be shown to users in the project creation wizard
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
475
diff
changeset
|
87 |
staticPages = new IWizardPage[3]; |
b616697678bf
Providers can now specify fixed facets on per-runtime basis. Those facets will not be shown to users in the project creation wizard
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
475
diff
changeset
|
88 |
staticPages[0] = firstPage; |
b616697678bf
Providers can now specify fixed facets on per-runtime basis. Those facets will not be shown to users in the project creation wizard
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
475
diff
changeset
|
89 |
staticPages[1] = templatesPage; |
b616697678bf
Providers can now specify fixed facets on per-runtime basis. Those facets will not be shown to users in the project creation wizard
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
475
diff
changeset
|
90 |
staticPages[2] = facetsPage; |
463
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
91 |
super.addPages(); |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
92 |
} |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
93 |
|
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
94 |
public boolean canFinish() { |
467
5a2901872fcf
WRTKit facet was introduced
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
466
diff
changeset
|
95 |
return getNextPage(getContainer().getCurrentPage()) == null && this.firstPage.isPageComplete() |
5a2901872fcf
WRTKit facet was introduced
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
466
diff
changeset
|
96 |
&& super.canFinish(); |
463
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
97 |
} |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
98 |
|
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
99 |
@Override |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
100 |
public IWizardPage getNextPage(final IWizardPage page) { |
467
5a2901872fcf
WRTKit facet was introduced
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
466
diff
changeset
|
101 |
final IFacetedProjectWorkingCopy fpjwc = getFacetedProjectWorkingCopy(); |
463
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
102 |
if (page == this.firstPage) { |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
103 |
fpjwc.setProjectName(getProjectName()); |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
104 |
fpjwc.setProjectLocation(getProjectLocation()); |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
105 |
final IFProjSupport fprojSupport = TMWCore.getFProjSupport(); |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
106 |
IRuntime runtime = fprojSupport.getRuntime(wizardContext.getRuntime()); |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
107 |
fpjwc.setTargetedRuntimes(Collections.singleton(runtime)); |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
108 |
fpjwc.setPrimaryRuntime(runtime); |
467
5a2901872fcf
WRTKit facet was introduced
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
466
diff
changeset
|
109 |
} |
5a2901872fcf
WRTKit facet was introduced
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
466
diff
changeset
|
110 |
final Collection<Action> actions = fpjwc.getProjectFacetActions(); |
5a2901872fcf
WRTKit facet was introduced
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
466
diff
changeset
|
111 |
final Collection<Action> toReplace = new HashSet<IFacetedProject.Action>(); |
5a2901872fcf
WRTKit facet was introduced
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
466
diff
changeset
|
112 |
for (Action action : actions) { |
480 | 113 |
if (action.getConfig() instanceof IProjectSetupConfig) { |
467
5a2901872fcf
WRTKit facet was introduced
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
466
diff
changeset
|
114 |
toReplace.add(action); |
5a2901872fcf
WRTKit facet was introduced
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
466
diff
changeset
|
115 |
} |
5a2901872fcf
WRTKit facet was introduced
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
466
diff
changeset
|
116 |
} |
5a2901872fcf
WRTKit facet was introduced
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
466
diff
changeset
|
117 |
for (Action action : toReplace) { |
5a2901872fcf
WRTKit facet was introduced
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
466
diff
changeset
|
118 |
fpjwc.setProjectFacetActionConfig(action.getProjectFacetVersion().getProjectFacet(), wizardContext); |
463
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
119 |
} |
477
b616697678bf
Providers can now specify fixed facets on per-runtime basis. Those facets will not be shown to users in the project creation wizard
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
475
diff
changeset
|
120 |
final IWizardPage nextPage = super.getNextPage(page); |
b616697678bf
Providers can now specify fixed facets on per-runtime basis. Those facets will not be shown to users in the project creation wizard
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
475
diff
changeset
|
121 |
synchronized (currentFacets) { |
b616697678bf
Providers can now specify fixed facets on per-runtime basis. Those facets will not be shown to users in the project creation wizard
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
475
diff
changeset
|
122 |
if (nextPage instanceof NewApplicationFacetsWizardPage && !reentry) { |
b616697678bf
Providers can now specify fixed facets on per-runtime basis. Those facets will not be shown to users in the project creation wizard
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
475
diff
changeset
|
123 |
try { |
b616697678bf
Providers can now specify fixed facets on per-runtime basis. Those facets will not be shown to users in the project creation wizard
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
475
diff
changeset
|
124 |
reentry = true; |
b616697678bf
Providers can now specify fixed facets on per-runtime basis. Those facets will not be shown to users in the project creation wizard
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
475
diff
changeset
|
125 |
final IFacetedProjectWorkingCopy projectWorkingCopy = getFacetedProjectWorkingCopy(); |
b616697678bf
Providers can now specify fixed facets on per-runtime basis. Those facets will not be shown to users in the project creation wizard
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
475
diff
changeset
|
126 |
final Set<IProjectFacetVersion> facets = projectWorkingCopy.getProjectFacets(); |
b616697678bf
Providers can now specify fixed facets on per-runtime basis. Those facets will not be shown to users in the project creation wizard
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
475
diff
changeset
|
127 |
final Set<IProjectFacet> fixed = projectWorkingCopy.getFixedProjectFacets(); |
b616697678bf
Providers can now specify fixed facets on per-runtime basis. Those facets will not be shown to users in the project creation wizard
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
475
diff
changeset
|
128 |
currentFacets.retainAll(facets); |
b616697678bf
Providers can now specify fixed facets on per-runtime basis. Those facets will not be shown to users in the project creation wizard
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
475
diff
changeset
|
129 |
for (IProjectFacetVersion facetVersion : facets) { |
b616697678bf
Providers can now specify fixed facets on per-runtime basis. Those facets will not be shown to users in the project creation wizard
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
475
diff
changeset
|
130 |
if (!fixed.contains(facetVersion.getProjectFacet())) { |
b616697678bf
Providers can now specify fixed facets on per-runtime basis. Those facets will not be shown to users in the project creation wizard
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
475
diff
changeset
|
131 |
currentFacets.add(facetVersion); |
b616697678bf
Providers can now specify fixed facets on per-runtime basis. Those facets will not be shown to users in the project creation wizard
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
475
diff
changeset
|
132 |
} |
b616697678bf
Providers can now specify fixed facets on per-runtime basis. Those facets will not be shown to users in the project creation wizard
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
475
diff
changeset
|
133 |
} |
b616697678bf
Providers can now specify fixed facets on per-runtime basis. Those facets will not be shown to users in the project creation wizard
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
475
diff
changeset
|
134 |
final Set<IProjectFacetVersion> f = getCurrentFixedFacetVersions(); |
b616697678bf
Providers can now specify fixed facets on per-runtime basis. Those facets will not be shown to users in the project creation wizard
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
475
diff
changeset
|
135 |
f.addAll(currentFacets); |
b616697678bf
Providers can now specify fixed facets on per-runtime basis. Those facets will not be shown to users in the project creation wizard
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
475
diff
changeset
|
136 |
fpjwc.setProjectFacets(f); |
b616697678bf
Providers can now specify fixed facets on per-runtime basis. Those facets will not be shown to users in the project creation wizard
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
475
diff
changeset
|
137 |
fpjwc.setFixedProjectFacets(getCurrentFixedFacets()); |
b616697678bf
Providers can now specify fixed facets on per-runtime basis. Those facets will not be shown to users in the project creation wizard
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
475
diff
changeset
|
138 |
} finally { |
b616697678bf
Providers can now specify fixed facets on per-runtime basis. Those facets will not be shown to users in the project creation wizard
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
475
diff
changeset
|
139 |
reentry = false; |
b616697678bf
Providers can now specify fixed facets on per-runtime basis. Those facets will not be shown to users in the project creation wizard
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
475
diff
changeset
|
140 |
} |
b616697678bf
Providers can now specify fixed facets on per-runtime basis. Those facets will not be shown to users in the project creation wizard
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
475
diff
changeset
|
141 |
} |
b616697678bf
Providers can now specify fixed facets on per-runtime basis. Those facets will not be shown to users in the project creation wizard
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
475
diff
changeset
|
142 |
} |
463
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
143 |
return nextPage; |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
144 |
} |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
145 |
|
477
b616697678bf
Providers can now specify fixed facets on per-runtime basis. Those facets will not be shown to users in the project creation wizard
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
475
diff
changeset
|
146 |
private boolean reentry = false; |
b616697678bf
Providers can now specify fixed facets on per-runtime basis. Those facets will not be shown to users in the project creation wizard
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
475
diff
changeset
|
147 |
private final Collection<IProjectFacetVersion> currentFacets = new HashSet<IProjectFacetVersion>(); |
b616697678bf
Providers can now specify fixed facets on per-runtime basis. Those facets will not be shown to users in the project creation wizard
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
475
diff
changeset
|
148 |
|
467
5a2901872fcf
WRTKit facet was introduced
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
466
diff
changeset
|
149 |
private Set<IProjectFacet> getCurrentFixedFacets() { |
5a2901872fcf
WRTKit facet was introduced
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
466
diff
changeset
|
150 |
final Set<IProjectFacetVersion> fixedFacets = getCurrentFixedFacetVersions(); |
5a2901872fcf
WRTKit facet was introduced
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
466
diff
changeset
|
151 |
final Set<IProjectFacet> facets = new HashSet<IProjectFacet>(); |
5a2901872fcf
WRTKit facet was introduced
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
466
diff
changeset
|
152 |
for (IProjectFacetVersion facet : fixedFacets) { |
5a2901872fcf
WRTKit facet was introduced
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
466
diff
changeset
|
153 |
facets.add(facet.getProjectFacet()); |
5a2901872fcf
WRTKit facet was introduced
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
466
diff
changeset
|
154 |
} |
5a2901872fcf
WRTKit facet was introduced
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
466
diff
changeset
|
155 |
return facets; |
5a2901872fcf
WRTKit facet was introduced
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
466
diff
changeset
|
156 |
} |
5a2901872fcf
WRTKit facet was introduced
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
466
diff
changeset
|
157 |
|
5a2901872fcf
WRTKit facet was introduced
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
466
diff
changeset
|
158 |
private Set<IProjectFacetVersion> getCurrentFixedFacetVersions() { |
5a2901872fcf
WRTKit facet was introduced
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
466
diff
changeset
|
159 |
final IFProjSupport fprojSupport = TMWCore.getFProjSupport(); |
5a2901872fcf
WRTKit facet was introduced
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
466
diff
changeset
|
160 |
Set<IProjectFacetVersion> facets = new HashSet<IProjectFacetVersion>( |
5a2901872fcf
WRTKit facet was introduced
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
466
diff
changeset
|
161 |
fprojSupport.getFixedFacetsVersions(wizardContext.getRuntime())); |
5a2901872fcf
WRTKit facet was introduced
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
466
diff
changeset
|
162 |
if (wizardContext.getTemplate() != null) { |
5a2901872fcf
WRTKit facet was introduced
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
466
diff
changeset
|
163 |
facets.addAll(Arrays.asList(wizardContext.getTemplate().getRequiredFacets())); |
5a2901872fcf
WRTKit facet was introduced
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
466
diff
changeset
|
164 |
} |
5a2901872fcf
WRTKit facet was introduced
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
466
diff
changeset
|
165 |
return facets; |
5a2901872fcf
WRTKit facet was introduced
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
466
diff
changeset
|
166 |
} |
5a2901872fcf
WRTKit facet was introduced
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
466
diff
changeset
|
167 |
|
463
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
168 |
public IWizardPage[] getPages() { |
465
87920e15f8eb
Added a way to contribute wizard pages for templates
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
463
diff
changeset
|
169 |
final IProjectTemplate current = wizardContext.getTemplate(); |
87920e15f8eb
Added a way to contribute wizard pages for templates
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
463
diff
changeset
|
170 |
if (template != current) { |
87920e15f8eb
Added a way to contribute wizard pages for templates
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
463
diff
changeset
|
171 |
for (INewApplicationWizardPage page : templatePages) { |
87920e15f8eb
Added a way to contribute wizard pages for templates
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
463
diff
changeset
|
172 |
page.remove(); |
87920e15f8eb
Added a way to contribute wizard pages for templates
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
463
diff
changeset
|
173 |
page.dispose(); |
87920e15f8eb
Added a way to contribute wizard pages for templates
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
463
diff
changeset
|
174 |
} |
87920e15f8eb
Added a way to contribute wizard pages for templates
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
463
diff
changeset
|
175 |
if (current == null) { |
87920e15f8eb
Added a way to contribute wizard pages for templates
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
463
diff
changeset
|
176 |
template = null; |
87920e15f8eb
Added a way to contribute wizard pages for templates
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
463
diff
changeset
|
177 |
templatePages = new INewApplicationWizardPage[0]; |
87920e15f8eb
Added a way to contribute wizard pages for templates
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
463
diff
changeset
|
178 |
} else { |
87920e15f8eb
Added a way to contribute wizard pages for templates
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
463
diff
changeset
|
179 |
template = current; |
87920e15f8eb
Added a way to contribute wizard pages for templates
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
463
diff
changeset
|
180 |
templatePages = contributions.createPages(template.getId()); |
87920e15f8eb
Added a way to contribute wizard pages for templates
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
463
diff
changeset
|
181 |
for (INewApplicationWizardPage page : templatePages) { |
87920e15f8eb
Added a way to contribute wizard pages for templates
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
463
diff
changeset
|
182 |
page.setWizard(this); |
87920e15f8eb
Added a way to contribute wizard pages for templates
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
463
diff
changeset
|
183 |
page.init(wizardContext, databindingContext); |
87920e15f8eb
Added a way to contribute wizard pages for templates
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
463
diff
changeset
|
184 |
} |
87920e15f8eb
Added a way to contribute wizard pages for templates
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
463
diff
changeset
|
185 |
} |
87920e15f8eb
Added a way to contribute wizard pages for templates
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
463
diff
changeset
|
186 |
} |
463
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
187 |
final IWizardPage[] base = super.getPages(); |
477
b616697678bf
Providers can now specify fixed facets on per-runtime basis. Those facets will not be shown to users in the project creation wizard
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
475
diff
changeset
|
188 |
final IWizardPage[] pages = new IWizardPage[staticPages.length + templatePages.length]; |
b616697678bf
Providers can now specify fixed facets on per-runtime basis. Those facets will not be shown to users in the project creation wizard
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
475
diff
changeset
|
189 |
System.arraycopy(staticPages, 0, pages, 0, 3); |
465
87920e15f8eb
Added a way to contribute wizard pages for templates
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
463
diff
changeset
|
190 |
if (templatePages.length > 0) { |
87920e15f8eb
Added a way to contribute wizard pages for templates
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
463
diff
changeset
|
191 |
System.arraycopy(templatePages, 0, pages, 3, templatePages.length); |
87920e15f8eb
Added a way to contribute wizard pages for templates
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
463
diff
changeset
|
192 |
} |
463
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
193 |
System.arraycopy(base, 0, pages, 2, base.length); |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
194 |
|
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
195 |
return pages; |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
196 |
} |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
197 |
|
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
198 |
protected IPath getProjectLocation() { |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
199 |
return firstPage.getLocationPath(); |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
200 |
} |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
201 |
|
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
202 |
protected String getProjectName() { |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
203 |
return wizardContext.getProjectName(); |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
204 |
} |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
205 |
|
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
206 |
public void init(final IWorkbench workbench, final IStructuredSelection selection) { |
477
b616697678bf
Providers can now specify fixed facets on per-runtime basis. Those facets will not be shown to users in the project creation wizard
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
475
diff
changeset
|
207 |
// Do nothing |
463
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
208 |
} |
467
5a2901872fcf
WRTKit facet was introduced
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
466
diff
changeset
|
209 |
|
5a2901872fcf
WRTKit facet was introduced
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
466
diff
changeset
|
210 |
@Override |
5a2901872fcf
WRTKit facet was introduced
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
466
diff
changeset
|
211 |
protected void performFinish(IProgressMonitor monitor) throws CoreException { |
473 | 212 |
monitor.beginTask("Preparing project", 300); |
467
5a2901872fcf
WRTKit facet was introduced
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
466
diff
changeset
|
213 |
super.performFinish(new SubProgressMonitor(monitor, 20)); |
5a2901872fcf
WRTKit facet was introduced
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
466
diff
changeset
|
214 |
wizardContext.initialize(getFacetedProject().getProject(), new SubProgressMonitor(monitor, 80)); |
473 | 215 |
getFacetedProject().getProject().build(IncrementalProjectBuilder.CLEAN_BUILD, |
216 |
new SubProgressMonitor(monitor, 100)); |
|
217 |
getFacetedProject().getProject().build(IncrementalProjectBuilder.FULL_BUILD, |
|
218 |
new SubProgressMonitor(monitor, 100)); |
|
467
5a2901872fcf
WRTKit facet was introduced
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
466
diff
changeset
|
219 |
monitor.done(); |
5a2901872fcf
WRTKit facet was introduced
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
466
diff
changeset
|
220 |
} |
463
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
221 |
} |