plugins/org.symbian.tools.tmw.ui/src/org/symbian/tools/tmw/internal/ui/importwizard/ApplicationImportWizard.java
author Eugene Ostroukhov <eugeneo@symbian.org>
Wed, 01 Sep 2010 16:27:43 -0700
changeset 481 e908ec135fa1
child 483 109da596fa9d
permissions -rw-r--r--
Application import wizard was refactored into extensible code
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
481
e908ec135fa1 Application import wizard was refactored into extensible code
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
     1
package org.symbian.tools.tmw.internal.ui.importwizard;
e908ec135fa1 Application import wizard was refactored into extensible code
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
     2
e908ec135fa1 Application import wizard was refactored into extensible code
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
     3
import java.io.File;
e908ec135fa1 Application import wizard was refactored into extensible code
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
     4
import java.lang.reflect.InvocationTargetException;
e908ec135fa1 Application import wizard was refactored into extensible code
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
     5
import java.net.URI;
e908ec135fa1 Application import wizard was refactored into extensible code
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
     6
import java.util.Arrays;
e908ec135fa1 Application import wizard was refactored into extensible code
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
     7
import java.util.Collections;
e908ec135fa1 Application import wizard was refactored into extensible code
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
     8
import java.util.HashSet;
e908ec135fa1 Application import wizard was refactored into extensible code
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
     9
