/******************************************************************************* * Copyright (c) 2007, 2012 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 *******************************************************************************/ package org.eclipse.cdt.ui.templateengine; import java.util.Arrays; import java.util.SortedSet; import java.util.TreeSet; import org.eclipse.core.runtime.CoreException; import org.eclipse.core.runtime.IConfigurationElement; import org.eclipse.core.runtime.IExecutableExtension; import org.eclipse.jface.viewers.Viewer; import org.eclipse.ui.INewWizard; import org.eclipse.ui.wizards.newresource.BasicNewProjectResourceWizard; import org.eclipse.cdt.core.templateengine.TemplateCore; public class TemplateClassWizard extends TemplatesChoiceWizard implements INewWizard, IExecutableExtension { public static final String WIZARD_ID = TemplateClassWizard.class.getName(); private IWizardDataPage[] pagesBeforeTemplatePages; private IWizardDataPage[] pagesAfterTemplatePages; private IWizardDataPage[] pagesAfterTemplateSelection; private ProjectSelectionPage projectSelectionPage; private IConfigurationElement configElement; public TemplateClassWizard() { super(); setWindowTitle(Messages.getString("TemplateClassWizard.0")); //$NON-NLS-1$ //TODO: Fix the imagedescriptor later. //setDefaultPageImageDescriptor(TemplateEnginePlugin.imageDescriptorFromPlugin(TemplateEnginePlugin.getDefault().getWizardIconPluginID(), TemplateEnginePlugin.getDefault().getWizardIconFile())); } @Override public String getListSelectionTitle() { return Messages.getString("TemplateClassWizard.1"); //$NON-NLS-1$ } @Override public String getListSelectionDescription() { return Messages.getString("TemplateClassWizard.2"); //$NON-NLS-1$ } @Override public String getListSelectionLabel() { return Messages.getString("TemplateClassWizard.3"); //$NON-NLS-1$ } @Override protected IWizardDataPage[] getPagesBeforeTemplatePages() { if (pagesBeforeTemplatePages == null) { projectSelectionPage = new ProjectSelectionPage(); projectSelectionPage.setTitle(Messages.getString("TemplateClassWizard.4")); //$NON-NLS-1$ projectSelectionPage.setDescription(Messages.getString("TemplateClassWizard.5")); //$NON-NLS-1$ projectSelectionPage.init(selection); pagesBeforeTemplatePages = new IWizardDataPage[] {projectSelectionPage}; } return pagesBeforeTemplatePages; } @Override protected IWizardDataPage[] getPagesAfterTemplatePages() { if (pagesAfterTemplatePages == null) { pagesAfterTemplatePages = new IWizardDataPage[] {}; } return pagesAfterTemplatePages; } @Override public Template[] getTemplates() { SortedSet<TemplateCore> templateList = new TreeSet<TemplateCore>(TemplateCore.TEMPLATE_ID_CASE_INSENSITIVE_COMPARATOR); templateList.addAll(Arrays.asList(TemplateEngineUI.getDefault().getTemplates())); return templateList.toArray(new Template[templateList.size()]); } @Override public void setInitializationData(IConfigurationElement config, String propertyName, Object data) throws CoreException { configElement = config; } @Override public boolean performFinish() { boolean retVal = super.performFinish(); BasicNewProjectResourceWizard.updatePerspective(configElement); return retVal; } @Override protected IWizardDataPage[] getPagesAfterTemplateSelection() { if (pagesAfterTemplateSelection == null) { pagesAfterTemplateSelection = new IWizardDataPage[] {}; } return pagesAfterTemplateSelection; } @Override public String getDescription(Object object) { if (object instanceof Template) { return ((Template)object).getDescription(); } return ""; //$NON-NLS-1$ } @Override public boolean showTemplatesInTreeView() { return false; } @Override public Object[] getChildren(Object parentElement) { return null; } @Override public Object getParent(Object element) { return null; } @Override public boolean hasChildren(Object element) { return false; } @Override public Object[] getElements(Object inputElement) { return getTemplates(); } @Override public void inputChanged(Viewer viewer, Object oldInput, Object newInput) { } }