# HG changeset patch # User Eugene Ostroukhov # Date 1281745560 25200 # Node ID 0b02f3d6f52c7b847809cd5b517e5a22edcc6e81 # Parent aea4c83725d8145e8c34e737fd40f03d76c46508 Project template work-in-progress diff -r aea4c83725d8 -r 0b02f3d6f52c org.symbian.tools.mtw.ui/schema/projectTemplate.exsd --- a/org.symbian.tools.mtw.ui/schema/projectTemplate.exsd Fri Aug 13 16:28:00 2010 -0700 +++ b/org.symbian.tools.mtw.ui/schema/projectTemplate.exsd Fri Aug 13 17:26:00 2010 -0700 @@ -19,6 +19,7 @@ + @@ -60,6 +61,7 @@ + @@ -183,7 +185,7 @@ - + This element describes contents that will be added to all projects for given runtime. @@ -191,8 +193,9 @@ - + + @@ -214,6 +217,28 @@ + + + + + + + + + + + + + + + + + + + + + + diff -r aea4c83725d8 -r 0b02f3d6f52c org.symbian.tools.mtw.ui/src/org/symbian/tools/tmw/internal/ui/project/ProjectTemplateImpl.java --- a/org.symbian.tools.mtw.ui/src/org/symbian/tools/tmw/internal/ui/project/ProjectTemplateImpl.java Fri Aug 13 16:28:00 2010 -0700 +++ b/org.symbian.tools.mtw.ui/src/org/symbian/tools/tmw/internal/ui/project/ProjectTemplateImpl.java Fri Aug 13 17:26:00 2010 -0700 @@ -18,6 +18,9 @@ */ package org.symbian.tools.tmw.internal.ui.project; +import java.util.Map; +import java.util.TreeMap; + import org.eclipse.core.resources.IProject; import org.eclipse.core.runtime.CoreException; import org.eclipse.core.runtime.IConfigurationElement; @@ -42,6 +45,7 @@ private IMobileWebRuntime[] runtimes; private IProjectFacetVersion[] facetVersions; private ITemplateInstaller installer; + private Map parameters; public ProjectTemplateImpl(IConfigurationElement element) { this.element = element; @@ -142,4 +146,16 @@ monitor.done(); } + public Map getDefaultParameterValues() { + if (parameters == null) { + parameters = new TreeMap(); + for (IConfigurationElement el : element.getChildren()) { + if ("default-parameter-value".equals(el.getName())) { + parameters.put(el.getAttribute("name"), el.getAttribute("value")); + } + } + } + return parameters; + } + } diff -r aea4c83725d8 -r 0b02f3d6f52c org.symbian.tools.mtw.ui/src/org/symbian/tools/tmw/internal/ui/project/ProjectTemplateManagerImpl.java --- a/org.symbian.tools.mtw.ui/src/org/symbian/tools/tmw/internal/ui/project/ProjectTemplateManagerImpl.java Fri Aug 13 16:28:00 2010 -0700 +++ b/org.symbian.tools.mtw.ui/src/org/symbian/tools/tmw/internal/ui/project/ProjectTemplateManagerImpl.java Fri Aug 13 17:26:00 2010 -0700 @@ -19,9 +19,11 @@ package org.symbian.tools.tmw.internal.ui.project; import java.util.Collection; +import java.util.Collections; import java.util.HashMap; import java.util.HashSet; import java.util.Map; +import java.util.TreeMap; import org.eclipse.core.runtime.IConfigurationElement; import org.eclipse.core.runtime.Platform; @@ -34,6 +36,7 @@ public class ProjectTemplateManagerImpl implements IProjectTemplateManager { private Map emptyProjects; + private Map> runtimeTemplateParameters; private Map templates; public IProjectTemplate getDefaultTemplate(IMobileWebRuntime runtime) { @@ -60,6 +63,7 @@ } private Map readExtensions() { + runtimeTemplateParameters = new HashMap>(); emptyProjects = new HashMap(); final Map> map = new HashMap>(); final IConfigurationElement[] elements = Platform.getExtensionRegistry().getConfigurationElementsFor( @@ -76,12 +80,23 @@ } tmplts.add(template); } - } else if ("empty-project".equals(element.getName())) { + } else if ("runtime-template".equals(element.getName())) { final String runtimeId = element.getAttribute("runtime-id"); final String runtimeVersion = element.getAttribute("version"); final IMobileWebRuntime runtime = TMWCore.getRuntimesManager().getRuntime(runtimeId, runtimeVersion); if (runtime != null) { - emptyProjects.put(runtime, CompoundInstaller.combine(emptyProjects.get(runtime), elements)); + emptyProjects.put(runtime, + CompoundInstaller.combine(emptyProjects.get(runtime), element.getChildren())); + Map params = runtimeTemplateParameters.get(runtime); + if (params == null) { + params = new TreeMap(); + runtimeTemplateParameters.put(runtime, params); + } + for (IConfigurationElement el : element.getChildren()) { + if ("default-parameter-value".equals(el.getName())) { + params.put(el.getAttribute("name"), el.getAttribute("value")); + } + } } } } @@ -93,4 +108,15 @@ } return res; } + + public Map getDefaultTemplateParameterValues(IMobileWebRuntime runtime) { + if (runtimeTemplateParameters == null) { + readExtensions(); + } + Map params = runtimeTemplateParameters.get(runtime); + if (params == null) { + return Collections.emptyMap(); + } + return params; + } } diff -r aea4c83725d8 -r 0b02f3d6f52c 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 Fri Aug 13 16:28:00 2010 -0700 +++ b/org.symbian.tools.mtw.ui/src/org/symbian/tools/tmw/internal/ui/wizard/WizardContext.java Fri Aug 13 17:26:00 2010 -0700 @@ -243,6 +243,14 @@ private Map getTemplateVars() { Map vars = new TreeMap(); + if (runtime != null) { + vars.putAll(TMWCoreUI.getProjectTemplateManager().getDefaultTemplateParameterValues(runtime)); + } + final IProjectTemplate t = getTemplate(); + if (t != null) { + vars.putAll(t.getDefaultParameterValues()); + } + vars.put("widgetName", getWidgetName()); vars.put("widgetId", getWidgetId()); // vars.put("mainHtml", getHtmlFileName()); diff -r aea4c83725d8 -r 0b02f3d6f52c org.symbian.tools.mtw.ui/src/org/symbian/tools/tmw/ui/project/IProjectTemplate.java --- a/org.symbian.tools.mtw.ui/src/org/symbian/tools/tmw/ui/project/IProjectTemplate.java Fri Aug 13 16:28:00 2010 -0700 +++ b/org.symbian.tools.mtw.ui/src/org/symbian/tools/tmw/ui/project/IProjectTemplate.java Fri Aug 13 17:26:00 2010 -0700 @@ -18,6 +18,8 @@ */ package org.symbian.tools.tmw.ui.project; +import java.util.Map; + import org.eclipse.core.resources.IProject; import org.eclipse.core.runtime.IProgressMonitor; import org.eclipse.swt.graphics.Image; @@ -82,4 +84,9 @@ * Initializes project with template contents */ void init(IProject project, IProjectTemplateContext context, IProgressMonitor monitor); + + /** + * Returns default template parameter values + */ + Map getDefaultParameterValues(); } diff -r aea4c83725d8 -r 0b02f3d6f52c org.symbian.tools.mtw.ui/src/org/symbian/tools/tmw/ui/project/IProjectTemplateManager.java --- a/org.symbian.tools.mtw.ui/src/org/symbian/tools/tmw/ui/project/IProjectTemplateManager.java Fri Aug 13 16:28:00 2010 -0700 +++ b/org.symbian.tools.mtw.ui/src/org/symbian/tools/tmw/ui/project/IProjectTemplateManager.java Fri Aug 13 17:26:00 2010 -0700 @@ -18,10 +18,17 @@ */ package org.symbian.tools.tmw.ui.project; +import java.util.Map; + import org.symbian.tools.tmw.core.runtimes.IMobileWebRuntime; public interface IProjectTemplateManager { IProjectTemplate[] getProjectTemplates(IMobileWebRuntime runtime); IProjectTemplate getDefaultTemplate(IMobileWebRuntime runtime); ITemplateInstaller getEmptyProjectTemplate(IMobileWebRuntime runtime); + + /** + * Runtimes can provide default values for template parameters + */ + Map getDefaultTemplateParameterValues(IMobileWebRuntime runtime); } diff -r aea4c83725d8 -r 0b02f3d6f52c org.symbian.tools.wrttools/plugin.xml --- a/org.symbian.tools.wrttools/plugin.xml Fri Aug 13 16:28:00 2010 -0700 +++ b/org.symbian.tools.wrttools/plugin.xml Fri Aug 13 17:26:00 2010 -0700 @@ -851,7 +851,42 @@ + + + + + + + + + + + + + + + + + + diff -r aea4c83725d8 -r 0b02f3d6f52c org.symbian.tools.wrttools/projecttemplates/basic.zip Binary file org.symbian.tools.wrttools/projecttemplates/basic.zip has changed diff -r aea4c83725d8 -r 0b02f3d6f52c org.symbian.tools.wrttools/projecttemplates/flickr.zip Binary file org.symbian.tools.wrttools/projecttemplates/flickr.zip has changed