import java.util.Set;
e908ec135fa1 Application import wizard was refactored into extensible code
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    10
e908ec135fa1 Application import wizard was refactored into extensible code
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    11
import org.eclipse.core.resources.IFile;
e908ec135fa1 Application import wizard was refactored into extensible code
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    12
import org.eclipse.core.resources.IProject;
e908ec135fa1 Application import wizard was refactored into extensible code
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    13
import org.eclipse.core.resources.IResource;
e908ec135fa1 Application import wizard was refactored into extensible code
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    14
import org.eclipse.core.resources.IWorkspaceRunnable;
e908ec135fa1 Application import wizard was refactored into extensible code
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    15
import org.eclipse.core.resources.ResourcesPlugin;
e908ec135fa1 Application import wizard was refactored into extensible code
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    16
import org.eclipse.core.runtime.CoreException;
e908ec135fa1 Application import wizard was refactored into extensible code
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    17
import org.eclipse.core.runtime.IAdaptable;
e908ec135fa1 Application import wizard was refactored into extensible code
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    18
import org.eclipse.core.runtime.IConfigurationElement;
e908ec135fa1 Application import wizard was refactored into extensible code
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    19
import org.eclipse.core.runtime.IExecutableExtension;
e908ec135fa1 Application import wizard was refactored into extensible code
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    20
import org.eclipse.core.runtime.IProgressMonitor;
e908ec135fa1 Application import wizard was refactored into extensible code
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    21
import org.eclipse.core.runtime.NullProgressMonitor;
e908ec135fa1 Application import wizard was refactored into extensible code
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    22
import org.eclipse.core.runtime.Path;
e908ec135fa1 Application import wizard was refactored into extensible code
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    23
import org.eclipse.core.runtime.SubProgressMonitor;
e908ec135fa1 Application import wizard was refactored into extensible code
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    24
import org.eclipse.jface.operation.IRunnableWithProgress;
e908ec135fa1 Application import wizard was refactored into extensible code
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    25
import org.eclipse.jface.viewers.IStructuredSelection;
e908ec135fa1 Application import wizard was refactored into extensible code
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    26
import org.eclipse.jface.wizard.Wizard;
e908ec135fa1 Application import wizard was refactored into extensible code
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    27
import org.eclipse.swt.widgets.Display;
e908ec135fa1 Application import wizard was refactored into extensible code
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    28
import org.eclipse.ui.IImportWizard;
e908ec135fa1 Application import wizard was refactored into extensible code
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    29
import org.eclipse.ui.INewWizard;
e908ec135fa1 Application import wizard was refactored into extensible code
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    30
import org.eclipse.ui.IWorkbench;
e908ec135fa1 Application import wizard was refactored into extensible code
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    31
import org.eclipse.ui.statushandlers.StatusManager;
e908ec135fa1 Application import wizard was refactored into extensible code
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    32
import org.eclipse.ui.wizards.newresource.BasicNewProjectResourceWizard;
e908ec135fa1 Application import wizard was refactored into extensible code
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    33
import org.eclipse.wst.common.project.facet.core.FacetedProjectFramework;
e908ec135fa1 Application import wizard was refactored into extensible code
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    34
import org.eclipse.wst.common.project.facet.core.IFacetedProjectWorkingCopy;
e908ec135fa1 Application import wizard was refactored into extensible code
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    35
import org.eclipse.wst.common.project.facet.core.IProjectFacet;
e908ec135fa1 Application import wizard was refactored into extensible code
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    36
import org.eclipse.wst.common.project.facet.core.IProjectFacetVersion;
e908ec135fa1 Application import wizard was refactored into extensible code
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    37
import org.eclipse.wst.common.project.facet.core.runtime.IRuntime;
e908ec135fa1 Application import wizard was refactored into extensible code
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    38
import org.symbian.tools.tmw.core.TMWCore;
e908ec135fa1 Application import wizard was refactored into extensible code
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    39
import org.symbian.tools.tmw.core.runtimes.IMobileWebRuntime;
e908ec135fa1 Application import wizard was refactored into extensible code
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    40
import org.symbian.tools.tmw.internal.util.OpenFilesRunnable;
e908ec135fa1 Application import wizard was refactored into extensible code
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    41
import org.symbian.tools.tmw.ui.TMWCoreUI;
e908ec135fa1 Application import wizard was refactored into extensible code
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    42
import org.symbian.tools.tmw.ui.project.IApplicationImporter;
e908ec135fa1 Application import wizard was refactored into extensible code
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    43
e908ec135fa1 Application import wizard was refactored into extensible code
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    44
public class ApplicationImportWizard extends Wizard implements IImportWizard, INewWizard, IExecutableExtension {
e908ec135fa1 Application import wizard was refactored into extensible code
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    45
    public static final String RECENT_IMPORT_PATH = "application.import.path";
e908ec135fa1 Application import wizard was refactored into extensible code
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    46
e908ec135fa1 Application import wizard was refactored into extensible code
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    47
    private IFile file;
e908ec135fa1 Application import wizard was refactored into extensible code
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    48
    private ApplicationImportWizardPage page;
e908ec135fa1 Application import wizard was refactored into extensible code
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    49
    private IConfigurationElement config;
e908ec135fa1 Application import wizard was refactored into extensible code
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    50
e908ec135fa1 Application import wizard was refactored into extensible code
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    51
    public ApplicationImportWizard() {
e908ec135fa1 Application import wizard was refactored into extensible code
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    52
        setWindowTitle("Import WRT Application Archive");
e908ec135fa1 Application import wizard was refactored into extensible code
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    53
        //        setDefaultPageImageDescriptor(WRTImages.importWgzWizardBanner());
e908ec135fa1 Application import wizard was refactored into extensible code
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    54
        setNeedsProgressMonitor(true);
e908ec135fa1 Application import wizard was refactored into extensible code
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    55
    }
e908ec135fa1 Application import wizard was refactored into extensible code
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    56
e908ec135fa1 Application import wizard was refactored into extensible code
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    57
    @Override
e908ec135fa1 Application import wizard was refactored into extensible code
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    58
    public void addPages() {
e908ec135fa1 Application import wizard was refactored into extensible code
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    59
        page = new ApplicationImportWizardPage(file);
e908ec135fa1 Application import wizard was refactored into extensible code
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    60
        addPage(page);
e908ec135fa1 Application import wizard was refactored into extensible code
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    61
    }
e908ec135fa1 Application import wizard was refactored into extensible code
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    62
e908ec135fa1 Application import wizard was refactored into extensible code
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    63
    private IProject createProject(String archiveName, String projectName, URI uri, IApplicationImporter importer,
e908ec135fa1 Application import wizard was refactored into extensible code
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    64
            IProgressMonitor monitor) throws CoreException {
e908ec135fa1 Application import wizard was refactored into extensible code
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    65
        monitor.beginTask("Importing application archive", 50);
e908ec135fa1 Application import wizard was refactored into extensible code
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    66
        final IFacetedProjectWorkingCopy project = FacetedProjectFramework.createNewProject();
e908ec135fa1 Application import wizard was refactored into extensible code
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    67
        final File file = new File(archiveName);
e908ec135fa1 Application import wizard was refactored into extensible code
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    68
        final IMobileWebRuntime applicationRuntime = importer.getApplicationRuntime(file);
e908ec135fa1 Application import wizard was refactored into extensible code
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    69
        final IRuntime runtime = TMWCore.getFProjSupport().getRuntime(applicationRuntime);
e908ec135fa1 Application import wizard was refactored into extensible code
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    70
e908ec135fa1 Application import wizard was refactored into extensible code
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    71
        project.setTargetedRuntimes(Collections.singleton(runtime));
e908ec135fa1 Application import wizard was refactored into extensible code
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    72
        project.setPrimaryRuntime(runtime);
e908ec135fa1 Application import wizard was refactored into extensible code
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    73
        project.setProjectName(projectName);
e908ec135fa1 Application import wizard was refactored into extensible code
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    74
        if (uri != null) {
e908ec135fa1 Application import wizard was refactored into extensible code
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    75
            final File loc = new File(uri);
e908ec135fa1 Application import wizard was refactored into extensible code
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    76
            Path path = new Path(loc.getAbsolutePath());
e908ec135fa1 Application import wizard was refactored into extensible code
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    77
            if (!path.removeLastSegments(1).equals(ResourcesPlugin.getWorkspace().getRoot().getLocation())) {
e908ec135fa1 Application import wizard was refactored into extensible code
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    78
                project.setProjectLocation(path);
e908ec135fa1 Application import wizard was refactored into extensible code
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    79
            }
e908ec135fa1 Application import wizard was refactored into extensible code
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    80
        }
e908ec135fa1 Application import wizard was refactored into extensible code
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    81
        final Set<IProjectFacetVersion> facets = getProjectFacetVersion(file, importer, applicationRuntime);
e908ec135fa1 Application import wizard was refactored into extensible code
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    82
        project.setProjectFacets(facets);
e908ec135fa1 Application import wizard was refactored into extensible code
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    83
        final Set<IProjectFacet> fcoll = new HashSet<IProjectFacet>();
e908ec135fa1 Application import wizard was refactored into extensible code
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    84
e908ec135fa1 Application import wizard was refactored into extensible code
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    85
        for (IProjectFacetVersion facetVersion : facets) {
e908ec135fa1 Application import wizard was refactored into extensible code
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    86
            fcoll.add(facetVersion.getProjectFacet());
e908ec135fa1 Application import wizard was refactored into extensible code
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    87
        }
e908ec135fa1 Application import wizard was refactored into extensible code
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    88
        project.setFixedProjectFacets(fcoll);
e908ec135fa1 Application import wizard was refactored into extensible code
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    89
        project.commitChanges(new SubProgressMonitor(monitor, 10));
e908ec135fa1 Application import wizard was refactored into extensible code
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    90
e908ec135fa1 Application import wizard was refactored into extensible code
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    91
        boolean success = false;
e908ec135fa1 Application import wizard was refactored into extensible code
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    92
        try {
e908ec135fa1 Application import wizard was refactored into extensible code
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    93
            importer.extractFiles(file, applicationRuntime, project.getProject(), new SubProgressMonitor(monitor, 40));
e908ec135fa1 Application import wizard was refactored into extensible code
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    94
            success = true;
e908ec135fa1 Application import wizard was refactored into extensible code
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    95
        } finally {
e908ec135fa1 Application import wizard was refactored into extensible code
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    96
            if (!success) {
e908ec135fa1 Application import wizard was refactored into extensible code
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    97
                project.getProject().delete(true, true, new NullProgressMonitor());
e908ec135fa1 Application import wizard was refactored into extensible code
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    98
            }
e908ec135fa1 Application import wizard was refactored into extensible code
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    99
        }
e908ec135fa1 Application import wizard was refactored into extensible code
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
   100
        final IFile[] toOpen = importer.getFilesToOpen(project.getProject());
e908ec135fa1 Application import wizard was refactored into extensible code
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
   101
        project.detect(new NullProgressMonitor());
e908ec135fa1 Application import wizard was refactored into extensible code
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
   102
        project.commitChanges(new NullProgressMonitor());
e908ec135fa1 Application import wizard was refactored into extensible code
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
   103
        monitor.done();
e908ec135fa1 Application import wizard was refactored into extensible code
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
   104
        if (toOpen != null && toOpen.length > 0) {
e908ec135fa1 Application import wizard was refactored into extensible code
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
   105
            final OpenFilesRunnable runnable = new OpenFilesRunnable(new HashSet<IFile>(Arrays.asList(toOpen)));
e908ec135fa1 Application import wizard was refactored into extensible code
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
   106
            Display.getDefault().asyncExec(new Runnable() {
e908ec135fa1 Application import wizard was refactored into extensible code
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
   107
                public void run() {
e908ec135fa1 Application import wizard was refactored into extensible code
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
   108
                    try {
e908ec135fa1 Application import wizard was refactored into extensible code
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
   109
                        runnable.run(new NullProgressMonitor());
e908ec135fa1 Application import wizard was refactored into extensible code
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
   110
                    } catch (InvocationTargetException e) {
e908ec135fa1 Application import wizard was refactored into extensible code
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
   111
                        TMWCoreUI.log(e);
e908ec135fa1 Application import wizard was refactored into extensible code
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
   112
                    } catch (InterruptedException e) {
e908ec135fa1 Application import wizard was refactored into extensible code
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
   113
                        TMWCoreUI.log(e);
e908ec135fa1 Application import wizard was refactored into extensible code
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
   114
                    }
e908ec135fa1 Application import wizard was refactored into extensible code
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
   115
                }
e908ec135fa1 Application import wizard was refactored into extensible code
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
   116
            });
e908ec135fa1 Application import wizard was refactored into extensible code
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
   117
        }
e908ec135fa1 Application import wizard was refactored into extensible code
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
   118
        return project.getProject();
e908ec135fa1 Application import wizard was refactored into extensible code
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
   119
    }
e908ec135fa1 Application import wizard was refactored into extensible code
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
   120
e908ec135fa1 Application import wizard was refactored into extensible code
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
   121
    private Set<IProjectFacetVersion> getProjectFacetVersion(final File file, IApplicationImporter importer,
e908ec135fa1 Application import wizard was refactored into extensible code
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
   122
            final IMobileWebRuntime applicationRuntime) {
e908ec135fa1 Application import wizard was refactored into extensible code
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
   123
        final Set<IProjectFacetVersion> facets = new HashSet<IProjectFacetVersion>();
e908ec135fa1 Application import wizard was refactored into extensible code
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
   124
        facets.addAll(TMWCore.getFProjSupport().getFixedFacetsVersions(applicationRuntime));
e908ec135fa1 Application import wizard was refactored into extensible code
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
   125
        final IProjectFacetVersion[] f = importer.getConfiguredFacets(file);
e908ec135fa1 Application import wizard was refactored into extensible code
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
   126
        if (f != null && f.length > 0) {
e908ec135fa1 Application import wizard was refactored into extensible code
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
   127
            facets.addAll(Arrays.asList(f));
e908ec135fa1 Application import wizard was refactored into extensible code
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
   128
        }
e908ec135fa1 Application import wizard was refactored into extensible code
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
   129
        return facets;
e908ec135fa1 Application import wizard was refactored into extensible code
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
   130
    }
e908ec135fa1 Application import wizard was refactored into extensible code
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
   131
e908ec135fa1 Application import wizard was refactored into extensible code
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
   132
    @Override
e908ec135fa1 Application import wizard was refactored into extensible code
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
   133
    public boolean performFinish() {
e908ec135fa1 Application import wizard was refactored into extensible code
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
   134
        try {
e908ec135fa1 Application import wizard was refactored into extensible code
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
   135
            final String projectName = page.getProjectName();
e908ec135fa1 Application import wizard was refactored into extensible code
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
   136
            final URI uri = page.getLocationURI();
e908ec135fa1 Application import wizard was refactored into extensible code
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
   137
            final String archiveName = page.getArchiveFile();
e908ec135fa1 Application import wizard was refactored into extensible code
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
   138
            final IApplicationImporter importer = page.getImporter();
e908ec135fa1 Application import wizard was refactored into extensible code
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
   139
e908ec135fa1 Application import wizard was refactored into extensible code
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
   140
            final IProject[] holder = new IProject[1];
e908ec135fa1 Application import wizard was refactored into extensible code
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
   141
            getContainer().run(true, true, new IRunnableWithProgress() {
e908ec135fa1 Application import wizard was refactored into extensible code
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
   142
e908ec135fa1 Application import wizard was refactored into extensible code
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
   143
                public void run(IProgressMonitor monitor) throws InvocationTargetException, InterruptedException {
e908ec135fa1 Application import wizard was refactored into extensible code
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
   144
                    try {
e908ec135fa1 Application import wizard was refactored into extensible code
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
   145
                        ResourcesPlugin.getWorkspace().run(new IWorkspaceRunnable() {
e908ec135fa1 Application import wizard was refactored into extensible code
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
   146
e908ec135fa1 Application import wizard was refactored into extensible code
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
   147
                            public void run(IProgressMonitor monitor) throws CoreException {
e908ec135fa1 Application import wizard was refactored into extensible code
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
   148
                                holder[0] = createProject(archiveName, projectName, uri, importer, monitor);
e908ec135fa1 Application import wizard was refactored into extensible code
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
   149
                            }
e908ec135fa1 Application import wizard was refactored into extensible code
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
   150
e908ec135fa1 Application import wizard was refactored into extensible code
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
   151
                        }, monitor);
e908ec135fa1 Application import wizard was refactored into extensible code
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
   152
                    } catch (final CoreException e) {
e908ec135fa1 Application import wizard was refactored into extensible code
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
   153
                        getShell().getDisplay().asyncExec(new Runnable() {
e908ec135fa1 Application import wizard was refactored into extensible code
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
   154
                            public void run() {
e908ec135fa1 Application import wizard was refactored into extensible code
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
   155
                                StatusManager.getManager().handle(e.getStatus(),
e908ec135fa1 Application import wizard was refactored into extensible code
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
   156
                                        StatusManager.SHOW | StatusManager.BLOCK | StatusManager.LOG);
e908ec135fa1 Application import wizard was refactored into extensible code
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
   157
                            }
e908ec135fa1 Application import wizard was refactored into extensible code
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
   158
                        });
e908ec135fa1 Application import wizard was refactored into extensible code
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
   159
                    }
e908ec135fa1 Application import wizard was refactored into extensible code
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
   160
                }
e908ec135fa1 Application import wizard was refactored into extensible code
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
   161
            });
e908ec135fa1 Application import wizard was refactored into extensible code
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
   162
            if (holder[0] != null) {
e908ec135fa1 Application import wizard was refactored into extensible code
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
   163
                BasicNewProjectResourceWizard.updatePerspective(config);
e908ec135fa1 Application import wizard was refactored into extensible code
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
   164
                TMWCoreUI.getDefault().getPreferenceStore()
e908ec135fa1 Application import wizard was refactored into extensible code
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
   165
                        .setValue(RECENT_IMPORT_PATH, new File(archiveName).getParentFile().getAbsolutePath());
e908ec135fa1 Application import wizard was refactored into extensible code
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
   166
                //                ProjectUtils.focusOn(holder[0]);
e908ec135fa1 Application import wizard was refactored into extensible code
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
   167
            }
e908ec135fa1 Application import wizard was refactored into extensible code
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
   168
        } catch (InvocationTargetException e) {
e908ec135fa1 Application import wizard was refactored into extensible code
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
   169
            TMWCoreUI.log(e);
e908ec135fa1 Application import wizard was refactored into extensible code
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
   170
        } catch (InterruptedException e) {
e908ec135fa1 Application import wizard was refactored into extensible code
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
   171
            TMWCoreUI.log(e);
e908ec135fa1 Application import wizard was refactored into extensible code
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
   172
        }
e908ec135fa1 Application import wizard was refactored into extensible code
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
   173
        return true;
e908ec135fa1 Application import wizard was refactored into extensible code
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
   174
    }
e908ec135fa1 Application import wizard was refactored into extensible code
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
   175
e908ec135fa1 Application import wizard was refactored into extensible code
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
   176
    public void init(IWorkbench workbench, IStructuredSelection selection) {
e908ec135fa1 Application import wizard was refactored into extensible code
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
   177
        file = null;
e908ec135fa1 Application import wizard was refactored into extensible code
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
   178
        if (selection instanceof IStructuredSelection && !selection.isEmpty()) {
e908ec135fa1 Application import wizard was refactored into extensible code
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
   179
            Object element = (selection).getFirstElement();
e908ec135fa1 Application import wizard was refactored into extensible code
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
   180
            if (element instanceof IAdaptable) {
e908ec135fa1 Application import wizard was refactored into extensible code
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
   181
                IResource resource = (IResource) ((IAdaptable) element).getAdapter(IResource.class);
e908ec135fa1 Application import wizard was refactored into extensible code
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
   182
                if (resource != null && resource.getType() == IResource.FILE
e908ec135fa1 Application import wizard was refactored into extensible code
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
   183
                        && "wgz".equalsIgnoreCase(resource.getProjectRelativePath().getFileExtension())) {
e908ec135fa1 Application import wizard was refactored into extensible code
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
   184
                    file = (IFile) resource;
e908ec135fa1 Application import wizard was refactored into extensible code
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
   185
                }
e908ec135fa1 Application import wizard was refactored into extensible code
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
   186
            }
e908ec135fa1 Application import wizard was refactored into extensible code
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
   187
        }
e908ec135fa1 Application import wizard was refactored into extensible code
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
   188
    }
e908ec135fa1 Application import wizard was refactored into extensible code
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
   189
e908ec135fa1 Application import wizard was refactored into extensible code
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
   190
    public void setInitializationData(IConfigurationElement config, String propertyName, Object data)
e908ec135fa1 Application import wizard was refactored into extensible code
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
   191
            throws CoreException {
e908ec135fa1 Application import wizard was refactored into extensible code
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
   192
        this.config = config;
e908ec135fa1 Application import wizard was refactored into extensible code
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
   193
    }
e908ec135fa1 Application import wizard was refactored into extensible code
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
   194
e908ec135fa1 Application import wizard was refactored into extensible code
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
   195
}