mirror of
https://github.com/eclipse-cdt/cdt
synced 2025-06-07 17:56:01 +02:00
Bug 293079 - Allow new C/C++ project wizard extension
This commit is contained in:
parent
daef4a8c6f
commit
7400462cd0
6 changed files with 131 additions and 15 deletions
|
@ -11,12 +11,12 @@
|
|||
package org.eclipse.cdt.managedbuilder.ui.wizards;
|
||||
|
||||
import org.eclipse.cdt.internal.ui.CPluginImages;
|
||||
import org.eclipse.cdt.internal.ui.wizards.ICDTCommonProjectWizard;
|
||||
import org.eclipse.cdt.managedbuilder.core.IInputType;
|
||||
import org.eclipse.cdt.managedbuilder.core.ITool;
|
||||
import org.eclipse.cdt.managedbuilder.core.IToolChain;
|
||||
import org.eclipse.cdt.managedbuilder.core.ManagedBuildManager;
|
||||
import org.eclipse.cdt.managedbuilder.ui.properties.ManagedBuilderUIImages;
|
||||
import org.eclipse.cdt.ui.wizards.CDTCommonProjectWizard;
|
||||
import org.eclipse.cdt.ui.wizards.CNewWizard;
|
||||
import org.eclipse.cdt.ui.wizards.IWizardItemsListListener;
|
||||
import org.eclipse.jface.wizard.IWizard;
|
||||
|
@ -70,11 +70,11 @@ public abstract class AbstractCWizard extends CNewWizard {
|
|||
protected boolean isLanguageCompatible(IToolChain tc, IWizard w) {
|
||||
if (w == null)
|
||||
return true;
|
||||
if (!(w instanceof CDTCommonProjectWizard))
|
||||
if (!(w instanceof ICDTCommonProjectWizard))
|
||||
return true;
|
||||
|
||||
ITool[] tools = tc.getTools();
|
||||
CDTCommonProjectWizard wz = (CDTCommonProjectWizard)w;
|
||||
ICDTCommonProjectWizard wz = (ICDTCommonProjectWizard)w;
|
||||
String[] langIDs = wz.getLanguageIDs();
|
||||
String[] ctypeIDs = wz.getContentTypeIDs();
|
||||
String[] exts = wz.getExtensions();
|
||||
|
|
|
@ -13,13 +13,13 @@ package org.eclipse.cdt.managedbuilder.ui.wizards;
|
|||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
|
||||
import org.eclipse.cdt.internal.ui.wizards.ICDTCommonProjectWizard;
|
||||
import org.eclipse.cdt.managedbuilder.core.IProjectType;
|
||||
import org.eclipse.cdt.managedbuilder.core.IToolChain;
|
||||
import org.eclipse.cdt.managedbuilder.core.ManagedBuildManager;
|
||||
import org.eclipse.cdt.managedbuilder.ui.properties.ManagedBuilderUIImages;
|
||||
import org.eclipse.cdt.ui.newui.CDTPrefUtil;
|
||||
import org.eclipse.cdt.ui.newui.UIMessages;
|
||||
import org.eclipse.cdt.ui.wizards.CDTCommonProjectWizard;
|
||||
import org.eclipse.core.resources.IProject;
|
||||
import org.eclipse.jface.viewers.CheckStateChangedEvent;
|
||||
import org.eclipse.jface.viewers.CheckboxTableViewer;
|
||||
|
@ -309,8 +309,8 @@ public class CDTConfigWizardPage extends WizardPage {
|
|||
* Edit properties
|
||||
*/
|
||||
private void advancedDialog() {
|
||||
if (getWizard() instanceof CDTCommonProjectWizard) {
|
||||
CDTCommonProjectWizard nmWizard = (CDTCommonProjectWizard)getWizard();
|
||||
if (getWizard() instanceof ICDTCommonProjectWizard) {
|
||||
ICDTCommonProjectWizard nmWizard = (ICDTCommonProjectWizard)getWizard();
|
||||
IProject newProject = nmWizard.getProject(true, false);
|
||||
if (newProject != null) {
|
||||
boolean oldManage = CDTPrefUtil.getBool(CDTPrefUtil.KEY_NOMNG);
|
||||
|
|
|
@ -29,6 +29,7 @@ import org.eclipse.cdt.core.settings.model.ICProjectDescription;
|
|||
import org.eclipse.cdt.core.settings.model.ICProjectDescriptionManager;
|
||||
import org.eclipse.cdt.core.settings.model.extension.CConfigurationData;
|
||||
import org.eclipse.cdt.core.templateengine.process.ProcessFailureException;
|
||||
import org.eclipse.cdt.internal.ui.wizards.ICDTCommonProjectWizard;
|
||||
import org.eclipse.cdt.managedbuilder.buildproperties.IBuildProperty;
|
||||
import org.eclipse.cdt.managedbuilder.buildproperties.IBuildPropertyValue;
|
||||
import org.eclipse.cdt.managedbuilder.core.BuildException;
|
||||
|
@ -48,7 +49,6 @@ import org.eclipse.cdt.ui.templateengine.Template;
|
|||
import org.eclipse.cdt.ui.templateengine.TemplateEngineUI;
|
||||
import org.eclipse.cdt.ui.templateengine.TemplateEngineUIUtil;
|
||||
import org.eclipse.cdt.ui.templateengine.pages.UIWizardPage;
|
||||
import org.eclipse.cdt.ui.wizards.CDTCommonProjectWizard;
|
||||
import org.eclipse.cdt.ui.wizards.CDTMainWizardPage;
|
||||
import org.eclipse.cdt.ui.wizards.CWizardHandler;
|
||||
import org.eclipse.cdt.ui.wizards.EntryDescriptor;
|
||||
|
@ -166,8 +166,8 @@ public class MBSWizardHandler extends CWizardHandler {
|
|||
path.length > 1 && (!path[0].equals(ManagedBuildWizard.OTHERS_LABEL))){
|
||||
templateId = path[path.length - 1];
|
||||
Template templates[] = null;
|
||||
if(wizard instanceof CDTCommonProjectWizard) {
|
||||
CDTCommonProjectWizard wz = (CDTCommonProjectWizard)wizard;
|
||||
if(wizard instanceof ICDTCommonProjectWizard) {
|
||||
ICDTCommonProjectWizard wz = (ICDTCommonProjectWizard)wizard;
|
||||
String[] langIDs = wz.getLanguageIDs();
|
||||
if(langIDs.length > 0) {
|
||||
List<Template> lstTemplates = new ArrayList<Template>();
|
||||
|
@ -421,10 +421,10 @@ public class MBSWizardHandler extends CWizardHandler {
|
|||
}
|
||||
|
||||
private void loadCustomPages() {
|
||||
if (! (getWizard() instanceof CDTCommonProjectWizard))
|
||||
if (! (getWizard() instanceof ICDTCommonProjectWizard))
|
||||
return; // not probable
|
||||
|
||||
CDTCommonProjectWizard wz = (CDTCommonProjectWizard)getWizard();
|
||||
ICDTCommonProjectWizard wz = (ICDTCommonProjectWizard)getWizard();
|
||||
|
||||
if (customPages == null) {
|
||||
MBSCustomPageManager.init();
|
||||
|
@ -447,7 +447,7 @@ public class MBSWizardHandler extends CWizardHandler {
|
|||
setCustomPagesFilter(wz);
|
||||
}
|
||||
|
||||
private void setCustomPagesFilter(CDTCommonProjectWizard wz) {
|
||||
private void setCustomPagesFilter(ICDTCommonProjectWizard wz) {
|
||||
String[] natures = wz.getNatures();
|
||||
if (natures == null || natures.length == 0)
|
||||
MBSCustomPageManager.addPageProperty(MBSCustomPageManager.PAGE_ID, MBSCustomPageManager.NATURE, null);
|
||||
|
|
|
@ -0,0 +1,113 @@
|
|||
/*******************************************************************************
|
||||
* Copyright (c) 2009 IBM Corporation 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
|
||||
*******************************************************************************/
|
||||
package org.eclipse.cdt.internal.ui.wizards;
|
||||
|
||||
|
||||
import java.net.URI;
|
||||
|
||||
import org.eclipse.core.resources.IProject;
|
||||
import org.eclipse.core.runtime.CoreException;
|
||||
import org.eclipse.core.runtime.IConfigurationElement;
|
||||
import org.eclipse.core.runtime.IProgressMonitor;
|
||||
import org.eclipse.jface.wizard.IWizard;
|
||||
import org.eclipse.ui.wizards.newresource.BasicNewProjectResourceWizard;
|
||||
|
||||
/**
|
||||
* @since 5.1
|
||||
*/
|
||||
public interface ICDTCommonProjectWizard extends IWizard {
|
||||
/**
|
||||
* First stage of creating the project but no progress displayed. Identical to
|
||||
* calling createIProject(name, location, new NullProgressMonitor())
|
||||
*
|
||||
* @param name name of the project
|
||||
* @param location location URI for the project
|
||||
* @return the project
|
||||
* @throws CoreException if project creation fails for any reason
|
||||
*/
|
||||
public IProject createIProject(final String name, final URI location) throws CoreException;
|
||||
|
||||
/**
|
||||
* First stage of creating the project. Only used internally.
|
||||
*
|
||||
* @param name name of the project
|
||||
* @param location location URI for the project
|
||||
* @param monitor progress monitor
|
||||
* @return the project
|
||||
* @throws CoreException if project creation fails for any reason
|
||||
*/
|
||||
public IProject createIProject(final String name, final URI location, IProgressMonitor monitor) throws CoreException;
|
||||
|
||||
/**
|
||||
* Get the file content types supported by this project
|
||||
*
|
||||
* @return array of file content types
|
||||
*/
|
||||
public String[] getContentTypeIDs();
|
||||
|
||||
/**
|
||||
* Get the file extension specifications for each content type.
|
||||
*
|
||||
* @return array of file extension specifications
|
||||
*/
|
||||
public String[] getExtensions();
|
||||
|
||||
/**
|
||||
* Get the languages supported by each content type
|
||||
*
|
||||
* @return array of languages
|
||||
*/
|
||||
public String[] getLanguageIDs();
|
||||
|
||||
/**
|
||||
* Return the last project created by the call to getProject().
|
||||
*
|
||||
* @return the last project created
|
||||
*/
|
||||
public IProject getLastProject();
|
||||
|
||||
/**
|
||||
* Get the project natures provided by this project.
|
||||
*
|
||||
* @return array of project natures
|
||||
*/
|
||||
public String[] getNatures();
|
||||
|
||||
/**
|
||||
* Create and return the project specified by the wizard. Identical to calling
|
||||
* getProject(defaults, true)
|
||||
*
|
||||
* @param defaults true if called from the first wizard page
|
||||
* @return the newly created project
|
||||
*/
|
||||
public IProject getProject(boolean defaults);
|
||||
|
||||
/**
|
||||
* Create and return the project specified by the wizard.
|
||||
*
|
||||
* @param defaults true if called from the first wizard page
|
||||
* @param onFinish true if the method is called when finish is pressed, false
|
||||
* otherwise. If onFinish is false, the project is temporary and can be removed
|
||||
* if cancel is pressed.
|
||||
* @return the newly created project
|
||||
*/
|
||||
public IProject getProject(boolean defaults, boolean onFinish);
|
||||
|
||||
/**
|
||||
* Can be used to pass a configuration element to update the perspective based
|
||||
* on the current settings in the Workbench/Perspectives preference page via
|
||||
* {@link BasicNewProjectResourceWizard#updatePerspective(IConfigurationElement)}
|
||||
*
|
||||
* @param config the configuration element
|
||||
* @param propertyName not used
|
||||
* @param data not used
|
||||
* @throws CoreException
|
||||
*/
|
||||
public void setInitializationData(IConfigurationElement config, String propertyName, Object data) throws CoreException;
|
||||
|
||||
}
|
|
@ -52,8 +52,10 @@ import org.eclipse.cdt.core.settings.model.ICProjectDescriptionManager;
|
|||
import org.eclipse.cdt.ui.CUIPlugin;
|
||||
import org.eclipse.cdt.ui.newui.UIMessages;
|
||||
|
||||
import org.eclipse.cdt.internal.ui.wizards.ICDTCommonProjectWizard;
|
||||
|
||||
public abstract class CDTCommonProjectWizard extends BasicNewResourceWizard
|
||||
implements IExecutableExtension, IWizardWithMemory
|
||||
implements IExecutableExtension, IWizardWithMemory, ICDTCommonProjectWizard
|
||||
{
|
||||
private static final String PREFIX= "CProjectWizard"; //$NON-NLS-1$
|
||||
private static final String OP_ERROR= "CProjectWizard.op_error"; //$NON-NLS-1$
|
||||
|
|
|
@ -13,14 +13,15 @@ package org.eclipse.cdt.managedbuilder.xlc.ui.wizards;
|
|||
import java.lang.reflect.InvocationTargetException;
|
||||
|
||||
import org.eclipse.cdt.core.CCorePlugin;
|
||||
import org.eclipse.cdt.internal.ui.wizards.ICDTCommonProjectWizard;
|
||||
import org.eclipse.cdt.managedbuilder.ui.wizards.MBSCustomPageManager;
|
||||
import org.eclipse.cdt.managedbuilder.xlc.ui.preferences.PreferenceConstants;
|
||||
import org.eclipse.cdt.ui.wizards.CDTCommonProjectWizard;
|
||||
import org.eclipse.core.resources.IProject;
|
||||
import org.eclipse.core.runtime.CoreException;
|
||||
import org.eclipse.core.runtime.IProgressMonitor;
|
||||
import org.eclipse.core.runtime.QualifiedName;
|
||||
import org.eclipse.jface.operation.IRunnableWithProgress;
|
||||
import org.eclipse.jface.wizard.IWizard;
|
||||
import org.eclipse.jface.wizard.IWizardPage;
|
||||
|
||||
/**
|
||||
|
@ -44,7 +45,7 @@ public class XLCSettingsWizardRunnable implements IRunnableWithProgress {
|
|||
|
||||
if(pages != null && pages.length > 0) {
|
||||
|
||||
CDTCommonProjectWizard wizard = (CDTCommonProjectWizard) pages[0].getWizard();
|
||||
ICDTCommonProjectWizard wizard = (ICDTCommonProjectWizard) pages[0].getWizard();
|
||||
IProject project = wizard.getLastProject();
|
||||
|
||||
try {
|
||||
|
|
Loading…
Add table
Reference in a new issue