1
0
Fork 0
mirror of https://github.com/eclipse-cdt/cdt synced 2025-04-23 22:52:11 +02:00

[251124] - applied patch, fixing unfinished code that allow language separation for templates

This commit is contained in:
Alena Laskavaia 2008-10-17 15:05:54 +00:00
parent 2760c4fe5f
commit 2654d40bea
5 changed files with 80 additions and 7 deletions

View file

@ -3770,19 +3770,19 @@
<extension point="org.eclipse.cdt.core.templates"> <extension point="org.eclipse.cdt.core.templates">
<template <template
id="org.eclipse.cdt.build.core.templates.HelloWorldCCProject" id="org.eclipse.cdt.build.core.templates.HelloWorldCCProject"
filterPattern=".*" filterPattern=".*g\+\+"
location="$nl$/templates/projecttemplates/HelloWorldCCProject/template.xml" location="$nl$/templates/projecttemplates/HelloWorldCCProject/template.xml"
projectType="org.eclipse.cdt.build.core.buildArtefactType.exe"> projectType="org.eclipse.cdt.build.core.buildArtefactType.exe">
</template> </template>
<template <template
id="org.eclipse.cdt.build.templates.HelloWorldCAnsiProject" id="org.eclipse.cdt.build.templates.HelloWorldCAnsiProject"
filterPattern=".*" filterPattern=".*gcc"
location="$nl$/templates/projecttemplates/HelloWorldCAnsiProject/template.xml" location="$nl$/templates/projecttemplates/HelloWorldCAnsiProject/template.xml"
projectType="org.eclipse.cdt.build.core.buildArtefactType.exe"> projectType="org.eclipse.cdt.build.core.buildArtefactType.exe">
</template> </template>
<template <template
id="org.eclipse.cdt.build.core.templates.MakefileHelloWorldCCProject" id="org.eclipse.cdt.build.core.templates.MakefileHelloWorldCCProject"
filterPattern=".*" filterPattern=".*g\+\+"
location="$nl$/templates/projecttemplates/MakefileHelloWorldCCProject/template.xml" location="$nl$/templates/projecttemplates/MakefileHelloWorldCCProject/template.xml"
projectType="org.eclipse.cdt.build.makefile.projectType"> projectType="org.eclipse.cdt.build.makefile.projectType">
</template> </template>

View file

