16 * Assumptions/Requirement/Pre-requisites: |
16 * Assumptions/Requirement/Pre-requisites: |
17 * Failures and causes: |
17 * Failures and causes: |
18 */ |
18 */ |
19 package org.symbian.tools.tmw.internal.ui.wizard; |
19 package org.symbian.tools.tmw.internal.ui.wizard; |
20 |
20 |
|
21 import java.util.Arrays; |
|
22 import java.util.Collection; |
21 import java.util.Collections; |
23 import java.util.Collections; |
|
24 import java.util.HashSet; |
22 import java.util.Set; |
25 import java.util.Set; |
23 |
26 |
24 import org.eclipse.core.databinding.DataBindingContext; |
27 import org.eclipse.core.databinding.DataBindingContext; |
|
28 import org.eclipse.core.runtime.CoreException; |
25 import org.eclipse.core.runtime.IPath; |
29 import org.eclipse.core.runtime.IPath; |
|
30 import org.eclipse.core.runtime.IProgressMonitor; |
|
31 import org.eclipse.core.runtime.SubProgressMonitor; |
26 import org.eclipse.jface.viewers.IStructuredSelection; |
32 import org.eclipse.jface.viewers.IStructuredSelection; |
27 import org.eclipse.jface.wizard.IWizardPage; |
33 import org.eclipse.jface.wizard.IWizardPage; |
28 import org.eclipse.ui.INewWizard; |
34 import org.eclipse.ui.INewWizard; |
29 import org.eclipse.ui.IWorkbench; |
35 import org.eclipse.ui.IWorkbench; |
30 import org.eclipse.wst.common.project.facet.core.IFacetedProject; |
36 import org.eclipse.wst.common.project.facet.core.IFacetedProject; |
|
37 import org.eclipse.wst.common.project.facet.core.IFacetedProject.Action; |
31 import org.eclipse.wst.common.project.facet.core.IFacetedProjectWorkingCopy; |
38 import org.eclipse.wst.common.project.facet.core.IFacetedProjectWorkingCopy; |
|
39 import org.eclipse.wst.common.project.facet.core.IProjectFacet; |
32 import org.eclipse.wst.common.project.facet.core.IProjectFacetVersion; |
40 import org.eclipse.wst.common.project.facet.core.IProjectFacetVersion; |
33 import org.eclipse.wst.common.project.facet.core.runtime.IRuntime; |
41 import org.eclipse.wst.common.project.facet.core.runtime.IRuntime; |
34 import org.eclipse.wst.common.project.facet.ui.ModifyFacetedProjectWizard; |
42 import org.eclipse.wst.common.project.facet.ui.ModifyFacetedProjectWizard; |
35 import org.symbian.tools.tmw.core.TMWCore; |
43 import org.symbian.tools.tmw.core.TMWCore; |
36 import org.symbian.tools.tmw.core.projects.IFProjSupport; |
44 import org.symbian.tools.tmw.core.projects.IFProjSupport; |
|
45 import org.symbian.tools.tmw.core.runtimes.ProjectCreationConfigFactory; |
37 import org.symbian.tools.tmw.ui.project.INewApplicationWizardPage; |
46 import org.symbian.tools.tmw.ui.project.INewApplicationWizardPage; |
38 import org.symbian.tools.tmw.ui.project.IProjectTemplate; |
47 import org.symbian.tools.tmw.ui.project.IProjectTemplate; |
39 |
48 |
40 /** |
49 /** |
41 * @author Eugene Ostroukhov (eugeneo@symbian.org) |
50 * @author Eugene Ostroukhov (eugeneo@symbian.org) |
72 addPage(templatesPage); |
81 addPage(templatesPage); |
73 super.addPages(); |
82 super.addPages(); |
74 } |
83 } |
75 |
84 |
76 public boolean canFinish() { |
85 public boolean canFinish() { |
77 return this.firstPage.isPageComplete() && super.canFinish(); |
86 return getNextPage(getContainer().getCurrentPage()) == null && this.firstPage.isPageComplete() |
|
87 && super.canFinish(); |
78 } |
88 } |
79 |
89 |
80 protected NewApplicationDetailsWizardPage createFirstPage() { |
90 protected NewApplicationDetailsWizardPage createFirstPage() { |
81 firstPage = new NewApplicationDetailsWizardPage(wizardContext, databindingContext); |
91 firstPage = new NewApplicationDetailsWizardPage(wizardContext, databindingContext); |
82 return firstPage; |
92 return firstPage; |
83 } |
93 } |
|
94 |
84 @Override |
95 @Override |
85 public IWizardPage getNextPage(final IWizardPage page) { |
96 public IWizardPage getNextPage(final IWizardPage page) { |
|
97 final IFacetedProjectWorkingCopy fpjwc = getFacetedProjectWorkingCopy(); |
86 if (page == this.firstPage) { |
98 if (page == this.firstPage) { |
87 final IFacetedProjectWorkingCopy fpjwc = getFacetedProjectWorkingCopy(); |
|
88 fpjwc.setProjectName(getProjectName()); |
99 fpjwc.setProjectName(getProjectName()); |
89 fpjwc.setProjectLocation(getProjectLocation()); |
100 fpjwc.setProjectLocation(getProjectLocation()); |
90 final IFProjSupport fprojSupport = TMWCore.getFProjSupport(); |
101 final IFProjSupport fprojSupport = TMWCore.getFProjSupport(); |
91 IRuntime runtime = fprojSupport.getRuntime(wizardContext.getRuntime()); |
102 IRuntime runtime = fprojSupport.getRuntime(wizardContext.getRuntime()); |
92 fpjwc.setTargetedRuntimes(Collections.singleton(runtime)); |
103 fpjwc.setTargetedRuntimes(Collections.singleton(runtime)); |
93 fpjwc.setPrimaryRuntime(runtime); |
104 fpjwc.setPrimaryRuntime(runtime); |
94 fpjwc.setProjectFacets(fprojSupport.getFixedFacetsVersions(wizardContext.getRuntime())); |
105 Set<IProjectFacetVersion> facets = getCurrentFixedFacetVersions(); |
95 fpjwc.setFixedProjectFacets(fprojSupport.getFixedFacets(wizardContext.getRuntime())); |
106 facets.addAll(fpjwc.getProjectFacets()); |
96 fpjwc.setProjectFacetActionConfig(fprojSupport.getTMWFacet(), wizardContext); |
107 fpjwc.setProjectFacets(facets); |
|
108 fpjwc.setFixedProjectFacets(getCurrentFixedFacets()); |
|
109 } else if (page == this.templatesPage) { |
|
110 Set<IProjectFacetVersion> facets = getCurrentFixedFacetVersions(); |
|
111 facets.addAll(fpjwc.getProjectFacets()); |
|
112 fpjwc.setProjectFacets(facets); |
|
113 fpjwc.setFixedProjectFacets(getCurrentFixedFacets()); |
|
114 } |
|
115 final Collection<Action> actions = fpjwc.getProjectFacetActions(); |
|
116 final Collection<Action> toReplace = new HashSet<IFacetedProject.Action>(); |
|
117 for (Action action : actions) { |
|
118 if (action.getConfig() == ProjectCreationConfigFactory.CONFIG_STANDIN) { |
|
119 toReplace.add(action); |
|
120 } |
|
121 } |
|
122 for (Action action : toReplace) { |
|
123 fpjwc.setProjectFacetActionConfig(action.getProjectFacetVersion().getProjectFacet(), wizardContext); |
97 } |
124 } |
98 |
125 |
99 IWizardPage nextPage = super.getNextPage(page); |
126 IWizardPage nextPage = super.getNextPage(page); |
100 return nextPage; |
127 return nextPage; |
|
128 } |
|
129 |
|
130 private Set<IProjectFacet> getCurrentFixedFacets() { |
|
131 final Set<IProjectFacetVersion> fixedFacets = getCurrentFixedFacetVersions(); |
|
132 final Set<IProjectFacet> facets = new HashSet<IProjectFacet>(); |
|
133 for (IProjectFacetVersion facet : fixedFacets) { |
|
134 facets.add(facet.getProjectFacet()); |
|
135 } |
|
136 return facets; |
|
137 } |
|
138 |
|
139 private Set<IProjectFacetVersion> getCurrentFixedFacetVersions() { |
|
140 final IFProjSupport fprojSupport = TMWCore.getFProjSupport(); |
|
141 Set<IProjectFacetVersion> facets = new HashSet<IProjectFacetVersion>( |
|
142 fprojSupport.getFixedFacetsVersions(wizardContext.getRuntime())); |
|
143 if (wizardContext.getTemplate() != null) { |
|
144 facets.addAll(Arrays.asList(wizardContext.getTemplate().getRequiredFacets())); |
|
145 } |
|
146 return facets; |
101 } |
147 } |
102 |
148 |
103 public IWizardPage[] getPages() { |
149 public IWizardPage[] getPages() { |
104 final IProjectTemplate current = wizardContext.getTemplate(); |
150 final IProjectTemplate current = wizardContext.getTemplate(); |
105 if (template != current) { |
151 if (template != current) { |