diff --git a/build/org.eclipse.cdt.managedbuilder.core.tests/plugin.xml b/build/org.eclipse.cdt.managedbuilder.core.tests/plugin.xml
index 00647923140..9d362d9e054 100644
--- a/build/org.eclipse.cdt.managedbuilder.core.tests/plugin.xml
+++ b/build/org.eclipse.cdt.managedbuilder.core.tests/plugin.xml
@@ -6657,34 +6657,42 @@
diff --git a/build/org.eclipse.cdt.managedbuilder.gnu.ui/plugin.xml b/build/org.eclipse.cdt.managedbuilder.gnu.ui/plugin.xml
index 4f043bce899..3c5a596bef8 100644
--- a/build/org.eclipse.cdt.managedbuilder.gnu.ui/plugin.xml
+++ b/build/org.eclipse.cdt.managedbuilder.gnu.ui/plugin.xml
@@ -3733,35 +3733,48 @@
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/core/org.eclipse.cdt.core.tests/plugin.xml b/core/org.eclipse.cdt.core.tests/plugin.xml
index c26068255f2..ece93e44bc2 100644
--- a/core/org.eclipse.cdt.core.tests/plugin.xml
+++ b/core/org.eclipse.cdt.core.tests/plugin.xml
@@ -65,12 +65,14 @@
@@ -78,30 +80,49 @@
+
+
+
+
+
+
+
+
+
+
diff --git a/core/org.eclipse.cdt.core.tests/suite/org/eclipse/cdt/core/suite/AutomatedIntegrationSuite.java b/core/org.eclipse.cdt.core.tests/suite/org/eclipse/cdt/core/suite/AutomatedIntegrationSuite.java
index 2318458a06b..27a73e68878 100644
--- a/core/org.eclipse.cdt.core.tests/suite/org/eclipse/cdt/core/suite/AutomatedIntegrationSuite.java
+++ b/core/org.eclipse.cdt.core.tests/suite/org/eclipse/cdt/core/suite/AutomatedIntegrationSuite.java
@@ -33,6 +33,7 @@ import org.eclipse.cdt.core.parser.failedTests.ASTFailedTests;
import org.eclipse.cdt.core.parser.failedTests.FailedCompleteParseASTTest;
import org.eclipse.cdt.core.parser.failedTests.STLFailedTests;
import org.eclipse.cdt.core.parser.tests.ParserTestSuite;
+import org.eclipse.cdt.core.tests.templateengine.AllTemplateEngineTests;
import org.eclipse.cdt.internal.index.tests.IndexTests;
import org.eclipse.cdt.internal.pdom.tests.PDOMTests;
@@ -91,7 +92,7 @@ public class AutomatedIntegrationSuite extends TestSuite {
suite.addTestSuite(STLFailedTests.class);
suite.addTestSuite(FailedCompleteParseASTTest.class);
-// suite.addTest(AllTemplateEngineTests.suite());
+ suite.addTest(AllTemplateEngineTests.suite());
return suite;
}
diff --git a/core/org.eclipse.cdt.core.tests/templateengine/org/eclipse/cdt/core/tests/templateengine/TemplateEngineTestsHelper.java b/core/org.eclipse.cdt.core.tests/templateengine/org/eclipse/cdt/core/tests/templateengine/TemplateEngineTestsHelper.java
index a087fc5a36b..ba8efe59c0a 100644
--- a/core/org.eclipse.cdt.core.tests/templateengine/org/eclipse/cdt/core/tests/templateengine/TemplateEngineTestsHelper.java
+++ b/core/org.eclipse.cdt.core.tests/templateengine/org/eclipse/cdt/core/tests/templateengine/TemplateEngineTestsHelper.java
@@ -12,10 +12,12 @@ package org.eclipse.cdt.core.tests.templateengine;
import java.io.IOException;
import java.net.URL;
+import java.util.ArrayList;
import java.util.List;
import junit.framework.Assert;
+import org.eclipse.cdt.core.templateengine.TemplateCore;
import org.eclipse.cdt.core.templateengine.TemplateDescriptor;
import org.eclipse.cdt.core.templateengine.TemplateEngine;
import org.eclipse.cdt.core.testplugin.CTestPlugin;
@@ -61,6 +63,17 @@ public class TemplateEngineTestsHelper {
return url;
}
+ public static TemplateCore[] getTestTemplates() {
+ TemplateCore[] templates = TemplateEngine.getDefault().getTemplates();
+ List testTemplates = new ArrayList();
+ for (int i =0; i < templates.length; i++) {
+ if (templates[i].getTemplateType().equals("TestTemplate")) {
+ testTemplates.add(templates[i]);
+ }
+ }
+ return (TemplateCore[]) testTemplates.toArray(new TemplateCore[testTemplates.size()]);
+ }
+
public static int getChildCount(TemplateDescriptor templateDescriptor, String propertyGroupID){
List list = templateDescriptor.getPropertyGroupList();
for (int i = 0, l = list.size(); i < l; i++) {
diff --git a/core/org.eclipse.cdt.core.tests/templateengine/org/eclipse/cdt/core/tests/templateengine/TestTemplateCore.java b/core/org.eclipse.cdt.core.tests/templateengine/org/eclipse/cdt/core/tests/templateengine/TestTemplateCore.java
index fd3c19ed834..c63e24795f8 100644
--- a/core/org.eclipse.cdt.core.tests/templateengine/org/eclipse/cdt/core/tests/templateengine/TestTemplateCore.java
+++ b/core/org.eclipse.cdt.core.tests/templateengine/org/eclipse/cdt/core/tests/templateengine/TestTemplateCore.java
@@ -13,7 +13,6 @@ package org.eclipse.cdt.core.tests.templateengine;
import junit.framework.TestCase;
import org.eclipse.cdt.core.templateengine.TemplateCore;
-import org.eclipse.cdt.core.templateengine.TemplateEngine;
/**
* Test the functionality of Tempalte Class.
@@ -24,7 +23,7 @@ public class TestTemplateCore extends TestCase {
protected void setUp() throws Exception {
super.setUp();
- templates = TemplateEngine.getDefault().getTemplates();
+ templates = TemplateEngineTestsHelper.getTestTemplates();
}
/*
diff --git a/core/org.eclipse.cdt.core.tests/templateengine/org/eclipse/cdt/core/tests/templateengine/TestValueStore.java b/core/org.eclipse.cdt.core.tests/templateengine/org/eclipse/cdt/core/tests/templateengine/TestValueStore.java
index 744d91f29d9..8a2b3002ec2 100644
--- a/core/org.eclipse.cdt.core.tests/templateengine/org/eclipse/cdt/core/tests/templateengine/TestValueStore.java
+++ b/core/org.eclipse.cdt.core.tests/templateengine/org/eclipse/cdt/core/tests/templateengine/TestValueStore.java
@@ -17,7 +17,6 @@ import junit.framework.TestCase;
import org.eclipse.cdt.core.templateengine.TemplateCore;
import org.eclipse.cdt.core.templateengine.TemplateDescriptor;
-import org.eclipse.cdt.core.templateengine.TemplateEngine;
/**
@@ -49,7 +48,7 @@ public class TestValueStore extends TestCase {
*
*/
public void testValueStoreNotNull(){
- TemplateCore[] templates = TemplateEngine.getDefault().getTemplates();
+ TemplateCore[] templates = TemplateEngineTestsHelper.getTestTemplates();
for (int i=0; i
+
diff --git a/core/org.eclipse.cdt.core/schema/templateAssociations.exsd b/core/org.eclipse.cdt.core/schema/templateAssociations.exsd
new file mode 100644
index 00000000000..4130eedb490
--- /dev/null
+++ b/core/org.eclipse.cdt.core/schema/templateAssociations.exsd
@@ -0,0 +1,129 @@
+
+
+
+
+
+
+
+
+ This extension point facilitates adding new toolchains generated from a different plugin to already defined template without modifying template definition.
+
+
+
+
+
+
+ Extension point added to Template Engine plugin. Any plugin, which intends to contribute XML templates to Temaplate Engine has to extend this extension point, and add template element.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Id for the extension in the extender plugin.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ This extension point was added in CDT 4.0
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Copyright (c) 2007 Symbian Software Limited and others.
+All rights reserved. This program and the accompanying materials
+are made available under the terms of the Eclipse Public License v1.0
+which accompanies this distribution, and is available at
+http://www.eclipse.org/legal/epl-v10.html
+
+Contributors:
+Symbian - Initial API and implementation
+
+
+
+
diff --git a/core/org.eclipse.cdt.core/schema/templates.exsd b/core/org.eclipse.cdt.core/schema/templates.exsd
index eee1c106792..b2a62c32360 100644
--- a/core/org.eclipse.cdt.core/schema/templates.exsd
+++ b/core/org.eclipse.cdt.core/schema/templates.exsd
@@ -108,6 +108,13 @@ This is an optional attribute.
+
+
+
+
+
+
+
diff --git a/core/org.eclipse.cdt.core/templateengine/org/eclipse/cdt/core/templateengine/TemplateCore.java b/core/org.eclipse.cdt.core/templateengine/org/eclipse/cdt/core/templateengine/TemplateCore.java
index 5e28f4ddc9b..9de6efd5fce 100644
--- a/core/org.eclipse.cdt.core/templateengine/org/eclipse/cdt/core/templateengine/TemplateCore.java
+++ b/core/org.eclipse.cdt.core/templateengine/org/eclipse/cdt/core/templateengine/TemplateCore.java
@@ -43,6 +43,7 @@ public class TemplateCore {
private static final String DESCRIPTION = "description"; //$NON-NLS-1$
private static final String LABEL = "label"; //$NON-NLS-1$
private static final String ID = "id"; //$NON-NLS-1$
+ private static final String TYPE = "type"; //$NON-NLS-1$
private static Map/**/ templateCache = new HashMap/**/();
@@ -60,6 +61,7 @@ public class TemplateCore {
private String description;
private String label;
private String templateId;
+ private String templateType;
private boolean fireDirtyEvents;
/**
@@ -91,11 +93,9 @@ public class TemplateCore {
*/
public Set/**/ getAllMissingMacrosInProcesses() {
Set/**/ set = new TreeSet/**/(allMacrosInProcesses);
- if (set != null) {
- for (Iterator iter = set.iterator(); iter.hasNext();) {
- if (valueStore.get(iter.next()) != null) {
- iter.remove();
- }
+ for (Iterator iter = set.iterator(); iter.hasNext();) {
+ if (valueStore.get(iter.next()) != null) {
+ iter.remove();
}
}
return set;
@@ -154,6 +154,16 @@ public class TemplateCore {
return templateId;
}
+ /**
+ * @return String, which contains the id of the template
+ */
+ public String getTemplateType() {
+ if (templateType == null) {
+ templateType = templateDescriptor.getRootElement().getAttribute(TYPE).trim();
+ }
+ return templateType;
+ }
+
/**
* @return String, which contains the Label
*/
diff --git a/core/org.eclipse.cdt.core/templateengine/org/eclipse/cdt/core/templateengine/TemplateEngine.java b/core/org.eclipse.cdt.core/templateengine/org/eclipse/cdt/core/templateengine/TemplateEngine.java
index dea101fe822..a02609646b7 100644
--- a/core/org.eclipse.cdt.core/templateengine/org/eclipse/cdt/core/templateengine/TemplateEngine.java
+++ b/core/org.eclipse.cdt.core/templateengine/org/eclipse/cdt/core/templateengine/TemplateEngine.java
@@ -13,6 +13,7 @@ package org.eclipse.cdt.core.templateengine;
import java.io.IOException;
import java.net.URL;
import java.util.ArrayList;
+import java.util.Arrays;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Iterator;
@@ -40,11 +41,17 @@ import org.w3c.dom.NodeList;
public class TemplateEngine {
public static String TEMPLATES_EXTENSION_ID = CCorePlugin.PLUGIN_ID + ".templates"; //$NON-NLS-1$
+ public static String TEMPLATE_ASSOCIATIONS_EXTENSION_ID = CCorePlugin.PLUGIN_ID + ".templateAssociations"; //$NON-NLS-1$
/**
* static reference to the Singleton TemplateEngine instance.
*/
- private static TemplateEngine TEMPLATE_ENGINE = new TemplateEngine();
+ private static TemplateEngine TEMPLATE_ENGINE;
+
+ static {
+ TEMPLATE_ENGINE = new TemplateEngine();
+ TEMPLATE_ENGINE.initializeTemplateInfoMap();
+ }
/**
* This is a Map .
@@ -56,7 +63,6 @@ public class TemplateEngine {
*/
private TemplateEngine() {
templateInfoMap = new HashMap/*>*/();
- initializeTemplateInfoMap();
}
/**
@@ -190,6 +196,7 @@ public class TemplateEngine {
* extension point "templates"
*/
private void initializeTemplateInfoMap() {
+ String templateId = null;
String location = null;
String pluginId = null;
String projectType = null;
@@ -205,6 +212,7 @@ public class TemplateEngine {
pluginId = extension.getNamespaceIdentifier(); // Plugin-id of the extending plugin.
for(int j=0; j*/)templateInfoMap.get(projectType)).add(templateInfo);
}
}
+ // Check for tool Chains added to the templates outside template info definition
+ addToolChainsToTemplates();
}
+ private void addToolChainsToTemplates() {
+ String templateId = null;
+ TemplateCore[] templates = getTemplates();
+
+ IExtension[] extensions = Platform.getExtensionRegistry().getExtensionPoint(TEMPLATE_ASSOCIATIONS_EXTENSION_ID).getExtensions();
+ for(int i=0; i*/ getAllMacros() {
- Set/**/ set = null;
+ Set/**/ set = new HashSet/**/();
for (Iterator i = conditionalProcessGroupList.iterator(); i.hasNext();) {
Set/**/ subSet = ((ConditionalProcessGroup)i.next()).getAllMacros();
if (subSet != null) {
- if (set == null) {
- set = new HashSet/**/();
- }
set.addAll(subSet);
}
}
diff --git a/core/org.eclipse.cdt.ui/templateengine/org/eclipse/cdt/ui/templateengine/pages/UIPage.java b/core/org.eclipse.cdt.ui/templateengine/org/eclipse/cdt/ui/templateengine/pages/UIPage.java
index 4bdc6540f12..0082d7d87a9 100644
--- a/core/org.eclipse.cdt.ui/templateengine/org/eclipse/cdt/ui/templateengine/pages/UIPage.java
+++ b/core/org.eclipse.cdt.ui/templateengine/org/eclipse/cdt/ui/templateengine/pages/UIPage.java
@@ -97,6 +97,7 @@ public abstract class UIPage extends DialogPage {
title = name;
uiElement = element;
+ uiElement.setValues(valueStore);
this.valueStore = valueStore;
//TODO: Check the from which plugin the PLUGIN_ID comes from i.e. from CCorePlugin or CUIPlugin
pageId = CUIPlugin.getPluginId() + "." + //$NON-NLS-1$
@@ -131,7 +132,7 @@ public abstract class UIPage extends DialogPage {
* @return HashMap. The data contained in the widgets on this page.
*/
public Map/**/ getPageData() {
- return uiComposite.getPageData();
+ return uiElement.getValues();
}
/**
diff --git a/core/org.eclipse.cdt.ui/templateengine/org/eclipse/cdt/ui/templateengine/pages/UIWizardPage.java b/core/org.eclipse.cdt.ui/templateengine/org/eclipse/cdt/ui/templateengine/pages/UIWizardPage.java
index 6dd79be032e..e9254a6d9d5 100644
--- a/core/org.eclipse.cdt.ui/templateengine/org/eclipse/cdt/ui/templateengine/pages/UIWizardPage.java
+++ b/core/org.eclipse.cdt.ui/templateengine/org/eclipse/cdt/ui/templateengine/pages/UIWizardPage.java
@@ -54,7 +54,7 @@ public class UIWizardPage extends UIPage implements IWizardPage, PatternEventLis
/**
* Indicates whether this page is complete.
*/
- private boolean isPageComplete = true;
+ private boolean isPageComplete;
/**
* That page that was shown right before this page became visible. null if none.
@@ -63,8 +63,6 @@ public class UIWizardPage extends UIPage implements IWizardPage, PatternEventLis
private IWizardPage nextPage = null;
- private Map valueStore;
-
/**
* Title of the page, Page Name and UIElement group are the parameters.
*
@@ -79,7 +77,7 @@ public class UIWizardPage extends UIPage implements IWizardPage, PatternEventLis
super(title, uiElement, valueStore);
name = pageName;
validInvalid = new HashMap/*