# HG changeset patch # User Eugene Ostroukhov # Date 1282259624 25200 # Node ID a05c6e5cc7d9abe6ede68dbb457666e05331c233 # Parent 5a2901872fcf26e175dfc98992cdd75faec9fe41 Previewer now is TMWed (can support projects with different natures). Note: this commit does not compile. This previewer still only supports WRT libraries diff -r 5a2901872fcf -r a05c6e5cc7d9 org.symbian.tools.mtw.core/schema/projectProvider.exsd --- a/org.symbian.tools.mtw.core/schema/projectProvider.exsd Wed Aug 18 09:30:53 2010 -0700 +++ b/org.symbian.tools.mtw.core/schema/projectProvider.exsd Thu Aug 19 16:13:44 2010 -0700 @@ -60,7 +60,7 @@ - + diff -r 5a2901872fcf -r a05c6e5cc7d9 org.symbian.tools.mtw.core/src/org/symbian/tools/tmw/core/TMWCore.java --- a/org.symbian.tools.mtw.core/src/org/symbian/tools/tmw/core/TMWCore.java Wed Aug 18 09:30:53 2010 -0700 +++ b/org.symbian.tools.mtw.core/src/org/symbian/tools/tmw/core/TMWCore.java Thu Aug 19 16:13:44 2010 -0700 @@ -10,7 +10,7 @@ import org.symbian.tools.tmw.core.internal.runtimes.RuntimeClasspathManager; import org.symbian.tools.tmw.core.internal.runtimes.RuntimesManagerImpl; import org.symbian.tools.tmw.core.projects.IFProjSupport; -import org.symbian.tools.tmw.core.projects.IMTWProject; +import org.symbian.tools.tmw.core.projects.ITMWProject; import org.symbian.tools.tmw.core.runtimes.IMobileWebRuntimeManager; /** @@ -59,7 +59,7 @@ return classpathManager; } - public static IMTWProject create(IProject project) { + public static ITMWProject create(IProject project) { return getDefault().projectsSupport.create(project); } diff -r 5a2901872fcf -r a05c6e5cc7d9 org.symbian.tools.mtw.core/src/org/symbian/tools/tmw/core/internal/projects/LazyIncludePathProvider.java --- a/org.symbian.tools.mtw.core/src/org/symbian/tools/tmw/core/internal/projects/LazyIncludePathProvider.java Wed Aug 18 09:30:53 2010 -0700 +++ b/org.symbian.tools.mtw.core/src/org/symbian/tools/tmw/core/internal/projects/LazyIncludePathProvider.java Thu Aug 19 16:13:44 2010 -0700 @@ -23,7 +23,7 @@ import org.eclipse.wst.jsdt.core.IIncludePathEntry; import org.symbian.tools.tmw.core.TMWCore; import org.symbian.tools.tmw.core.projects.IFacetIncludePathProvider; -import org.symbian.tools.tmw.core.projects.IMTWProject; +import org.symbian.tools.tmw.core.projects.ITMWProject; public class LazyIncludePathProvider implements IFacetIncludePathProvider { private final IConfigurationElement element; @@ -33,7 +33,7 @@ this.element = element; } - public IIncludePathEntry[] getEntries(IMTWProject project) { + public IIncludePathEntry[] getEntries(ITMWProject project) { if (provider == null) { try { provider = (LazyIncludePathProvider) element.createExecutableExtension("class"); diff -r 5a2901872fcf -r a05c6e5cc7d9 org.symbian.tools.mtw.core/src/org/symbian/tools/tmw/core/internal/projects/MTWFacetedProjectProvider.java --- a/org.symbian.tools.mtw.core/src/org/symbian/tools/tmw/core/internal/projects/MTWFacetedProjectProvider.java Wed Aug 18 09:30:53 2010 -0700 +++ b/org.symbian.tools.mtw.core/src/org/symbian/tools/tmw/core/internal/projects/MTWFacetedProjectProvider.java Thu Aug 19 16:13:44 2010 -0700 @@ -26,13 +26,13 @@ import org.eclipse.wst.common.project.facet.core.FacetedProjectFramework; import org.symbian.tools.tmw.core.ITMWConstants; import org.symbian.tools.tmw.core.TMWCore; -import org.symbian.tools.tmw.core.projects.IMTWProject; -import org.symbian.tools.tmw.core.projects.IMTWProjectProvider; +import org.symbian.tools.tmw.core.projects.ITMWProject; +import org.symbian.tools.tmw.core.projects.ITMWProjectProvider; -public class MTWFacetedProjectProvider implements IMTWProjectProvider { - private final Map projects = new WeakHashMap(); +public class MTWFacetedProjectProvider implements ITMWProjectProvider { + private final Map projects = new WeakHashMap(); - public IMTWProject create(IProject project) { + public ITMWProject create(IProject project) { if (!projects.containsKey(project)) { projects.put(project, new TMWFacetedProject(project)); } diff -r 5a2901872fcf -r a05c6e5cc7d9 org.symbian.tools.mtw.core/src/org/symbian/tools/tmw/core/internal/projects/ProjectProvider.java --- a/org.symbian.tools.mtw.core/src/org/symbian/tools/tmw/core/internal/projects/ProjectProvider.java Wed Aug 18 09:30:53 2010 -0700 +++ b/org.symbian.tools.mtw.core/src/org/symbian/tools/tmw/core/internal/projects/ProjectProvider.java Thu Aug 19 16:13:44 2010 -0700 @@ -26,13 +26,13 @@ import org.eclipse.core.runtime.CoreException; import org.eclipse.core.runtime.IConfigurationElement; import org.symbian.tools.tmw.core.TMWCore; -import org.symbian.tools.tmw.core.projects.IMTWProject; -import org.symbian.tools.tmw.core.projects.IMTWProjectProvider; +import org.symbian.tools.tmw.core.projects.ITMWProject; +import org.symbian.tools.tmw.core.projects.ITMWProjectProvider; -public class ProjectProvider implements IMTWProjectProvider { +public class ProjectProvider implements ITMWProjectProvider { private final IConfigurationElement element; private final Expression expression; - private IMTWProjectProvider provider; + private ITMWProjectProvider provider; public ProjectProvider(IConfigurationElement element) throws CoreException { this.element = element; @@ -49,14 +49,14 @@ } } - public IMTWProject create(IProject project) { + public ITMWProject create(IProject project) { return getProvider().create(project); } - private IMTWProjectProvider getProvider() { + private ITMWProjectProvider getProvider() { if (provider == null) { try { - provider = (IMTWProjectProvider) element.createExecutableExtension("class"); + provider = (ITMWProjectProvider) element.createExecutableExtension("class"); } catch (CoreException e) { throw new RuntimeException(e); } diff -r 5a2901872fcf -r a05c6e5cc7d9 org.symbian.tools.mtw.core/src/org/symbian/tools/tmw/core/internal/projects/ProjectsSupportManager.java --- a/org.symbian.tools.mtw.core/src/org/symbian/tools/tmw/core/internal/projects/ProjectsSupportManager.java Wed Aug 18 09:30:53 2010 -0700 +++ b/org.symbian.tools.mtw.core/src/org/symbian/tools/tmw/core/internal/projects/ProjectsSupportManager.java Thu Aug 19 16:13:44 2010 -0700 @@ -26,12 +26,12 @@ import org.eclipse.core.runtime.IConfigurationElement; import org.eclipse.core.runtime.Platform; import org.symbian.tools.tmw.core.TMWCore; -import org.symbian.tools.tmw.core.projects.IMTWProject; +import org.symbian.tools.tmw.core.projects.ITMWProject; public class ProjectsSupportManager { private Collection providers = null; - public IMTWProject create(IProject project) { + public ITMWProject create(IProject project) { if (providers == null) { readProviders(); } diff -r 5a2901872fcf -r a05c6e5cc7d9 org.symbian.tools.mtw.core/src/org/symbian/tools/tmw/core/internal/projects/StaticIncludePathProvider.java --- a/org.symbian.tools.mtw.core/src/org/symbian/tools/tmw/core/internal/projects/StaticIncludePathProvider.java Wed Aug 18 09:30:53 2010 -0700 +++ b/org.symbian.tools.mtw.core/src/org/symbian/tools/tmw/core/internal/projects/StaticIncludePathProvider.java Thu Aug 19 16:13:44 2010 -0700 @@ -32,7 +32,7 @@ import org.osgi.framework.Bundle; import org.symbian.tools.tmw.core.TMWCore; import org.symbian.tools.tmw.core.projects.IFacetIncludePathProvider; -import org.symbian.tools.tmw.core.projects.IMTWProject; +import org.symbian.tools.tmw.core.projects.ITMWProject; public class StaticIncludePathProvider implements IFacetIncludePathProvider { private final IConfigurationElement element; @@ -42,7 +42,7 @@ this.element = element; } - public IIncludePathEntry[] getEntries(IMTWProject project) { + public IIncludePathEntry[] getEntries(ITMWProject project) { if (entries == null) { final String name = element.getContributor().getName(); final String path = element.getAttribute("file"); diff -r 5a2901872fcf -r a05c6e5cc7d9 org.symbian.tools.mtw.core/src/org/symbian/tools/tmw/core/internal/projects/TMWFacetedProject.java --- a/org.symbian.tools.mtw.core/src/org/symbian/tools/tmw/core/internal/projects/TMWFacetedProject.java Wed Aug 18 09:30:53 2010 -0700 +++ b/org.symbian.tools.mtw.core/src/org/symbian/tools/tmw/core/internal/projects/TMWFacetedProject.java Thu Aug 19 16:13:44 2010 -0700 @@ -32,10 +32,10 @@ import org.eclipse.wst.common.project.facet.core.runtime.IRuntimeComponent; import org.eclipse.wst.common.project.facet.core.runtime.IRuntimeComponentVersion; import org.symbian.tools.tmw.core.TMWCore; -import org.symbian.tools.tmw.core.projects.IMTWProject; +import org.symbian.tools.tmw.core.projects.ITMWProject; import org.symbian.tools.tmw.core.runtimes.IMobileWebRuntime; -public class TMWFacetedProject implements IMTWProject { +public class TMWFacetedProject implements ITMWProject { private final IProject project; public TMWFacetedProject(IProject project) { @@ -88,4 +88,8 @@ return false; } + public String getPreferredScreenSize() { + return "240x320"; + } + } diff -r 5a2901872fcf -r a05c6e5cc7d9 org.symbian.tools.mtw.core/src/org/symbian/tools/tmw/core/internal/runtimes/LazyPackager.java --- a/org.symbian.tools.mtw.core/src/org/symbian/tools/tmw/core/internal/runtimes/LazyPackager.java Wed Aug 18 09:30:53 2010 -0700 +++ b/org.symbian.tools.mtw.core/src/org/symbian/tools/tmw/core/internal/runtimes/LazyPackager.java Thu Aug 19 16:13:44 2010 -0700 @@ -26,7 +26,7 @@ import org.eclipse.core.runtime.IPath; import org.eclipse.core.runtime.IProgressMonitor; import org.symbian.tools.tmw.core.TMWCore; -import org.symbian.tools.tmw.core.projects.IMTWProject; +import org.symbian.tools.tmw.core.projects.ITMWProject; import org.symbian.tools.tmw.core.runtimes.IMobileWebRuntime; import org.symbian.tools.tmw.core.runtimes.IPackager; import org.symbian.tools.tmw.core.runtimes.IPackagerDelegate; @@ -39,7 +39,7 @@ this.element = element; } - public File packageApplication(IMTWProject project, IProgressMonitor monitor) throws CoreException { + public File packageApplication(ITMWProject project, IProgressMonitor monitor) throws CoreException { return getPackager().packageApplication(project, monitor); } @@ -60,7 +60,7 @@ return getPackager().getPathInPackage(resource); } - public String getFileType(IMTWProject project) { + public String getFileType(ITMWProject project) { return getPackager().getFileType(project); } diff -r 5a2901872fcf -r a05c6e5cc7d9 org.symbian.tools.mtw.core/src/org/symbian/tools/tmw/core/internal/runtimes/MobileRuntimeLibraryContainer.java --- a/org.symbian.tools.mtw.core/src/org/symbian/tools/tmw/core/internal/runtimes/MobileRuntimeLibraryContainer.java Wed Aug 18 09:30:53 2010 -0700 +++ b/org.symbian.tools.mtw.core/src/org/symbian/tools/tmw/core/internal/runtimes/MobileRuntimeLibraryContainer.java Thu Aug 19 16:13:44 2010 -0700 @@ -27,7 +27,7 @@ import org.eclipse.wst.jsdt.core.IJavaScriptProject; import org.eclipse.wst.jsdt.core.IJsGlobalScopeContainer; import org.symbian.tools.tmw.core.TMWCore; -import org.symbian.tools.tmw.core.projects.IMTWProject; +import org.symbian.tools.tmw.core.projects.ITMWProject; import org.symbian.tools.tmw.core.runtimes.IMobileWebRuntime; public class MobileRuntimeLibraryContainer implements IJsGlobalScopeContainer { @@ -40,7 +40,7 @@ } public IIncludePathEntry[] getIncludepathEntries() { - final IMTWProject proj = TMWCore.create(project.getProject()); + final ITMWProject proj = TMWCore.create(project.getProject()); if (proj != null) { try { IFacetedProject facetedProject = ProjectFacetsManager.create(project.getProject(), false, @@ -56,7 +56,7 @@ } public String getDescription() { - final IMTWProject proj = TMWCore.create(project.getProject()); + final ITMWProject proj = TMWCore.create(project.getProject()); if (proj != null) { final IMobileWebRuntime targetRuntime = proj.getTargetRuntime(); if (targetRuntime != null) { diff -r 5a2901872fcf -r a05c6e5cc7d9 org.symbian.tools.mtw.core/src/org/symbian/tools/tmw/core/internal/runtimes/RuntimeClasspathManager.java --- a/org.symbian.tools.mtw.core/src/org/symbian/tools/tmw/core/internal/runtimes/RuntimeClasspathManager.java Wed Aug 18 09:30:53 2010 -0700 +++ b/org.symbian.tools.mtw.core/src/org/symbian/tools/tmw/core/internal/runtimes/RuntimeClasspathManager.java Thu Aug 19 16:13:44 2010 -0700 @@ -41,7 +41,7 @@ import org.symbian.tools.tmw.core.internal.projects.LazyIncludePathProvider; import org.symbian.tools.tmw.core.internal.projects.StaticIncludePathProvider; import org.symbian.tools.tmw.core.projects.IFacetIncludePathProvider; -import org.symbian.tools.tmw.core.projects.IMTWProject; +import org.symbian.tools.tmw.core.projects.ITMWProject; import org.symbian.tools.tmw.core.runtimes.IMobileWebRuntime; @SuppressWarnings("restriction") @@ -110,7 +110,7 @@ public IIncludePathEntry[] getProjectClasspathEntries(IFacetedProject project) { collectProviders(); - final IMTWProject p = TMWCore.create(project.getProject()); + final ITMWProject p = TMWCore.create(project.getProject()); if (p != null) { final IMobileWebRuntime runtime = p.getTargetRuntime(); final Map>> facetToEntry; diff -r 5a2901872fcf -r a05c6e5cc7d9 org.symbian.tools.mtw.core/src/org/symbian/tools/tmw/core/internal/runtimes/RuntimesManagerImpl.java --- a/org.symbian.tools.mtw.core/src/org/symbian/tools/tmw/core/internal/runtimes/RuntimesManagerImpl.java Wed Aug 18 09:30:53 2010 -0700 +++ b/org.symbian.tools.mtw.core/src/org/symbian/tools/tmw/core/internal/runtimes/RuntimesManagerImpl.java Thu Aug 19 16:13:44 2010 -0700 @@ -26,7 +26,7 @@ import org.eclipse.core.runtime.IConfigurationElement; import org.eclipse.core.runtime.Platform; import org.symbian.tools.tmw.core.TMWCore; -import org.symbian.tools.tmw.core.projects.IMTWProject; +import org.symbian.tools.tmw.core.projects.ITMWProject; import org.symbian.tools.tmw.core.runtimes.IMobileWebRuntime; import org.symbian.tools.tmw.core.runtimes.IMobileWebRuntimeManager; import org.symbian.tools.tmw.core.runtimes.IPackager; @@ -72,11 +72,11 @@ return rts.toArray(new IMobileWebRuntime[rts.size()]); } - public IPackager getPackager(IMTWProject project) { + public IPackager getPackager(ITMWProject project) { return getPackager(project, project.getTargetRuntime()); } - public IPackager getPackager(IMTWProject project, IMobileWebRuntime runtime) { + public IPackager getPackager(ITMWProject project, IMobileWebRuntime runtime) { if (packagers == null) { collectPackagers(); } diff -r 5a2901872fcf -r a05c6e5cc7d9 org.symbian.tools.mtw.core/src/org/symbian/tools/tmw/core/projects/IFacetIncludePathProvider.java --- a/org.symbian.tools.mtw.core/src/org/symbian/tools/tmw/core/projects/IFacetIncludePathProvider.java Wed Aug 18 09:30:53 2010 -0700 +++ b/org.symbian.tools.mtw.core/src/org/symbian/tools/tmw/core/projects/IFacetIncludePathProvider.java Thu Aug 19 16:13:44 2010 -0700 @@ -21,5 +21,5 @@ import org.eclipse.wst.jsdt.core.IIncludePathEntry; public interface IFacetIncludePathProvider { - IIncludePathEntry[] getEntries(IMTWProject project); + IIncludePathEntry[] getEntries(ITMWProject project); } diff -r 5a2901872fcf -r a05c6e5cc7d9 org.symbian.tools.mtw.core/src/org/symbian/tools/tmw/core/projects/IMTWProject.java --- a/org.symbian.tools.mtw.core/src/org/symbian/tools/tmw/core/projects/IMTWProject.java Wed Aug 18 09:30:53 2010 -0700 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,47 +0,0 @@ -/** - * Copyright (c) 2010 Symbian Foundation and/or its subsidiary(-ies). - * All rights reserved. - * This component and the accompanying materials are made available - * under the terms of the License "Eclipse Public License v1.0" - * which accompanies this distribution, and is available - * at the URL "http://www.eclipse.org/legal/epl-v10.html". - * - * Initial Contributors: - * Symbian Foundation - initial contribution. - * Contributors: - * Description: - * Overview: - * Details: - * Platforms/Drives/Compatibility: - * Assumptions/Requirement/Pre-requisites: - * Failures and causes: - */ -package org.symbian.tools.tmw.core.projects; - -import org.eclipse.core.resources.IProject; -import org.eclipse.core.runtime.IProgressMonitor; -import org.symbian.tools.tmw.core.runtimes.IMobileWebRuntime; - -public interface IMTWProject { - /** - * @return primary target runtime of this project. - */ - IMobileWebRuntime getTargetRuntime(); - - /** - * @return workspace project that back this MTW project. - */ - IProject getProject(); - - /** - * @return symbolic MTW project name. - */ - String getName(); - - /** - * Validate project configuration and contents. - * - * @return true if the project has no errors. Warnings do not count. - */ - boolean validate(IProgressMonitor monitor); -} diff -r 5a2901872fcf -r a05c6e5cc7d9 org.symbian.tools.mtw.core/src/org/symbian/tools/tmw/core/projects/IMTWProjectProvider.java --- a/org.symbian.tools.mtw.core/src/org/symbian/tools/tmw/core/projects/IMTWProjectProvider.java Wed Aug 18 09:30:53 2010 -0700 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,39 +0,0 @@ -/** - * Copyright (c) 2010 Symbian Foundation and/or its subsidiary(-ies). - * All rights reserved. - * This component and the accompanying materials are made available - * under the terms of the License "Eclipse Public License v1.0" - * which accompanies this distribution, and is available - * at the URL "http://www.eclipse.org/legal/epl-v10.html". - * - * Initial Contributors: - * Symbian Foundation - initial contribution. - * Contributors: - * Description: - * Overview: - * Details: - * Platforms/Drives/Compatibility: - * Assumptions/Requirement/Pre-requisites: - * Failures and causes: - */ -package org.symbian.tools.tmw.core.projects; - -import org.eclipse.core.resources.IProject; - -/** - * Bridges between project models. - * - * @author Eugene Ostroukhov (eugeneo@symbian.org) - */ -public interface IMTWProjectProvider { - /** - * Returns {@link IMTWProject} object that works with specified {@link IProject} object. - * @return non-null object - */ - IMTWProject create(IProject project); - - /** - * @return true if the {@link IMTWProject} object can be created. - */ - boolean isSupportedProject(IProject project); -} diff -r 5a2901872fcf -r a05c6e5cc7d9 org.symbian.tools.mtw.core/src/org/symbian/tools/tmw/core/projects/ITMWProject.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/org.symbian.tools.mtw.core/src/org/symbian/tools/tmw/core/projects/ITMWProject.java Thu Aug 19 16:13:44 2010 -0700 @@ -0,0 +1,54 @@ +/** + * Copyright (c) 2010 Symbian Foundation and/or its subsidiary(-ies). + * All rights reserved. + * This component and the accompanying materials are made available + * under the terms of the License "Eclipse Public License v1.0" + * which accompanies this distribution, and is available + * at the URL "http://www.eclipse.org/legal/epl-v10.html". + * + * Initial Contributors: + * Symbian Foundation - initial contribution. + * Contributors: + * Description: + * Overview: + * Details: + * Platforms/Drives/Compatibility: + * Assumptions/Requirement/Pre-requisites: + * Failures and causes: + */ +package org.symbian.tools.tmw.core.projects; + +import org.eclipse.core.resources.IProject; +import org.eclipse.core.runtime.IProgressMonitor; +import org.symbian.tools.tmw.core.runtimes.IMobileWebRuntime; + +public interface ITMWProject { + /** + * @return primary target runtime of this project. + */ + IMobileWebRuntime getTargetRuntime(); + + /** + * @return workspace project that back this MTW project. + */ + IProject getProject(); + + /** + * @return symbolic MTW project name. + */ + String getName(); + + /** + * Validate project configuration and contents. + * + * @return true if the project has no errors. Warnings do not count. + */ + boolean validate(IProgressMonitor monitor); + + /** + * Return preferred screen size for the project. + * + * @return string like "240x320" + */ + String getPreferredScreenSize(); +} diff -r 5a2901872fcf -r a05c6e5cc7d9 org.symbian.tools.mtw.core/src/org/symbian/tools/tmw/core/projects/ITMWProjectProvider.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/org.symbian.tools.mtw.core/src/org/symbian/tools/tmw/core/projects/ITMWProjectProvider.java Thu Aug 19 16:13:44 2010 -0700 @@ -0,0 +1,39 @@ +/** + * Copyright (c) 2010 Symbian Foundation and/or its subsidiary(-ies). + * All rights reserved. + * This component and the accompanying materials are made available + * under the terms of the License "Eclipse Public License v1.0" + * which accompanies this distribution, and is available + * at the URL "http://www.eclipse.org/legal/epl-v10.html". + * + * Initial Contributors: + * Symbian Foundation - initial contribution. + * Contributors: + * Description: + * Overview: + * Details: + * Platforms/Drives/Compatibility: + * Assumptions/Requirement/Pre-requisites: + * Failures and causes: + */ +package org.symbian.tools.tmw.core.projects; + +import org.eclipse.core.resources.IProject; + +/** + * Bridges between project models. + * + * @author Eugene Ostroukhov (eugeneo@symbian.org) + */ +public interface ITMWProjectProvider { + /** + * Returns {@link ITMWProject} object that works with specified {@link IProject} object. + * @return non-null object + */ + ITMWProject create(IProject project); + + /** + * @return true if the {@link ITMWProject} object can be created. + */ + boolean isSupportedProject(IProject project); +} diff -r 5a2901872fcf -r a05c6e5cc7d9 org.symbian.tools.mtw.core/src/org/symbian/tools/tmw/core/runtimes/IMobileWebRuntimeManager.java --- a/org.symbian.tools.mtw.core/src/org/symbian/tools/tmw/core/runtimes/IMobileWebRuntimeManager.java Wed Aug 18 09:30:53 2010 -0700 +++ b/org.symbian.tools.mtw.core/src/org/symbian/tools/tmw/core/runtimes/IMobileWebRuntimeManager.java Thu Aug 19 16:13:44 2010 -0700 @@ -18,7 +18,7 @@ */ package org.symbian.tools.tmw.core.runtimes; -import org.symbian.tools.tmw.core.projects.IMTWProject; +import org.symbian.tools.tmw.core.projects.ITMWProject; /** * Manages mobile web runtimes. @@ -29,7 +29,7 @@ /** * Shorthand method to obtain packager for project default runtime. */ - IPackager getPackager(IMTWProject project); + IPackager getPackager(ITMWProject project); /** * Returns packager that can create a packaged application for provided @@ -38,7 +38,7 @@ * @return null if the project cannot be packaged for * specified runtime */ - IPackager getPackager(IMTWProject project, IMobileWebRuntime runtime); + IPackager getPackager(ITMWProject project, IMobileWebRuntime runtime); /** * Returns runtimes for the given ID. Runtime will not be null. diff -r 5a2901872fcf -r a05c6e5cc7d9 org.symbian.tools.mtw.core/src/org/symbian/tools/tmw/core/runtimes/IPackager.java --- a/org.symbian.tools.mtw.core/src/org/symbian/tools/tmw/core/runtimes/IPackager.java Wed Aug 18 09:30:53 2010 -0700 +++ b/org.symbian.tools.mtw.core/src/org/symbian/tools/tmw/core/runtimes/IPackager.java Thu Aug 19 16:13:44 2010 -0700 @@ -24,7 +24,7 @@ import org.eclipse.core.runtime.CoreException; import org.eclipse.core.runtime.IPath; import org.eclipse.core.runtime.IProgressMonitor; -import org.symbian.tools.tmw.core.projects.IMTWProject; +import org.symbian.tools.tmw.core.projects.ITMWProject; /** * Packager creates a runtime-specific application package that can be @@ -38,7 +38,7 @@ * * @return {@link File} denoting location of the application package that can be deployed to targets */ - File packageApplication(IMTWProject project, IProgressMonitor monitor) + File packageApplication(ITMWProject project, IProgressMonitor monitor) throws CoreException; /** @@ -49,7 +49,7 @@ /** * @return file type of the application archive */ - String getFileType(IMTWProject project); + String getFileType(ITMWProject project); /** * @return target runtime that this packager packages for diff -r 5a2901872fcf -r a05c6e5cc7d9 org.symbian.tools.mtw.core/src/org/symbian/tools/tmw/core/runtimes/IPackagerDelegate.java --- a/org.symbian.tools.mtw.core/src/org/symbian/tools/tmw/core/runtimes/IPackagerDelegate.java Wed Aug 18 09:30:53 2010 -0700 +++ b/org.symbian.tools.mtw.core/src/org/symbian/tools/tmw/core/runtimes/IPackagerDelegate.java Thu Aug 19 16:13:44 2010 -0700 @@ -24,7 +24,7 @@ import org.eclipse.core.runtime.CoreException; import org.eclipse.core.runtime.IPath; import org.eclipse.core.runtime.IProgressMonitor; -import org.symbian.tools.tmw.core.projects.IMTWProject; +import org.symbian.tools.tmw.core.projects.ITMWProject; /** * Delegate performs application packaging. @@ -37,7 +37,7 @@ * * @return URI of the application package that can be deployed to targets */ - File packageApplication(IMTWProject project, IProgressMonitor monitor) throws CoreException; + File packageApplication(ITMWProject project, IProgressMonitor monitor) throws CoreException; /** * @return application package root-relative path where the workspace resource will be packaged. Can be null. @@ -47,5 +47,5 @@ /** * @return file type of the application archive */ - String getFileType(IMTWProject project); + String getFileType(ITMWProject project); } diff -r 5a2901872fcf -r a05c6e5cc7d9 org.symbian.tools.mtw.core/src/org/symbian/tools/tmw/core/utilities/CoreUtil.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/org.symbian.tools.mtw.core/src/org/symbian/tools/tmw/core/utilities/CoreUtil.java Thu Aug 19 16:13:44 2010 -0700 @@ -0,0 +1,38 @@ +/** + * Copyright (c) 2010 Symbian Foundation and/or its subsidiary(-ies). + * All rights reserved. + * This component and the accompanying materials are made available + * under the terms of the License "Eclipse Public License v1.0" + * which accompanies this distribution, and is available + * at the URL "http://www.eclipse.org/legal/epl-v10.html". + * + * Initial Contributors: + * Symbian Foundation - initial contribution. + * Contributors: + * Description: + * Overview: + * Details: + * Platforms/Drives/Compatibility: + * Assumptions/Requirement/Pre-requisites: + * Failures and causes: + */ +package org.symbian.tools.tmw.core.utilities; + +import org.eclipse.core.runtime.Platform; + +/** + * Utilities used all over the TMW code base. Users can rely on this methods + * even though they are not specific to mobile development. + * + * @author Eugene Ostroukhov (eugeneo@symbian.org) + */ +public final class CoreUtil { + + private CoreUtil() { + // Class with only static methods + } + + public static boolean isMac() { + return "macosx".equals(Platform.getOS()); + } +} diff -r 5a2901872fcf -r a05c6e5cc7d9 org.symbian.tools.mtw.ui/src/org/symbian/tools/tmw/internal/ui/deployment/DeployWizardContext.java --- a/org.symbian.tools.mtw.ui/src/org/symbian/tools/tmw/internal/ui/deployment/DeployWizardContext.java Wed Aug 18 09:30:53 2010 -0700 +++ b/org.symbian.tools.mtw.ui/src/org/symbian/tools/tmw/internal/ui/deployment/DeployWizardContext.java Thu Aug 19 16:13:44 2010 -0700 @@ -25,15 +25,15 @@ import org.eclipse.core.runtime.CoreException; import org.eclipse.core.runtime.IProgressMonitor; import org.eclipse.core.runtime.SubProgressMonitor; -import org.symbian.tools.tmw.core.projects.IMTWProject; +import org.symbian.tools.tmw.core.projects.ITMWProject; import org.symbian.tools.tmw.ui.TMWCoreUI; public class DeployWizardContext { private DeploymentTargetWrapper target; - private final IMTWProject project; + private final ITMWProject project; private boolean logging; - public DeployWizardContext(IMTWProject project) { + public DeployWizardContext(ITMWProject project) { this.project = project; } @@ -45,7 +45,7 @@ return target; } - public IMTWProject getProject() { + public ITMWProject getProject() { return project; } diff -r 5a2901872fcf -r a05c6e5cc7d9 org.symbian.tools.mtw.ui/src/org/symbian/tools/tmw/internal/ui/deployment/DeploymentTargetTypeDescriptor.java --- a/org.symbian.tools.mtw.ui/src/org/symbian/tools/tmw/internal/ui/deployment/DeploymentTargetTypeDescriptor.java Wed Aug 18 09:30:53 2010 -0700 +++ b/org.symbian.tools.mtw.ui/src/org/symbian/tools/tmw/internal/ui/deployment/DeploymentTargetTypeDescriptor.java Thu Aug 19 16:13:44 2010 -0700 @@ -26,14 +26,14 @@ import org.eclipse.core.runtime.IProgressMonitor; import org.eclipse.core.runtime.jobs.ISchedulingRule; import org.eclipse.jface.resource.ImageDescriptor; -import org.symbian.tools.tmw.core.projects.IMTWProject; +import org.symbian.tools.tmw.core.projects.ITMWProject; import org.symbian.tools.tmw.ui.TMWCoreUI; import org.symbian.tools.tmw.ui.deployment.IDeploymentTarget; import org.symbian.tools.tmw.ui.deployment.IDeploymentTargetType; public final class DeploymentTargetTypeDescriptor implements IDeploymentTargetType { public class NullProvider implements IDeploymentTargetType { - public IDeploymentTarget[] getTargets(IMTWProject project) { + public IDeploymentTarget[] getTargets(ITMWProject project) { return null; } @@ -41,7 +41,7 @@ // Do nothing } - public IDeploymentTarget findTarget(IMTWProject project, String id) { + public IDeploymentTarget findTarget(ITMWProject project, String id) { return null; } @@ -64,12 +64,12 @@ this.element = element; } - public boolean supports(IMTWProject project) { + public boolean supports(ITMWProject project) { // We will support more declarative filtering later return true; } - public DeploymentTargetWrapper[] getTargets(IMTWProject project) { + public DeploymentTargetWrapper[] getTargets(ITMWProject project) { final DeploymentTargetWrapper[] targets = wrap(getProvider().getTargets(project)); return targets != null ? targets : NO_TARGETS; } @@ -99,7 +99,7 @@ getProvider().discoverTargets(monitor); } - public IDeploymentTarget findTarget(IMTWProject project, String id) { + public IDeploymentTarget findTarget(ITMWProject project, String id) { return wrap(getProvider().findTarget(project, id)); } diff -r 5a2901872fcf -r a05c6e5cc7d9 org.symbian.tools.mtw.ui/src/org/symbian/tools/tmw/internal/ui/deployment/DeploymentTargetWrapper.java --- a/org.symbian.tools.mtw.ui/src/org/symbian/tools/tmw/internal/ui/deployment/DeploymentTargetWrapper.java Wed Aug 18 09:30:53 2010 -0700 +++ b/org.symbian.tools.mtw.ui/src/org/symbian/tools/tmw/internal/ui/deployment/DeploymentTargetWrapper.java Thu Aug 19 16:13:44 2010 -0700 @@ -27,7 +27,7 @@ import org.eclipse.ui.IMemento; import org.eclipse.ui.model.IWorkbenchAdapter; import org.eclipse.ui.model.IWorkbenchAdapter2; -import org.symbian.tools.tmw.core.projects.IMTWProject; +import org.symbian.tools.tmw.core.projects.ITMWProject; import org.symbian.tools.tmw.core.runtimes.IPackager; import org.symbian.tools.tmw.ui.deployment.IDeploymentTarget; @@ -83,7 +83,7 @@ target.save(memento); } - public void init(IMTWProject project, IPackager packager, IMemento memento) { + public void init(ITMWProject project, IPackager packager, IMemento memento) { target.init(project, packager, memento); } @@ -92,7 +92,7 @@ this.type = type; } - public IStatus deploy(IMTWProject project, IPackager packager, IProgressMonitor monitor) + public IStatus deploy(ITMWProject project, IPackager packager, IProgressMonitor monitor) throws CoreException { return target.deploy(project, packager, monitor); } diff -r 5a2901872fcf -r a05c6e5cc7d9 org.symbian.tools.mtw.ui/src/org/symbian/tools/tmw/internal/ui/deployment/externalapp/FilesystemDeploymentTarget.java --- a/org.symbian.tools.mtw.ui/src/org/symbian/tools/tmw/internal/ui/deployment/externalapp/FilesystemDeploymentTarget.java Wed Aug 18 09:30:53 2010 -0700 +++ b/org.symbian.tools.mtw.ui/src/org/symbian/tools/tmw/internal/ui/deployment/externalapp/FilesystemDeploymentTarget.java Thu Aug 19 16:13:44 2010 -0700 @@ -21,7 +21,7 @@ import org.eclipse.core.runtime.CoreException; import org.eclipse.core.runtime.IProgressMonitor; import org.eclipse.core.runtime.jobs.ISchedulingRule; -import org.symbian.tools.tmw.core.projects.IMTWProject; +import org.symbian.tools.tmw.core.projects.ITMWProject; import org.symbian.tools.tmw.ui.deployment.IDeploymentTarget; import org.symbian.tools.tmw.ui.deployment.IDeploymentTargetType; @@ -31,7 +31,7 @@ // TODO Auto-generated constructor stub } - public IDeploymentTarget[] getTargets(IMTWProject project) { + public IDeploymentTarget[] getTargets(ITMWProject project) { // TODO Auto-generated method stub return null; } @@ -41,7 +41,7 @@ } - public IDeploymentTarget findTarget(IMTWProject project, String id) { + public IDeploymentTarget findTarget(ITMWProject project, String id) { // TODO Auto-generated method stub return null; } diff -r 5a2901872fcf -r a05c6e5cc7d9 org.symbian.tools.mtw.ui/src/org/symbian/tools/tmw/internal/ui/deployment/targets/ExternalApplicationDeploymentType.java --- a/org.symbian.tools.mtw.ui/src/org/symbian/tools/tmw/internal/ui/deployment/targets/ExternalApplicationDeploymentType.java Wed Aug 18 09:30:53 2010 -0700 +++ b/org.symbian.tools.mtw.ui/src/org/symbian/tools/tmw/internal/ui/deployment/targets/ExternalApplicationDeploymentType.java Thu Aug 19 16:13:44 2010 -0700 @@ -29,7 +29,7 @@ import org.eclipse.swt.program.Program; import org.eclipse.ui.IMemento; import org.symbian.tools.tmw.core.TMWCore; -import org.symbian.tools.tmw.core.projects.IMTWProject; +import org.symbian.tools.tmw.core.projects.ITMWProject; import org.symbian.tools.tmw.core.runtimes.IPackager; import org.symbian.tools.tmw.ui.deployment.IDeploymentTarget; import org.symbian.tools.tmw.ui.deployment.IDeploymentTargetType; @@ -37,9 +37,9 @@ public class ExternalApplicationDeploymentType extends PlatformObject implements IDeploymentTargetType, IDeploymentTarget { - private IMTWProject project; + private ITMWProject project; - public IStatus deploy(IMTWProject project, IPackager packager, IProgressMonitor monitor) + public IStatus deploy(ITMWProject project, IPackager packager, IProgressMonitor monitor) throws CoreException { Program app = getExternalApp(project); File file = packager.packageApplication(project, monitor); @@ -58,7 +58,7 @@ // Do nothing } - public IDeploymentTarget findTarget(IMTWProject project, String id) { + public IDeploymentTarget findTarget(ITMWProject project, String id) { if (getExternalApp(project) != null) { return this; } else { @@ -70,7 +70,7 @@ return getExternalApp(project).getName(); } - private Program getExternalApp(IMTWProject project) { + private Program getExternalApp(ITMWProject project) { this.project = project; IPackager packager = TMWCore.getRuntimesManager().getPackager(project); if (packager != null) { @@ -96,7 +96,7 @@ return null; } - public IDeploymentTarget[] getTargets(IMTWProject project) { + public IDeploymentTarget[] getTargets(ITMWProject project) { if (getExternalApp(project) != null) { return new IDeploymentTarget[] { this }; } else { @@ -104,7 +104,7 @@ } } - public void init(IMTWProject project, IPackager packager, IMemento memento) { + public void init(ITMWProject project, IPackager packager, IMemento memento) { // Do nothing } diff -r 5a2901872fcf -r a05c6e5cc7d9 org.symbian.tools.mtw.ui/src/org/symbian/tools/tmw/internal/ui/deployment/targets/FilesystemDeploymentTarget.java --- a/org.symbian.tools.mtw.ui/src/org/symbian/tools/tmw/internal/ui/deployment/targets/FilesystemDeploymentTarget.java Wed Aug 18 09:30:53 2010 -0700 +++ b/org.symbian.tools.mtw.ui/src/org/symbian/tools/tmw/internal/ui/deployment/targets/FilesystemDeploymentTarget.java Thu Aug 19 16:13:44 2010 -0700 @@ -36,7 +36,7 @@ import org.eclipse.core.runtime.Status; import org.eclipse.core.runtime.jobs.ISchedulingRule; import org.eclipse.ui.IMemento; -import org.symbian.tools.tmw.core.projects.IMTWProject; +import org.symbian.tools.tmw.core.projects.ITMWProject; import org.symbian.tools.tmw.core.runtimes.IPackager; import org.symbian.tools.tmw.ui.TMWCoreUI; import org.symbian.tools.tmw.ui.deployment.IDeploymentTarget; @@ -46,7 +46,7 @@ private String defaultName; private IPath path; - public IStatus deploy(IMTWProject project, IPackager packager, IProgressMonitor monitor) throws CoreException { + public IStatus deploy(ITMWProject project, IPackager packager, IProgressMonitor monitor) throws CoreException { final File file = packager.packageApplication(project, monitor); try { final InputStream inputStream = new BufferedInputStream(new FileInputStream(file)); @@ -74,7 +74,7 @@ // Do nothing } - public IDeploymentTarget findTarget(IMTWProject project, String id) { + public IDeploymentTarget findTarget(ITMWProject project, String id) { return getId().equals(id) ? this : null; } @@ -102,11 +102,11 @@ return null; } - public IDeploymentTarget[] getTargets(IMTWProject project) { + public IDeploymentTarget[] getTargets(ITMWProject project) { return new IDeploymentTarget[] { this }; } - public void init(IMTWProject project, IPackager packager, IMemento memento) { + public void init(ITMWProject project, IPackager packager, IMemento memento) { defaultName = new Path(project.getName()).addFileExtension(packager.getFileType(project)).toOSString(); path = null; String string = memento != null ? memento.getString("path") : null; diff -r 5a2901872fcf -r a05c6e5cc7d9 org.symbian.tools.mtw.ui/src/org/symbian/tools/tmw/internal/ui/libraries/TMWGlobalScopeContainerUI.java --- a/org.symbian.tools.mtw.ui/src/org/symbian/tools/tmw/internal/ui/libraries/TMWGlobalScopeContainerUI.java Wed Aug 18 09:30:53 2010 -0700 +++ b/org.symbian.tools.mtw.ui/src/org/symbian/tools/tmw/internal/ui/libraries/TMWGlobalScopeContainerUI.java Thu Aug 19 16:13:44 2010 -0700 @@ -26,14 +26,14 @@ import org.eclipse.wst.jsdt.core.IJavaScriptProject; import org.eclipse.wst.jsdt.internal.ui.IJsGlobalScopeContainerInitializerExtension; import org.symbian.tools.tmw.core.TMWCore; -import org.symbian.tools.tmw.core.projects.IMTWProject; +import org.symbian.tools.tmw.core.projects.ITMWProject; import org.symbian.tools.tmw.core.runtimes.IMobileWebRuntime; @SuppressWarnings("restriction") public class TMWGlobalScopeContainerUI implements IJsGlobalScopeContainerInitializerExtension { public ImageDescriptor getImage(IPath containerPath, String element, IJavaScriptProject project) { - final IMTWProject p = TMWCore.create(project.getProject()); + final ITMWProject p = TMWCore.create(project.getProject()); if (p != null) { final IMobileWebRuntime runtime = p.getTargetRuntime(); if (runtime != null) { diff -r 5a2901872fcf -r a05c6e5cc7d9 org.symbian.tools.mtw.ui/src/org/symbian/tools/tmw/ui/ProjectMemo.java --- a/org.symbian.tools.mtw.ui/src/org/symbian/tools/tmw/ui/ProjectMemo.java Wed Aug 18 09:30:53 2010 -0700 +++ b/org.symbian.tools.mtw.ui/src/org/symbian/tools/tmw/ui/ProjectMemo.java Thu Aug 19 16:13:44 2010 -0700 @@ -31,7 +31,7 @@ import org.eclipse.core.runtime.Path; import org.eclipse.ui.IMemento; import org.eclipse.ui.XMLMemento; -import org.symbian.tools.tmw.core.projects.IMTWProject; +import org.symbian.tools.tmw.core.projects.ITMWProject; import org.symbian.tools.tmw.ui.deployment.IDeploymentTarget; import org.symbian.tools.tmw.ui.deployment.IDeploymentTargetType; @@ -41,10 +41,10 @@ private static final String TARGET_CONFIGURATION = "target"; private static final String MEMO_TYPE = "deployment"; - private final IMTWProject project; + private final ITMWProject project; private XMLMemento memento; - public ProjectMemo(IMTWProject project) { + public ProjectMemo(ITMWProject project) { this.project = project; } diff -r 5a2901872fcf -r a05c6e5cc7d9 org.symbian.tools.mtw.ui/src/org/symbian/tools/tmw/ui/TMWCoreUI.java --- a/org.symbian.tools.mtw.ui/src/org/symbian/tools/tmw/ui/TMWCoreUI.java Wed Aug 18 09:30:53 2010 -0700 +++ b/org.symbian.tools.mtw.ui/src/org/symbian/tools/tmw/ui/TMWCoreUI.java Thu Aug 19 16:13:44 2010 -0700 @@ -9,7 +9,7 @@ import org.eclipse.jface.resource.ImageRegistry; import org.eclipse.ui.plugin.AbstractUIPlugin; import org.osgi.framework.BundleContext; -import org.symbian.tools.tmw.core.projects.IMTWProject; +import org.symbian.tools.tmw.core.projects.ITMWProject; import org.symbian.tools.tmw.internal.ui.deployment.DeploymentTargetPresentationsManager; import org.symbian.tools.tmw.internal.ui.deployment.DeploymentTargetTypesRegistry; import org.symbian.tools.tmw.internal.ui.project.ProjectTemplateManagerImpl; @@ -68,11 +68,11 @@ log(null, e); } - public static ProjectMemo getMemo(IMTWProject project) { + public static ProjectMemo getMemo(ITMWProject project) { return getDefault().getMemoForProject(project); } - private synchronized ProjectMemo getMemoForProject(IMTWProject project) { + private synchronized ProjectMemo getMemoForProject(ITMWProject project) { ProjectMemo memo = MEMOS.get(project.getProject()); if (memo == null) { memo = new ProjectMemo(project); diff -r 5a2901872fcf -r a05c6e5cc7d9 org.symbian.tools.mtw.ui/src/org/symbian/tools/tmw/ui/UIUtils.java --- a/org.symbian.tools.mtw.ui/src/org/symbian/tools/tmw/ui/UIUtils.java Wed Aug 18 09:30:53 2010 -0700 +++ b/org.symbian.tools.mtw.ui/src/org/symbian/tools/tmw/ui/UIUtils.java Thu Aug 19 16:13:44 2010 -0700 @@ -28,10 +28,10 @@ import org.eclipse.ui.IWorkbenchPart; import org.eclipse.ui.handlers.HandlerUtil; import org.symbian.tools.tmw.core.TMWCore; -import org.symbian.tools.tmw.core.projects.IMTWProject; +import org.symbian.tools.tmw.core.projects.ITMWProject; public class UIUtils { - public static IMTWProject getProjectFromCommandContext(ExecutionEvent event) { + public static ITMWProject getProjectFromCommandContext(ExecutionEvent event) { IResource resource = null; IWorkbenchPart activePart = HandlerUtil.getActivePart(event); if (activePart instanceof IEditorPart) { diff -r 5a2901872fcf -r a05c6e5cc7d9 org.symbian.tools.mtw.ui/src/org/symbian/tools/tmw/ui/commands/DeployHandler.java --- a/org.symbian.tools.mtw.ui/src/org/symbian/tools/tmw/ui/commands/DeployHandler.java Wed Aug 18 09:30:53 2010 -0700 +++ b/org.symbian.tools.mtw.ui/src/org/symbian/tools/tmw/ui/commands/DeployHandler.java Thu Aug 19 16:13:44 2010 -0700 @@ -33,7 +33,7 @@ import org.eclipse.ui.PartInitException; import org.eclipse.ui.handlers.HandlerUtil; import org.symbian.tools.tmw.core.TMWCore; -import org.symbian.tools.tmw.core.projects.IMTWProject; +import org.symbian.tools.tmw.core.projects.ITMWProject; import org.symbian.tools.tmw.ui.UIUtils; import org.symbian.tools.tmw.ui.deployment.DeployWizard; @@ -56,7 +56,7 @@ public Object execute(ExecutionEvent event) throws ExecutionException { final IWorkbenchWindow window = HandlerUtil.getActiveWorkbenchWindowChecked(event); - final IMTWProject project = UIUtils.getProjectFromCommandContext(event); + final ITMWProject project = UIUtils.getProjectFromCommandContext(event); if (project != null) { window.getActivePage().saveAllEditors(true); if (validate(project, window)) { @@ -67,7 +67,7 @@ return null; } - private boolean validate(final IMTWProject project, final IWorkbenchWindow window) { + private boolean validate(final ITMWProject project, final IWorkbenchWindow window) { final boolean[] retvalue = { false }; final ProgressMonitorDialog dialog = new ProgressMonitorDialog(window.getShell()); try { diff -r 5a2901872fcf -r a05c6e5cc7d9 org.symbian.tools.mtw.ui/src/org/symbian/tools/tmw/ui/deployment/DeployWizard.java --- a/org.symbian.tools.mtw.ui/src/org/symbian/tools/tmw/ui/deployment/DeployWizard.java Wed Aug 18 09:30:53 2010 -0700 +++ b/org.symbian.tools.mtw.ui/src/org/symbian/tools/tmw/ui/deployment/DeployWizard.java Thu Aug 19 16:13:44 2010 -0700 @@ -30,7 +30,7 @@ import org.eclipse.jface.wizard.Wizard; import org.eclipse.ui.statushandlers.StatusManager; import org.symbian.tools.tmw.core.TMWCore; -import org.symbian.tools.tmw.core.projects.IMTWProject; +import org.symbian.tools.tmw.core.projects.ITMWProject; import org.symbian.tools.tmw.core.runtimes.IPackager; import org.symbian.tools.tmw.internal.ui.deployment.DeployWizardContext; import org.symbian.tools.tmw.internal.ui.deployment.DeploymentTargetWizardPage; @@ -40,9 +40,9 @@ public final class DeployWizard extends Wizard { private final DeployWizardContext context; - private final IMTWProject project; + private final ITMWProject project; - public DeployWizard(IMTWProject project) { + public DeployWizard(ITMWProject project) { this.project = project; setNeedsProgressMonitor(true); setWindowTitle("Deploy Mobile Application"); @@ -91,7 +91,7 @@ return false; } - private IStatus doDeploy(DeploymentTargetWrapper target, IMTWProject project, IProgressMonitor monitor) { + private IStatus doDeploy(DeploymentTargetWrapper target, ITMWProject project, IProgressMonitor monitor) { IStatus status; try { IPackager packager = TMWCore.getRuntimesManager().getPackager(project); @@ -106,9 +106,9 @@ private final class DeployJob extends Job { private final DeploymentTargetWrapper target; - private final IMTWProject project; + private final ITMWProject project; - private DeployJob(IMTWProject project, DeploymentTargetWrapper deploymentTarget) { + private DeployJob(ITMWProject project, DeploymentTargetWrapper deploymentTarget) { super(String.format("Deploying %s to %s", project.getName(), deploymentTarget.getName())); ISchedulingRule rule = deploymentTarget.getType().getSchedulingRule(deploymentTarget.getActualTarget()); if (rule != null) { diff -r 5a2901872fcf -r a05c6e5cc7d9 org.symbian.tools.mtw.ui/src/org/symbian/tools/tmw/ui/deployment/IDeploymentTarget.java --- a/org.symbian.tools.mtw.ui/src/org/symbian/tools/tmw/ui/deployment/IDeploymentTarget.java Wed Aug 18 09:30:53 2010 -0700 +++ b/org.symbian.tools.mtw.ui/src/org/symbian/tools/tmw/ui/deployment/IDeploymentTarget.java Thu Aug 19 16:13:44 2010 -0700 @@ -23,7 +23,7 @@ import org.eclipse.core.runtime.IProgressMonitor; import org.eclipse.core.runtime.IStatus; import org.eclipse.ui.IMemento; -import org.symbian.tools.tmw.core.projects.IMTWProject; +import org.symbian.tools.tmw.core.projects.ITMWProject; import org.symbian.tools.tmw.core.runtimes.IPackager; /** @@ -72,7 +72,7 @@ * @param runtime runtime that will be used to run packaged application * @param monitor progress monitor to report deployment progress */ - IStatus deploy(IMTWProject project, IPackager packager, IProgressMonitor monitor) throws CoreException; + IStatus deploy(ITMWProject project, IPackager packager, IProgressMonitor monitor) throws CoreException; /** * Save project-specific settings to the memento. Workspace-wide settings @@ -83,5 +83,5 @@ /** * Initialize target for project deployment. */ - void init(IMTWProject project, IPackager packager, IMemento memento); + void init(ITMWProject project, IPackager packager, IMemento memento); } diff -r 5a2901872fcf -r a05c6e5cc7d9 org.symbian.tools.mtw.ui/src/org/symbian/tools/tmw/ui/deployment/IDeploymentTargetType.java --- a/org.symbian.tools.mtw.ui/src/org/symbian/tools/tmw/ui/deployment/IDeploymentTargetType.java Wed Aug 18 09:30:53 2010 -0700 +++ b/org.symbian.tools.mtw.ui/src/org/symbian/tools/tmw/ui/deployment/IDeploymentTargetType.java Thu Aug 19 16:13:44 2010 -0700 @@ -21,7 +21,7 @@ import org.eclipse.core.runtime.CoreException; import org.eclipse.core.runtime.IProgressMonitor; import org.eclipse.core.runtime.jobs.ISchedulingRule; -import org.symbian.tools.tmw.core.projects.IMTWProject; +import org.symbian.tools.tmw.core.projects.ITMWProject; /** * This interface is for deployment targets providers. @@ -35,7 +35,7 @@ * @return List of the valid deployment targets. Both null and * empty array are a valid return value when there are no available targets. */ - IDeploymentTarget[] getTargets(IMTWProject project); + IDeploymentTarget[] getTargets(ITMWProject project); /** * Discovers targets. This can be a long-running task and in most cases @@ -48,7 +48,7 @@ * null if target with given ID cannot be found or if * the target does not accept project any longer. */ - IDeploymentTarget findTarget(IMTWProject project, String id); + IDeploymentTarget findTarget(ITMWProject project, String id); /** * Return false if user needs to trigger long-running diff -r 5a2901872fcf -r a05c6e5cc7d9 org.symbian.tools.mtw.ui/src/org/symbian/tools/tmw/ui/deployment/bluetooth/BluetoothTarget.java --- a/org.symbian.tools.mtw.ui/src/org/symbian/tools/tmw/ui/deployment/bluetooth/BluetoothTarget.java Wed Aug 18 09:30:53 2010 -0700 +++ b/org.symbian.tools.mtw.ui/src/org/symbian/tools/tmw/ui/deployment/bluetooth/BluetoothTarget.java Thu Aug 19 16:13:44 2010 -0700 @@ -51,7 +51,7 @@ import org.eclipse.core.runtime.SubProgressMonitor; import org.eclipse.ui.IMemento; import org.symbian.tools.tmw.core.TMWCore; -import org.symbian.tools.tmw.core.projects.IMTWProject; +import org.symbian.tools.tmw.core.projects.ITMWProject; import org.symbian.tools.tmw.core.runtimes.IPackager; import org.symbian.tools.tmw.ui.deployment.IDeploymentTarget; @@ -71,7 +71,7 @@ this.provider = provider; } - public IStatus deploy(IMTWProject project, IPackager packager, IProgressMonitor monitor) throws CoreException { + public IStatus deploy(ITMWProject project, IPackager packager, IProgressMonitor monitor) throws CoreException { message = "Deployment was successful. Please follow on-screen instructions to complete application deployment on your device."; statuses.clear(); monitor.beginTask(String.format("Deploying application %s to %s", project.getName(), name), @@ -302,7 +302,7 @@ return serviceURL; } - public void init(IMTWProject project, IPackager packager, IMemento memento) { + public void init(ITMWProject project, IPackager packager, IMemento memento) { // nothing } diff -r 5a2901872fcf -r a05c6e5cc7d9 org.symbian.tools.mtw.ui/src/org/symbian/tools/tmw/ui/deployment/bluetooth/BluetoothTargetType.java --- a/org.symbian.tools.mtw.ui/src/org/symbian/tools/tmw/ui/deployment/bluetooth/BluetoothTargetType.java Wed Aug 18 09:30:53 2010 -0700 +++ b/org.symbian.tools.mtw.ui/src/org/symbian/tools/tmw/ui/deployment/bluetooth/BluetoothTargetType.java Thu Aug 19 16:13:44 2010 -0700 @@ -37,7 +37,7 @@ import org.eclipse.core.runtime.IStatus; import org.eclipse.core.runtime.Status; import org.eclipse.core.runtime.jobs.ISchedulingRule; -import org.symbian.tools.tmw.core.projects.IMTWProject; +import org.symbian.tools.tmw.core.projects.ITMWProject; import org.symbian.tools.tmw.ui.ConsoleFactory; import org.symbian.tools.tmw.ui.TMWCoreUI; import org.symbian.tools.tmw.ui.deployment.IDeploymentTarget; @@ -163,7 +163,7 @@ } } - public IDeploymentTarget findTarget(IMTWProject project, String id) { + public IDeploymentTarget findTarget(ITMWProject project, String id) { if (!isBloothToothConnected()) { return null; } @@ -179,7 +179,7 @@ } } - public IDeploymentTarget[] getTargets(IMTWProject project) { + public IDeploymentTarget[] getTargets(ITMWProject project) { if (targets != null) { final Collection values = targets.values(); return values.toArray(new IDeploymentTarget[values.size()]); diff -r 5a2901872fcf -r a05c6e5cc7d9 org.symbian.tools.mtw.ui/src/org/symbian/tools/tmw/ui/navigator/PackagingInformationDecorator.java --- a/org.symbian.tools.mtw.ui/src/org/symbian/tools/tmw/ui/navigator/PackagingInformationDecorator.java Wed Aug 18 09:30:53 2010 -0700 +++ b/org.symbian.tools.mtw.ui/src/org/symbian/tools/tmw/ui/navigator/PackagingInformationDecorator.java Thu Aug 19 16:13:44 2010 -0700 @@ -24,7 +24,7 @@ import org.eclipse.jface.viewers.ILabelProviderListener; import org.eclipse.jface.viewers.ILightweightLabelDecorator; import org.symbian.tools.tmw.core.TMWCore; -import org.symbian.tools.tmw.core.projects.IMTWProject; +import org.symbian.tools.tmw.core.projects.ITMWProject; import org.symbian.tools.tmw.core.runtimes.IPackager; import org.symbian.tools.tmw.ui.TMWCoreUI; @@ -38,7 +38,7 @@ resource = (IResource) ((IAdaptable) element).getAdapter(IResource.class); } if (resource != null && resource.isAccessible()) { - IMTWProject project = TMWCore.create(resource.getProject()); + ITMWProject project = TMWCore.create(resource.getProject()); if (project != null) { IPackager packager = TMWCore.getRuntimesManager().getPackager(project); if (packager.getPathInPackage(resource) != null) { diff -r 5a2901872fcf -r a05c6e5cc7d9 org.symbian.tools.wrttools.debug.core/META-INF/MANIFEST.MF --- a/org.symbian.tools.wrttools.debug.core/META-INF/MANIFEST.MF Wed Aug 18 09:30:53 2010 -0700 +++ b/org.symbian.tools.wrttools.debug.core/META-INF/MANIFEST.MF Thu Aug 19 16:13:44 2010 -0700 @@ -15,14 +15,14 @@ org.eclipse.wst.jsdt.ui;bundle-version="1.0.200", org.eclipse.ui.editors;bundle-version="3.5.0", org.eclipse.jface.text;bundle-version="3.5.0", - org.symbian.tools.wrttools.previewer;bundle-version="0.9.0", - org.symbian.tools.wrttools;bundle-version="0.9.0", + org.symbian.tools.tmw.previewer;bundle-version="0.9.0", org.eclipse.core.filesystem;bundle-version="1.2.0", org.eclipse.ui.ide;bundle-version="3.5.0", org.eclipse.wst.sse.ui;bundle-version="1.1.100", org.eclipse.wst.sse.core;bundle-version="1.1.400", org.eclipse.wst.html.core;bundle-version="1.1.300", - org.eclipse.wst.jsdt.core;bundle-version="1.0.200" + org.eclipse.wst.jsdt.core;bundle-version="1.0.200", + org.symbian.tools.wrttools;bundle-version="1.0.0" Bundle-RequiredExecutionEnvironment: J2SE-1.5, JavaSE-1.6 Bundle-ActivationPolicy: lazy diff -r 5a2901872fcf -r a05c6e5cc7d9 org.symbian.tools.wrttools.debug.core/plugin.xml --- a/org.symbian.tools.wrttools.debug.core/plugin.xml Wed Aug 18 09:30:53 2010 -0700 +++ b/org.symbian.tools.wrttools.debug.core/plugin.xml Thu Aug 19 16:13:44 2010 -0700 @@ -318,7 +318,7 @@ + point="org.symbian.tools.tmw.previewer.commands"> diff -r 5a2901872fcf -r a05c6e5cc7d9 org.symbian.tools.wrttools.debug.core/src/org/symbian/tools/wrttools/debug/internal/launch/ResourcesChangeListener.java --- a/org.symbian.tools.wrttools.debug.core/src/org/symbian/tools/wrttools/debug/internal/launch/ResourcesChangeListener.java Wed Aug 18 09:30:53 2010 -0700 +++ b/org.symbian.tools.wrttools.debug.core/src/org/symbian/tools/wrttools/debug/internal/launch/ResourcesChangeListener.java Thu Aug 19 16:13:44 2010 -0700 @@ -33,9 +33,9 @@ import org.eclipse.jface.dialogs.MessageDialogWithToggle; import org.eclipse.swt.widgets.Display; import org.eclipse.ui.PlatformUI; +import org.symbian.tools.tmw.previewer.internal.PreviewerUtil; import org.symbian.tools.wrttools.debug.internal.Activator; import org.symbian.tools.wrttools.debug.internal.IConstants; -import org.symbian.tools.wrttools.previewer.PreviewerUtil; public class ResourcesChangeListener implements IResourceChangeListener { public void resourceChanged(IResourceChangeEvent event) { diff -r 5a2901872fcf -r a05c6e5cc7d9 org.symbian.tools.wrttools.debug.core/src/org/symbian/tools/wrttools/debug/internal/model/ResourceManager.java --- a/org.symbian.tools.wrttools.debug.core/src/org/symbian/tools/wrttools/debug/internal/model/ResourceManager.java Wed Aug 18 09:30:53 2010 -0700 +++ b/org.symbian.tools.wrttools.debug.core/src/org/symbian/tools/wrttools/debug/internal/model/ResourceManager.java Thu Aug 19 16:13:44 2010 -0700 @@ -10,7 +10,6 @@ import org.chromium.debug.core.model.VmResourceId; import org.chromium.sdk.Script; import org.eclipse.core.resources.IFile; -import org.eclipse.core.resources.IResource; import org.symbian.tools.wrttools.previewer.PreviewerPlugin; /** @@ -57,7 +56,7 @@ return getResource(script) != null; } - public String translateResourceToScript(IResource resource) { + public String translateResourceToScript(IFile resource) { return PreviewerPlugin.getDefault().getHttpPreviewer().getHttpUrl(resource); } diff -r 5a2901872fcf -r a05c6e5cc7d9 org.symbian.tools.wrttools.previewer/.project --- a/org.symbian.tools.wrttools.previewer/.project Wed Aug 18 09:30:53 2010 -0700 +++ b/org.symbian.tools.wrttools.previewer/.project Thu Aug 19 16:13:44 2010 -0700 @@ -1,6 +1,6 @@ - org.symbian.tools.wrttools.previewer + org.symbian.tools.tmw.previewer diff -r 5a2901872fcf -r a05c6e5cc7d9 org.symbian.tools.wrttools.previewer/META-INF/MANIFEST.MF --- a/org.symbian.tools.wrttools.previewer/META-INF/MANIFEST.MF Wed Aug 18 09:30:53 2010 -0700 +++ b/org.symbian.tools.wrttools.previewer/META-INF/MANIFEST.MF Thu Aug 19 16:13:44 2010 -0700 @@ -1,7 +1,7 @@ Manifest-Version: 1.0 Bundle-ManifestVersion: 2 -Bundle-Name: WRT Preview Support -Bundle-SymbolicName: org.symbian.tools.wrttools.previewer;singleton:=true +Bundle-Name: Mobile Applications Preview Support +Bundle-SymbolicName: org.symbian.tools.tmw.previewer;singleton:=true Bundle-Version: 1.0.0.qualifier Bundle-Activator: org.symbian.tools.wrttools.previewer.PreviewerPlugin Require-Bundle: org.eclipse.ui, @@ -12,12 +12,13 @@ org.eclipse.equinox.http.jetty;bundle-version="2.0.0", org.eclipse.wst.jsdt.core;bundle-version="1.0.200", org.eclipse.wst.jsdt.ui;bundle-version="1.0.200", - org.symbian.tools.wrttools;bundle-version="0.9.0", org.mozilla.xulrunner;bundle-version="1.9.1";resolution:=optional, - org.eclipse.ui.console;bundle-version="3.5.0" + org.eclipse.ui.console;bundle-version="3.5.0", + org.symbian.tools.tmw.core;bundle-version="1.0.0" Bundle-ActivationPolicy: lazy Bundle-RequiredExecutionEnvironment: J2SE-1.5 -Export-Package: org.symbian.tools.wrttools.previewer, +Export-Package: org.symbian.tools.tmw.previewer.core, + org.symbian.tools.wrttools.previewer, org.symbian.tools.wrttools.previewer.http Import-Package: javax.servlet;version="2.5.0", javax.servlet.http;version="2.5.0", diff -r 5a2901872fcf -r a05c6e5cc7d9 org.symbian.tools.wrttools.previewer/plugin.xml --- a/org.symbian.tools.wrttools.previewer/plugin.xml Wed Aug 18 09:30:53 2010 -0700 +++ b/org.symbian.tools.wrttools.previewer/plugin.xml Thu Aug 19 16:13:44 2010 -0700 @@ -2,6 +2,7 @@ + + + + + + + + + [Enter description of this extension point.] + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + [Enter the first release in which this extension point appears.] + + + + + + + + + [Enter extension point usage example here.] + + + + + + + + + [Enter API information here.] + + + + + + + + + [Enter information about supplied implementation of this extension point.] + + + + + diff -r 5a2901872fcf -r a05c6e5cc7d9 org.symbian.tools.wrttools.previewer/src/org/symbian/tools/tmw/previewer/core/IApplicationLayoutProvider.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/org.symbian.tools.wrttools.previewer/src/org/symbian/tools/tmw/previewer/core/IApplicationLayoutProvider.java Thu Aug 19 16:13:44 2010 -0700 @@ -0,0 +1,54 @@ +/** + * Copyright (c) 2010 Symbian Foundation and/or its subsidiary(-ies). + * All rights reserved. + * This component and the accompanying materials are made available + * under the terms of the License "Eclipse Public License v1.0" + * which accompanies this distribution, and is available + * at the URL "http://www.eclipse.org/legal/epl-v10.html". + * + * Initial Contributors: + * Symbian Foundation - initial contribution. + * Contributors: + * Description: + * Overview: + * Details: + * Platforms/Drives/Compatibility: + * Assumptions/Requirement/Pre-requisites: + * Failures and causes: + */ +package org.symbian.tools.tmw.previewer.core; + +import java.io.InputStream; + +import org.eclipse.core.resources.IFile; +import org.eclipse.core.resources.IProject; +import org.eclipse.core.runtime.CoreException; +import org.eclipse.core.runtime.IPath; + +/** + * This interface provides application structure as it will be used in web + * runtime. Note that project layout may not directly correspond to application + * layout. + * + * @author Eugene Ostroukhov (eugeneo@symbian.org) + */ +public interface IApplicationLayoutProvider { + /** + * @param file workspace resource + * @return path relative to application package root + */ + IPath getResourcePath(IFile file); + + /** + * @param path path relative to application root + * @return workspace resource + * @throws CoreException if cannot access resource contents + */ + InputStream getResourceFromPath(IProject project, IPath path) throws CoreException; + + /** + * @return workspace file that corresponds to applicationPath or + * null if none + */ + IFile getWorkspaceFile(IProject project, IPath applicationPath) throws CoreException; +} diff -r 5a2901872fcf -r a05c6e5cc7d9 org.symbian.tools.wrttools.previewer/src/org/symbian/tools/tmw/previewer/core/IPreviewerExtensionsManager.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/org.symbian.tools.wrttools.previewer/src/org/symbian/tools/tmw/previewer/core/IPreviewerExtensionsManager.java Thu Aug 19 16:13:44 2010 -0700 @@ -0,0 +1,25 @@ +/** + * Copyright (c) 2010 Symbian Foundation and/or its subsidiary(-ies). + * All rights reserved. + * This component and the accompanying materials are made available + * under the terms of the License "Eclipse Public License v1.0" + * which accompanies this distribution, and is available + * at the URL "http://www.eclipse.org/legal/epl-v10.html". + * + * Initial Contributors: + * Symbian Foundation - initial contribution. + * Contributors: + * Description: + * Overview: + * Details: + * Platforms/Drives/Compatibility: + * Assumptions/Requirement/Pre-requisites: + * Failures and causes: + */ +package org.symbian.tools.tmw.previewer.core; + +import org.eclipse.core.resources.IProject; + +public interface IPreviewerExtensionsManager { + IApplicationLayoutProvider getLayoutProvider(IProject project); +} diff -r 5a2901872fcf -r a05c6e5cc7d9 org.symbian.tools.wrttools.previewer/src/org/symbian/tools/tmw/previewer/internal/PreviewerExtensionsManagerImpl.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/org.symbian.tools.wrttools.previewer/src/org/symbian/tools/tmw/previewer/internal/PreviewerExtensionsManagerImpl.java Thu Aug 19 16:13:44 2010 -0700 @@ -0,0 +1,114 @@ +/** + * Copyright (c) 2010 Symbian Foundation and/or its subsidiary(-ies). + * All rights reserved. + * This component and the accompanying materials are made available + * under the terms of the License "Eclipse Public License v1.0" + * which accompanies this distribution, and is available + * at the URL "http://www.eclipse.org/legal/epl-v10.html". + * + * Initial Contributors: + * Symbian Foundation - initial contribution. + * Contributors: + * Description: + * Overview: + * Details: + * Platforms/Drives/Compatibility: + * Assumptions/Requirement/Pre-requisites: + * Failures and causes: + */ +package org.symbian.tools.tmw.previewer.internal; + +import java.io.InputStream; +import java.util.HashMap; +import java.util.Map; + +import org.eclipse.core.resources.IFile; +import org.eclipse.core.resources.IProject; +import org.eclipse.core.runtime.CoreException; +import org.eclipse.core.runtime.IConfigurationElement; +import org.eclipse.core.runtime.IPath; +import org.eclipse.core.runtime.Platform; +import org.symbian.tools.tmw.core.TMWCore; +import org.symbian.tools.tmw.core.projects.ITMWProject; +import org.symbian.tools.tmw.core.runtimes.IMobileWebRuntime; +import org.symbian.tools.tmw.previewer.core.IApplicationLayoutProvider; +import org.symbian.tools.tmw.previewer.core.IPreviewerExtensionsManager; +import org.symbian.tools.wrttools.previewer.PreviewerPlugin; + +public class PreviewerExtensionsManagerImpl implements IPreviewerExtensionsManager { + public static final class LazyProvider implements IApplicationLayoutProvider { + private final IConfigurationElement element; + private IApplicationLayoutProvider instance; + + public LazyProvider(IConfigurationElement element) { + this.element = element; + } + + public IPath getResourcePath(IFile file) { + return getDelegate().getResourcePath(file); + } + + private IApplicationLayoutProvider getDelegate() { + if (instance == null) { + try { + instance = (IApplicationLayoutProvider) element.createExecutableExtension("class"); + } catch (CoreException e) { + PreviewerPlugin.log(e); + instance = new IApplicationLayoutProvider() { + + public IPath getResourcePath(IFile file) { + return null; + } + + public InputStream getResourceFromPath(IProject project, IPath path) { + return null; + } + + public IFile getWorkspaceFile(IProject project, IPath applicationPath) { + return null; + } + }; + } + } + return instance; + } + + public InputStream getResourceFromPath(IProject project, IPath path) throws CoreException { + return getDelegate().getResourceFromPath(project, path); + } + + public IFile getWorkspaceFile(IProject project, IPath applicationPath) throws CoreException { + return getDelegate().getWorkspaceFile(project, applicationPath); + } + } + + private Map providers; + + public IApplicationLayoutProvider getLayoutProvider(IProject project) { + final ITMWProject p = TMWCore.create(project); + if (p != null && p.getTargetRuntime() != null) { + checkRegistry(); + return providers.get(p.getTargetRuntime()); + } + return null; + } + + private synchronized void checkRegistry() { + if (providers == null) { + providers = new HashMap(); + final IConfigurationElement[] configuration = Platform.getExtensionRegistry().getConfigurationElementsFor( + PreviewerPlugin.PLUGIN_ID, "layoutProviders"); + for (IConfigurationElement element : configuration) { + final String runtimeId = element.getAttribute("runtime-id"); + final String version = element.getAttribute("runtime-version"); + final IMobileWebRuntime runtime = TMWCore.getRuntimesManager().getRuntime(runtimeId, version); + if (runtime != null) { + providers.put(runtime, new LazyProvider(element)); + } else { + PreviewerPlugin.log(String.format("Runtime %s:$s referenced from %s was not found", runtimeId, + version, element.getContributor().getName()), null); + } + } + } + } +} diff -r 5a2901872fcf -r a05c6e5cc7d9 org.symbian.tools.wrttools.previewer/src/org/symbian/tools/tmw/previewer/internal/PreviewerUtil.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/org.symbian.tools.wrttools.previewer/src/org/symbian/tools/tmw/previewer/internal/PreviewerUtil.java Thu Aug 19 16:13:44 2010 -0700 @@ -0,0 +1,99 @@ +/** + * Copyright (c) 2010 Symbian Foundation and/or its subsidiary(-ies). + * All rights reserved. + * This component and the accompanying materials are made available + * under the terms of the License "Eclipse Public License v1.0" + * which accompanies this distribution, and is available + * at the URL "http://www.eclipse.org/legal/epl-v10.html". + * + * Initial Contributors: + * Symbian Foundation - initial contribution. + * Contributors: + * Description: + * Overview: + * Details: + * Platforms/Drives/Compatibility: + * Assumptions/Requirement/Pre-requisites: + * Failures and causes: + */ +package org.symbian.tools.tmw.previewer.internal; + +import java.util.Collection; +import java.util.HashMap; +import java.util.HashSet; +import java.util.Map; + +import org.eclipse.core.resources.IFile; +import org.eclipse.core.resources.IProject; +import org.eclipse.core.resources.IResource; +import org.eclipse.core.resources.IResourceDelta; +import org.eclipse.core.resources.IResourceDeltaVisitor; +import org.eclipse.core.runtime.CoreException; +import org.eclipse.core.runtime.IPath; +import org.symbian.tools.tmw.previewer.core.IApplicationLayoutProvider; +import org.symbian.tools.wrttools.previewer.PreviewerPlugin; + +public class PreviewerUtil { + public static final class ChangedResourcesCollector implements IResourceDeltaVisitor { + public final Collection files = new HashSet(); + public final Collection deleted = new HashSet(); + public final Map renamed = new HashMap(); + + public boolean visit(IResourceDelta delta) throws CoreException { + IResource resource = delta.getResource(); + switch (resource.getType()) { + case IResource.PROJECT: + if (delta.getKind() == IResourceDelta.REMOVED) { + if ((delta.getFlags() & IResourceDelta.MOVED_TO) != 0) { + renamed.put(resource.getProject(), delta.getMovedToPath()); + } else { + deleted.add((IProject) resource); + } + return false; + } + break; + case IResource.FILE: + IApplicationLayoutProvider layoutProvider = PreviewerPlugin.getExtensionsManager().getLayoutProvider( + resource.getProject()); + if (layoutProvider != null) { + if (layoutProvider.getResourcePath((IFile) resource) != null) { + final boolean kind = delta.getKind() == IResourceDelta.ADDED + | delta.getKind() == IResourceDelta.REMOVED; + final boolean flag = (delta.getFlags() & (IResourceDelta.CONTENT | IResourceDelta.ENCODING + | IResourceDelta.LOCAL_CHANGED | IResourceDelta.REPLACED | IResourceDelta.SYNC)) != 0; + if (kind || flag) { + files.add((IFile) resource); + } + } + } + break; + } + return true; + } + } + + public static boolean isRelevantResource(IResource resource) { + if (resource.exists() && resource.getType() == IResource.FILE) { + return !resource.getFullPath().segment(1).equalsIgnoreCase("preview") + && !"wgz".equalsIgnoreCase(resource.getFileExtension()) + && !(PreviewerPlugin.PLUGIN_ID + ".xml").equals(resource.getName()); + } + return false; + } + + public static IFile[] getWebChanges(final IResourceDelta delta) { + ChangedResourcesCollector visitor = collectResourceChanges(delta); + final Collection files = visitor.files; + return files.toArray(new IFile[files.size()]); + } + + public static ChangedResourcesCollector collectResourceChanges(final IResourceDelta delta) { + ChangedResourcesCollector visitor = new ChangedResourcesCollector(); + try { + delta.accept(visitor); + } catch (CoreException e) { + PreviewerPlugin.log(e); + } + return visitor; + } +} diff -r 5a2901872fcf -r a05c6e5cc7d9 org.symbian.tools.wrttools.previewer/src/org/symbian/tools/wrttools/previewer/PreviewerPlugin.java --- a/org.symbian.tools.wrttools.previewer/src/org/symbian/tools/wrttools/previewer/PreviewerPlugin.java Wed Aug 18 09:30:53 2010 -0700 +++ b/org.symbian.tools.wrttools.previewer/src/org/symbian/tools/wrttools/previewer/PreviewerPlugin.java Thu Aug 19 16:13:44 2010 -0700 @@ -32,6 +32,8 @@ import org.eclipse.ui.plugin.AbstractUIPlugin; import org.osgi.framework.BundleContext; import org.osgi.framework.ServiceReference; +import org.symbian.tools.tmw.previewer.core.IPreviewerExtensionsManager; +import org.symbian.tools.tmw.previewer.internal.PreviewerExtensionsManagerImpl; import org.symbian.tools.wrttools.previewer.http.HttpPreviewer; /** @@ -40,7 +42,7 @@ public class PreviewerPlugin extends AbstractUIPlugin { // The plug-in ID - public static final String PLUGIN_ID = "org.symbian.tools.wrttools.previewer"; + public static final String PLUGIN_ID = "org.symbian.tools.tmw.previewer"; public static final String PREVIEW_VIEW = "org.symbian.tools.wrttools.editing.wrtpreview"; public static final boolean DEBUG = Platform.inDebugMode() @@ -60,6 +62,7 @@ // The shared instance private static PreviewerPlugin plugin; + private final IPreviewerExtensionsManager extensionsManager = new PreviewerExtensionsManagerImpl(); private final CommandHandlerManager handlerManager = new CommandHandlerManager(); private final HttpPreviewer previewer = new HttpPreviewer(); private MessageConsole console; @@ -146,4 +149,8 @@ console.newMessageStream().write( message); } + + public static IPreviewerExtensionsManager getExtensionsManager() { + return getDefault().extensionsManager; + } } diff -r 5a2901872fcf -r a05c6e5cc7d9 org.symbian.tools.wrttools.previewer/src/org/symbian/tools/wrttools/previewer/PreviewerUtil.java --- a/org.symbian.tools.wrttools.previewer/src/org/symbian/tools/wrttools/previewer/PreviewerUtil.java Wed Aug 18 09:30:53 2010 -0700 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,100 +0,0 @@ -/** - * Copyright (c) 2010 Symbian Foundation and/or its subsidiary(-ies). - * All rights reserved. - * This component and the accompanying materials are made available - * under the terms of the License "Eclipse Public License v1.0" - * which accompanies this distribution, and is available - * at the URL "http://www.eclipse.org/legal/epl-v10.html". - * - * Initial Contributors: - * Symbian Foundation - initial contribution. - * Contributors: - * Description: - * Overview: - * Details: - * Platforms/Drives/Compatibility: - * Assumptions/Requirement/Pre-requisites: - * Failures and causes: - */ -package org.symbian.tools.wrttools.previewer; - -import java.util.Collection; -import java.util.HashMap; -import java.util.HashSet; -import java.util.Map; - -import org.eclipse.core.resources.IFile; -import org.eclipse.core.resources.IMarkerDelta; -import org.eclipse.core.resources.IProject; -import org.eclipse.core.resources.IResource; -import org.eclipse.core.resources.IResourceDelta; -import org.eclipse.core.resources.IResourceDeltaVisitor; -import org.eclipse.core.runtime.CoreException; -import org.eclipse.core.runtime.IPath; -import org.symbian.tools.wrttools.util.ProjectUtils; - -public class PreviewerUtil { - public static final class ChangedResourcesCollector implements IResourceDeltaVisitor { - public final Collection files = new HashSet(); - public final Collection deleted = new HashSet(); - public final Map renamed = new HashMap(); - - public boolean visit(IResourceDelta delta) throws CoreException { - IResource resource = delta.getResource(); - if (resource.getType() == IResource.PROJECT) { - if (delta.getKind() == IResourceDelta.REMOVED) { - if ((delta.getFlags() & IResourceDelta.MOVED_TO) != 0) { - renamed.put(resource.getProject(), delta.getMovedToPath()); - } else { - deleted.add((IProject) resource); - } - return false; - } - } else if (isRelevantResource(resource)) { - if (delta.getKind() == IResourceDelta.ADDED | delta.getKind() == IResourceDelta.REMOVED) { - if (!ProjectUtils.isExcluded(resource)) { - files.add((IFile) resource); - } - } else if ((delta.getFlags() & (IResourceDelta.CONTENT | IResourceDelta.ENCODING - | IResourceDelta.LOCAL_CHANGED | IResourceDelta.REPLACED | IResourceDelta.SYNC)) != 0) { - if (!ProjectUtils.isExcluded(resource)) { - files.add((IFile) resource); - } - } else if (delta.getMarkerDeltas().length != 0) { - for (IMarkerDelta markerDelta : delta.getMarkerDeltas()) { - if (markerDelta.getType().equals(ProjectUtils.EXCLUDE_MARKER_ID)) { - files.add((IFile) resource); - break; - } - } - } - } - return true; - } - } - - public static boolean isRelevantResource(IResource resource) { - if (resource.exists() && resource.getType() == IResource.FILE) { - return !resource.getFullPath().segment(1).equalsIgnoreCase("preview") - && !"wgz".equalsIgnoreCase(resource.getFileExtension()) - && !(PreviewerPlugin.PLUGIN_ID + ".xml").equals(resource.getName()); - } - return false; - } - - public static IFile[] getWebChanges(final IResourceDelta delta) { - ChangedResourcesCollector visitor = collectResourceChanges(delta); - final Collection files = visitor.files; - return files.toArray(new IFile[files.size()]); - } - - public static ChangedResourcesCollector collectResourceChanges(final IResourceDelta delta) { - ChangedResourcesCollector visitor = new ChangedResourcesCollector(); - try { - delta.accept(visitor); - } catch (CoreException e) { - PreviewerPlugin.log(e); - } - return visitor; - } -} diff -r 5a2901872fcf -r a05c6e5cc7d9 org.symbian.tools.wrttools.previewer/src/org/symbian/tools/wrttools/previewer/http/HttpPreviewer.java --- a/org.symbian.tools.wrttools.previewer/src/org/symbian/tools/wrttools/previewer/http/HttpPreviewer.java Wed Aug 18 09:30:53 2010 -0700 +++ b/org.symbian.tools.wrttools.previewer/src/org/symbian/tools/wrttools/previewer/http/HttpPreviewer.java Thu Aug 19 16:13:44 2010 -0700 @@ -18,12 +18,10 @@ *******************************************************************************/ package org.symbian.tools.wrttools.previewer.http; -import java.io.File; import java.net.URI; import org.eclipse.core.resources.IFile; import org.eclipse.core.resources.IProject; -import org.eclipse.core.resources.IResource; public class HttpPreviewer { public static final String PREVIEW_STARTING_PAGE = "preview-frame.html"; @@ -33,7 +31,7 @@ return WorkspaceResourcesServlet.getFileFromUrl(name); } - public String getHttpUrl(IResource resource) { + public String getHttpUrl(IFile resource) { return WorkspaceResourcesServlet.getHttpUrl(resource); } @@ -45,8 +43,4 @@ return WebAppInterface.getInstance().prepareDebugger(project, listener); } } - - public File getLocalFile(String name) { - return WorkspaceResourcesServlet.getPreviewerResource(name); - } } diff -r 5a2901872fcf -r a05c6e5cc7d9 org.symbian.tools.wrttools.previewer/src/org/symbian/tools/wrttools/previewer/http/WebAppInterface.java --- a/org.symbian.tools.wrttools.previewer/src/org/symbian/tools/wrttools/previewer/http/WebAppInterface.java Wed Aug 18 09:30:53 2010 -0700 +++ b/org.symbian.tools.wrttools.previewer/src/org/symbian/tools/wrttools/previewer/http/WebAppInterface.java Thu Aug 19 16:13:44 2010 -0700 @@ -140,7 +140,7 @@ public synchronized URI prepareDebugger(IProject project, IPreviewStartupListener listener) { String session = Long.toHexString(System.currentTimeMillis()); - URI uri = WorkspaceResourcesServlet.getDebugStartingPage(project.getName(), session); + URI uri = WorkspaceResourcesServlet.getDebugStartingPage(project, session); if (listener != null) { debuggerJobs.put(getId(project.getName(), session), new BrowserConnectionJob(listener, uri)); } diff -r 5a2901872fcf -r a05c6e5cc7d9 org.symbian.tools.wrttools.previewer/src/org/symbian/tools/wrttools/previewer/http/WorkspaceResourcesServlet.java --- a/org.symbian.tools.wrttools.previewer/src/org/symbian/tools/wrttools/previewer/http/WorkspaceResourcesServlet.java Wed Aug 18 09:30:53 2010 -0700 +++ b/org.symbian.tools.wrttools.previewer/src/org/symbian/tools/wrttools/previewer/http/WorkspaceResourcesServlet.java Thu Aug 19 16:13:44 2010 -0700 @@ -18,7 +18,6 @@ *******************************************************************************/ package org.symbian.tools.wrttools.previewer.http; -import java.io.File; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; @@ -42,22 +41,18 @@ import org.eclipse.core.resources.IFile; import org.eclipse.core.resources.IProject; -import org.eclipse.core.resources.IResource; import org.eclipse.core.resources.ResourcesPlugin; import org.eclipse.core.runtime.CoreException; -import org.eclipse.core.runtime.FileLocator; import org.eclipse.core.runtime.IPath; import org.eclipse.core.runtime.Path; import org.json.simple.JSONObject; import org.json.simple.parser.JSONParser; import org.json.simple.parser.ParseException; +import org.symbian.tools.tmw.previewer.core.IApplicationLayoutProvider; import org.symbian.tools.wrttools.previewer.PreviewerException; import org.symbian.tools.wrttools.previewer.PreviewerPlugin; import org.symbian.tools.wrttools.previewer.http.handlers.DebuggerResourceProvider; -import org.symbian.tools.wrttools.previewer.http.handlers.PreviewerStaticResourceProvider; -import org.symbian.tools.wrttools.previewer.http.handlers.ProjectIndexResourceProvider; import org.symbian.tools.wrttools.previewer.http.handlers.Providers; -import org.symbian.tools.wrttools.util.CoreUtil; public class WorkspaceResourcesServlet extends HttpServlet { private static final Map EXTENSION_CONTENT_TYPE = new TreeMap(); @@ -102,16 +97,38 @@ } public static IFile getFileFromUrl(String name) { - IPath path = getProjectRelativePath(name); - if (path != null) { - return getProjectResource(path); - } else { - return null; + try { + String root = getHttpUrl(null); + if (name != null && name.startsWith(root)) { + final String fileName = URLDecoder.decode(name.substring(root.length()), "UTF-8"); + final IPath path = new Path(fileName); + if (path.segmentCount() > 1) { + final IProject project = ResourcesPlugin.getWorkspace().getRoot().getProject(path.segment(0)); + final IApplicationLayoutProvider provider = PreviewerPlugin.getExtensionsManager() + .getLayoutProvider(project); + if (provider != null) { + return provider.getWorkspaceFile(project, path.removeFirstSegments(1)); + } + } + } + } catch (UnsupportedEncodingException e) { + throw new RuntimeException(e); + } catch (CoreException e) { + PreviewerPlugin.log(e); } + return null; } - public static String getHttpUrl(IResource file) { - String uri = getServerURIForResource(file != null ? file.getFullPath().toString() : "/", null).toASCIIString(); + public static String getHttpUrl(IFile file) { + IPath p = new Path("/"); + if (file != null) { + IApplicationLayoutProvider provider = PreviewerPlugin.getExtensionsManager().getLayoutProvider( + file.getProject()); + if (provider != null) { + p = provider.getResourcePath(file); + } + } + String uri = getServerURIForResource(p, null).toASCIIString(); if (uri != null) { return uri; } else { @@ -127,81 +144,12 @@ } } - public static File getPreviewerResource(String name) { - try { - IPath path = getProjectRelativePath(name); - if (path != null) { - if (path.segmentCount() == 2 && HttpPreviewer.PREVIEW_STARTING_PAGE.equals(path.segment(1))) { - path = new Path(PreviewerStaticResourceProvider.PREVIEW_START); - } else if (path.segmentCount() > 2 - && PreviewerStaticResourceProvider.PREVIEW_PATH.equals(path.segment(1))) { - path = path.removeFirstSegments(1); - } else { - return null; - } - URL pluginResource = FileLocator.find(PreviewerPlugin.getDefault().getBundle(), path, null); - if (pluginResource != null) { - URL url = FileLocator.toFileURL(pluginResource); - if (url != null) { - return new File(url.getPath()); - } - } - } - } catch (IOException e) { - PreviewerPlugin.log(e); - } - return null; - } - public static URI getPreviewerStartingPage(String widget) { - return getServerURIForResource(new Path(widget).append(HttpPreviewer.PREVIEW_STARTING_PAGE).makeAbsolute() - .toString(), null); + return getServerURIForResource(new Path(widget).append(HttpPreviewer.PREVIEW_STARTING_PAGE).makeAbsolute(), + null); } - private static IPath getProjectRelativePath(String uri) { - IPath path = null; - try { - String root = getHttpUrl(null); - if (uri != null && uri.startsWith(root)) { - String fileName = uri.substring(root.length()); - fileName = URLDecoder.decode(fileName, "UTF-8"); - path = new Path(fileName); - if (path.segmentCount() == 2 && ProjectIndexResourceProvider.INDEX.equals(path.lastSegment())) { - IProject project = ResourcesPlugin.getWorkspace().getRoot().getProject(path.segment(0)); - path = new Path(project.getName()).append(CoreUtil.getIndexFile(project)); - } - } - } catch (UnsupportedEncodingException e) { - throw new RuntimeException(e); - } catch (CoreException e) { - PreviewerPlugin.log(e); - } - return path; - } - - private static IFile getProjectResource(IPath path) { - IFile file; - file = ResourcesPlugin.getWorkspace().getRoot().getFile(path); - if (!file.isAccessible()) { - return null; - } else { - return file; - } - } - - private static URI getServerURIForResource(String resourcePath, String debugSessionId) { - Path p = new Path(resourcePath); - if (p.segmentCount() > 1) { - IProject project = ResourcesPlugin.getWorkspace().getRoot().getProject(p.segment(0)); - try { - if (p.removeFirstSegments(1).toString().equals(CoreUtil.getIndexFile(project))) { - return getServerURIForResource(new Path(p.segment(0)).append(ProjectIndexResourceProvider.INDEX) - .makeAbsolute().toString(), debugSessionId); - } - } catch (Exception e1) { - PreviewerPlugin.log(e1); - } - } + private static URI getServerURIForResource(IPath resourcePath, String debugSessionId) { try { String path = encode(WebappManager.WORKSPACE_RESOURCES_CONTEXT + resourcePath); path += debugSessionId == null ? "" : (String.format("?%s=%s", @@ -249,9 +197,8 @@ throw new ServletException(e); } if (PreviewerPlugin.TRACE_SERVLET) { - System.out.println(MessageFormat.format("Resource {0} was downloaded in {1}", req.getPathInfo(), System - .currentTimeMillis() - - time)); + System.out.println(MessageFormat.format("Resource {0} was downloaded in {1}", req.getPathInfo(), + System.currentTimeMillis() - time)); } } @@ -284,8 +231,8 @@ resp.setStatus(HttpServletResponse.SC_OK); } - public static URI getDebugStartingPage(String project, String session) { - return getServerURIForResource(new Path(project).append(HttpPreviewer.DEBUG_STARTING_PAGE).makeAbsolute() - .toString(), session); + public static URI getDebugStartingPage(IProject project, String session) { + return getServerURIForResource(project.getFullPath().append(HttpPreviewer.DEBUG_STARTING_PAGE).makeAbsolute(), + session); } } diff -r 5a2901872fcf -r a05c6e5cc7d9 org.symbian.tools.wrttools.previewer/src/org/symbian/tools/wrttools/previewer/http/handlers/PreferencesResourceProvider.java --- a/org.symbian.tools.wrttools.previewer/src/org/symbian/tools/wrttools/previewer/http/handlers/PreferencesResourceProvider.java Wed Aug 18 09:30:53 2010 -0700 +++ b/org.symbian.tools.wrttools.previewer/src/org/symbian/tools/wrttools/previewer/http/handlers/PreferencesResourceProvider.java Thu Aug 19 16:13:44 2010 -0700 @@ -29,7 +29,8 @@ import org.eclipse.core.runtime.CoreException; import org.eclipse.core.runtime.IPath; import org.json.simple.JSONObject; -import org.symbian.tools.wrttools.WRTProject; +import org.symbian.tools.tmw.core.TMWCore; +import org.symbian.tools.tmw.core.projects.ITMWProject; import org.symbian.tools.wrttools.previewer.PreviewerPlugin; import org.symbian.tools.wrttools.previewer.preview.ProjectPreferencesManager; @@ -43,10 +44,13 @@ throws IOException, CoreException { Properties projectPreferences = ProjectPreferencesManager.getProjectProperties(project); if (!projectPreferences.containsKey("__SYM_NOKIA_EMULATOR_DEVICE")) { - String resolution = new WRTProject(project).getPreferredScreenSize(); + final ITMWProject p = TMWCore.create(project); + if (p != null) { + String resolution = p.getPreferredScreenSize(); if (resolution != null) { projectPreferences.put("__SYM_NOKIA_EMULATOR_DEVICE", resolution); } + } } String js = getJS(projectPreferences); try { diff -r 5a2901872fcf -r a05c6e5cc7d9 org.symbian.tools.wrttools.previewer/src/org/symbian/tools/wrttools/previewer/http/handlers/ProjectIndexResourceProvider.java --- a/org.symbian.tools.wrttools.previewer/src/org/symbian/tools/wrttools/previewer/http/handlers/ProjectIndexResourceProvider.java Wed Aug 18 09:30:53 2010 -0700 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,81 +0,0 @@ -/** - * Copyright (c) 2010 Symbian Foundation and/or its subsidiary(-ies). - * All rights reserved. - * This component and the accompanying materials are made available - * under the terms of the License "Eclipse Public License v1.0" - * which accompanies this distribution, and is available - * at the URL "http://www.eclipse.org/legal/epl-v10.html". - * - * Initial Contributors: - * Symbian Foundation - initial contribution. - * Contributors: - * Description: - * Overview: - * Details: - * Platforms/Drives/Compatibility: - * Assumptions/Requirement/Pre-requisites: - * Failures and causes: - */ -package org.symbian.tools.wrttools.previewer.http.handlers; - -import java.io.ByteArrayInputStream; -import java.io.IOException; -import java.io.InputStream; -import java.util.Map; -import java.util.regex.Matcher; -import java.util.regex.Pattern; - -import org.eclipse.core.resources.IFile; -import org.eclipse.core.resources.IProject; -import org.eclipse.core.resources.ResourcesPlugin; -import org.eclipse.core.runtime.CoreException; -import org.eclipse.core.runtime.IPath; -import org.json.simple.JSONObject; -import org.symbian.tools.wrttools.previewer.PreviewerPlugin; -import org.symbian.tools.wrttools.util.CoreUtil; -import org.symbian.tools.wrttools.util.ProjectUtils; - -public class ProjectIndexResourceProvider implements IResourceProvider { - public static final String INDEX = "wrt_preview_main.html"; - private static final Pattern HEAD_TAG_PATTERN = Pattern.compile("", - Pattern.CASE_INSENSITIVE); - private static final String SCRIPT = ""; - - public String[] getPaths() { - return new String[] { INDEX }; - } - - public InputStream getResourceStream(IProject project, IPath resource, Map parameters, - String sessionId) throws IOException, CoreException { - return getProjectIndexPage(project.getName()); - } - - private InputStream getProjectIndexPage(String projectName) throws IOException, CoreException { - IProject project = ResourcesPlugin.getWorkspace().getRoot().getProject(projectName); - if (project.isAccessible()) { - String indexFileName = CoreUtil.getIndexFile(project); - if (indexFileName != null) { - final IFile file = CoreUtil.getFile(project, indexFileName); - if (!ProjectUtils.isExcluded(file)) { - String string = CoreUtil.readFile(project, file); - if (string != null) { - Matcher matcher = HEAD_TAG_PATTERN.matcher(string); - if (matcher.find()) { - string = matcher.replaceFirst(matcher.group() + SCRIPT); - } - return new ByteArrayInputStream(string.getBytes("UTF-8")); - } - } - } - PreviewerPlugin.print(String.format("Can not find main page (%s) in project %s.\n", indexFileName, - project.getName())); - } - return null; - } - - public void post(IProject project, IPath resource, Map parameterMap, JSONObject object, - String sessionId) throws IOException, CoreException { - // Do nothing - } - -} diff -r 5a2901872fcf -r a05c6e5cc7d9 org.symbian.tools.wrttools.previewer/src/org/symbian/tools/wrttools/previewer/http/handlers/Providers.java --- a/org.symbian.tools.wrttools.previewer/src/org/symbian/tools/wrttools/previewer/http/handlers/Providers.java Wed Aug 18 09:30:53 2010 -0700 +++ b/org.symbian.tools.wrttools.previewer/src/org/symbian/tools/wrttools/previewer/http/handlers/Providers.java Thu Aug 19 16:13:44 2010 -0700 @@ -51,7 +51,6 @@ addPaths(new MasterScriptProvider()); addPaths(new PreviewerStaticResourceProvider()); addPaths(new PreferencesResourceProvider()); - addPaths(new ProjectIndexResourceProvider()); addPaths(new CommandResourceProvider()); addPaths(new DebuggerResourceProvider()); } diff -r 5a2901872fcf -r a05c6e5cc7d9 org.symbian.tools.wrttools.previewer/src/org/symbian/tools/wrttools/previewer/http/handlers/WorkspaceResourceProvider.java --- a/org.symbian.tools.wrttools.previewer/src/org/symbian/tools/wrttools/previewer/http/handlers/WorkspaceResourceProvider.java Wed Aug 18 09:30:53 2010 -0700 +++ b/org.symbian.tools.wrttools.previewer/src/org/symbian/tools/wrttools/previewer/http/handlers/WorkspaceResourceProvider.java Thu Aug 19 16:13:44 2010 -0700 @@ -22,15 +22,11 @@ import java.io.InputStream; import java.util.Map; -import org.eclipse.core.resources.IContainer; -import org.eclipse.core.resources.IFile; import org.eclipse.core.resources.IProject; -import org.eclipse.core.resources.IResource; import org.eclipse.core.runtime.CoreException; import org.eclipse.core.runtime.IPath; import org.json.simple.JSONObject; import org.symbian.tools.wrttools.previewer.PreviewerPlugin; -import org.symbian.tools.wrttools.util.ProjectUtils; public class WorkspaceResourceProvider implements IResourceProvider { public String[] getPaths() { @@ -38,54 +34,12 @@ } public InputStream getResourceStream(IProject project, IPath resource, Map parameters, - String sessionId) - throws IOException, CoreException { - IFile file = getFile(project, resource); - if (file != null) { - return file.getContents(); - } else { - PreviewerPlugin.print(String.format( - "%s was not found in the workspace. It was requested by the previewer.\n", resource.toString())); - return null; - } - } - - private IFile getFile(IProject project, IPath resource) throws CoreException { - final IFile file = project.getFile(resource); - if (!file.isAccessible()) { - IContainer container = project; - for (int i = 0; i < resource.segmentCount() - 1; i++) { - String name = resource.segment(i).toLowerCase(); - container = (IContainer) getResource(container, name, false); - if (container == null) { - return null; - } - } - return (IFile) getResource(container, resource.lastSegment().toLowerCase(), true); - } else { - return file; - } - } - - private IResource getResource(final IContainer container, final String name, final boolean isFile) throws CoreException { - IResource[] members = container.members(); - for (IResource resource : members) { - if (resource.getName().toLowerCase().equals(name)) { - if (resource.isAccessible() && ((resource.getType() == IResource.FILE) == isFile) - && !ProjectUtils.isExcluded(resource)) { - return resource; - } else { - return null; - } - } - } - return null; + String sessionId) throws CoreException { + return PreviewerPlugin.getExtensionsManager().getLayoutProvider(project).getResourceFromPath(project, resource); } public void post(IProject project, IPath resource, Map parameterMap, JSONObject object, - String sessionId) - throws IOException, CoreException { + String sessionId) throws IOException, CoreException { // Do nothing } - } diff -r 5a2901872fcf -r a05c6e5cc7d9 org.symbian.tools.wrttools.previewer/src/org/symbian/tools/wrttools/previewer/preview/AbstractPreviewPage.java --- a/org.symbian.tools.wrttools.previewer/src/org/symbian/tools/wrttools/previewer/preview/AbstractPreviewPage.java Wed Aug 18 09:30:53 2010 -0700 +++ b/org.symbian.tools.wrttools.previewer/src/org/symbian/tools/wrttools/previewer/preview/AbstractPreviewPage.java Thu Aug 19 16:13:44 2010 -0700 @@ -21,9 +21,9 @@ import org.eclipse.ui.actions.ActionFactory; import org.eclipse.ui.part.IPageSite; import org.eclipse.ui.part.Page; +import org.symbian.tools.tmw.core.utilities.CoreUtil; import org.symbian.tools.wrttools.previewer.Images; import org.symbian.tools.wrttools.previewer.PreviewerPlugin; -import org.symbian.tools.wrttools.util.CoreUtil; public abstract class AbstractPreviewPage extends Page implements IPreviewPage, ISelectionProvider { diff -r 5a2901872fcf -r a05c6e5cc7d9 org.symbian.tools.wrttools.previewer/src/org/symbian/tools/wrttools/previewer/preview/PreviewView.java --- a/org.symbian.tools.wrttools.previewer/src/org/symbian/tools/wrttools/previewer/preview/PreviewView.java Wed Aug 18 09:30:53 2010 -0700 +++ b/org.symbian.tools.wrttools.previewer/src/org/symbian/tools/wrttools/previewer/preview/PreviewView.java Thu Aug 19 16:13:44 2010 -0700 @@ -35,229 +35,212 @@ import org.eclipse.ui.part.PageBookView; import org.symbian.tools.wrttools.previewer.IWrtEditingPreferences; import org.symbian.tools.wrttools.previewer.PreviewerPlugin; -import org.symbian.tools.wrttools.util.ProjectUtils; public class PreviewView extends PageBookView { - private final IResourceChangeListener resourceListener = new IResourceChangeListener() { - public void resourceChanged(IResourceChangeEvent event) { - if (event.getDelta() != null) { + private final IResourceChangeListener resourceListener = new IResourceChangeListener() { + public void resourceChanged(IResourceChangeEvent event) { + if (event.getDelta() != null) { new RefreshJob(event.getDelta(), PreviewView.this).schedule(); - } - } - }; + } + } + }; - private final Map projectToPage = new HashMap(); - private boolean preferencesLoaded = false; - private final Map autorefresh = new HashMap(); + private final Map projectToPage = new HashMap(); + private boolean preferencesLoaded = false; + private final Map autorefresh = new HashMap(); - @Override - protected IPage createDefaultPage(PageBook book) { - MessagePage messagePage = new MessagePage(); - messagePage.setMessage("Open an editor to preview Mobile Web App"); - initPage(messagePage); - messagePage.createControl(book); - return messagePage; - } + @Override + protected IPage createDefaultPage(PageBook book) { + MessagePage messagePage = new MessagePage(); + messagePage.setMessage("Open an editor to preview Mobile Web App"); + initPage(messagePage); + messagePage.createControl(book); + return messagePage; + } - @Override - public void createPartControl(Composite parent) { - super.createPartControl(parent); - ResourcesPlugin.getWorkspace().addResourceChangeListener( - resourceListener); - } + @Override + public void createPartControl(Composite parent) { + super.createPartControl(parent); + ResourcesPlugin.getWorkspace().addResourceChangeListener(resourceListener); + } - @Override - public void dispose() { - ResourcesPlugin.getWorkspace().removeResourceChangeListener( - resourceListener); - super.dispose(); - } + @Override + public void dispose() { + ResourcesPlugin.getWorkspace().removeResourceChangeListener(resourceListener); + super.dispose(); + } - @Override - protected PageRec doCreatePage(IWorkbenchPart part) { - // All checks we need were done in isImportant method - IResource resource = (IResource) ((IEditorPart) part).getEditorInput() - .getAdapter(IResource.class); - - IProject project = resource.getProject(); - IPreviewPage page = projectToPage.get(project); + @Override + protected PageRec doCreatePage(IWorkbenchPart part) { + // All checks we need were done in isImportant method + IResource resource = (IResource) ((IEditorPart) part).getEditorInput().getAdapter(IResource.class); - if (page == null || page.isDisposed()) { - page = createPreviewPage(project); - initPage(page); - page.createControl(getPageBook()); - projectToPage.put(project, page); - } + IProject project = resource.getProject(); + IPreviewPage page = projectToPage.get(project); - return new PageRec(part, page); - } + if (page == null || page.isDisposed()) { + page = createPreviewPage(project); + initPage(page); + page.createControl(getPageBook()); + projectToPage.put(project, page); + } - private IPreviewPage createPreviewPage(IProject project) { - if (Platform.getBundle(MozillaPreviewPage.XUL_RUNNER_BUNDLE) != null) { - return new MozillaPreviewPage(project, this); - } else { - return new SwtBrowserPreviewPage(project, this); - } - } + return new PageRec(part, page); + } - @Override - protected void doDestroyPage(IWorkbenchPart part, PageRec pageRecord) { - // We do not need to delete the page - } + private IPreviewPage createPreviewPage(IProject project) { + if (Platform.getBundle(MozillaPreviewPage.XUL_RUNNER_BUNDLE) != null) { + return new MozillaPreviewPage(project, this); + } else { + return new SwtBrowserPreviewPage(project, this); + } + } - @Override - protected IWorkbenchPart getBootstrapPart() { - IEditorPart activeEditor = getSite().getPage().getActiveEditor(); - if (activeEditor != null) { - if (isImportant(activeEditor)) { - return activeEditor; - } - } - return null; - } + @Override + protected void doDestroyPage(IWorkbenchPart part, PageRec pageRecord) { + // We do not need to delete the page + } - private boolean getDefaultAutorefresh(IProject project) { - IPreferenceStore preferenceStore = PreviewerPlugin.getDefault() - .getPreferenceStore(); - String value = preferenceStore - .getString(IWrtEditingPreferences.PREF_AUTO_REFRESH); - boolean toggle = !MessageDialogWithToggle.NEVER.equals(value); - if (MessageDialogWithToggle.NEVER.equals(value) - || MessageDialogWithToggle.ALWAYS.equals(value)) { - setProjectAutorefresh(project, toggle); - } - return toggle; - } + @Override + protected IWorkbenchPart getBootstrapPart() { + IEditorPart activeEditor = getSite().getPage().getActiveEditor(); + if (activeEditor != null) { + if (isImportant(activeEditor)) { + return activeEditor; + } + } + return null; + } - private File getPreferencesFile() { - return PreviewerPlugin.getDefault().getStateLocation().append( - "autorefreshState.xml").toFile(); - } + private boolean getDefaultAutorefresh(IProject project) { + IPreferenceStore preferenceStore = PreviewerPlugin.getDefault().getPreferenceStore(); + String value = preferenceStore.getString(IWrtEditingPreferences.PREF_AUTO_REFRESH); + boolean toggle = !MessageDialogWithToggle.NEVER.equals(value); + if (MessageDialogWithToggle.NEVER.equals(value) || MessageDialogWithToggle.ALWAYS.equals(value)) { + setProjectAutorefresh(project, toggle); + } + return toggle; + } - public boolean getProjectAutorefresh(IProject project) { - synchronized (autorefresh) { - loadPreferences(); - if (autorefresh.containsKey(project)) { - return autorefresh.get(project); - } else { - boolean value = getDefaultAutorefresh(project); - return value; - } - } - } + private File getPreferencesFile() { + return PreviewerPlugin.getDefault().getStateLocation().append("autorefreshState.xml").toFile(); + } + + public boolean getProjectAutorefresh(IProject project) { + synchronized (autorefresh) { + loadPreferences(); + if (autorefresh.containsKey(project)) { + return autorefresh.get(project); + } else { + boolean value = getDefaultAutorefresh(project); + return value; + } + } + } - @Override - protected boolean isImportant(IWorkbenchPart part) { - if (part instanceof IEditorPart) { - IResource resource = (IResource) ((IEditorPart) part) - .getEditorInput().getAdapter(IResource.class); - if (resource != null) { - return ProjectUtils.hasWrtNature(resource.getProject()); - } - } - return false; - } + @Override + protected boolean isImportant(IWorkbenchPart part) { + if (part instanceof IEditorPart) { + IResource resource = (IResource) ((IEditorPart) part).getEditorInput().getAdapter(IResource.class); + if (resource != null) { + return PreviewerPlugin.getExtensionsManager().getLayoutProvider(resource.getProject()) != null; + } + } + return false; + } - private void loadPreferences() { - synchronized (autorefresh) { - if (preferencesLoaded) { - return; - } - preferencesLoaded = true; - File preferencesFile = getPreferencesFile(); - Properties properties = new Properties(); - if (preferencesFile.exists()) { - InputStream inputStream = null; - try { - inputStream = new FileInputStream(preferencesFile); - properties.loadFromXML(inputStream); - } catch (IOException e) { - PreviewerPlugin.log(e); - } finally { - if (inputStream != null) { - try { - inputStream.close(); - } catch (IOException e) { - PreviewerPlugin.log(e); - } - } - } - IWorkspaceRoot root = ResourcesPlugin.getWorkspace().getRoot(); - for (Entry entry : properties.entrySet()) { - String projectName = entry.getKey().toString(); - String value = entry.getValue().toString(); - IProject project = root.getProject(projectName); - if (project.exists()) { - autorefresh.put(project, Boolean.valueOf(value)); - } - } - } - } - } - - protected void refreshPages(Collection files) { - Collection values = projectToPage.values(); - for (IPreviewPage page : values) { - page.process(files); - } - } + private void loadPreferences() { + synchronized (autorefresh) { + if (preferencesLoaded) { + return; + } + preferencesLoaded = true; + File preferencesFile = getPreferencesFile(); + Properties properties = new Properties(); + if (preferencesFile.exists()) { + InputStream inputStream = null; + try { + inputStream = new FileInputStream(preferencesFile); + properties.loadFromXML(inputStream); + } catch (IOException e) { + PreviewerPlugin.log(e); + } finally { + if (inputStream != null) { + try { + inputStream.close(); + } catch (IOException e) { + PreviewerPlugin.log(e); + } + } + } + IWorkspaceRoot root = ResourcesPlugin.getWorkspace().getRoot(); + for (Entry entry : properties.entrySet()) { + String projectName = entry.getKey().toString(); + String value = entry.getValue().toString(); + IProject project = root.getProject(projectName); + if (project.exists()) { + autorefresh.put(project, Boolean.valueOf(value)); + } + } + } + } + } - public void setProjectAutorefresh(IProject project, boolean refresh) { - synchronized (autorefresh) { - autorefresh.put(project, refresh); - Properties properties = new Properties(); - for (Entry entry : autorefresh.entrySet()) { - properties.setProperty(entry.getKey().getName(), entry - .getValue().toString()); - } - File path = getPreferencesFile(); - OutputStream outputStream = null; - try { - outputStream = new BufferedOutputStream(new FileOutputStream( - path)); - properties.storeToXML(outputStream, null); - } catch (IOException e) { - PreviewerPlugin.log(e); - } finally { - if (outputStream != null) { - try { - outputStream.close(); - } catch (IOException e) { - PreviewerPlugin.log(e); - } - } - } - } - } + protected void refreshPages(Collection files) { + Collection values = projectToPage.values(); + for (IPreviewPage page : values) { + page.process(files); + } + } - public boolean promptUserToToggle(IProject project, boolean toggle) { - IPreferenceStore preferenceStore = PreviewerPlugin.getDefault() - .getPreferenceStore(); - String value = preferenceStore - .getString(IWrtEditingPreferences.PREF_AUTO_REFRESH); - synchronized (autorefresh) { - if (!autorefresh.containsKey(project)) { - if (value == null || value.trim().length() == 0 - || MessageDialogWithToggle.PROMPT.equals(value)) { - boolean setting = MessageDialogWithToggle - .open( - MessageDialogWithToggle.QUESTION, - getSite().getShell(), - "Preview", - "The preview window can refresh (reinitialize and restart) whenever a project file is saved.\n" + - "This setting for each project can be toggled from the preview toolbar.\n\n" + - "Do you want to enable automatic refresh for this project?", - "Keep this setting for new projects", - false, preferenceStore, - IWrtEditingPreferences.PREF_AUTO_REFRESH, - SWT.SHEET).getReturnCode() == IDialogConstants.YES_ID; - setProjectAutorefresh(project, setting); - return setting; - } - } - } - return toggle; - } + public void setProjectAutorefresh(IProject project, boolean refresh) { + synchronized (autorefresh) { + autorefresh.put(project, refresh); + Properties properties = new Properties(); + for (Entry entry : autorefresh.entrySet()) { + properties.setProperty(entry.getKey().getName(), entry.getValue().toString()); + } + File path = getPreferencesFile(); + OutputStream outputStream = null; + try { + outputStream = new BufferedOutputStream(new FileOutputStream(path)); + properties.storeToXML(outputStream, null); + } catch (IOException e) { + PreviewerPlugin.log(e); + } finally { + if (outputStream != null) { + try { + outputStream.close(); + } catch (IOException e) { + PreviewerPlugin.log(e); + } + } + } + } + } + + public boolean promptUserToToggle(IProject project, boolean toggle) { + IPreferenceStore preferenceStore = PreviewerPlugin.getDefault().getPreferenceStore(); + String value = preferenceStore.getString(IWrtEditingPreferences.PREF_AUTO_REFRESH); + synchronized (autorefresh) { + if (!autorefresh.containsKey(project)) { + if (value == null || value.trim().length() == 0 || MessageDialogWithToggle.PROMPT.equals(value)) { + boolean setting = MessageDialogWithToggle.open( + MessageDialogWithToggle.QUESTION, + getSite().getShell(), + "Preview", + "The preview window can refresh (reinitialize and restart) whenever a project file is saved.\n" + + "This setting for each project can be toggled from the preview toolbar.\n\n" + + "Do you want to enable automatic refresh for this project?", + "Keep this setting for new projects", false, preferenceStore, + IWrtEditingPreferences.PREF_AUTO_REFRESH, SWT.SHEET).getReturnCode() == IDialogConstants.YES_ID; + setProjectAutorefresh(project, setting); + return setting; + } + } + } + return toggle; + } public synchronized void projectRenamed(IProject project, IPath newPath) { IPreviewPage page = projectToPage.remove(project); diff -r 5a2901872fcf -r a05c6e5cc7d9 org.symbian.tools.wrttools.previewer/src/org/symbian/tools/wrttools/previewer/preview/RefreshJob.java --- a/org.symbian.tools.wrttools.previewer/src/org/symbian/tools/wrttools/previewer/preview/RefreshJob.java Wed Aug 18 09:30:53 2010 -0700 +++ b/org.symbian.tools.wrttools.previewer/src/org/symbian/tools/wrttools/previewer/preview/RefreshJob.java Thu Aug 19 16:13:44 2010 -0700 @@ -28,8 +28,8 @@ import org.eclipse.core.runtime.IStatus; import org.eclipse.core.runtime.Status; import org.eclipse.core.runtime.jobs.Job; -import org.symbian.tools.wrttools.previewer.PreviewerUtil; -import org.symbian.tools.wrttools.previewer.PreviewerUtil.ChangedResourcesCollector; +import org.symbian.tools.tmw.previewer.internal.PreviewerUtil; +import org.symbian.tools.tmw.previewer.internal.PreviewerUtil.ChangedResourcesCollector; public class RefreshJob extends Job { private final IResourceDelta delta; diff -r 5a2901872fcf -r a05c6e5cc7d9 org.symbian.tools.wrttools.product/META-INF/MANIFEST.MF --- a/org.symbian.tools.wrttools.product/META-INF/MANIFEST.MF Wed Aug 18 09:30:53 2010 -0700 +++ b/org.symbian.tools.wrttools.product/META-INF/MANIFEST.MF Thu Aug 19 16:13:44 2010 -0700 @@ -16,7 +16,7 @@ org.eclipse.wst.css.ui;bundle-version="1.0.400", org.eclipse.wst.html.ui;bundle-version="1.0.400", org.eclipse.wst.xml.ui;bundle-version="1.1.0", - org.symbian.tools.wrttools.previewer;bundle-version="0.9.0", + org.symbian.tools.tmw.previewer;bundle-version="0.9.0", org.eclipse.ui.intro Bundle-RequiredExecutionEnvironment: J2SE-1.5 Bundle-ActivationPolicy: lazy diff -r 5a2901872fcf -r a05c6e5cc7d9 org.symbian.tools.wrttools.product/launch/WRT IDE Product (Windows).launch --- a/org.symbian.tools.wrttools.product/launch/WRT IDE Product (Windows).launch Wed Aug 18 09:30:53 2010 -0700 +++ b/org.symbian.tools.wrttools.product/launch/WRT IDE Product (Windows).launch Thu Aug 19 16:13:44 2010 -0700 @@ -5,7 +5,7 @@ - + @@ -21,9 +21,8 @@ - - - + + diff -r 5a2901872fcf -r a05c6e5cc7d9 org.symbian.tools.wrttools/META-INF/MANIFEST.MF --- a/org.symbian.tools.wrttools/META-INF/MANIFEST.MF Wed Aug 18 09:30:53 2010 -0700 +++ b/org.symbian.tools.wrttools/META-INF/MANIFEST.MF Thu Aug 19 16:13:44 2010 -0700 @@ -30,7 +30,8 @@ org.symbian.tools.tmw.core;bundle-version="1.0.0", org.symbian.tools.tmw.ui;bundle-version="1.0.0", org.eclipse.wst.common.project.facet.core;bundle-version="1.4.100", - org.eclipse.wst.common.project.facet.ui;bundle-version="1.4.100" + org.eclipse.wst.common.project.facet.ui;bundle-version="1.4.100", + org.symbian.tools.tmw.previewer;bundle-version="1.0.0" Bundle-RequiredExecutionEnvironment: J2SE-1.5, JavaSE-1.6 Bundle-ActivationPolicy: lazy diff -r 5a2901872fcf -r a05c6e5cc7d9 org.symbian.tools.wrttools/plugin.xml --- a/org.symbian.tools.wrttools/plugin.xml Wed Aug 18 09:30:53 2010 -0700 +++ b/org.symbian.tools.wrttools/plugin.xml Thu Aug 19 16:13:44 2010 -0700 @@ -819,6 +819,9 @@ id="org.symbian.tools.wrttools.wrt" version="1.1"> + + + + + + PhoneGap application + + + + + + + + + + + + @@ -957,5 +985,13 @@ version="1.0"> + + + + diff -r 5a2901872fcf -r a05c6e5cc7d9 org.symbian.tools.wrttools/src/org/symbian/tools/wrttools/WRTProject.java --- a/org.symbian.tools.wrttools/src/org/symbian/tools/wrttools/WRTProject.java Wed Aug 18 09:30:53 2010 -0700 +++ b/org.symbian.tools.wrttools/src/org/symbian/tools/wrttools/WRTProject.java Thu Aug 19 16:13:44 2010 -0700 @@ -36,10 +36,10 @@ import org.eclipse.core.runtime.NullProgressMonitor; import org.eclipse.core.runtime.Path; import org.symbian.tools.tmw.core.TMWCore; -import org.symbian.tools.tmw.core.projects.IMTWProject; +import org.symbian.tools.tmw.core.projects.ITMWProject; import org.symbian.tools.tmw.core.runtimes.IMobileWebRuntime; -public class WRTProject implements IMTWProject { +public class WRTProject implements ITMWProject { private static final String PROP_PREFERED_SCREEN = "preferred.screen.size"; private static final IPath PROPERTIES_FILE = new Path(".settings").append(Activator.PLUGIN_ID + ".properties"); public static final String WRT11_RUNTIME = "org.symbian.tools.wrttools.wrt"; diff -r 5a2901872fcf -r a05c6e5cc7d9 org.symbian.tools.wrttools/src/org/symbian/tools/wrttools/core/deploy/emulator/Emulator.java --- a/org.symbian.tools.wrttools/src/org/symbian/tools/wrttools/core/deploy/emulator/Emulator.java Wed Aug 18 09:30:53 2010 -0700 +++ b/org.symbian.tools.wrttools/src/org/symbian/tools/wrttools/core/deploy/emulator/Emulator.java Thu Aug 19 16:13:44 2010 -0700 @@ -31,7 +31,7 @@ import org.eclipse.core.runtime.PlatformObject; import org.eclipse.core.runtime.Status; import org.eclipse.ui.IMemento; -import org.symbian.tools.tmw.core.projects.IMTWProject; +import org.symbian.tools.tmw.core.projects.ITMWProject; import org.symbian.tools.tmw.core.runtimes.IPackager; import org.symbian.tools.tmw.ui.deployment.IDeploymentTarget; import org.symbian.tools.wrttools.Activator; @@ -95,7 +95,7 @@ return path; } - public IStatus deploy(IMTWProject project, IPackager packager, IProgressMonitor monitor) + public IStatus deploy(ITMWProject project, IPackager packager, IProgressMonitor monitor) throws CoreException { final File application = packager.packageApplication(project, monitor); final File outputFile = new File(path); @@ -136,7 +136,7 @@ // Do nothing } - public void init(IMTWProject project, IPackager packager, IMemento memento) { + public void init(ITMWProject project, IPackager packager, IMemento memento) { // Do nothing } } diff -r 5a2901872fcf -r a05c6e5cc7d9 org.symbian.tools.wrttools/src/org/symbian/tools/wrttools/core/deploy/emulator/EmulatorTargetType.java --- a/org.symbian.tools.wrttools/src/org/symbian/tools/wrttools/core/deploy/emulator/EmulatorTargetType.java Wed Aug 18 09:30:53 2010 -0700 +++ b/org.symbian.tools.wrttools/src/org/symbian/tools/wrttools/core/deploy/emulator/EmulatorTargetType.java Thu Aug 19 16:13:44 2010 -0700 @@ -34,7 +34,7 @@ import org.eclipse.core.runtime.NullProgressMonitor; import org.eclipse.core.runtime.Path; import org.eclipse.core.runtime.jobs.ISchedulingRule; -import org.symbian.tools.tmw.core.projects.IMTWProject; +import org.symbian.tools.tmw.core.projects.ITMWProject; import org.symbian.tools.tmw.ui.deployment.IDeploymentTarget; import org.symbian.tools.tmw.ui.deployment.IDeploymentTargetType; import org.symbian.tools.wrttools.core.IWRTConstants; @@ -54,7 +54,7 @@ discoverTargets(new NullProgressMonitor()); } - public IDeploymentTarget[] getTargets(IMTWProject project) { + public IDeploymentTarget[] getTargets(ITMWProject project) { Collection values = listofEmulators.values(); return values.toArray(new Emulator[values.size()]); } @@ -67,7 +67,7 @@ initialize(); } - public IDeploymentTarget findTarget(IMTWProject project, String id) { + public IDeploymentTarget findTarget(ITMWProject project, String id) { // TODO Auto-generated method stub return null; } diff -r 5a2901872fcf -r a05c6e5cc7d9 org.symbian.tools.wrttools/src/org/symbian/tools/wrttools/core/libraries/PhoneGapLibraryInstaller.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/org.symbian.tools.wrttools/src/org/symbian/tools/wrttools/core/libraries/PhoneGapLibraryInstaller.java Thu Aug 19 16:13:44 2010 -0700 @@ -0,0 +1,56 @@ +/** + * Copyright (c) 2010 Symbian Foundation and/or its subsidiary(-ies). + * All rights reserved. + * This component and the accompanying materials are made available + * under the terms of the License "Eclipse Public License v1.0" + * which accompanies this distribution, and is available + * at the URL "http://www.eclipse.org/legal/epl-v10.html". + * + * Initial Contributors: + * Symbian Foundation - initial contribution. + * Contributors: + * Description: + * Overview: + * Details: + * Platforms/Drives/Compatibility: + * Assumptions/Requirement/Pre-requisites: + * Failures and causes: + */ +package org.symbian.tools.wrttools.core.libraries; + +import java.io.InputStream; + +import org.eclipse.core.resources.IProject; +import org.eclipse.core.runtime.CoreException; +import org.eclipse.core.runtime.IPath; +import org.eclipse.core.runtime.IProgressMonitor; +import org.eclipse.wst.common.project.facet.core.IProjectFacetVersion; +import org.symbian.tools.tmw.core.projects.IProjectSetupConfig; +import org.symbian.tools.tmw.core.runtimes.LibraryInstallDelegate; + +public class PhoneGapLibraryInstaller extends LibraryInstallDelegate { + + public void execute(IProject project, IProjectFacetVersion fv, Object config, IProgressMonitor monitor) + throws CoreException { + + } + + @Override + protected IPath getBasePath(IProject project, IProjectSetupConfig setupConfig) { + // TODO Auto-generated method stub + return null; + } + + @Override + protected boolean isIncludeFile(IPath entry) { + // TODO Auto-generated method stub + return false; + } + + @Override + protected InputStream openInputStream() throws CoreException { + // TODO Auto-generated method stub + return null; + } + +} diff -r 5a2901872fcf -r a05c6e5cc7d9 org.symbian.tools.wrttools/src/org/symbian/tools/wrttools/core/packager/WrtPackager.java --- a/org.symbian.tools.wrttools/src/org/symbian/tools/wrttools/core/packager/WrtPackager.java Wed Aug 18 09:30:53 2010 -0700 +++ b/org.symbian.tools.wrttools/src/org/symbian/tools/wrttools/core/packager/WrtPackager.java Thu Aug 19 16:13:44 2010 -0700 @@ -29,14 +29,14 @@ import org.eclipse.core.runtime.IProgressMonitor; import org.eclipse.core.runtime.IStatus; import org.eclipse.core.runtime.Status; -import org.symbian.tools.tmw.core.projects.IMTWProject; +import org.symbian.tools.tmw.core.projects.ITMWProject; import org.symbian.tools.tmw.core.runtimes.IPackagerDelegate; import org.symbian.tools.tmw.core.utilities.ZipApplicationVisitor; import org.symbian.tools.wrttools.Activator; import org.symbian.tools.wrttools.util.ProjectUtils; public class WrtPackager implements IPackagerDelegate { - public File packageApplication(IMTWProject project, IProgressMonitor monitor) throws CoreException { + public File packageApplication(ITMWProject project, IProgressMonitor monitor) throws CoreException { monitor.beginTask(String.format("Packaging %s", project.getName()), IProgressMonitor.UNKNOWN); IPath stateLocation = Activator.getDefault().getStateLocation(); @@ -54,7 +54,7 @@ return f; } - public String getFileType(IMTWProject project) { + public String getFileType(ITMWProject project) { return "wgz"; } diff -r 5a2901872fcf -r a05c6e5cc7d9 org.symbian.tools.wrttools/src/org/symbian/tools/wrttools/core/project/WRT11ApplicationLayout.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/org.symbian.tools.wrttools/src/org/symbian/tools/wrttools/core/project/WRT11ApplicationLayout.java Thu Aug 19 16:13:44 2010 -0700 @@ -0,0 +1,154 @@ +/** + * Copyright (c) 2010 Symbian Foundation and/or its subsidiary(-ies). + * All rights reserved. + * This component and the accompanying materials are made available + * under the terms of the License "Eclipse Public License v1.0" + * which accompanies this distribution, and is available + * at the URL "http://www.eclipse.org/legal/epl-v10.html". + * + * Initial Contributors: + * Symbian Foundation - initial contribution. + * Contributors: + * Description: + * Overview: + * Details: + * Platforms/Drives/Compatibility: + * Assumptions/Requirement/Pre-requisites: + * Failures and causes: + */ +package org.symbian.tools.wrttools.core.project; + +import java.io.ByteArrayInputStream; +import java.io.IOException; +import java.io.InputStream; +import java.io.UnsupportedEncodingException; +import java.util.regex.Matcher; +import java.util.regex.Pattern; + +import org.eclipse.core.resources.IContainer; +import org.eclipse.core.resources.IFile; +import org.eclipse.core.resources.IProject; +import org.eclipse.core.resources.IResource; +import org.eclipse.core.resources.ResourcesPlugin; +import org.eclipse.core.runtime.CoreException; +import org.eclipse.core.runtime.IPath; +import org.eclipse.core.runtime.IStatus; +import org.eclipse.core.runtime.Path; +import org.eclipse.core.runtime.Status; +import org.symbian.tools.tmw.previewer.core.IApplicationLayoutProvider; +import org.symbian.tools.wrttools.Activator; +import org.symbian.tools.wrttools.previewer.PreviewerPlugin; +import org.symbian.tools.wrttools.util.CoreUtil; +import org.symbian.tools.wrttools.util.ProjectUtils; + +public class WRT11ApplicationLayout implements IApplicationLayoutProvider { + private static final Pattern HEAD_TAG_PATTERN = Pattern.compile("", + Pattern.CASE_INSENSITIVE); + public static final String INDEX = "wrt_preview_main.html"; + private static final String SCRIPT = ""; + + public String[] getPaths() { + return new String[] { INDEX }; + } + + private IFile getProjectIndexPage(String projectName) throws IOException, CoreException { + IProject project = ResourcesPlugin.getWorkspace().getRoot().getProject(projectName); + if (project.isAccessible()) { + String indexFileName = CoreUtil.getIndexFile(project); + if (indexFileName != null) { + final IFile file = CoreUtil.getFile(project, indexFileName); + if (!ProjectUtils.isExcluded(file)) { + return file; + } + } + PreviewerPlugin.print(String.format("Can not find main page (%s) in project %s.\n", indexFileName, + project.getName())); + } + return null; + } + + private InputStream patchIndexFile(final IFile file) throws CoreException, UnsupportedEncodingException { + String string = CoreUtil.readFile(file); + if (string != null) { + Matcher matcher = HEAD_TAG_PATTERN.matcher(string); + if (matcher.find()) { + string = matcher.replaceFirst(matcher.group() + SCRIPT); + } + return new ByteArrayInputStream(string.getBytes("UTF-8")); + } + return null; + } + + public InputStream getResourceFromPath(IProject project, IPath path) throws CoreException { + final IFile file = getWorkspaceFile(project, path); + if (file == null) { + return null; + } + if (path.segmentCount() == 1 && INDEX.equals(path.segment(0))) { + try { + return patchIndexFile(file); + } catch (IOException e) { + throw new CoreException(new Status(IStatus.ERROR, Activator.PLUGIN_ID, + "Can't access preview index file", e)); + } + } + return file.getContents(); + } + + public IPath getResourcePath(IFile file) { + try { + if (file != null && file.getProjectRelativePath().equals(CoreUtil.getIndexFile(file.getProject()))) { + return new Path(INDEX); + } + } catch (CoreException e) { + Activator.log(e); + } + return file != null && file.exists() && isFileIncluded(file) ? file.getProjectRelativePath().makeRelative() + : null; + } + + private boolean isFileIncluded(IFile file) { + return !ProjectUtils.isExcluded(file); + } + + // WRT runtime is case-insensitive so we need to properly process files in a case-insensitive way + private IFile tryCaseInsensitiveSearch(IContainer container, IPath path) throws CoreException { + if (path.segmentCount() == 0) { + return null; + } + final String segment = path.segment(0); + final IResource[] members = container.members(); + for (IResource resource : members) { + if (resource.getName().equalsIgnoreCase(segment)) { + if (resource.getType() == IResource.FILE) { + return (IFile) (path.segmentCount() == 1 ? resource : null); + } else { + return tryCaseInsensitiveSearch((IContainer) resource, path.removeFirstSegments(1)); + } + } + } + return null; + } + + public IFile getWorkspaceFile(IProject project, IPath path) throws CoreException { + if (path.segmentCount() == 1 && INDEX.equals(path.segment(0))) { + try { + return getProjectIndexPage(project.getName()); + } catch (IOException e) { + throw new CoreException(new Status(IStatus.ERROR, Activator.PLUGIN_ID, "Can't find project index file", + e)); + } + } + IFile file = project.getFile(path); + if (!file.exists()) { + try { + file = tryCaseInsensitiveSearch(project, path); + } catch (CoreException e) { + Activator.log(e); + } + } + return file.exists() && isFileIncluded(file) ? file : null; + } + +} diff -r 5a2901872fcf -r a05c6e5cc7d9 org.symbian.tools.wrttools/src/org/symbian/tools/wrttools/core/project/WRTIDEProjectProvider.java --- a/org.symbian.tools.wrttools/src/org/symbian/tools/wrttools/core/project/WRTIDEProjectProvider.java Wed Aug 18 09:30:53 2010 -0700 +++ b/org.symbian.tools.wrttools/src/org/symbian/tools/wrttools/core/project/WRTIDEProjectProvider.java Thu Aug 19 16:13:44 2010 -0700 @@ -22,16 +22,16 @@ import java.util.WeakHashMap; import org.eclipse.core.resources.IProject; -import org.symbian.tools.tmw.core.projects.IMTWProject; -import org.symbian.tools.tmw.core.projects.IMTWProjectProvider; +import org.symbian.tools.tmw.core.projects.ITMWProject; +import org.symbian.tools.tmw.core.projects.ITMWProjectProvider; import org.symbian.tools.wrttools.WRTProject; import org.symbian.tools.wrttools.util.ProjectUtils; -public class WRTIDEProjectProvider implements IMTWProjectProvider { - private final Map projects = new WeakHashMap(); +public class WRTIDEProjectProvider implements ITMWProjectProvider { + private final Map projects = new WeakHashMap(); - public IMTWProject create(IProject project) { - IMTWProject p = projects.get(project); + public ITMWProject create(IProject project) { + ITMWProject p = projects.get(project); if (p == null) { p = new WRTProject(project); projects.put(project, p); diff -r 5a2901872fcf -r a05c6e5cc7d9 org.symbian.tools.wrttools/src/org/symbian/tools/wrttools/util/CoreUtil.java --- a/org.symbian.tools.wrttools/src/org/symbian/tools/wrttools/util/CoreUtil.java Wed Aug 18 09:30:53 2010 -0700 +++ b/org.symbian.tools.wrttools/src/org/symbian/tools/wrttools/util/CoreUtil.java Thu Aug 19 16:13:44 2010 -0700 @@ -85,7 +85,7 @@ return null; } - public static String readFile(IProject project, IFile file) throws CoreException { + public static String readFile(IFile file) throws CoreException { try { if (file != null && file.isAccessible()) { final BufferedReader reader = new BufferedReader(new InputStreamReader(file.getContents(), @@ -95,7 +95,7 @@ return null; } catch (IOException e) { throw new CoreException(new Status(IStatus.ERROR, Activator.PLUGIN_ID, MessageFormat.format( - "Failed to read file {0} in project {1}", file.getName(), project.getName()))); + "Failed to read file {0} in project {1}", file.getName(), file.getProject().getName()))); } } @@ -131,7 +131,7 @@ return record.fileName; } } - String fileName = getIndexFileName(readFile(project, file)); + String fileName = getIndexFileName(readFile(file)); INDEX_FILES.put(project, new IndexFileRecord(fileName, file.getModificationStamp())); return fileName; } diff -r 5a2901872fcf -r a05c6e5cc7d9 org.symbian.tools.wrttools/src/org/symbian/tools/wrttools/util/ProjectUtils.java --- a/org.symbian.tools.wrttools/src/org/symbian/tools/wrttools/util/ProjectUtils.java Wed Aug 18 09:30:53 2010 -0700 +++ b/org.symbian.tools.wrttools/src/org/symbian/tools/wrttools/util/ProjectUtils.java Thu Aug 19 16:13:44 2010 -0700 @@ -407,6 +407,9 @@ } public static boolean isExcluded(IResource resource) { + if (resource.getType() == IResource.PROJECT || resource.getType() == IResource.ROOT) { + return false; + } if (!resource.exists()) { return false; } @@ -414,7 +417,8 @@ IMarker[] markers = resource .findMarkers(EXCLUDE_MARKER_ID, false, IResource.DEPTH_ZERO); IPath path = resource.getProjectRelativePath(); - return markers.length != 0 || (path.segmentCount() > 1 && ".settings".equals(path.segment(0))); + return markers.length != 0 || (path.segmentCount() > 1 && ".settings".equals(path.segment(0))) + || isExcluded(resource.getParent()); } catch (CoreException e) { Activator.log(e); return false;