mirror of
https://github.com/eclipse-cdt/cdt
synced 2025-08-21 15:23:59 +02:00
Add real categories for templates. Organize selection in tree.
This commit is contained in:
parent
f13bdf3b33
commit
6fcb52fe97
11 changed files with 720 additions and 277 deletions
|
@ -6741,45 +6741,81 @@
|
||||||
<extension
|
<extension
|
||||||
point="org.eclipse.cdt.core.templates">
|
point="org.eclipse.cdt.core.templates">
|
||||||
<template
|
<template
|
||||||
id="org.eclipse.cdt.managedbuilder.core.tests.templates.AppendToMBSStringOptionValue"
|
|
||||||
filterPattern=".*AppendToMBSStringOptionValue"
|
filterPattern=".*AppendToMBSStringOptionValue"
|
||||||
|
id="org.eclipse.cdt.managedbuilder.core.tests.templates.AppendToMBSStringOptionValue"
|
||||||
location="testdata/AppendToMBSStringOptionValue.xml"
|
location="testdata/AppendToMBSStringOptionValue.xml"
|
||||||
projectType="org.eclipse.cdt.managedbuilder.core.tests.projectType"/>
|
projectType="org.eclipse.cdt.managedbuilder.core.tests.projectType">
|
||||||
|
<parentCategory
|
||||||
|
id="org.eclipse.cdt.managedbuilder.core.tests.mbsTests">
|
||||||
|
</parentCategory>
|
||||||
|
</template>
|
||||||
<template
|
<template
|
||||||
id="org.eclipse.cdt.managedbuilder.core.tests.templates.AppendToMBSStringListOptionValues"
|
|
||||||
filterPattern=".*AppendToMBSStringListOptionValues"
|
filterPattern=".*AppendToMBSStringListOptionValues"
|
||||||
|
id="org.eclipse.cdt.managedbuilder.core.tests.templates.AppendToMBSStringListOptionValues"
|
||||||
location="testdata/AppendToMBSStringListOptionValues.xml"
|
location="testdata/AppendToMBSStringListOptionValues.xml"
|
||||||
projectType="org.eclipse.cdt.managedbuilder.core.tests.projectType"/>
|
projectType="org.eclipse.cdt.managedbuilder.core.tests.projectType">
|
||||||
|
<parentCategory
|
||||||
|
id="org.eclipse.cdt.managedbuilder.core.tests.mbsTests">
|
||||||
|
</parentCategory>
|
||||||
|
</template>
|
||||||
<template
|
<template
|
||||||
id="org.eclipse.cdt.managedbuilder.core.tests.templates.CreateIncludeFolder"
|
|
||||||
filterPattern=".*CreateIncludeFolder"
|
filterPattern=".*CreateIncludeFolder"
|
||||||
|
id="org.eclipse.cdt.managedbuilder.core.tests.templates.CreateIncludeFolder"
|
||||||
location="testdata/CreateIncludeFolder.xml"
|
location="testdata/CreateIncludeFolder.xml"
|
||||||
projectType="org.eclipse.cdt.managedbuilder.core.tests.projectType"/>
|
projectType="org.eclipse.cdt.managedbuilder.core.tests.projectType">
|
||||||
|
<parentCategory
|
||||||
|
id="org.eclipse.cdt.managedbuilder.core.tests.mbsTests">
|
||||||
|
</parentCategory>
|
||||||
|
</template>
|
||||||
<template
|
<template
|
||||||
id="org.eclipse.cdt.managedbuilder.core.tests.templates.ExcludeResources"
|
|
||||||
filterPattern=".*ExcludeResources"
|
filterPattern=".*ExcludeResources"
|
||||||
|
id="org.eclipse.cdt.managedbuilder.core.tests.templates.ExcludeResources"
|
||||||
location="testdata/ExcludeResources.xml"
|
location="testdata/ExcludeResources.xml"
|
||||||
projectType="org.eclipse.cdt.managedbuilder.core.tests.projectType"/>
|
projectType="org.eclipse.cdt.managedbuilder.core.tests.projectType">
|
||||||
|
<parentCategory
|
||||||
|
id="org.eclipse.cdt.managedbuilder.core.tests.mbsTests">
|
||||||
|
</parentCategory>
|
||||||
|
</template>
|
||||||
<template
|
<template
|
||||||
id="org.eclipse.cdt.managedbuilder.core.tests.templates.NewManagedProject"
|
|
||||||
filterPattern=".*NewManagedProject"
|
filterPattern=".*NewManagedProject"
|
||||||
|
id="org.eclipse.cdt.managedbuilder.core.tests.templates.NewManagedProject"
|
||||||
location="testdata/NewManagedProject.xml"
|
location="testdata/NewManagedProject.xml"
|
||||||
projectType="org.eclipse.cdt.managedbuilder.core.tests.projectType"/>
|
projectType="org.eclipse.cdt.managedbuilder.core.tests.projectType">
|
||||||
|
<parentCategory
|
||||||
|
id="org.eclipse.cdt.managedbuilder.core.tests.mbsTests">
|
||||||
|
</parentCategory>
|
||||||
|
</template>
|
||||||
<template
|
<template
|
||||||
id="org.eclipse.cdt.managedbuilder.core.tests.templates.SetMBSBooleanOptionValue"
|
|
||||||
filterPattern=".*SetMBSBooleanOptionValue"
|
filterPattern=".*SetMBSBooleanOptionValue"
|
||||||
|
id="org.eclipse.cdt.managedbuilder.core.tests.templates.SetMBSBooleanOptionValue"
|
||||||
location="testdata/SetMBSBooleanOptionValue.xml"
|
location="testdata/SetMBSBooleanOptionValue.xml"
|
||||||
projectType="org.eclipse.cdt.managedbuilder.core.tests.projectType"/>
|
projectType="org.eclipse.cdt.managedbuilder.core.tests.projectType">
|
||||||
|
<parentCategory
|
||||||
|
id="org.eclipse.cdt.managedbuilder.core.tests.mbsTests">
|
||||||
|
</parentCategory>
|
||||||
|
</template>
|
||||||
<template
|
<template
|
||||||
id="org.eclipse.cdt.managedbuilder.core.tests.templates.SetMBSStringOptionValue"
|
|
||||||
filterPattern=".*SetMBSStringOptionValue"
|
filterPattern=".*SetMBSStringOptionValue"
|
||||||
|
id="org.eclipse.cdt.managedbuilder.core.tests.templates.SetMBSStringOptionValue"
|
||||||
location="testdata/SetMBSStringOptionValue.xml"
|
location="testdata/SetMBSStringOptionValue.xml"
|
||||||
projectType="org.eclipse.cdt.managedbuilder.core.tests.projectType"/>
|
projectType="org.eclipse.cdt.managedbuilder.core.tests.projectType">
|
||||||
|
<parentCategory
|
||||||
|
id="org.eclipse.cdt.managedbuilder.core.tests.mbsTests">
|
||||||
|
</parentCategory>
|
||||||
|
</template>
|
||||||
<template
|
<template
|
||||||
id="org.eclipse.cdt.managedbuilder.core.tests.templates.SetMBSStringListOptionValues"
|
|
||||||
filterPattern=".*SetMBSStringListOptionValues"
|
filterPattern=".*SetMBSStringListOptionValues"
|
||||||
|
id="org.eclipse.cdt.managedbuilder.core.tests.templates.SetMBSStringListOptionValues"
|
||||||
location="testdata/SetMBSStringListOptionValues.xml"
|
location="testdata/SetMBSStringListOptionValues.xml"
|
||||||
projectType="org.eclipse.cdt.managedbuilder.core.tests.projectType"/>
|
projectType="org.eclipse.cdt.managedbuilder.core.tests.projectType">
|
||||||
|
<parentCategory
|
||||||
|
id="org.eclipse.cdt.managedbuilder.core.tests.mbsTests">
|
||||||
|
</parentCategory>
|
||||||
|
</template>
|
||||||
|
<category
|
||||||
|
id="org.eclipse.cdt.managedbuilder.core.tests.mbsTests"
|
||||||
|
label="MBS Tests">
|
||||||
|
</category>
|
||||||
</extension>
|
</extension>
|
||||||
|
|
||||||
<!-- 4.0 tests -->
|
<!-- 4.0 tests -->
|
||||||
|
|
|
@ -10,8 +10,8 @@
|
||||||
###############################################################################
|
###############################################################################
|
||||||
|
|
||||||
#Template Default Values
|
#Template Default Values
|
||||||
MakefileHelloWorld.CCtemplate.label=Hello World C++ Project
|
MakefileHelloWorld.CCtemplate.label=Hello World C++ Makefile Project
|
||||||
MakefileHelloWorld.CCtemplate.description=A Hello World C++ Project
|
MakefileHelloWorld.CCtemplate.description=A Hello World C++ Makefile Project
|
||||||
MakefileHelloWorld.basics.label=Basic Settings
|
MakefileHelloWorld.basics.label=Basic Settings
|
||||||
MakefileHelloWorld.basics.description=Basic properties of a project
|
MakefileHelloWorld.basics.description=Basic properties of a project
|
||||||
MakefileHelloWorld.author.label=Author
|
MakefileHelloWorld.author.label=Author
|
||||||
|
|
|
@ -82,6 +82,9 @@
|
||||||
isCategory="true"
|
isCategory="true"
|
||||||
location="resources/templateengine/AddFile.xml"
|
location="resources/templateengine/AddFile.xml"
|
||||||
projectType="org.eclipse.cdt.core.tests.projectType">
|
projectType="org.eclipse.cdt.core.tests.projectType">
|
||||||
|
<parentCategory
|
||||||
|
id="org.eclipse.cdt.core.tests.coreTests">
|
||||||
|
</parentCategory>
|
||||||
</template>
|
</template>
|
||||||
<template
|
<template
|
||||||
id="org.eclipse.cdt.core.tests.templates.AddFiles"
|
id="org.eclipse.cdt.core.tests.templates.AddFiles"
|
||||||
|
@ -90,38 +93,68 @@
|
||||||
projectType="org.eclipse.cdt.core.tests.projectType">
|
projectType="org.eclipse.cdt.core.tests.projectType">
|
||||||
<toolChain id="org.eclipse.cdt.core.tests.toolChain1"/>
|
<toolChain id="org.eclipse.cdt.core.tests.toolChain1"/>
|
||||||
<toolChain id="org.eclipse.cdt.core.tests.toolChain2"/>
|
<toolChain id="org.eclipse.cdt.core.tests.toolChain2"/>
|
||||||
|
<parentCategory
|
||||||
|
id="org.eclipse.cdt.core.tests.coreTests">
|
||||||
|
</parentCategory>
|
||||||
</template>
|
</template>
|
||||||
<template
|
<template
|
||||||
id="org.eclipse.cdt.core.tests.templates.AddLink"
|
id="org.eclipse.cdt.core.tests.templates.AddLink"
|
||||||
filterPattern=".*AddLink"
|
filterPattern=".*AddLink"
|
||||||
location="resources/templateengine/AddLink.xml"
|
location="resources/templateengine/AddLink.xml"
|
||||||
projectType="org.eclipse.cdt.core.tests.projectType">
|
projectType="org.eclipse.cdt.core.tests.projectType">
|
||||||
|
<parentCategory
|
||||||
|
id="org.eclipse.cdt.core.tests.coreTests">
|
||||||
|
</parentCategory>
|
||||||
</template>
|
</template>
|
||||||
<template
|
<template
|
||||||
id="org.eclipse.cdt.core.tests.templates.Append"
|
|
||||||
filterPattern=".*Append"
|
filterPattern=".*Append"
|
||||||
|
id="org.eclipse.cdt.core.tests.templates.Append"
|
||||||
location="resources/templateengine/Append.xml"
|
location="resources/templateengine/Append.xml"
|
||||||
projectType="org.eclipse.cdt.core.tests.projectType"/>
|
projectType="org.eclipse.cdt.core.tests.projectType">
|
||||||
|
<parentCategory
|
||||||
|
id="org.eclipse.cdt.core.tests.coreTests">
|
||||||
|
</parentCategory>
|
||||||
|
</template>
|
||||||
<template
|
<template
|
||||||
id="org.eclipse.cdt.core.tests.templates.AppendCreate"
|
|
||||||
filterPattern=".*AppendCreate"
|
filterPattern=".*AppendCreate"
|
||||||
|
id="org.eclipse.cdt.core.tests.templates.AppendCreate"
|
||||||
location="resources/templateengine/AppendCreate.xml"
|
location="resources/templateengine/AppendCreate.xml"
|
||||||
projectType="org.eclipse.cdt.core.tests.projectType"/>
|
projectType="org.eclipse.cdt.core.tests.projectType">
|
||||||
|
<parentCategory
|
||||||
|
id="org.eclipse.cdt.core.tests.coreTests">
|
||||||
|
</parentCategory>
|
||||||
|
</template>
|
||||||
<template
|
<template
|
||||||
id="org.eclipse.cdt.core.tests.templates.Copy"
|
|
||||||
filterPattern=".*Copy"
|
filterPattern=".*Copy"
|
||||||
|
id="org.eclipse.cdt.core.tests.templates.Copy"
|
||||||
location="resources/templateengine/Copy.xml"
|
location="resources/templateengine/Copy.xml"
|
||||||
projectType="org.eclipse.cdt.core.tests.projectType"/>
|
projectType="org.eclipse.cdt.core.tests.projectType">
|
||||||
|
<parentCategory
|
||||||
|
id="org.eclipse.cdt.core.tests.coreTests">
|
||||||
|
</parentCategory>
|
||||||
|
</template>
|
||||||
<template
|
<template
|
||||||
id="org.eclipse.cdt.core.tests.templates.CreateResourceIdentifier"
|
|
||||||
filterPattern=".*CreateResourceIdentifier"
|
filterPattern=".*CreateResourceIdentifier"
|
||||||
|
id="org.eclipse.cdt.core.tests.templates.CreateResourceIdentifier"
|
||||||
location="resources/templateengine/CreateResourceIdentifier.xml"
|
location="resources/templateengine/CreateResourceIdentifier.xml"
|
||||||
projectType="org.eclipse.cdt.core.tests.projectType"/>
|
projectType="org.eclipse.cdt.core.tests.projectType">
|
||||||
|
<parentCategory
|
||||||
|
id="org.eclipse.cdt.core.tests.coreTests">
|
||||||
|
</parentCategory>
|
||||||
|
</template>
|
||||||
<template
|
<template
|
||||||
id="org.eclipse.cdt.core.tests.templates.CreateSourceFolder"
|
|
||||||
filterPattern=".*CreateSourceFolder"
|
filterPattern=".*CreateSourceFolder"
|
||||||
|
id="org.eclipse.cdt.core.tests.templates.CreateSourceFolder"
|
||||||
location="resources/templateengine/CreateSourceFolder.xml"
|
location="resources/templateengine/CreateSourceFolder.xml"
|
||||||
projectType="org.eclipse.cdt.core.tests.projectType"/>
|
projectType="org.eclipse.cdt.core.tests.projectType">
|
||||||
|
<parentCategory
|
||||||
|
id="org.eclipse.cdt.core.tests.coreTests">
|
||||||
|
</parentCategory>
|
||||||
|
</template>
|
||||||
|
<category
|
||||||
|
id="org.eclipse.cdt.core.tests.coreTests"
|
||||||
|
label="Core Tests">
|
||||||
|
</category>
|
||||||
</extension>
|
</extension>
|
||||||
<extension
|
<extension
|
||||||
point="org.eclipse.cdt.core.templateAssociations">
|
point="org.eclipse.cdt.core.templateAssociations">
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
<?xml version='1.0' encoding='UTF-8'?>
|
<?xml version='1.0' encoding='UTF-8'?>
|
||||||
<!-- Schema file written by PDE -->
|
<!-- Schema file written by PDE -->
|
||||||
<schema targetNamespace="org.eclipse.cdt.core">
|
<schema targetNamespace="org.eclipse.cdt.core" xmlns="http://www.w3.org/2001/XMLSchema">
|
||||||
<annotation>
|
<annotation>
|
||||||
<appInfo>
|
<appInfo>
|
||||||
<meta.schema plugin="org.eclipse.cdt.core" id="templates" name="Template Extension point"/>
|
<meta.schema plugin="org.eclipse.cdt.core" id="templates" name="Template Extension point"/>
|
||||||
|
@ -12,14 +12,17 @@
|
||||||
|
|
||||||
<element name="extension">
|
<element name="extension">
|
||||||
<annotation>
|
<annotation>
|
||||||
|
<appInfo>
|
||||||
|
<meta.element />
|
||||||
|
</appInfo>
|
||||||
<documentation>
|
<documentation>
|
||||||
Extension point added to Template Engine plugin. Any plugin, which intends to contribute XML templates to the Template Engine must extend this extension point, and add the template element.
|
Extension point added to Template Engine plugin. Any plugin, which intends to contribute XML templates to the Template Engine must extend this extension point, and add the template element.
|
||||||
|
|
||||||
</documentation>
|
</documentation>
|
||||||
</annotation>
|
</annotation>
|
||||||
<complexType>
|
<complexType>
|
||||||
<sequence>
|
<sequence>
|
||||||
<element ref="template" minOccurs="1" maxOccurs="unbounded"/>
|
<element ref="template" minOccurs="1" maxOccurs="unbounded"/>
|
||||||
|
<element ref="category" minOccurs="0" maxOccurs="unbounded"/>
|
||||||
</sequence>
|
</sequence>
|
||||||
<attribute name="point" type="string" use="required">
|
<attribute name="point" type="string" use="required">
|
||||||
<annotation>
|
<annotation>
|
||||||
|
@ -57,6 +60,7 @@
|
||||||
<complexType>
|
<complexType>
|
||||||
<sequence>
|
<sequence>
|
||||||
<element ref="toolChain" minOccurs="0" maxOccurs="unbounded"/>
|
<element ref="toolChain" minOccurs="0" maxOccurs="unbounded"/>
|
||||||
|
<element ref="parentCategory" minOccurs="0" maxOccurs="unbounded"/>
|
||||||
</sequence>
|
</sequence>
|
||||||
<attribute name="id" type="string" use="required">
|
<attribute name="id" type="string" use="required">
|
||||||
<annotation>
|
<annotation>
|
||||||
|
@ -75,7 +79,7 @@
|
||||||
</appInfo>
|
</appInfo>
|
||||||
</annotation>
|
</annotation>
|
||||||
</attribute>
|
</attribute>
|
||||||
<attribute name="projectType" type="string" use="required">
|
<attribute name="projectType" type="string">
|
||||||
<annotation>
|
<annotation>
|
||||||
<documentation>
|
<documentation>
|
||||||
This attribute is a project type id referring to the cdt project type that the template will be associated with. Project types are contributed to the org.eclipse.cdt.managedbuilder.core.buildDefinitions extension-point.
|
This attribute is a project type id referring to the cdt project type that the template will be associated with. Project types are contributed to the org.eclipse.cdt.managedbuilder.core.buildDefinitions extension-point.
|
||||||
|
@ -86,6 +90,7 @@ This attribute is mandatory. CDT pre-defines the following values of the build a
|
||||||
<li>"org.eclipse.cdt.build.core.buildArtefactType.sharedLib" - to represent shared library
|
<li>"org.eclipse.cdt.build.core.buildArtefactType.sharedLib" - to represent shared library
|
||||||
<li>ISVs can define their own custom build artifact values by contributing to the org.eclipse.cdt.managedbuilder.core.buildProperties extension point.
|
<li>ISVs can define their own custom build artifact values by contributing to the org.eclipse.cdt.managedbuilder.core.buildProperties extension point.
|
||||||
</ul>
|
</ul>
|
||||||
|
It's no longer manditory since templates are no longer organized by project type. Template catogories replace that functionality.
|
||||||
</documentation>
|
</documentation>
|
||||||
</annotation>
|
</annotation>
|
||||||
</attribute>
|
</attribute>
|
||||||
|
@ -133,6 +138,54 @@ This attribute is mandatory. CDT pre-defines the following values of the build a
|
||||||
</complexType>
|
</complexType>
|
||||||
</element>
|
</element>
|
||||||
|
|
||||||
|
<element name="category">
|
||||||
|
<annotation>
|
||||||
|
<documentation>
|
||||||
|
Used to arrange templates in a hierarchy in the UI.
|
||||||
|
</documentation>
|
||||||
|
</annotation>
|
||||||
|
<complexType>
|
||||||
|
<sequence>
|
||||||
|
<element ref="parentCategory" minOccurs="0" maxOccurs="unbounded"/>
|
||||||
|
</sequence>
|
||||||
|
<attribute name="id" type="string" use="required">
|
||||||
|
<annotation>
|
||||||
|
<documentation>
|
||||||
|
|
||||||
|
</documentation>
|
||||||
|
</annotation>
|
||||||
|
</attribute>
|
||||||
|
<attribute name="label" type="string" use="required">
|
||||||
|
<annotation>
|
||||||
|
<documentation>
|
||||||
|
|
||||||
|
</documentation>
|
||||||
|
<appInfo>
|
||||||
|
<meta.attribute translatable="true"/>
|
||||||
|
</appInfo>
|
||||||
|
</annotation>
|
||||||
|
</attribute>
|
||||||
|
</complexType>
|
||||||
|
</element>
|
||||||
|
|
||||||
|
<element name="parentCategory">
|
||||||
|
<annotation>
|
||||||
|
<documentation>
|
||||||
|
id of parent category.
|
||||||
|
</documentation>
|
||||||
|
</annotation>
|
||||||
|
<complexType>
|
||||||
|
<attribute name="id" type="string" use="required">
|
||||||
|
<annotation>
|
||||||
|
<documentation>
|
||||||
|
|
||||||
|
</documentation>
|
||||||
|
</annotation>
|
||||||
|
</attribute>
|
||||||
|
</complexType>
|
||||||
|
</element>
|
||||||
|
|
||||||
|
|
||||||
<annotation>
|
<annotation>
|
||||||
<appInfo>
|
<appInfo>
|
||||||
<meta.section type="since"/>
|
<meta.section type="since"/>
|
||||||
|
@ -164,15 +217,6 @@ For more details on how to define your own templates, please check examples prov
|
||||||
</documentation>
|
</documentation>
|
||||||
</annotation>
|
</annotation>
|
||||||
|
|
||||||
<annotation>
|
|
||||||
<appInfo>
|
|
||||||
<meta.section type="apiInfo"/>
|
|
||||||
</appInfo>
|
|
||||||
<documentation>
|
|
||||||
|
|
||||||
</documentation>
|
|
||||||
</annotation>
|
|
||||||
|
|
||||||
<annotation>
|
<annotation>
|
||||||
<appInfo>
|
<appInfo>
|
||||||
<meta.section type="implementation"/>
|
<meta.section type="implementation"/>
|
||||||
|
|
|
@ -0,0 +1,44 @@
|
||||||
|
/*******************************************************************************
|
||||||
|
* Copyright (c) 2012 Wind River Systems 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:
|
||||||
|
* Doug Schaefer - initial API and implementation
|
||||||
|
*******************************************************************************/
|
||||||
|
|
||||||
|
package org.eclipse.cdt.core.templateengine;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author Doug Schaefer
|
||||||
|
* @since 5.4
|
||||||
|
*/
|
||||||
|
public class TemplateCategory {
|
||||||
|
|
||||||
|
private final String id;
|
||||||
|
private String label;
|
||||||
|
private List<String> parentCategoryIds;
|
||||||
|
|
||||||
|
public TemplateCategory(String id, String label, List<String> parentCategoryIds) {
|
||||||
|
this.id = id;
|
||||||
|
this.label = label;
|
||||||
|
this.parentCategoryIds = parentCategoryIds;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getId() {
|
||||||
|
return id;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getLabel() {
|
||||||
|
return label;
|
||||||
|
}
|
||||||
|
|
||||||
|
public List<String> getParentCategoryIds() {
|
||||||
|
return parentCategoryIds;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -53,13 +53,15 @@ public class TemplateEngine {
|
||||||
/**
|
/**
|
||||||
* This is a Map <WizardID, TemplateInfo>.
|
* This is a Map <WizardID, TemplateInfo>.
|
||||||
*/
|
*/
|
||||||
private Map<String, List<TemplateInfo>> templateInfoMap;
|
private Map<String, List<TemplateInfo>> templateInfoMap = new LinkedHashMap<String, List<TemplateInfo>>();
|
||||||
|
|
||||||
|
Map<String, TemplateCategory> categoryMap = new HashMap<String, TemplateCategory>();
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* TemplateEngine constructor, create and initialise SharedDefaults.
|
* TemplateEngine constructor, create and initialise SharedDefaults.
|
||||||
*/
|
*/
|
||||||
private TemplateEngine() {
|
TemplateEngine() {
|
||||||
templateInfoMap = new LinkedHashMap<String, List<TemplateInfo>>();
|
|
||||||
initializeTemplateInfoMap();
|
initializeTemplateInfoMap();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -190,7 +192,7 @@ public class TemplateEngine {
|
||||||
*/
|
*/
|
||||||
public static TemplateEngine getDefault() {
|
public static TemplateEngine getDefault() {
|
||||||
if(TEMPLATE_ENGINE==null) {
|
if(TEMPLATE_ENGINE==null) {
|
||||||
TEMPLATE_ENGINE = new TemplateEngine();
|
TEMPLATE_ENGINE = new TemplateEngine2();
|
||||||
}
|
}
|
||||||
return TEMPLATE_ENGINE;
|
return TEMPLATE_ENGINE;
|
||||||
}
|
}
|
||||||
|
@ -201,26 +203,23 @@ public class TemplateEngine {
|
||||||
* extension point "templates"
|
* extension point "templates"
|
||||||
*/
|
*/
|
||||||
private void initializeTemplateInfoMap() {
|
private void initializeTemplateInfoMap() {
|
||||||
String templateId = null;
|
|
||||||
String location = null;
|
|
||||||
String pluginId = null;
|
|
||||||
String projectType = null;
|
|
||||||
String filterPattern = null;
|
|
||||||
boolean isCategory = false;
|
|
||||||
|
|
||||||
IExtension[] extensions = Platform.getExtensionRegistry().getExtensionPoint(TEMPLATES_EXTENSION_ID).getExtensions();
|
IExtension[] extensions = Platform.getExtensionRegistry().getExtensionPoint(TEMPLATES_EXTENSION_ID).getExtensions();
|
||||||
for(int i=0; i<extensions.length; i++) {
|
for(int i=0; i<extensions.length; i++) {
|
||||||
IExtension extension = extensions[i];
|
IExtension extension = extensions[i];
|
||||||
IConfigurationElement[] configElements = extension.getConfigurationElements();
|
IConfigurationElement[] configElements = extension.getConfigurationElements();
|
||||||
pluginId = extension.getNamespaceIdentifier(); // Plug-in id of the extending plug-in.
|
String pluginId = extension.getNamespaceIdentifier(); // Plug-in id of the extending plug-in.
|
||||||
for(int j=0; j<configElements.length; j++) {
|
for(int j=0; j<configElements.length; j++) {
|
||||||
Object /*IPagesAfterTemplateSelectionProvider*/ extraPagesProvider = null;
|
|
||||||
IConfigurationElement config = configElements[j];
|
IConfigurationElement config = configElements[j];
|
||||||
templateId = config.getAttribute(TemplateEngineHelper.ID);
|
String configName = config.getName();
|
||||||
location = config.getAttribute(TemplateEngineHelper.LOCATION);
|
if (configName.equals("template")) { //$NON-NLS-1$
|
||||||
projectType = config.getAttribute(TemplateEngineHelper.PROJECT_TYPE);
|
Object /*IPagesAfterTemplateSelectionProvider*/ extraPagesProvider = null;
|
||||||
filterPattern = config.getAttribute(TemplateEngineHelper.FILTER_PATTERN);
|
String templateId = config.getAttribute(TemplateEngineHelper.ID);
|
||||||
isCategory = Boolean.valueOf(config.getAttribute(TemplateEngineHelper.IS_CATEGORY)).booleanValue();
|
String location = config.getAttribute(TemplateEngineHelper.LOCATION);
|
||||||
|
String projectType = config.getAttribute(TemplateEngineHelper.PROJECT_TYPE);
|
||||||
|
if (projectType == null || projectType.isEmpty())
|
||||||
|
projectType = TemplateEngine2.NEW_TEMPLATE;
|
||||||
|
String filterPattern = config.getAttribute(TemplateEngineHelper.FILTER_PATTERN);
|
||||||
|
boolean isCategory = Boolean.valueOf(config.getAttribute(TemplateEngineHelper.IS_CATEGORY)).booleanValue();
|
||||||
String providerAttribute = config.getAttribute(TemplateEngineHelper.EXTRA_PAGES_PROVIDER);
|
String providerAttribute = config.getAttribute(TemplateEngineHelper.EXTRA_PAGES_PROVIDER);
|
||||||
if (providerAttribute != null) {
|
if (providerAttribute != null) {
|
||||||
try {
|
try {
|
||||||
|
@ -232,17 +231,34 @@ public class TemplateEngine {
|
||||||
|
|
||||||
IConfigurationElement[] toolChainConfigs = config.getChildren(TemplateEngineHelper.TOOL_CHAIN);
|
IConfigurationElement[] toolChainConfigs = config.getChildren(TemplateEngineHelper.TOOL_CHAIN);
|
||||||
Set<String> toolChainIdSet = new LinkedHashSet<String>();
|
Set<String> toolChainIdSet = new LinkedHashSet<String>();
|
||||||
for (int k=0; k < toolChainConfigs.length; k++) {
|
for (IConfigurationElement toolChainConfig : toolChainConfigs)
|
||||||
toolChainIdSet.add(toolChainConfigs[k].getAttribute(TemplateEngineHelper.ID));
|
toolChainIdSet.add(toolChainConfig.getAttribute(TemplateEngineHelper.ID));
|
||||||
}
|
|
||||||
|
|
||||||
TemplateInfo templateInfo = new TemplateInfo(templateId, projectType, filterPattern, location,
|
IConfigurationElement[] parentCategoryConfigs = config.getChildren("parentCategory"); //$NON-NLS-1$
|
||||||
|
List<String> parentCategoryIds = new ArrayList<String>();
|
||||||
|
for (IConfigurationElement parentCategoryConfig : parentCategoryConfigs)
|
||||||
|
parentCategoryIds.add(parentCategoryConfig.getAttribute("id")); //$NON-NLS-1$
|
||||||
|
|
||||||
|
TemplateInfo templateInfo = new TemplateInfo2(templateId, projectType, filterPattern, location,
|
||||||
pluginId, toolChainIdSet,
|
pluginId, toolChainIdSet,
|
||||||
extraPagesProvider, isCategory);
|
extraPagesProvider, isCategory, parentCategoryIds);
|
||||||
if (!templateInfoMap.containsKey(projectType)) {
|
if (!templateInfoMap.containsKey(projectType)) {
|
||||||
templateInfoMap.put(projectType, new ArrayList<TemplateInfo>());
|
templateInfoMap.put(projectType, new ArrayList<TemplateInfo>());
|
||||||
}
|
}
|
||||||
(templateInfoMap.get(projectType)).add(templateInfo);
|
(templateInfoMap.get(projectType)).add(templateInfo);
|
||||||
|
} else if (configName.equals("category")) { //$NON-NLS-1$
|
||||||
|
String id = config.getAttribute("id"); //$NON-NLS-1$
|
||||||
|
if (!id.contains(".")) //$NON-NLS-1$
|
||||||
|
id = pluginId + "." + id; //$NON-NLS-1$
|
||||||
|
String label = config.getAttribute("label"); //$NON-NLS-1$
|
||||||
|
|
||||||
|
IConfigurationElement[] parentCategoryConfigs = config.getChildren("parentCategory"); //$NON-NLS-1$
|
||||||
|
List<String> parentCategoryIds = new ArrayList<String>();
|
||||||
|
for (IConfigurationElement parentCategoryConfig : parentCategoryConfigs)
|
||||||
|
parentCategoryIds.add(parentCategoryConfig.getAttribute("id")); //$NON-NLS-1$
|
||||||
|
|
||||||
|
categoryMap.put(id, new TemplateCategory(id, label, parentCategoryIds));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// Check for tool Chains added to the templates outside template info definition
|
// Check for tool Chains added to the templates outside template info definition
|
||||||
|
|
|
@ -0,0 +1,33 @@
|
||||||
|
/*******************************************************************************
|
||||||
|
* Copyright (c) 2012 Wind River Systems 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:
|
||||||
|
* Doug Schaefer - initial API and implementation
|
||||||
|
*******************************************************************************/
|
||||||
|
|
||||||
|
package org.eclipse.cdt.core.templateengine;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author Doug Schaefer
|
||||||
|
* @since 5.4
|
||||||
|
*/
|
||||||
|
public class TemplateEngine2 extends TemplateEngine {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Project type for new templates. Default if not set in extension.
|
||||||
|
*/
|
||||||
|
public static final String NEW_TEMPLATE = "newTemplate"; //$NON-NLS-1$
|
||||||
|
|
||||||
|
public static TemplateEngine2 getDefault() {
|
||||||
|
return (TemplateEngine2)TemplateEngine.getDefault();
|
||||||
|
}
|
||||||
|
|
||||||
|
public TemplateCategory getCategory(String id) {
|
||||||
|
return categoryMap.get(id);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,39 @@
|
||||||
|
/*******************************************************************************
|
||||||
|
* Copyright (c) 2012 Wind River Systems 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:
|
||||||
|
* Doug Schaefer - initial API and implementation
|
||||||
|
*******************************************************************************/
|
||||||
|
|
||||||
|
package org.eclipse.cdt.core.templateengine;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Set;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Template info extended to include new stuff for new new project wizard UI.
|
||||||
|
*
|
||||||
|
* @author Doug Schaefer
|
||||||
|
* @since 5.4
|
||||||
|
*/
|
||||||
|
public class TemplateInfo2 extends TemplateInfo {
|
||||||
|
|
||||||
|
private List<String> parentCategoryIds;
|
||||||
|
|
||||||
|
public TemplateInfo2(String templateId, String projectTypeId, String filterPattern,
|
||||||
|
String templatePath, String pluginId, Set<String> toolChainIdSet,
|
||||||
|
Object extraPagesProvider, boolean isCategory, List<String> parentCategoryIds) {
|
||||||
|
super(templateId, projectTypeId, filterPattern, templatePath, pluginId, toolChainIdSet,
|
||||||
|
extraPagesProvider, isCategory);
|
||||||
|
this.parentCategoryIds = parentCategoryIds;
|
||||||
|
}
|
||||||
|
|
||||||
|
public List<String> getParentCategoryIds() {
|
||||||
|
return parentCategoryIds;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -113,12 +113,22 @@
|
||||||
location="resources/projectTemplates/testExtraPages/template.xml"
|
location="resources/projectTemplates/testExtraPages/template.xml"
|
||||||
pagesAfterTemplateSelectionProvider="org.eclipse.cdt.ui.tests.templateengine.TestExtraPagesProvider"
|
pagesAfterTemplateSelectionProvider="org.eclipse.cdt.ui.tests.templateengine.TestExtraPagesProvider"
|
||||||
projectType="org.eclipse.cdt.build.core.buildArtefactType.exe">
|
projectType="org.eclipse.cdt.build.core.buildArtefactType.exe">
|
||||||
|
<parentCategory
|
||||||
|
id="org.eclipse.cdt.ui.tests.uiTests">
|
||||||
|
</parentCategory>
|
||||||
</template>
|
</template>
|
||||||
<template
|
<template
|
||||||
id="org.eclipse.cdt.ui.tests.testWidgets"
|
id="org.eclipse.cdt.ui.tests.testWidgets"
|
||||||
location="resources/projectTemplates/testWidgets/template.xml"
|
location="resources/projectTemplates/testWidgets/template.xml"
|
||||||
projectType="org.eclipse.cdt.build.core.buildArtefactType.exe">
|
projectType="org.eclipse.cdt.build.core.buildArtefactType.exe">
|
||||||
|
<parentCategory
|
||||||
|
id="org.eclipse.cdt.ui.tests.uiTests">
|
||||||
|
</parentCategory>
|
||||||
</template>
|
</template>
|
||||||
|
<category
|
||||||
|
id="org.eclipse.cdt.ui.tests.uiTests"
|
||||||
|
label="UI Tests">
|
||||||
|
</category>
|
||||||
</extension>
|
</extension>
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -630,4 +630,4 @@ RefreshExclusionContributor.name = Resources
|
||||||
extension-point.name = Refresh Exclusion Contributor
|
extension-point.name = Refresh Exclusion Contributor
|
||||||
|
|
||||||
# New New Project Wizard
|
# New New Project Wizard
|
||||||
newProjectWizard.name = C/C++ Project (new)
|
newProjectWizard.name = C/C++ Project (prototype)
|
||||||
|
|
|
@ -11,22 +11,77 @@
|
||||||
|
|
||||||
package org.eclipse.cdt.ui.wizards;
|
package org.eclipse.cdt.ui.wizards;
|
||||||
|
|
||||||
|
import java.util.LinkedList;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
import org.eclipse.core.runtime.IStatus;
|
||||||
|
import org.eclipse.core.runtime.Status;
|
||||||
|
import org.eclipse.jface.viewers.ILabelProvider;
|
||||||
|
import org.eclipse.jface.viewers.ILabelProviderListener;
|
||||||
|
import org.eclipse.jface.viewers.ITreeContentProvider;
|
||||||
|
import org.eclipse.jface.viewers.TreeViewer;
|
||||||
|
import org.eclipse.jface.viewers.Viewer;
|
||||||
import org.eclipse.jface.wizard.WizardPage;
|
import org.eclipse.jface.wizard.WizardPage;
|
||||||
import org.eclipse.swt.SWT;
|
import org.eclipse.swt.SWT;
|
||||||
|
import org.eclipse.swt.graphics.Image;
|
||||||
import org.eclipse.swt.layout.GridData;
|
import org.eclipse.swt.layout.GridData;
|
||||||
import org.eclipse.swt.layout.GridLayout;
|
import org.eclipse.swt.layout.GridLayout;
|
||||||
import org.eclipse.swt.widgets.Composite;
|
import org.eclipse.swt.widgets.Composite;
|
||||||
import org.eclipse.swt.widgets.List;
|
|
||||||
|
|
||||||
|
import org.eclipse.cdt.core.templateengine.TemplateCategory;
|
||||||
|
import org.eclipse.cdt.core.templateengine.TemplateEngine2;
|
||||||
|
import org.eclipse.cdt.core.templateengine.TemplateInfo2;
|
||||||
|
import org.eclipse.cdt.ui.CUIPlugin;
|
||||||
import org.eclipse.cdt.ui.templateengine.Template;
|
import org.eclipse.cdt.ui.templateengine.Template;
|
||||||
import org.eclipse.cdt.ui.templateengine.TemplateEngineUI;
|
import org.eclipse.cdt.ui.templateengine.TemplateEngineUI;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author Dad
|
* @author Doug Schaefer
|
||||||
* @since 5.4
|
* @since 5.4
|
||||||
*/
|
*/
|
||||||
public class TemplateSelectionPage extends WizardPage {
|
public class TemplateSelectionPage extends WizardPage {
|
||||||
|
|
||||||
|
private static class Node {
|
||||||
|
private final Object object;
|
||||||
|
private final Node parent;
|
||||||
|
private final List<Node> children = new LinkedList<Node>();
|
||||||
|
|
||||||
|
public Node(Node parent, Object object) {
|
||||||
|
this.parent = parent;
|
||||||
|
this.object = object;
|
||||||
|
|
||||||
|
if (parent != null)
|
||||||
|
parent.addChild(this);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void addChild(Node child) {
|
||||||
|
children.add(child);
|
||||||
|
}
|
||||||
|
|
||||||
|
public Node getChild(Object child) {
|
||||||
|
for (Node childNode : children)
|
||||||
|
if (childNode.getObject().equals(child))
|
||||||
|
return childNode;
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Object getObject() {
|
||||||
|
return object;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Node getParent() {
|
||||||
|
return parent;
|
||||||
|
}
|
||||||
|
|
||||||
|
public List<Node> getChildren() {
|
||||||
|
return children;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private final Node tree = new Node(null, null);
|
||||||
|
private final TemplateEngine2 coreEngine = TemplateEngine2.getDefault();
|
||||||
|
private final TemplateEngineUI uiEngine = TemplateEngineUI.getDefault();
|
||||||
|
|
||||||
public TemplateSelectionPage() {
|
public TemplateSelectionPage() {
|
||||||
super("templateSelection"); //$NON-NLS-1$
|
super("templateSelection"); //$NON-NLS-1$
|
||||||
}
|
}
|
||||||
|
@ -36,14 +91,83 @@ public class TemplateSelectionPage extends WizardPage {
|
||||||
Composite comp = new Composite(parent, SWT.NONE);
|
Composite comp = new Composite(parent, SWT.NONE);
|
||||||
comp.setLayout(new GridLayout(1, false));
|
comp.setLayout(new GridLayout(1, false));
|
||||||
|
|
||||||
List templateList = new List(comp, SWT.BORDER);
|
TreeViewer templateTree = new TreeViewer(comp);
|
||||||
templateList.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
|
templateTree.getTree().setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
|
||||||
|
templateTree.setContentProvider(new ITreeContentProvider() {
|
||||||
Template[] templates = TemplateEngineUI.getDefault().getTemplates();
|
@Override
|
||||||
for (Template template : templates) {
|
public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
|
||||||
templateList.add(template.getLabel());
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void dispose() {
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean hasChildren(Object element) {
|
||||||
|
if (element instanceof Node)
|
||||||
|
return !((Node)element).getChildren().isEmpty();
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Object getParent(Object element) {
|
||||||
|
if (element instanceof Node)
|
||||||
|
return ((Node)element).getParent();
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Object[] getElements(Object inputElement) {
|
||||||
|
if (inputElement instanceof Node)
|
||||||
|
return ((Node)inputElement).getChildren().toArray();
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Object[] getChildren(Object parentElement) {
|
||||||
|
if (parentElement instanceof Node)
|
||||||
|
return ((Node)parentElement).getChildren().toArray();
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
templateTree.setLabelProvider(new ILabelProvider() {
|
||||||
|
@Override
|
||||||
|
public void removeListener(ILabelProviderListener listener) {
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean isLabelProperty(Object element, String property) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void dispose() {
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void addListener(ILabelProviderListener listener) {
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String getText(Object element) {
|
||||||
|
if (element instanceof Node) {
|
||||||
|
Object object = ((Node)element).getObject();
|
||||||
|
if (object instanceof TemplateCategory)
|
||||||
|
return ((TemplateCategory)object).getLabel();
|
||||||
|
else if (object instanceof Template)
|
||||||
|
return ((Template)object).getLabel();
|
||||||
|
}
|
||||||
|
return element.toString();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Image getImage(Object element) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
buildTree();
|
||||||
|
templateTree.setInput(tree);
|
||||||
|
|
||||||
setControl(comp);
|
setControl(comp);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -52,4 +176,68 @@ public class TemplateSelectionPage extends WizardPage {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void buildTree() {
|
||||||
|
Template[] templates = uiEngine.getTemplates();
|
||||||
|
for (Template template : templates) {
|
||||||
|
List<String> parentCategoryIds = ((TemplateInfo2)template.getTemplateInfo()).getParentCategoryIds();
|
||||||
|
boolean inTree = false;
|
||||||
|
if (!parentCategoryIds.isEmpty()) {
|
||||||
|
for (String parentCategoryId : parentCategoryIds) {
|
||||||
|
List<Node> parents = getParents(parentCategoryId);
|
||||||
|
if (!parents.isEmpty()) {
|
||||||
|
for (Node parent : parents)
|
||||||
|
new Node(parent, template);
|
||||||
|
inTree = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!inTree) {
|
||||||
|
// no parents
|
||||||
|
new Node(tree, template);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private List<Node> getParents(String parentCategoryId) {
|
||||||
|
List<Node> nodes = new LinkedList<Node>();
|
||||||
|
|
||||||
|
TemplateCategory category = coreEngine.getCategory(parentCategoryId);
|
||||||
|
if (category == null) {
|
||||||
|
// undefined, log it
|
||||||
|
CUIPlugin.log(new Status(IStatus.ERROR, CUIPlugin.PLUGIN_ID, "Undefined parent category " + parentCategoryId)); //$NON-NLS-1$
|
||||||
|
return nodes;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Hook me up to my parents
|
||||||
|
List<String> parentCategoryIds = category.getParentCategoryIds();
|
||||||
|
boolean inTree = false;
|
||||||
|
if (!parentCategoryIds.isEmpty()) {
|
||||||
|
for (String myParentId : parentCategoryIds) {
|
||||||
|
List<Node> parents = getParents(myParentId);
|
||||||
|
if (!parents.isEmpty()) {
|
||||||
|
for (Node parent : parents) {
|
||||||
|
Node node = parent.getChild(category);
|
||||||
|
if (node == null)
|
||||||
|
nodes.add(new Node(parent, category));
|
||||||
|
else
|
||||||
|
nodes.add(node);
|
||||||
|
}
|
||||||
|
inTree = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!inTree) {
|
||||||
|
// parents not found, I'm an orphan
|
||||||
|
Node node = tree.getChild(category);
|
||||||
|
if (node == null)
|
||||||
|
nodes.add(new Node(tree, category));
|
||||||
|
else
|
||||||
|
nodes.add(node);
|
||||||
|
}
|
||||||
|
|
||||||
|
return nodes;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Reference in a new issue