# HG changeset patch # User Eugene Ostroukhov # Date 1282149053 25200 # Node ID 5a2901872fcf26e175dfc98992cdd75faec9fe41 # Parent 129c94e783756d834035153eb73b4bb4cd0987e9 WRTKit facet was introduced diff -r 129c94e78375 -r 5a2901872fcf org.symbian.tools.mtw.core/plugin.xml --- a/org.symbian.tools.mtw.core/plugin.xml Tue Aug 17 13:40:28 2010 -0700 +++ b/org.symbian.tools.mtw.core/plugin.xml Wed Aug 18 09:30:53 2010 -0700 @@ -110,6 +110,9 @@ + + diff -r 129c94e78375 -r 5a2901872fcf org.symbian.tools.mtw.core/src/org/symbian/tools/tmw/core/internal/facets/InstallCoreFacetAction.java --- a/org.symbian.tools.mtw.core/src/org/symbian/tools/tmw/core/internal/facets/InstallCoreFacetAction.java Tue Aug 17 13:40:28 2010 -0700 +++ b/org.symbian.tools.mtw.core/src/org/symbian/tools/tmw/core/internal/facets/InstallCoreFacetAction.java Wed Aug 18 09:30:53 2010 -0700 @@ -29,7 +29,6 @@ import org.eclipse.wst.jsdt.core.IJavaScriptProject; import org.eclipse.wst.jsdt.core.JavaScriptCore; import org.eclipse.wst.validation.ValidationFramework; -import org.symbian.tools.tmw.core.projects.IProjectSetupAction; public class InstallCoreFacetAction implements IDelegate { @@ -56,10 +55,6 @@ } ValidationFramework.getDefault().addValidationBuilder(project); - IProjectSetupAction action = (IProjectSetupAction) config; - if (action != null) { - action.initialize(project, new SubProgressMonitor(monitor, 270)); - } monitor.done(); } } \ No newline at end of file diff -r 129c94e78375 -r 5a2901872fcf org.symbian.tools.mtw.core/src/org/symbian/tools/tmw/core/projects/IProjectSetupAction.java --- a/org.symbian.tools.mtw.core/src/org/symbian/tools/tmw/core/projects/IProjectSetupAction.java Tue Aug 17 13:40:28 2010 -0700 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,35 +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; - -/** - * This object can be set as facet install config for the core TMW facet - * - * @author Eugene Ostroukhov (eugeneo@symbian.org) - */ -public interface IProjectSetupAction { - /** - * Performs project setup. Project will already be configured with - * validation support and JSDT support. - */ - void initialize(IProject project, IProgressMonitor monitor); -} diff -r 129c94e78375 -r 5a2901872fcf org.symbian.tools.mtw.core/src/org/symbian/tools/tmw/core/projects/IProjectSetupConfig.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/org.symbian.tools.mtw.core/src/org/symbian/tools/tmw/core/projects/IProjectSetupConfig.java Wed Aug 18 09:30:53 2010 -0700 @@ -0,0 +1,61 @@ +/** + * 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 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; +import org.eclipse.core.runtime.IProgressMonitor; + +/** + * This object can be set as facet install config for the core TMW facet + * + * @author Eugene Ostroukhov (eugeneo@symbian.org) + */ +public interface IProjectSetupConfig { + /** + * Performs project setup. Project will already be configured with + * validation support and JSDT support. + */ + void initialize(IProject project, IProgressMonitor monitor); + + /** + * Allows the framework to reduce dependence on exact project layout. I.e. + * some IDEs may want to introduce separation of the web resources and + * JavaScript source files. + * + * @param project project to add file to + * @param name file path relative to application root + * @param contents stream with file contents + * @param monitor progress monitor + * @throws CoreException + */ + IFile addFile(IProject project, IPath name, InputStream contents, IProgressMonitor monitor) throws CoreException; + + /** + * Adds specified file to the list of the JS files that will be included in + * the application page + * @param file workspace file. Framework is responsible to create proper + * application root-relative path + */ + void addIncludedJsFile(IFile file); +} diff -r 129c94e78375 -r 5a2901872fcf org.symbian.tools.mtw.core/src/org/symbian/tools/tmw/core/runtimes/LibraryInstallDelegate.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/org.symbian.tools.mtw.core/src/org/symbian/tools/tmw/core/runtimes/LibraryInstallDelegate.java Wed Aug 18 09:30:53 2010 -0700 @@ -0,0 +1,79 @@ +/** + * 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.runtimes; + +import java.io.IOException; +import java.io.InputStream; +import java.util.zip.ZipEntry; +import java.util.zip.ZipInputStream; + +import org.eclipse.core.resources.IFile; +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.core.runtime.NullProgressMonitor; +import org.eclipse.core.runtime.Path; +import org.eclipse.wst.common.project.facet.core.IDelegate; +import org.eclipse.wst.common.project.facet.core.IProjectFacetVersion; +import org.symbian.tools.tmw.core.TMWCore; +import org.symbian.tools.tmw.core.projects.IProjectSetupConfig; + +public abstract class LibraryInstallDelegate implements IDelegate { + + public void execute(IProject project, IProjectFacetVersion fv, Object config, IProgressMonitor monitor) + throws CoreException { + if (config instanceof IProjectSetupConfig) { + final IProjectSetupConfig setupConfig = (IProjectSetupConfig) config; + final IPath basePath = getBasePath(project, setupConfig); + final InputStream file = openInputStream(); + final ZipInputStream stream = new ZipInputStream(file); + try { + ZipEntry en = stream.getNextEntry(); + while (en != null) { + if (!en.isDirectory()) { + final IPath entry = new Path(en.getName()); + final IFile f = setupConfig.addFile(project, basePath.append(entry), stream, + new NullProgressMonitor()); + if (isIncludeFile(entry)) { + setupConfig.addIncludedJsFile(f); + } + + } + en = stream.getNextEntry(); + } + } catch (IOException e) { + TMWCore.log(null, e); + } finally { + try { + file.close(); + } catch (IOException e) { + TMWCore.log(null, e); + } + } + } + } + + protected abstract IPath getBasePath(IProject project, IProjectSetupConfig setupConfig); + + protected abstract boolean isIncludeFile(IPath entry); + + protected abstract InputStream openInputStream() throws CoreException; + +} diff -r 129c94e78375 -r 5a2901872fcf org.symbian.tools.mtw.core/src/org/symbian/tools/tmw/core/runtimes/ProjectCreationConfigFactory.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/org.symbian.tools.mtw.core/src/org/symbian/tools/tmw/core/runtimes/ProjectCreationConfigFactory.java Wed Aug 18 09:30:53 2010 -0700 @@ -0,0 +1,33 @@ +/** + * 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.runtimes; + +import org.eclipse.core.runtime.CoreException; +import org.eclipse.wst.common.project.facet.core.IActionConfigFactory; + +public class ProjectCreationConfigFactory implements IActionConfigFactory { + // Basically this is an ugly hack. Our project wizard will replace this config + // object with WizardContext + public static final Object CONFIG_STANDIN = "standing_config"; + + public Object create() throws CoreException { + return CONFIG_STANDIN; + } + +} diff -r 129c94e78375 -r 5a2901872fcf org.symbian.tools.mtw.ui/src/org/symbian/tools/tmw/internal/ui/project/ZipInstaller.java --- a/org.symbian.tools.mtw.ui/src/org/symbian/tools/tmw/internal/ui/project/ZipInstaller.java Tue Aug 17 13:40:28 2010 -0700 +++ b/org.symbian.tools.mtw.ui/src/org/symbian/tools/tmw/internal/ui/project/ZipInstaller.java Wed Aug 18 09:30:53 2010 -0700 @@ -172,7 +172,7 @@ if (nm.endsWith(TEMPLATE_FILE_EXTENSION)) { contents = copyTemplate(project, name, stream, (int) entry.getSize(), ctx, monitor); } else { - contents = new NonClosingStream(stream); + contents = stream; } IFile file = context.addFile(project, name, contents, new SubProgressMonitor(monitor, 10)); if (open) { diff -r 129c94e78375 -r 5a2901872fcf org.symbian.tools.mtw.ui/src/org/symbian/tools/tmw/internal/ui/wizard/NewApplicationDetailsWizardPage.java --- a/org.symbian.tools.mtw.ui/src/org/symbian/tools/tmw/internal/ui/wizard/NewApplicationDetailsWizardPage.java Tue Aug 17 13:40:28 2010 -0700 +++ b/org.symbian.tools.mtw.ui/src/org/symbian/tools/tmw/internal/ui/wizard/NewApplicationDetailsWizardPage.java Wed Aug 18 09:30:53 2010 -0700 @@ -87,10 +87,9 @@ root.setLayout(new GridLayout(2, false)); createProjectNameGroup(root); - context.createLabel(root, ""); - context.createLabel(root, ""); - - context.createLabel(root, "Mobile Runtime:"); + createLabel(root, ""); + createLabel(root, ""); + createLabel(root, "Mobile Runtime:"); ComboViewer viewer = new ComboViewer(root); viewer.setContentProvider(new ArrayContentProvider()); @@ -106,25 +105,25 @@ final IObservableValue observableValue = BeansObservables.observeValue(context, WizardContext.RUNTIME); bindingContext.bindValue(observeSelection, observableValue); - context.createLabel(root, ""); - context.createLabel(root, ""); - context.createLabel(root, "Application identifier:"); + createLabel(root, ""); + createLabel(root, ""); + createLabel(root, "Application identifier:"); context.createText(root, WizardContext.WIDGET_ID, "applicatoin identifier", bindingContext, null, new RegexpValidator("[\\w]*(\\.\\w[\\w]*)*", "{0} is not a valid applicatoin ID", true)); - context.createLabel(root, ""); - context.createLabel(root, "This id should be unique for successful installation of application on the device"); + createLabel(root, ""); + createLabel(root, "This id should be unique for successful installation of application on the device"); - context.createLabel(root, ""); - context.createLabel(root, ""); + createLabel(root, ""); + createLabel(root, ""); - context.createLabel(root, "Application name:"); + createLabel(root, "Application name:"); context.createText(root, WizardContext.WIDGET_NAME, "application name", bindingContext, null, new RegexpValidator("[^\\w\\. ]", "Application name cannot contain {0} character", false)); - context.createLabel(root, ""); - context.createLabel(root, "This will be the application display name on the device"); + createLabel(root, ""); + createLabel(root, "This will be the application display name on the device"); Composite composite = new Composite(root, SWT.NONE); GridLayout gridLayout = new GridLayout(1, false); @@ -148,6 +147,10 @@ Dialog.applyDialogFont(root); } + private void createLabel(Composite root, String string) { + new Label(root, SWT.NONE).setText(string); + } + /** * Creates the project name specification controls. * diff -r 129c94e78375 -r 5a2901872fcf org.symbian.tools.mtw.ui/src/org/symbian/tools/tmw/internal/ui/wizard/NewApplicationFacetsWizardPage.java --- a/org.symbian.tools.mtw.ui/src/org/symbian/tools/tmw/internal/ui/wizard/NewApplicationFacetsWizardPage.java Tue Aug 17 13:40:28 2010 -0700 +++ b/org.symbian.tools.mtw.ui/src/org/symbian/tools/tmw/internal/ui/wizard/NewApplicationFacetsWizardPage.java Wed Aug 18 09:30:53 2010 -0700 @@ -46,7 +46,7 @@ public void handleEvent(final IFacetedProjectEvent event) { updatePageState(); } - }, IFacetedProjectEvent.Type.PROJECT_MODIFIED); + }, IFacetedProjectEvent.Type.PROJECT_MODIFIED, IFacetedProjectEvent.Type.PROJECT_NAME_CHANGED); final IRuntimeLifecycleListener runtimeLifecycleListener = new IRuntimeLifecycleListener() { public void handleEvent(final IRuntimeLifecycleEvent event) { diff -r 129c94e78375 -r 5a2901872fcf org.symbian.tools.mtw.ui/src/org/symbian/tools/tmw/internal/ui/wizard/NewApplicationWizard.java --- a/org.symbian.tools.mtw.ui/src/org/symbian/tools/tmw/internal/ui/wizard/NewApplicationWizard.java Tue Aug 17 13:40:28 2010 -0700 +++ b/org.symbian.tools.mtw.ui/src/org/symbian/tools/tmw/internal/ui/wizard/NewApplicationWizard.java Wed Aug 18 09:30:53 2010 -0700 @@ -18,22 +18,31 @@ */ package org.symbian.tools.tmw.internal.ui.wizard; +import java.util.Arrays; +import java.util.Collection; import java.util.Collections; +import java.util.HashSet; import java.util.Set; import org.eclipse.core.databinding.DataBindingContext; +import org.eclipse.core.runtime.CoreException; import org.eclipse.core.runtime.IPath; +import org.eclipse.core.runtime.IProgressMonitor; +import org.eclipse.core.runtime.SubProgressMonitor; import org.eclipse.jface.viewers.IStructuredSelection; import org.eclipse.jface.wizard.IWizardPage; import org.eclipse.ui.INewWizard; import org.eclipse.ui.IWorkbench; import org.eclipse.wst.common.project.facet.core.IFacetedProject; +import org.eclipse.wst.common.project.facet.core.IFacetedProject.Action; import org.eclipse.wst.common.project.facet.core.IFacetedProjectWorkingCopy; +import org.eclipse.wst.common.project.facet.core.IProjectFacet; import org.eclipse.wst.common.project.facet.core.IProjectFacetVersion; import org.eclipse.wst.common.project.facet.core.runtime.IRuntime; import org.eclipse.wst.common.project.facet.ui.ModifyFacetedProjectWizard; import org.symbian.tools.tmw.core.TMWCore; import org.symbian.tools.tmw.core.projects.IFProjSupport; +import org.symbian.tools.tmw.core.runtimes.ProjectCreationConfigFactory; import org.symbian.tools.tmw.ui.project.INewApplicationWizardPage; import org.symbian.tools.tmw.ui.project.IProjectTemplate; @@ -74,32 +83,69 @@ } public boolean canFinish() { - return this.firstPage.isPageComplete() && super.canFinish(); + return getNextPage(getContainer().getCurrentPage()) == null && this.firstPage.isPageComplete() + && super.canFinish(); } protected NewApplicationDetailsWizardPage createFirstPage() { firstPage = new NewApplicationDetailsWizardPage(wizardContext, databindingContext); return firstPage; } + @Override public IWizardPage getNextPage(final IWizardPage page) { + final IFacetedProjectWorkingCopy fpjwc = getFacetedProjectWorkingCopy(); if (page == this.firstPage) { - final IFacetedProjectWorkingCopy fpjwc = getFacetedProjectWorkingCopy(); fpjwc.setProjectName(getProjectName()); fpjwc.setProjectLocation(getProjectLocation()); final IFProjSupport fprojSupport = TMWCore.getFProjSupport(); IRuntime runtime = fprojSupport.getRuntime(wizardContext.getRuntime()); fpjwc.setTargetedRuntimes(Collections.singleton(runtime)); fpjwc.setPrimaryRuntime(runtime); - fpjwc.setProjectFacets(fprojSupport.getFixedFacetsVersions(wizardContext.getRuntime())); - fpjwc.setFixedProjectFacets(fprojSupport.getFixedFacets(wizardContext.getRuntime())); - fpjwc.setProjectFacetActionConfig(fprojSupport.getTMWFacet(), wizardContext); + Set facets = getCurrentFixedFacetVersions(); + facets.addAll(fpjwc.getProjectFacets()); + fpjwc.setProjectFacets(facets); + fpjwc.setFixedProjectFacets(getCurrentFixedFacets()); + } else if (page == this.templatesPage) { + Set facets = getCurrentFixedFacetVersions(); + facets.addAll(fpjwc.getProjectFacets()); + fpjwc.setProjectFacets(facets); + fpjwc.setFixedProjectFacets(getCurrentFixedFacets()); + } + final Collection actions = fpjwc.getProjectFacetActions(); + final Collection toReplace = new HashSet(); + for (Action action : actions) { + if (action.getConfig() == ProjectCreationConfigFactory.CONFIG_STANDIN) { + toReplace.add(action); + } + } + for (Action action : toReplace) { + fpjwc.setProjectFacetActionConfig(action.getProjectFacetVersion().getProjectFacet(), wizardContext); } IWizardPage nextPage = super.getNextPage(page); return nextPage; } + private Set getCurrentFixedFacets() { + final Set fixedFacets = getCurrentFixedFacetVersions(); + final Set facets = new HashSet(); + for (IProjectFacetVersion facet : fixedFacets) { + facets.add(facet.getProjectFacet()); + } + return facets; + } + + private Set getCurrentFixedFacetVersions() { + final IFProjSupport fprojSupport = TMWCore.getFProjSupport(); + Set facets = new HashSet( + fprojSupport.getFixedFacetsVersions(wizardContext.getRuntime())); + if (wizardContext.getTemplate() != null) { + facets.addAll(Arrays.asList(wizardContext.getTemplate().getRequiredFacets())); + } + return facets; + } + public IWizardPage[] getPages() { final IProjectTemplate current = wizardContext.getTemplate(); if (template != current) { @@ -165,4 +211,12 @@ this.workbench = workbench; this.selection = selection; } + + @Override + protected void performFinish(IProgressMonitor monitor) throws CoreException { + monitor.beginTask("Preparing project", 100); + super.performFinish(new SubProgressMonitor(monitor, 20)); + wizardContext.initialize(getFacetedProject().getProject(), new SubProgressMonitor(monitor, 80)); + monitor.done(); + } } diff -r 129c94e78375 -r 5a2901872fcf org.symbian.tools.mtw.ui/src/org/symbian/tools/tmw/internal/ui/wizard/WizardContext.java --- a/org.symbian.tools.mtw.ui/src/org/symbian/tools/tmw/internal/ui/wizard/WizardContext.java Tue Aug 17 13:40:28 2010 -0700 +++ b/org.symbian.tools.mtw.ui/src/org/symbian/tools/tmw/internal/ui/wizard/WizardContext.java Wed Aug 18 09:30:53 2010 -0700 @@ -2,17 +2,19 @@ import java.beans.PropertyChangeListener; import java.beans.PropertyChangeSupport; +import java.io.FilterInputStream; +import java.io.IOException; import java.io.InputStream; import java.text.MessageFormat; +import java.util.Collection; import java.util.Map; import java.util.Set; import java.util.TreeMap; +import java.util.TreeSet; import org.eclipse.core.databinding.DataBindingContext; import org.eclipse.core.databinding.UpdateValueStrategy; import org.eclipse.core.databinding.beans.BeansObservables; -import org.eclipse.core.databinding.observable.Observables; -import org.eclipse.core.databinding.observable.map.IObservableMap; import org.eclipse.core.databinding.observable.value.AbstractObservableValue; import org.eclipse.core.databinding.observable.value.IObservableValue; import org.eclipse.core.databinding.observable.value.ValueDiff; @@ -31,7 +33,6 @@ import org.eclipse.swt.SWT; import org.eclipse.swt.layout.GridData; import org.eclipse.swt.widgets.Composite; -import org.eclipse.swt.widgets.Label; import org.eclipse.swt.widgets.Text; import org.symbian.tools.tmw.core.TMWCore; import org.symbian.tools.tmw.core.runtimes.IMobileWebRuntime; @@ -58,6 +59,7 @@ private String widgetId; private String widgetName; + private final Collection jsIncludes = new TreeSet(); public WizardContext() { IMobileWebRuntime[] runtimes = TMWCore.getRuntimesManager().getAllRuntimes(); @@ -73,7 +75,7 @@ if (!file.exists()) { create(file.getParent()); } - file.create(contents, false, new SubProgressMonitor(monitor, 100)); + file.create(new NonClosingStream(contents), false, new SubProgressMonitor(monitor, 100)); monitor.done(); return file; } @@ -93,11 +95,6 @@ } } - protected void createLabel(Composite root, String text) { - Label label = new Label(root, SWT.NONE); - label.setText(text); - } - private Text createText(Composite root, IObservableValue model, String propertyName, DataBindingContext bindingContext, AbstractDataBindingPage page, IValidator... validators) { Text text = new Text(root, SWT.BORDER); @@ -117,13 +114,6 @@ validators); } - protected Text createTextForExt(Composite root, String property, String propertyName, - DataBindingContext bindingContext, AbstractDataBindingPage page) { - IObservableMap map = BeansObservables.observeMap(this, "extensions"); - IObservableValue entry = Observables.observeMapEntry(map, property, String.class); - return createText(root, entry, propertyName, bindingContext, page); - } - private IProjectTemplate getDefaultTemplate(IMobileWebRuntime runtime) { return TMWCoreUI.getProjectTemplateManager().getDefaultTemplate(runtime); } @@ -187,6 +177,7 @@ vars.put("widgetName", getWidgetName()); vars.put("widgetId", getWidgetId()); + vars.put("jsIncludes", jsIncludes); vars.putAll(extensions); return vars; @@ -320,4 +311,20 @@ }); } } + + private static final class NonClosingStream extends FilterInputStream { + private NonClosingStream(InputStream in) { + super(in); + } + + @Override + public void close() throws IOException { + // Avoid closing ZIP file + } + } + + + public void addIncludedJsFile(IFile file) { + jsIncludes.add(file.getProjectRelativePath().makeRelative().toString()); + } } diff -r 129c94e78375 -r 5a2901872fcf org.symbian.tools.mtw.ui/src/org/symbian/tools/tmw/ui/project/IProjectTemplateContext.java --- a/org.symbian.tools.mtw.ui/src/org/symbian/tools/tmw/ui/project/IProjectTemplateContext.java Tue Aug 17 13:40:28 2010 -0700 +++ b/org.symbian.tools.mtw.ui/src/org/symbian/tools/tmw/ui/project/IProjectTemplateContext.java Wed Aug 18 09:30:53 2010 -0700 @@ -18,15 +18,8 @@ */ package org.symbian.tools.tmw.ui.project; -import java.io.InputStream; - import org.eclipse.core.databinding.observable.value.IObservableValue; -import org.eclipse.core.resources.IFile; -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.symbian.tools.tmw.core.projects.IProjectSetupAction; +import org.symbian.tools.tmw.core.projects.IProjectSetupConfig; import org.symbian.tools.tmw.core.runtimes.IMobileWebRuntime; /** @@ -34,7 +27,7 @@ * * @author Eugene Ostroukhov (eugeneo@symbian.org) */ -public interface IProjectTemplateContext extends IProjectSetupAction { +public interface IProjectTemplateContext extends IProjectSetupConfig { /** * @return runtime that the project targets */ @@ -55,19 +48,6 @@ void putParameter(String key, Object value); /** - * Allows the framework to reduce dependance on exact project layout. I.e. - * some IDEs may want to introduce separation of the web resources and - * JavaScript source files. - * - * @param project project to add file to - * @param name file path relative to application root - * @param contents stream with file contents - * @param monitor progress monitor - * @throws CoreException - */ - IFile addFile(IProject project, IPath name, InputStream contents, IProgressMonitor monitor) throws CoreException; - - /** * Allows binding to parameter value from UI. * * @param name parameter value diff -r 129c94e78375 -r 5a2901872fcf org.symbian.tools.wrttools/plugin.xml --- a/org.symbian.tools.wrttools/plugin.xml Tue Aug 17 13:40:28 2010 -0700 +++ b/org.symbian.tools.wrttools/plugin.xml Wed Aug 18 09:30:53 2010 -0700 @@ -810,6 +810,16 @@ type="org.symbian.tools.wrttools.wrt" version="1.1"> + + + + + + @@ -869,6 +879,10 @@ name="flickrUrl" value="http://flickr.com/photos/symbianfoundation"> + + + + + + + WRTKit UI library for Symbian WRT + + + + + + + + + + + + + + + + + + + + + diff -r 129c94e78375 -r 5a2901872fcf org.symbian.tools.wrttools/projecttemplates/flickr.zip Binary file org.symbian.tools.wrttools/projecttemplates/flickr.zip has changed diff -r 129c94e78375 -r 5a2901872fcf org.symbian.tools.wrttools/src/org/symbian/tools/wrttools/core/libraries/InstallWrtKitDelegate.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/org.symbian.tools.wrttools/src/org/symbian/tools/wrttools/core/libraries/InstallWrtKitDelegate.java Wed Aug 18 09:30:53 2010 -0700 @@ -0,0 +1,57 @@ +/** + * 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.IOException; +import java.io.InputStream; + +import org.eclipse.core.resources.IProject; +import org.eclipse.core.runtime.CoreException; +import org.eclipse.core.runtime.FileLocator; +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.core.projects.IProjectSetupConfig; +import org.symbian.tools.tmw.core.runtimes.LibraryInstallDelegate; +import org.symbian.tools.wrttools.Activator; + +public class InstallWrtKitDelegate extends LibraryInstallDelegate { + + @Override + protected boolean isIncludeFile(IPath entry) { + return entry.equals(new Path("WRTKit.js")); + } + + @Override + protected InputStream openInputStream() throws CoreException { + try { + return FileLocator.openStream(Activator.getDefault().getBundle(), + new Path("libraries").append("wrtkit.zip"), true); + } catch (IOException e) { + throw new CoreException( + new Status(IStatus.ERROR, Activator.PLUGIN_ID, "Can't access WRTKit library zip", e)); + } + } + + @Override + protected IPath getBasePath(IProject project, IProjectSetupConfig setupConfig) { + return new Path("wrtkit"); + } +}