plugins/org.symbian.tools.tmw.ui/src/org/symbian/tools/tmw/internal/ui/importwizard/ApplicationImportWizard.java
author Eugene Ostroukhov <eugeneo@symbian.org>
Thu, 04 Nov 2010 15:22:02 -0700
changeset 495 0008ebdc0ec0
parent 485 df4f55e8569e
permissions -rw-r--r--
Launch configurations were updated
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
485
df4f55e8569e Fixed copyright headers and removed unneeded WRT mentions from TMW code
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 483
diff changeset
     1
/*******************************************************************************
df4f55e8569e Fixed copyright headers and removed unneeded WRT mentions from TMW code
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 483
diff changeset
     2
 * Copyright (c) 2010 Symbian Foundation and/or its subsidiary(-ies).
df4f55e8569e Fixed copyright headers and removed unneeded WRT mentions from TMW code
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 483
diff changeset
     3
 * All rights reserved.
df4f55e8569e Fixed copyright headers and removed unneeded WRT mentions from TMW code
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 483
diff changeset
     4
 * This component and the accompanying materials are made available
df4f55e8569e Fixed copyright headers and removed unneeded WRT mentions from TMW code
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 483
diff changeset
     5
 * under the terms of the License "Eclipse Public License v1.0"
df4f55e8569e Fixed copyright headers and removed unneeded WRT mentions from TMW code
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 483
diff changeset
     6
 * which accompanies this distribution, and is available
df4f55e8569e Fixed copyright headers and removed unneeded WRT mentions from TMW code
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 483
diff changeset
     7
 * at the URL "http://www.eclipse.org/legal/epl-v10.html".
df4f55e8569e Fixed copyright headers and removed unneeded WRT mentions from TMW code
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 483
diff changeset
     8
 *
df4f55e8569e Fixed copyright headers and removed unneeded WRT mentions from TMW code
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 483
diff changeset
     9
 * Initial Contributors:
df4f55e8569e Fixed copyright headers and removed unneeded WRT mentions from TMW code
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 483
diff changeset
    10
 * Symbian Foundation - initial contribution.
df4f55e8569e Fixed copyright headers and removed unneeded WRT mentions from TMW code
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 483
diff changeset
    11
 * Contributors:
df4f55e8569e Fixed copyright headers and removed unneeded WRT mentions from TMW code
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 483
diff changeset
    12
 * Description:
df4f55e8569e Fixed copyright headers and removed unneeded WRT mentions from TMW code
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 483
diff changeset
    13
 * Overview:
df4f55e8569e Fixed copyright headers and removed unneeded WRT mentions from TMW code
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 483
diff changeset
    14
 * Details:
df4f55e8569e Fixed copyright headers and removed unneeded WRT mentions from TMW code
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 483
diff changeset
    15
 * Platforms/Drives/Compatibility:
df4f55e8569e Fixed copyright headers and removed unneeded WRT mentions from TMW code
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 483
diff changeset
    16
 * Assumptions/Requirement/Pre-requisites:
df4f55e8569e Fixed copyright headers and removed unneeded WRT mentions from TMW code
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 483
diff changeset
    17
 * Failures and causes:
df4f55e8569e Fixed copyright headers and removed unneeded WRT mentions from TMW code
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 483
diff changeset
    18
 *******************************************************************************/
481
e908ec135fa1 Application import wizard was refactored into extensible code
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    19
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
    20
