diff options
author | Mike Kucera | 2009-04-30 19:53:45 +0000 |
---|---|---|
committer | Mike Kucera | 2009-04-30 19:53:45 +0000 |
commit | 436a3e5dd34c53f78c7ffd89b8f9ed3ee0a2b4d0 (patch) | |
tree | a71bd16c35efd697b3083c0c8d700b500d018fa3 /xlc/org.eclipse.cdt.managedbuilder.xlupc.ui/src/org/eclipse/cdt/managedbuilder/xlupc/ui/wizards | |
parent | 9605de728a742f7187cebd3a46addc890cb6bb58 (diff) | |
download | org.eclipse.cdt-436a3e5dd34c53f78c7ffd89b8f9ed3ee0a2b4d0.tar.gz org.eclipse.cdt-436a3e5dd34c53f78c7ffd89b8f9ed3ee0a2b4d0.tar.xz org.eclipse.cdt-436a3e5dd34c53f78c7ffd89b8f9ed3ee0a2b4d0.zip |
[261232] initial commit of UPC new project wizard and UPC toolchain
Diffstat (limited to 'xlc/org.eclipse.cdt.managedbuilder.xlupc.ui/src/org/eclipse/cdt/managedbuilder/xlupc/ui/wizards')
3 files changed, 212 insertions, 0 deletions
diff --git a/xlc/org.eclipse.cdt.managedbuilder.xlupc.ui/src/org/eclipse/cdt/managedbuilder/xlupc/ui/wizards/UpcProjectWizard.java b/xlc/org.eclipse.cdt.managedbuilder.xlupc.ui/src/org/eclipse/cdt/managedbuilder/xlupc/ui/wizards/UpcProjectWizard.java new file mode 100644 index 00000000000..ff20c19e940 --- /dev/null +++ b/xlc/org.eclipse.cdt.managedbuilder.xlupc.ui/src/org/eclipse/cdt/managedbuilder/xlupc/ui/wizards/UpcProjectWizard.java @@ -0,0 +1,95 @@ +/******************************************************************************* + * 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 + * + * Contributors: + * IBM - Initial API and implementation + *******************************************************************************/ +package org.eclipse.cdt.managedbuilder.xlupc.ui.wizards; + +import java.util.HashSet; +import java.util.Iterator; +import java.util.List; +import java.util.Set; + +import org.eclipse.cdt.core.CProjectNature; +import org.eclipse.cdt.managedbuilder.xlupc.ui.Messages; +import org.eclipse.cdt.ui.wizards.CDTCommonProjectWizard; +import org.eclipse.cdt.ui.wizards.CDTMainWizardPage; +import org.eclipse.cdt.ui.wizards.EntryDescriptor; +import org.eclipse.core.resources.IProject; +import org.eclipse.core.runtime.CoreException; +import org.eclipse.core.runtime.NullProgressMonitor; + + +@SuppressWarnings({ "nls", "serial" }) +public class UpcProjectWizard extends CDTCommonProjectWizard { + + private static final String ARTIFACT_TYPE_UPC_EXE = "org.eclipse.cdt.build.core.buildArtefactType.xlupc.exe"; + private static final String ARTIFACT_TYPE_UPC_EXE_DEFAULT = ARTIFACT_TYPE_UPC_EXE + ".default"; + + private static final String ARTIFACT_TYPE_UPC_SO = "org.eclipse.cdt.build.core.buildArtefactType.xlupc.sharedLib"; + private static final String ARTIFACT_TYPE_UPC_SO_DEFAULT = ARTIFACT_TYPE_UPC_SO + ".default"; + + private static final String ARTIFACT_TYPE_UPC_LIB = "org.eclipse.cdt.build.core.buildArtefactType.xlupc.staticLib"; + private static final String ARTIFACT_TYPE_UPC_LIB_DEFAULT = ARTIFACT_TYPE_UPC_LIB + ".default"; + + private final static String PAGE_NAME = "org.eclipse.cdt.managedbuilder.xlupc.ui.mainpage"; + + + private static final Set<String> ALL_TYPES = new HashSet<String>() {{ + add(ARTIFACT_TYPE_UPC_EXE); + add(ARTIFACT_TYPE_UPC_EXE_DEFAULT); + add(ARTIFACT_TYPE_UPC_SO); + add(ARTIFACT_TYPE_UPC_SO_DEFAULT); + add(ARTIFACT_TYPE_UPC_LIB); + add(ARTIFACT_TYPE_UPC_LIB_DEFAULT); + }}; + + + + public UpcProjectWizard() { + super(Messages.UpcProjectWizard_0, Messages.UpcProjectWizard_1); + } + + + public void addPages() { + fMainPage = new CDTMainWizardPage(PAGE_NAME) { + + @SuppressWarnings("unchecked") + public List filterItems(List items) { + // filter out all non-UPC project types + if (items != null) { + Iterator iter = items.iterator(); + while (iter.hasNext()) { + EntryDescriptor entryDescriptor = (EntryDescriptor) iter.next(); + if(!ALL_TYPES.contains(entryDescriptor.getId())) + iter.remove(); + } + } + return items; + } + }; + + fMainPage.setTitle(Messages.UpcProjectWizard_0); + fMainPage.setDescription(Messages.UpcProjectWizard_1); + addPage(fMainPage); + } + + + protected IProject continueCreation(IProject prj) { + try { + CProjectNature.addCNature(prj, new NullProgressMonitor()); + } catch (CoreException e) {} + return prj; + } + + + public String[] getNatures() { + return new String[] { CProjectNature.C_NATURE_ID/*, CCProjectNature.CC_NATURE_ID, RemoteNature.REMOTE_NATURE_ID*/}; + } + +} diff --git a/xlc/org.eclipse.cdt.managedbuilder.xlupc.ui/src/org/eclipse/cdt/managedbuilder/xlupc/ui/wizards/XLUpcSettingsWizardPage.java b/xlc/org.eclipse.cdt.managedbuilder.xlupc.ui/src/org/eclipse/cdt/managedbuilder/xlupc/ui/wizards/XLUpcSettingsWizardPage.java new file mode 100644 index 00000000000..f379581c1d8 --- /dev/null +++ b/xlc/org.eclipse.cdt.managedbuilder.xlupc.ui/src/org/eclipse/cdt/managedbuilder/xlupc/ui/wizards/XLUpcSettingsWizardPage.java @@ -0,0 +1,40 @@ +/******************************************************************************* + * 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 + * + * Contributors: + * IBM Corporation - initial API and implementation + *******************************************************************************/ +package org.eclipse.cdt.managedbuilder.xlupc.ui.wizards; + +import org.eclipse.cdt.managedbuilder.xlc.ui.wizards.XLCSettingsWizardPage; +import org.eclipse.cdt.managedbuilder.xlupc.ui.Messages; + +/** + * + */ +public class XLUpcSettingsWizardPage extends XLCSettingsWizardPage { + + public static final String PAGE_ID = "org.eclipse.cdt.managedbuilder.xlupc.ui.wizards.XLUpcSettingsWizardPage"; //$NON-NLS-1$ + + public XLUpcSettingsWizardPage(String pageID) { + super(pageID); + } + + public XLUpcSettingsWizardPage() { + super(); + pageID = PAGE_ID; + } + + public String getName() { + return Messages.XLUpcSettingsWizardPage_0; + } + + public String getTitle() { + return Messages.XLUpcSettingsWizardPage_1; + } + +} diff --git a/xlc/org.eclipse.cdt.managedbuilder.xlupc.ui/src/org/eclipse/cdt/managedbuilder/xlupc/ui/wizards/XLUpcSettingsWizardRunnable.java b/xlc/org.eclipse.cdt.managedbuilder.xlupc.ui/src/org/eclipse/cdt/managedbuilder/xlupc/ui/wizards/XLUpcSettingsWizardRunnable.java new file mode 100644 index 00000000000..e3839093a84 --- /dev/null +++ b/xlc/org.eclipse.cdt.managedbuilder.xlupc.ui/src/org/eclipse/cdt/managedbuilder/xlupc/ui/wizards/XLUpcSettingsWizardRunnable.java @@ -0,0 +1,77 @@ +/******************************************************************************* + * 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 + * + * Contributors: + * IBM Corporation - initial API and implementation + *******************************************************************************/ +package org.eclipse.cdt.managedbuilder.xlupc.ui.wizards; + +import java.lang.reflect.InvocationTargetException; + +import org.eclipse.cdt.core.CCorePlugin; +import org.eclipse.cdt.core.dom.upc.UPCLanguage; +import org.eclipse.cdt.core.language.ProjectLanguageConfiguration; +import org.eclipse.cdt.core.model.CoreModel; +import org.eclipse.cdt.core.model.LanguageManager; +import org.eclipse.cdt.core.settings.model.ICConfigurationDescription; +import org.eclipse.cdt.core.settings.model.ICProjectDescription; +import org.eclipse.cdt.managedbuilder.ui.wizards.MBSCustomPageManager; +import org.eclipse.cdt.managedbuilder.xlc.ui.wizards.XLCSettingsWizardRunnable; +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.Platform; +import org.eclipse.core.runtime.content.IContentType; +import org.eclipse.core.runtime.content.IContentTypeManager; +import org.eclipse.jface.wizard.IWizardPage; + + +public class XLUpcSettingsWizardRunnable extends XLCSettingsWizardRunnable { + + + // now add UPC language mapping to the project + private static final String[] CONTENT_TYPE_IDS = { CCorePlugin.CONTENT_TYPE_CHEADER, CCorePlugin.CONTENT_TYPE_CSOURCE }; + + public XLUpcSettingsWizardRunnable() { + pageId = XLUpcSettingsWizardPage.PAGE_ID; + } + + public void run(IProgressMonitor monitor) throws InvocationTargetException, InterruptedException { + super.run(monitor); + + // get a handle to the wizard + IWizardPage[] pages = MBSCustomPageManager.getPages(); + + if (pages != null && pages.length > 0) { + + CDTCommonProjectWizard wizard = (CDTCommonProjectWizard) pages[0].getWizard(); + IProject project = wizard.getLastProject(); + LanguageManager langManager = LanguageManager.getInstance(); + + try { + ProjectLanguageConfiguration langConfig = langManager.getLanguageConfiguration(project); + + ICProjectDescription projectDescription = CoreModel.getDefault().getProjectDescription(project, false); + ICConfigurationDescription configDescription = projectDescription.getActiveConfiguration(); + + IContentTypeManager contentTypeManager = Platform.getContentTypeManager(); + + for(String id : CONTENT_TYPE_IDS) { + if(contentTypeManager.getContentType(id) != null) { + langConfig.addContentTypeMapping(configDescription, id, UPCLanguage.ID); + } + } + + langManager.storeLanguageMappingConfiguration(project, new IContentType[0]); + + } catch (CoreException e) { + CCorePlugin.log(e); + } + } + } +} |