diff --git a/core/org.eclipse.cdt.ui/plugin.properties b/core/org.eclipse.cdt.ui/plugin.properties index a0361934ba4..b1c9591dfa4 100644 --- a/core/org.eclipse.cdt.ui/plugin.properties +++ b/core/org.eclipse.cdt.ui/plugin.properties @@ -628,3 +628,6 @@ transfer.EditorBehavior.description = Preference related to how the editor proce RefreshExclusionContributor.name = Resources extension-point.name = Refresh Exclusion Contributor + +# New New Project Wizard +newProjectWizard.name = C/C++ Project (new) diff --git a/core/org.eclipse.cdt.ui/plugin.xml b/core/org.eclipse.cdt.ui/plugin.xml index 87137875200..213506932b9 100644 --- a/core/org.eclipse.cdt.ui/plugin.xml +++ b/core/org.eclipse.cdt.ui/plugin.xml @@ -454,6 +454,17 @@ %Cproject.desc + + diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/ui/wizards/Messages.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/ui/wizards/Messages.java new file mode 100644 index 00000000000..37a94c7a97a --- /dev/null +++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/ui/wizards/Messages.java @@ -0,0 +1,31 @@ +/******************************************************************************* + * 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.ui.wizards; + +import org.eclipse.osgi.util.NLS; + +class Messages extends NLS { + private static final String BUNDLE_NAME = "org.eclipse.cdt.ui.wizards.messages"; //$NON-NLS-1$ + public static String NewCDTProjectWizard_mainPageDesc; + public static String NewCDTProjectWizard_mainPageTitle; + public static String NewCDTProjectWizard_refPageDesc; + public static String NewCDTProjectWizard_refPageTitle; + public static String NewCDTProjectWizard_templatePageDesc; + public static String NewCDTProjectWizard_templatePageTitle; + public static String NewCDTProjectWizard_windowTitle; + static { + // initialize resource bundle + NLS.initializeMessages(BUNDLE_NAME, Messages.class); + } + + private Messages() { + } +} diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/ui/wizards/NewCDTProjectWizard.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/ui/wizards/NewCDTProjectWizard.java new file mode 100644 index 00000000000..eb0336db322 --- /dev/null +++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/ui/wizards/NewCDTProjectWizard.java @@ -0,0 +1,84 @@ +package org.eclipse.cdt.ui.wizards; + +import org.eclipse.core.resources.ResourcesPlugin; +import org.eclipse.jface.dialogs.Dialog; +import org.eclipse.jface.viewers.IStructuredSelection; +import org.eclipse.jface.wizard.Wizard; +import org.eclipse.swt.widgets.Composite; +import org.eclipse.ui.INewWizard; +import org.eclipse.ui.IWorkbench; +import org.eclipse.ui.dialogs.WizardNewProjectCreationPage; +import org.eclipse.ui.dialogs.WizardNewProjectReferencePage; + +/** + * This is the new CDT project wizard. + * + * Without subclassing, it is in it's most generic form. + * + * Subclasses can filter or select the languages and add template filters. + * + * @author Doug Schaefer + * @since 5.4 + */ +public class NewCDTProjectWizard extends Wizard implements INewWizard { + + private IStructuredSelection selection; + private WizardNewProjectCreationPage mainPage; + private TemplateSelectionPage templatePage; + private WizardNewProjectReferencePage referencePage; + + @Override + public void init(IWorkbench workbench, IStructuredSelection selection) { + this.selection = selection; + setNeedsProgressMonitor(true); + setWindowTitle(Messages.NewCDTProjectWizard_windowTitle); + } + + @Override + public boolean performFinish() { + return true; + } + + @Override + public void addPages() { + super.addPages(); + + mainPage = new WizardNewProjectCreationPage("basicNewProjectPage") { //$NON-NLS-1$ + @Override + public void createControl(Composite parent) { + super.createControl(parent); + createWorkingSetGroup( + (Composite) getControl(), + selection, + new String[] { "org.eclipse.ui.resourceWorkingSetPage", //$NON-NLS-1$ + "org.eclipse.cdt.ui.CElementWorkingSetPage" }); //$NON-NLS-1$ + Dialog.applyDialogFont(getControl()); + } + }; + mainPage.setTitle(Messages.NewCDTProjectWizard_mainPageTitle); + mainPage.setDescription(Messages.NewCDTProjectWizard_mainPageDesc); + addPage(mainPage); + + templatePage = new TemplateSelectionPage(); + templatePage.setTitle(Messages.NewCDTProjectWizard_templatePageTitle); + templatePage.setDescription(Messages.NewCDTProjectWizard_templatePageDesc); + addPage(templatePage); + + // only add page if there are already projects in the workspace + if (ResourcesPlugin.getWorkspace().getRoot().getProjects().length > 0) { + referencePage = new WizardNewProjectReferencePage( + "basicReferenceProjectPage");//$NON-NLS-1$ + referencePage.setTitle(Messages.NewCDTProjectWizard_refPageTitle); + referencePage + .setDescription(Messages.NewCDTProjectWizard_refPageDesc); + this.addPage(referencePage); + } + } + + @Override + public boolean canFinish() { + // TODO make sure we have everything in place first. + return false; + } + +} diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/ui/wizards/TemplateSelectionPage.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/ui/wizards/TemplateSelectionPage.java new file mode 100644 index 00000000000..7ca68f75895 --- /dev/null +++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/ui/wizards/TemplateSelectionPage.java @@ -0,0 +1,55 @@ +/******************************************************************************* + * 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.ui.wizards; + +import org.eclipse.jface.wizard.WizardPage; +import org.eclipse.swt.SWT; +import org.eclipse.swt.layout.GridData; +import org.eclipse.swt.layout.GridLayout; +import org.eclipse.swt.widgets.Composite; +import org.eclipse.swt.widgets.List; + +import org.eclipse.cdt.ui.templateengine.Template; +import org.eclipse.cdt.ui.templateengine.TemplateEngineUI; + +/** + * @author Dad + * @since 5.4 + */ +public class TemplateSelectionPage extends WizardPage { + + public TemplateSelectionPage() { + super("templateSelection"); //$NON-NLS-1$ + } + + @Override + public void createControl(Composite parent) { + Composite comp = new Composite(parent, SWT.NONE); + comp.setLayout(new GridLayout(1, false)); + + List templateList = new List(comp, SWT.BORDER); + templateList.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true)); + + Template[] templates = TemplateEngineUI.getDefault().getTemplates(); + for (Template template : templates) { + templateList.add(template.getLabel()); + } + + setControl(comp); + } + + @Override + public boolean isPageComplete() { + return true; + } + +} diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/ui/wizards/messages.properties b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/ui/wizards/messages.properties new file mode 100644 index 00000000000..e44a79ce2d9 --- /dev/null +++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/ui/wizards/messages.properties @@ -0,0 +1,17 @@ +################################################################################# +# 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 +################################################################################# +NewCDTProjectWizard_mainPageDesc=Create a new C/C++ Project +NewCDTProjectWizard_mainPageTitle=Project +NewCDTProjectWizard_refPageDesc=Select referenced projects +NewCDTProjectWizard_refPageTitle=Project References +NewCDTProjectWizard_templatePageDesc=Select a project template for the new project +NewCDTProjectWizard_templatePageTitle=Project Template +NewCDTProjectWizard_windowTitle=New C/C++ Project