27 import org.eclipse.core.runtime.IProgressMonitor; |
27 import org.eclipse.core.runtime.IProgressMonitor; |
28 import org.symbian.tools.mtw.core.MTWCore; |
28 import org.symbian.tools.mtw.core.MTWCore; |
29 import org.symbian.tools.mtw.core.projects.IMTWProject; |
29 import org.symbian.tools.mtw.core.projects.IMTWProject; |
30 import org.symbian.tools.mtw.core.runtimes.IMobileWebRuntime; |
30 import org.symbian.tools.mtw.core.runtimes.IMobileWebRuntime; |
31 import org.symbian.tools.mtw.core.runtimes.IPackager; |
31 import org.symbian.tools.mtw.core.runtimes.IPackager; |
|
32 import org.symbian.tools.mtw.core.runtimes.IPackagerDelegate; |
32 |
33 |
33 public class LazyPackager implements IPackager { |
34 public class LazyPackager implements IPackager { |
34 private final IConfigurationElement element; |
35 private final IConfigurationElement element; |
35 private IPackager packager; |
36 private IPackagerDelegate packager; |
36 |
37 |
37 public LazyPackager(IConfigurationElement element) { |
38 public LazyPackager(IConfigurationElement element) { |
38 this.element = element; |
39 this.element = element; |
39 } |
40 } |
40 |
41 |
41 public File packageApplication(IMTWProject project, IMobileWebRuntime runtime, IProgressMonitor monitor) |
42 public File packageApplication(IMTWProject project, IProgressMonitor monitor) |
42 throws CoreException { |
43 throws CoreException { |
43 return getPackager().packageApplication(project, runtime, monitor); |
44 return getPackager().packageApplication(project, monitor); |
44 } |
45 } |
45 |
46 |
46 private IPackager getPackager() { |
47 private IPackagerDelegate getPackager() { |
47 if (packager == null) { |
48 if (packager == null) { |
48 try { |
49 try { |
49 packager = (IPackager) element.createExecutableExtension("class"); |
50 packager = (IPackagerDelegate) element.createExecutableExtension("delegate"); |
50 } catch (CoreException e) { |
51 } catch (CoreException e) { |
51 MTWCore.log(String.format("Cannot instantiate %s from plugin %s", element.getAttribute("class"), |
52 MTWCore.log(String.format("Cannot instantiate %s from plugin %s", element.getAttribute("delegate"), |
52 element.getDeclaringExtension().getNamespaceIdentifier()), e); |
53 element.getDeclaringExtension().getNamespaceIdentifier()), e); |
53 throw new RuntimeException(e); |
54 throw new RuntimeException(e); |
54 } |
55 } |
55 } |
56 } |
56 return packager; |
57 return packager; |
62 |
63 |
63 public String getFileType(IMTWProject project) { |
64 public String getFileType(IMTWProject project) { |
64 return getPackager().getFileType(project); |
65 return getPackager().getFileType(project); |
65 } |
66 } |
66 |
67 |
|
68 public IMobileWebRuntime getTargetRuntime() { |
|
69 String id = element.getAttribute("targetRuntime"); |
|
70 if (id != null) { |
|
71 return MTWCore.getDefault().getRuntimesManager().getRuntime(id); |
|
72 } else { |
|
73 return getSourceRuntime(); |
|
74 } |
|
75 } |
|
76 |
|
77 public IMobileWebRuntime getSourceRuntime() { |
|
78 IMobileWebRuntime runtime = MTWCore.getDefault().getRuntimesManager() |
|
79 .getRuntime(element.getAttribute("sourceRuntime")); |
|
80 return runtime; |
|
81 } |
|
82 |
67 } |
83 } |