e908ec135fa1 Application import wizard was refactored into extensible code
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    21
import java.io.File;
e908ec135fa1 Application import wizard was refactored into extensible code
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    22
import java.lang.reflect.InvocationTargetException;
e908ec135fa1 Application import wizard was refactored into extensible code
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    23
import java.net.URI;
e908ec135fa1 Application import wizard was refactored into extensible code
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    24
import java.util.Arrays;
e908ec135fa1 Application import wizard was refactored into extensible code
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    25
import java.util.Collections;
e908ec135fa1 Application import wizard was refactored into extensible code
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    26
import java.util.HashSet;
e908ec135fa1 Application import wizard was refactored into extensible code
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    27
import java.util.Set;
e908ec135fa1 Application import wizard was refactored into extensible code
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    28
e908ec135fa1 Application import wizard was refactored into extensible code
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    29
import org.eclipse.core.resources.IFile;
e908ec135fa1 Application import wizard was refactored into extensible code
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    30
import org.eclipse.core.resources.IProject;
e908ec135fa1 Application import wizard was refactored into extensible code
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    31
import org.eclipse.core.resources.IResource;
e908ec135fa1 Application import wizard was refactored into extensible code
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    32
import org.eclipse.core.resources.IWorkspaceRunnable;
e908ec135fa1 Application import wizard was refactored into extensible code
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    33
import org.eclipse.core.resources.ResourcesPlugin;
e908ec135fa1 Application import wizard was refactored into extensible code
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    34
import org.eclipse.core.runtime.CoreException;
e908ec135fa1 Application import wizard was refactored into extensible code
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    35
import org.eclipse.core.runtime.IAdaptable;
e908ec135fa1 Application import wizard was refactored into extensible code
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    36
import org.eclipse.core.runtime.IConfigurationElement;
e908ec135fa1 Application import wizard was refactored into extensible code
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    37
import org.eclipse.core.runtime.IExecutableExtension;
e908ec135fa1 Application import wizard was refactored into extensible code
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    38
import org.eclipse.core.runtime.IProgressMonitor;
e908ec135fa1 Application import wizard was refactored into extensible code
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    39
import org.eclipse.core.runtime.NullProgressMonitor;
e908ec135fa1 Application import wizard was refactored into extensible code
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    40
import org.eclipse.core.runtime.Path;
e908ec135fa1 Application import wizard was refactored into extensible code
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    41
import org.eclipse.core.runtime.SubProgressMonitor;
e908ec135fa1 Application import wizard was refactored into extensible code
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    42
import org.eclipse.jface.operation.IRunnableWithProgress;
e908ec135fa1 Application import wizard was refactored into extensible code
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    43
import org.eclipse.jface.viewers.IStructuredSelection;
e908ec135fa1 Application import wizard was refactored into extensible code
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    44
import org.eclipse.jface.wizard.Wizard;
e908ec135fa1 Application import wizard was refactored into extensible code
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    45
import org.eclipse.swt.widgets.Display;
e908ec135fa1 Application import wizard was refactored into extensible code
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    46
import org.eclipse.ui.IImportWizard;
e908ec135fa1 Application import wizard was refactored into extensible code
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    47
import org.eclipse.ui.INewWizard;
e908ec135fa1 Application import wizard was refactored into extensible code
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    48
import org.eclipse.ui.IWorkbench;
e908ec135fa1 Application import wizard was refactored into extensible code
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    49
import org.eclipse.ui.statushandlers.StatusManager;
e908ec135fa1 Application import wizard was refactored into extensible code
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    50
import org.eclipse.ui.wizards.newresource.BasicNewProjectResourceWizard;
e908ec135fa1 Application import wizard was refactored into extensible code
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    51
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
    52
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
    53
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
    54
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
    55
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
    56
import org.symbian.tools.tmw.core.TMWCore;
e908ec135fa1 Application import wizard was refactored into extensible code
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    57
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
    58
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
    59
import org.symbian.tools.tmw.ui.TMWCoreUI;
e908ec135fa1 Application import wizard was refactored into extensible code
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    60
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
    61
e908ec135fa1 Application import wizard was refactored into extensible code
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    62
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
    63
    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
    64
e908ec135fa1 Application import wizard was refactored into extensible code
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    65
    private IFile file;
e908ec135fa1 Application import wizard was refactored into extensible code
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    66
    private ApplicationImportWizardPage page;
e908ec135fa1 Application import wizard was refactored into extensible code
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    67
    private IConfigurationElement config;
e908ec135fa1 Application import wizard was refactored into extensible code
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    68
e908ec135fa1 Application import wizard was refactored into extensible code
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    69
    public ApplicationImportWizard() {
485
df4f55e8569e Fixed copyright headers and removed unneeded WRT mentions from TMW code
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 483
diff changeset
    70
        setWindowTitle("Import Mobile Web Application Archive");
481
e908ec135fa1 Application import wizard was refactored into extensible code
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    71
        setNeedsProgressMonitor(true);
e908ec135fa1 Application import wizard was refactored into extensible code
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    72
    }
