/*******************************************************************************
* Copyright (c) 2007, 2009 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:
* Bala Torati (Symbian) - Initial API and implementation
*******************************************************************************/
package org.eclipse.cdt.ui.templateengine;
import java.util.ArrayList;
import java.util.List;
import org.eclipse.cdt.core.templateengine.TemplateEngine;
import org.eclipse.cdt.core.templateengine.TemplateInfo;
import org.eclipse.cdt.core.templateengine.TemplateInitializationException;
import org.eclipse.cdt.ui.CUIPlugin;
/**
* TemplateEngine is implemented as a Singleton. TemplateEngine is responsible for
* creating SharedDefaults and initializing the SharedDefaults. Template instances
* are obtained from TemplateEngine.
*
* @since 4.0
*/
public class TemplateEngineUI {
/**
* static reference to the Singleton TemplateEngine instance.
*/
private static final TemplateEngineUI TEMPLATE_ENGINE_UI = new TemplateEngineUI();
private TemplateEngineUI() {
}
public static TemplateEngineUI getDefault() {
return TEMPLATE_ENGINE_UI;
}
public Template[] getTemplates(String projectType, String toolChain, String usageFilter) {
TemplateInfo[] templateInfoArray = TemplateEngine.getDefault().getTemplateInfos(projectType, toolChain, usageFilter);
List<Template> templatesList = new ArrayList<Template>();
for (int i=0; i<templateInfoArray.length; i++) {
TemplateInfo info = templateInfoArray[i];
try {
templatesList.add(new Template(info));
} catch (TemplateInitializationException tie) {
CUIPlugin.log(tie);
}
}
return templatesList.toArray(new Template[templatesList.size()]);
}
public Template[] getTemplates(String projectType, String toolChain) {
return getTemplates(projectType, toolChain, null);
}
public Template[] getTemplates(String projectType) {
return getTemplates(projectType, null, null);
}
/**
* Returns all the templates, no filtering is done.
*/
public Template[] getTemplates() {
TemplateInfo[] templateInfoArray = TemplateEngine.getDefault().getTemplateInfos();
List<Template> templatesList = new ArrayList<Template>();
for (int i=0; i<templateInfoArray.length; i++) {
try {
templatesList.add(new Template(templateInfoArray[i]));
} catch (TemplateInitializationException tie) {
CUIPlugin.log(tie);
}
}
return templatesList.toArray(new Template[templatesList.size()]);
}
public Template getTemplateById(String templateId) {
Template[] templates = getTemplates();
for(int i=0; i<templates.length; i++) {
Template template = templates[i];
if (template.getTemplateId().equalsIgnoreCase(templateId)) {
return template;
}
}
return null;
}
}