author | Eugene Ostroukhov <eugeneo@symbian.org> |
Wed, 01 Sep 2010 16:27:43 -0700 | |
changeset 481 | e908ec135fa1 |
child 483 | 109da596fa9d |
permissions | -rw-r--r-- |
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 |
} |