e908ec135fa1 Application import wizard was refactored into extensible code
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    73
e908ec135fa1 Application import wizard was refactored into extensible code
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    74
    @Override
e908ec135fa1 Application import wizard was refactored into extensible code
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    75
    public void addPages() {
e908ec135fa1 Application import wizard was refactored into extensible code
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    76
        page = new ApplicationImportWizardPage(file);
e908ec135fa1 Application import wizard was refactored into extensible code
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    77
        addPage(page);
e908ec135fa1 Application import wizard was refactored into extensible code
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    78
    }
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
    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
    81
            IProgressMonitor monitor) throws CoreException {
e908ec135fa1 Application import wizard was refactored into extensible code
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    82
        monitor.beginTask("Importing application archive", 50);
e908ec135fa1 Application import wizard was refactored into extensible code
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    83
        final IFacetedProjectWorkingCopy project = FacetedProjectFramework.createNewProject();
e908ec135fa1 Application import wizard was refactored into extensible code
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    84
        final File file = new File(archiveName);
e908ec135fa1 Application import wizard was refactored into extensible code
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    85
        final IMobileWebRuntime applicationRuntime = importer.getApplicationRuntime(file);
e908ec135fa1 Application import wizard was refactored into extensible code
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    86
        final IRuntime runtime = TMWCore.getFProjSupport().getRuntime(applicationRuntime);
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.setTargetedRuntimes(Collections.singleton(runtime));
e908ec135fa1 Application import wizard was refactored into extensible code
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    89
        project.setPrimaryRuntime(runtime);
e908ec135fa1 Application import wizard was refactored into extensible code
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    90
        project.setProjectName(projectName);
e908ec135fa1 Application import wizard was refactored into extensible code
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    91
        if (uri != null) {
e908ec135fa1 Application import wizard was refactored into extensible code
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    92
            final File loc = new File(uri);
e908ec135fa1 Application import wizard was refactored into extensible code
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    93
            Path path = new Path(loc.getAbsolutePath());
e908ec135fa1 Application import wizard was refactored into extensible code
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    94
            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
    95
                project.setProjectLocation(path);
e908ec135fa1 Application import wizard was refactored into extensible code
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    96
            }
e908ec135fa1 Application import wizard was refactored into extensible code
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    97
        }
e908ec135fa1 Application import wizard was refactored into extensible code
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    98
        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
    99
        project.setProjectFacets(facets);
e908ec135fa1 Application import wizard was refactored into extensible code
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
   100
        final Set<IProjectFacet> fcoll = new HashSet<IProjectFacet>();
e908ec135fa1 Application import wizard was refactored into extensible code
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
   101
e908ec135fa1 Application import wizard was refactored into extensible code
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
   102
        for (IProjectFacetVersion facetVersion : facets) {
e908ec135fa1 Application import wizard was refactored into extensible code
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
   103
            fcoll.add(facetVersion.getProjectFacet());
e908ec135fa1 Application import wizard was refactored into extensible code
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
   104
        }
e908ec135fa1 Application import wizard was refactored into extensible code
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
   105
        project.setFixedProjectFacets(fcoll);
e908ec135fa1 Application import wizard was refactored into extensible code
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
   106
        project.commitChanges(new SubProgressMonitor(monitor, 10));
e908ec135fa1 Application import wizard was refactored into extensible code
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
   107
e908ec135fa1 Application import wizard was refactored into extensible code
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
   108
        boolean success = false;
