org.symbian.tools.mtw.ui/src/org/symbian/tools/tmw/internal/ui/wizard/NewApplicationWizard.java
changeset 467 5a2901872fcf
parent 466 129c94e78375
equal deleted inserted replaced
466:129c94e78375 467:5a2901872fcf
    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) {
   163 
   209 
   164     public void init(final IWorkbench workbench, final IStructuredSelection selection) {
   210     public void init(final IWorkbench workbench, final IStructuredSelection selection) {
   165         this.workbench = workbench;
   211         this.workbench = workbench;
   166         this.selection = selection;
   212         this.selection = selection;
   167     }
   213     }
       
   214 
       
   215     @Override
       
   216     protected void performFinish(IProgressMonitor monitor) throws CoreException {
       
   217         monitor.beginTask("Preparing project", 100);
       
   218         super.performFinish(new SubProgressMonitor(monitor, 20));
       
   219         wizardContext.initialize(getFacetedProject().getProject(), new SubProgressMonitor(monitor, 80));
       
   220         monitor.done();
       
   221     }
   168 }
   222 }