org.symbian.tools.mtw.ui/src/org/symbian/tools/tmw/internal/ui/wizard/NewApplicationWizard.java
--- a/org.symbian.tools.mtw.ui/src/org/symbian/tools/tmw/internal/ui/wizard/NewApplicationWizard.java Tue Aug 17 13:40:28 2010 -0700
+++ b/org.symbian.tools.mtw.ui/src/org/symbian/tools/tmw/internal/ui/wizard/NewApplicationWizard.java Wed Aug 18 09:30:53 2010 -0700
@@ -18,22 +18,31 @@
*/
package org.symbian.tools.tmw.internal.ui.wizard;
+import java.util.Arrays;
+import java.util.Collection;
import java.util.Collections;
+import java.util.HashSet;
import java.util.Set;
import org.eclipse.core.databinding.DataBindingContext;
+import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.IPath;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.core.runtime.SubProgressMonitor;
import org.eclipse.jface.viewers.IStructuredSelection;
import org.eclipse.jface.wizard.IWizardPage;
import org.eclipse.ui.INewWizard;
import org.eclipse.ui.IWorkbench;
import org.eclipse.wst.common.project.facet.core.IFacetedProject;
+import org.eclipse.wst.common.project.facet.core.IFacetedProject.Action;
import org.eclipse.wst.common.project.facet.core.IFacetedProjectWorkingCopy;
+import org.eclipse.wst.common.project.facet.core.IProjectFacet;
import org.eclipse.wst.common.project.facet.core.IProjectFacetVersion;
import org.eclipse.wst.common.project.facet.core.runtime.IRuntime;
import org.eclipse.wst.common.project.facet.ui.ModifyFacetedProjectWizard;
import org.symbian.tools.tmw.core.TMWCore;
import org.symbian.tools.tmw.core.projects.IFProjSupport;
+import org.symbian.tools.tmw.core.runtimes.ProjectCreationConfigFactory;
import org.symbian.tools.tmw.ui.project.INewApplicationWizardPage;
import org.symbian.tools.tmw.ui.project.IProjectTemplate;
@@ -74,32 +83,69 @@
}
public boolean canFinish() {
- return this.firstPage.isPageComplete() && super.canFinish();
+ return getNextPage(getContainer().getCurrentPage()) == null && this.firstPage.isPageComplete()
+ && super.canFinish();
}
protected NewApplicationDetailsWizardPage createFirstPage() {
firstPage = new NewApplicationDetailsWizardPage(wizardContext, databindingContext);
return firstPage;
}
+
@Override
public IWizardPage getNextPage(final IWizardPage page) {
+ final IFacetedProjectWorkingCopy fpjwc = getFacetedProjectWorkingCopy();
if (page == this.firstPage) {
- final IFacetedProjectWorkingCopy fpjwc = getFacetedProjectWorkingCopy();
fpjwc.setProjectName(getProjectName());
fpjwc.setProjectLocation(getProjectLocation());
final IFProjSupport fprojSupport = TMWCore.getFProjSupport();
IRuntime runtime = fprojSupport.getRuntime(wizardContext.getRuntime());
fpjwc.setTargetedRuntimes(Collections.singleton(runtime));
fpjwc.setPrimaryRuntime(runtime);
- fpjwc.setProjectFacets(fprojSupport.getFixedFacetsVersions(wizardContext.getRuntime()));
- fpjwc.setFixedProjectFacets(fprojSupport.getFixedFacets(wizardContext.getRuntime()));
- fpjwc.setProjectFacetActionConfig(fprojSupport.getTMWFacet(), wizardContext);
+ Set<IProjectFacetVersion> facets = getCurrentFixedFacetVersions();
+ facets.addAll(fpjwc.getProjectFacets());
+ fpjwc.setProjectFacets(facets);
+ fpjwc.setFixedProjectFacets(getCurrentFixedFacets());
+ } else if (page == this.templatesPage) {
+ Set<IProjectFacetVersion> facets = getCurrentFixedFacetVersions();
+ facets.addAll(fpjwc.getProjectFacets());
+ fpjwc.setProjectFacets(facets);
+ fpjwc.setFixedProjectFacets(getCurrentFixedFacets());
+ }
+ final Collection<Action> actions = fpjwc.getProjectFacetActions();
+ final Collection<Action> toReplace = new HashSet<IFacetedProject.Action>();
+ for (Action action : actions) {
+ if (action.getConfig() == ProjectCreationConfigFactory.CONFIG_STANDIN) {
+ toReplace.add(action);
+ }
+ }
+ for (Action action : toReplace) {
+ fpjwc.setProjectFacetActionConfig(action.getProjectFacetVersion().getProjectFacet(), wizardContext);
}
IWizardPage nextPage = super.getNextPage(page);
return nextPage;
}
+ private Set<IProjectFacet> getCurrentFixedFacets() {
+ final Set<IProjectFacetVersion> fixedFacets = getCurrentFixedFacetVersions();
+ final Set<IProjectFacet> facets = new HashSet<IProjectFacet>();
+ for (IProjectFacetVersion facet : fixedFacets) {
+ facets.add(facet.getProjectFacet());
+ }
+ return facets;
+ }
+
+ private Set<IProjectFacetVersion> getCurrentFixedFacetVersions() {
+ final IFProjSupport fprojSupport = TMWCore.getFProjSupport();
+ Set<IProjectFacetVersion> facets = new HashSet<IProjectFacetVersion>(
+ fprojSupport.getFixedFacetsVersions(wizardContext.getRuntime()));
+ if (wizardContext.getTemplate() != null) {
+ facets.addAll(Arrays.asList(wizardContext.getTemplate().getRequiredFacets()));
+ }
+ return facets;
+ }
+
public IWizardPage[] getPages() {
final IProjectTemplate current = wizardContext.getTemplate();
if (template != current) {
@@ -165,4 +211,12 @@
this.workbench = workbench;
this.selection = selection;
}
+
+ @Override
+ protected void performFinish(IProgressMonitor monitor) throws CoreException {
+ monitor.beginTask("Preparing project", 100);
+ super.performFinish(new SubProgressMonitor(monitor, 20));
+ wizardContext.initialize(getFacetedProject().getProject(), new SubProgressMonitor(monitor, 80));
+ monitor.done();
+ }
}