e908ec135fa1 Application import wizard was refactored into extensible code
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
   109
        try {
e908ec135fa1 Application import wizard was refactored into extensible code
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
   110
            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
   111
            success = true;
e908ec135fa1 Application import wizard was refactored into extensible code
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
   112
        } finally {
e908ec135fa1 Application import wizard was refactored into extensible code
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
   113
            if (!success) {
e908ec135fa1 Application import wizard was refactored into extensible code
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
   114
                project.getProject().delete(true, true, new NullProgressMonitor());
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
        final IFile[] toOpen = importer.getFilesToOpen(project.getProject());
e908ec135fa1 Application import wizard was refactored into extensible code
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
   118
        project.detect(new NullProgressMonitor());
e908ec135fa1 Application import wizard was refactored into extensible code
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
   119
        project.commitChanges(new NullProgressMonitor());
e908ec135fa1 Application import wizard was refactored into extensible code
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
   120
        monitor.done();
e908ec135fa1 Application import wizard was refactored into extensible code
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
   121
        if (toOpen != null && toOpen.length > 0) {
e908ec135fa1 Application import wizard was refactored into extensible code
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
   122
            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
   123
            Display.getDefault().asyncExec(new Runnable() {
e908ec135fa1 Application import wizard was refactored into extensible code
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
   124
                public void run() {
e908ec135fa1 Application import wizard was refactored into extensible code
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
   125
                    try {
e908ec135fa1 Application import wizard was refactored into extensible code
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
   126
                        runnable.run(new NullProgressMonitor());
e908ec135fa1 Application import wizard was refactored into extensible code
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
   127
                    } catch (InvocationTargetException e) {
e908ec135fa1 Application import wizard was refactored into extensible code
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
   128
                        TMWCoreUI.log(e);
e908ec135fa1 Application import wizard was refactored into extensible code
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
   129
                    } catch (InterruptedException e) {
e908ec135fa1 Application import wizard was refactored into extensible code
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
   130
                        TMWCoreUI.log(e);
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
                }
e908ec135fa1 Application import wizard was refactored into extensible code
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
   133
            });
e908ec135fa1 Application import wizard was refactored into extensible code
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
   134
        }
e908ec135fa1 Application import wizard was refactored into extensible code
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
   135
        return project.getProject();
e908ec135fa1 Application import wizard was refactored into extensible code
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
   136
    }
e908ec135fa1 Application import wizard was refactored into extensible code
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
   137
e908ec135fa1 Application import wizard was refactored into extensible code
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
   138
    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
   139
            final IMobileWebRuntime applicationRuntime) {
e908ec135fa1 Application import wizard was refactored into extensible code
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
   140
        final Set<IProjectFacetVersion> facets = new HashSet<IProjectFacetVersion>();
e908ec135fa1 Application import wizard was refactored into extensible code
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
   141
        facets.addAll(TMWCore.getFProjSupport().getFixedFacetsVersions(applicationRuntime));
e908ec135fa1 Application import wizard was refactored into extensible code
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
   142
        final IProjectFacetVersion[] f = importer.getConfiguredFacets(file);
e908ec135fa1 Application import wizard was refactored into extensible code
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
   143
        if (f != null && f.length > 0) {
e908ec135fa1 Application import wizard was refactored into extensible code
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
   144
            facets.addAll(Arrays.asList(f));
e908ec135fa1 Application import wizard was refactored into extensible code
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
   145
        }
e908ec135fa1 Application import wizard was refactored into extensible code
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
   146
        return facets;
e908ec135fa1 Application import wizard was refactored into extensible code
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
   147
    }
e908ec135fa1 Application import wizard was refactored into extensible code
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
   148
e908ec135fa1 Application import wizard was refactored into extensible code
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
   149
    @Override
e908ec135fa1 Application import wizard was refactored into extensible code
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
   150
    public boolean performFinish() {
e908ec135fa1 Application import wizard was refactored into extensible code
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
   151
        try {
e908ec135fa1 Application import wizard was refactored into extensible code
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
   152
            final String projectName = page.getProjectName();
e908ec135fa1 Application import wizard was refactored into extensible code
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
   153
            final URI uri = page.getLocationURI();
e908ec135fa1 Application import wizard was refactored into extensible code
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
   154
            final String archiveName = page.getArchiveFile();
e908ec135fa1 Application import wizard was refactored into extensible code
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
   155
            final IApplicationImporter importer = page.getImporter();
e908ec135fa1 Application import wizard was refactored into extensible code
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
   156
e908ec135fa1 Application import wizard was refactored into extensible code
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
   157
            final IProject[] holder = new IProject[1];
e908ec135fa1 Application import wizard was refactored into extensible code
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
   158
            getContainer().run(true, true, new IRunnableWithProgress() {
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
                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
   161
                    try {
e908ec135fa1 Application import wizard was refactored into extensible code
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
   162
                        ResourcesPlugin.getWorkspace().run(new IWorkspaceRunnable() {
e908ec135fa1 Application import wizard was refactored into extensible code
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
   163
e908ec135fa1 Application import wizard was refactored into extensible code
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
   164
                            public void run(IProgressMonitor monitor) throws CoreException {
e908ec135fa1 Application import wizard was refactored into extensible code
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
   165
                                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
   166
                            }
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
                        }, monitor);
e908ec135fa1 Application import wizard was refactored into extensible code
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
   169
                    } catch (final CoreException e) {
e908ec135fa1 Application import wizard was refactored into extensible code
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
   170
                        getShell().getDisplay().asyncExec(new Runnable() {
e908ec135fa1 Application import wizard was refactored into extensible code
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
   171
                            public void run() {
e908ec135fa1 Application import wizard was refactored into extensible code
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
   172
                                StatusManager.getManager().handle(e.getStatus(),
e908ec135fa1 Application import wizard was refactored into extensible code
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
   173
                                        StatusManager.SHOW | StatusManager.BLOCK | StatusManager.LOG);
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
                    }
e908ec135fa1 Application import wizard was refactored into extensible code
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
   177
                }
e908ec135fa1 Application import wizard was refactored into extensible code
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
   178
            });
e908ec135fa1 Application import wizard was refactored into extensible code
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
   179
            if (holder[0] != null) {
e908ec135fa1 Application import wizard was refactored into extensible code
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
   180
                BasicNewProjectResourceWizard.updatePerspective(config);
e908ec135fa1 Application import wizard was refactored into extensible code
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
   181
                TMWCoreUI.getDefault().getPreferenceStore()
e908ec135fa1 Application import wizard was refactored into extensible code
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
   182
                        .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
   183
                //                ProjectUtils.focusOn(holder[0]);
e908ec135fa1 Application import wizard was refactored into extensible code
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
   184
            }
e908ec135fa1 Application import wizard was refactored into extensible code
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
   185
        } catch (InvocationTargetException e) {
e908ec135fa1 Application import wizard was refactored into extensible code
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
   186
            TMWCoreUI.log(e);
e908ec135fa1 Application import wizard was refactored into extensible code
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
   187
        } catch (InterruptedException e) {
e908ec135fa1 Application import wizard was refactored into extensible code
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
   188
            TMWCoreUI.log(e);
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
        return true;
e908ec135fa1 Application import wizard was refactored into extensible code
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
   191
    }
e908ec135fa1 Application import wizard was refactored into extensible code
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
   192
e908ec135fa1 Application import wizard was refactored into extensible code
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
   193
    public void init(IWorkbench workbench, IStructuredSelection selection) {
e908ec135fa1 Application import wizard was refactored into extensible code
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
   194
        file = null;
483
109da596fa9d Fixed relevant FindBug messages
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 481
diff changeset
   195
        if (!selection.isEmpty()) {
481
e908ec135fa1 Application import wizard was refactored into extensible code
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
   196
            Object element = (selection).getFirstElement();
e908ec135fa1 Application import wizard was refactored into extensible code
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
   197
            if (element instanceof IAdaptable) {
e908ec135fa1 Application import wizard was refactored into extensible code
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
   198
                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
   199
                if (resource != null && resource.getType() == IResource.FILE
e908ec135fa1 Application import wizard was refactored into extensible code
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
   200
                        && "wgz".equalsIgnoreCase(resource.getProjectRelativePath().getFileExtension())) {
e908ec135fa1 Application import wizard was refactored into extensible code
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
   201
                    file = (IFile) resource;
e908ec135fa1 Application import wizard was refactored into extensible code
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
   202
                }
e908ec135fa1 Application import wizard was refactored into extensible code
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
   203
            }
e908ec135fa1 Application import wizard was refactored into extensible code
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
   204
        }
e908ec135fa1 Application import wizard was refactored into extensible code
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
   205
    }
e908ec135fa1 Application import wizard was refactored into extensible code
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
   206
e908ec135fa1 Application import wizard was refactored into extensible code
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
   207
    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
   208
            throws CoreException {
e908ec135fa1 Application import wizard was refactored into extensible code
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
   209
        this.config = config;
e908ec135fa1 Application import wizard was refactored into extensible code
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
   210
    }
e908ec135fa1 Application import wizard was refactored into extensible code
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
   211
e908ec135fa1 Application import wizard was refactored into extensible code
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
   212
}