@ -13,6 +13,7 @@ package org.eclipse.cdt.managedbuilder.ui.wizards;
import java.lang.reflect.InvocationTargetException; import java.lang.reflect.InvocationTargetException;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap; import java.util.HashMap;
import java.util.LinkedHashSet; import java.util.LinkedHashSet;
import java.util.List; import java.util.List;
@ -119,11 +120,17 @@ public class MBSWizardHandler extends CWizardHandler {
private IWizardPage[] templatePages; private IWizardPage[] templatePages;
private IWizardPage predatingPage; private IWizardPage predatingPage;
private IWizardPage followingPage; private IWizardPage followingPage;
private IWizard wizard;
public EntryInfo(EntryDescriptor dr, SortedMap<String, IToolChain> _tcs){ public EntryInfo(EntryDescriptor dr, SortedMap<String, IToolChain> _tcs){
entryDescriptor = dr; entryDescriptor = dr;
tcs = _tcs; tcs = _tcs;
} }
public EntryInfo(EntryDescriptor dr, SortedMap<String, IToolChain> _tcs, IWizard w){
this(dr, _tcs);
wizard = w;
}
public boolean isValid(){ public boolean isValid(){
initialize(); initialize();
@ -154,8 +161,25 @@ public class MBSWizardHandler extends CWizardHandler {
if(!entryDescriptor.isDefaultForCategory() && if(!entryDescriptor.isDefaultForCategory() &&
path.length > 1 && (!path[0].equals(ManagedBuildWizard.OTHERS_LABEL))){ path.length > 1 && (!path[0].equals(ManagedBuildWizard.OTHERS_LABEL))){
templateId = path[path.length - 1]; templateId = path[path.length - 1];
Template templates[] = TemplateEngineUI.getDefault().getTemplates(projectTypeId); Template templates[] = null;
if(templates.length == 0) if(wizard instanceof CDTCommonProjectWizard) {
CDTCommonProjectWizard wz = (CDTCommonProjectWizard)wizard;
String[] langIDs = wz.getLanguageIDs();
if(langIDs.length > 0) {
List<Template> lstTemplates = new ArrayList<Template>();
for(int i = 0; i < langIDs.length; ++i) {
lstTemplates.addAll(Arrays.asList(TemplateEngineUI.getDefault().
getTemplates(projectTypeId, null, langIDs[i])));
}
templates = lstTemplates.toArray(new Template[lstTemplates.size()]);
}
}
if(null == templates) {
templates =
TemplateEngineUI.getDefault().
getTemplates(projectTypeId);
}
if((null == templates) || (templates.length == 0))
break; break;
for(int i = 0; i < templates.length; i++){ for(int i = 0; i < templates.length; i++){
@ -723,12 +747,12 @@ public class MBSWizardHandler extends CWizardHandler {
} }
public boolean isApplicable(EntryDescriptor data) { public boolean isApplicable(EntryDescriptor data) {
EntryInfo info = new EntryInfo(data, full_tcs); EntryInfo info = new EntryInfo(data, full_tcs, wizard);
return info.isValid() && (info.getToolChainsCount() > 0); return info.isValid() && (info.getToolChainsCount() > 0);
} }
public void initialize(EntryDescriptor data) throws CoreException { public void initialize(EntryDescriptor data) throws CoreException {
EntryInfo info = new EntryInfo(data, full_tcs); EntryInfo info = new EntryInfo(data, full_tcs, wizard);
if(!info.isValid()) if(!info.isValid())
throw new CoreException(new Status(IStatus.ERROR, ManagedBuilderUIPlugin.getUniqueIdentifier(), "inappropriate descriptor")); //$NON-NLS-1$ throw new CoreException(new Status(IStatus.ERROR, ManagedBuilderUIPlugin.getUniqueIdentifier(), "inappropriate descriptor")); //$NON-NLS-1$

View file

@ -15,6 +15,7 @@ import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.NullProgressMonitor; import org.eclipse.core.runtime.NullProgressMonitor;
import org.eclipse.cdt.core.CCProjectNature; import org.eclipse.cdt.core.CCProjectNature;
import org.eclipse.cdt.core.CCorePlugin;
import org.eclipse.cdt.core.CProjectNature; import org.eclipse.cdt.core.CProjectNature;
import org.eclipse.cdt.ui.newui.UIMessages; import org.eclipse.cdt.ui.newui.UIMessages;
@ -37,5 +38,11 @@ public class CCProjectWizard extends CDTCommonProjectWizard {
} catch (CoreException e) {} } catch (CoreException e) {}
return prj; return prj;
} }
@Override
public String[] getContentTypeIDs() {
return new String[] { CCorePlugin.CONTENT_TYPE_CXXSOURCE, CCorePlugin.CONTENT_TYPE_CXXHEADER };
}
} }

View file

@ -14,6 +14,9 @@ package org.eclipse.cdt.ui.wizards;
import java.lang.reflect.InvocationTargetException; import java.lang.reflect.InvocationTargetException;
import java.net.URI; import java.net.URI;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import org.eclipse.core.filesystem.EFS; import org.eclipse.core.filesystem.EFS;
import org.eclipse.core.filesystem.IFileInfo; import org.eclipse.core.filesystem.IFileInfo;
@ -30,6 +33,9 @@ import org.eclipse.core.runtime.IConfigurationElement;
import org.eclipse.core.runtime.IExecutableExtension; import org.eclipse.core.runtime.IExecutableExtension;
import org.eclipse.core.runtime.IProgressMonitor; import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.core.runtime.NullProgressMonitor; import org.eclipse.core.runtime.NullProgressMonitor;
import org.eclipse.core.runtime.Platform;
import org.eclipse.core.runtime.content.IContentType;
import org.eclipse.core.runtime.content.IContentTypeManager;
import org.eclipse.jface.dialogs.MessageDialog; import org.eclipse.jface.dialogs.MessageDialog;
import org.eclipse.jface.operation.IRunnableWithProgress; import org.eclipse.jface.operation.IRunnableWithProgress;
import org.eclipse.ui.actions.WorkspaceModifyDelegatingOperation; import org.eclipse.ui.actions.WorkspaceModifyDelegatingOperation;
@ -38,6 +44,8 @@ import org.eclipse.ui.wizards.newresource.BasicNewResourceWizard;
import org.eclipse.cdt.core.CCorePlugin; import org.eclipse.cdt.core.CCorePlugin;
import org.eclipse.cdt.core.model.CoreModel; import org.eclipse.cdt.core.model.CoreModel;
import org.eclipse.cdt.core.model.ILanguage;
import org.eclipse.cdt.core.model.LanguageManager;
import org.eclipse.cdt.core.settings.model.ICProjectDescription; import org.eclipse.cdt.core.settings.model.ICProjectDescription;
import org.eclipse.cdt.core.settings.model.ICProjectDescriptionManager; import org.eclipse.cdt.core.settings.model.ICProjectDescriptionManager;
import org.eclipse.cdt.ui.CUIPlugin; import org.eclipse.cdt.ui.CUIPlugin;
@ -306,12 +314,40 @@ implements IExecutableExtension, IWizardWithMemory
// Methods below should provide data for language check // Methods below should provide data for language check
public String[] getLanguageIDs (){ public String[] getLanguageIDs (){
String[] contentTypeIds = getContentTypeIDs();
if(contentTypeIds.length > 0) {
IContentTypeManager manager = Platform.getContentTypeManager();
List<String> languageIDs = new ArrayList<String>();
for(int i = 0; i < contentTypeIds.length; ++i) {
IContentType contentType = manager.getContentType(contentTypeIds[i]);
if(null != contentType) {
ILanguage language = LanguageManager.getInstance().getLanguage(contentType);
if(!languageIDs.contains(language.getId())) {
languageIDs.add(language.getId());
}
}
}
return languageIDs.toArray(new String[languageIDs.size()]);
}
return EMPTY_ARR; return EMPTY_ARR;
} }
public String[] getContentTypeIDs (){ public String[] getContentTypeIDs (){
return EMPTY_ARR; return EMPTY_ARR;
} }
public String[] getExtensions (){ public String[] getExtensions (){
String[] contentTypeIds = getContentTypeIDs();
if(contentTypeIds.length > 0) {
IContentTypeManager manager = Platform.getContentTypeManager();
List<String> extensions = new ArrayList<String>();
for(int i = 0; i < contentTypeIds.length; ++i) {
IContentType contentType = manager.getContentType(contentTypeIds[i]);
if(null != contentType) {
String[] thisTypeExtensions = contentType.getFileSpecs(IContentType.FILE_EXTENSION_SPEC);
extensions.addAll(Arrays.asList(thisTypeExtensions));
}
}
return extensions.toArray(new String[extensions.size()]);
}
return EMPTY_ARR; return EMPTY_ARR;
} }

View file

@ -14,6 +14,7 @@ import org.eclipse.core.resources.IProject;
import org.eclipse.core.runtime.CoreException; import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.NullProgressMonitor; import org.eclipse.core.runtime.NullProgressMonitor;
import org.eclipse.cdt.core.CCorePlugin;
import org.eclipse.cdt.core.CProjectNature; import org.eclipse.cdt.core.CProjectNature;
import org.eclipse.cdt.ui.newui.UIMessages; import org.eclipse.cdt.ui.newui.UIMessages;
@ -37,4 +38,9 @@ public class CProjectWizard extends CDTCommonProjectWizard {
return prj; return prj;
} }
@Override
public String[] getContentTypeIDs() {
return new String[] { CCorePlugin.CONTENT_TYPE_CSOURCE, CCorePlugin.CONTENT_TYPE_CHEADER };
}
} }