From 6ffd53dea01feae882b66d8bf380793eb84b2fea Mon Sep 17 00:00:00 2001 From: Oleg Krasilnikov Date: Fri, 27 Apr 2007 15:27:51 +0000 Subject: [PATCH] Toolchains filtering implemented --- .../ui/wizards/AbstractCWizard.java | 107 +++++++++++++++++- .../ui/wizards/ManagedBuildWizard.java | 5 +- .../ui/wizards/StdBuildWizard.java | 3 +- .../ui/wizards/CDTCommonProjectWizard.java | 13 +++ 4 files changed, 122 insertions(+), 6 deletions(-) diff --git a/build/org.eclipse.cdt.managedbuilder.ui/src/org/eclipse/cdt/managedbuilder/ui/wizards/AbstractCWizard.java b/build/org.eclipse.cdt.managedbuilder.ui/src/org/eclipse/cdt/managedbuilder/ui/wizards/AbstractCWizard.java index f217dbe3fb6..30090f44e58 100644 --- a/build/org.eclipse.cdt.managedbuilder.ui/src/org/eclipse/cdt/managedbuilder/ui/wizards/AbstractCWizard.java +++ b/build/org.eclipse.cdt.managedbuilder.ui/src/org/eclipse/cdt/managedbuilder/ui/wizards/AbstractCWizard.java @@ -14,12 +14,16 @@ import java.util.Arrays; import java.util.List; import org.eclipse.cdt.internal.ui.CPluginImages; +import org.eclipse.cdt.managedbuilder.core.IInputType; import org.eclipse.cdt.managedbuilder.core.ITargetPlatform; +import org.eclipse.cdt.managedbuilder.core.ITool; import org.eclipse.cdt.managedbuilder.core.IToolChain; 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.cdt.utils.Platform; +import org.eclipse.jface.wizard.IWizard; import org.eclipse.swt.graphics.Image; import org.eclipse.swt.widgets.Composite; @@ -41,15 +45,31 @@ public abstract class AbstractCWizard extends CNewWizard { listener = _listener; } - protected boolean isValid(IToolChain tc) { + /** + * Checks whether toolchain can be displayed + * @param tc + * @return + */ + protected boolean isValid(IToolChain tc, boolean supportedOnly, IWizard w) { + // Check for langiuage compatibility first in any case + if (!isLanguageCompatible(tc, w)) + return false; + + // Do not do further check if all toolchains are permitted + if (!supportedOnly) + return true; + + // Filter off unsupported and system toolchains if (tc == null || !tc.isSupported() || tc.isAbstract() || tc.isSystemObject()) return false; + + // Check for platform compatibility ITargetPlatform tp = tc.getTargetPlatform(); if (tp != null) { List osList = Arrays.asList(tc.getOSList()); if (osList.contains(ALL) || osList.contains(os)) { List archList = Arrays.asList(tc.getArchList()); - if (archList.contains(ALL) || archList.contains(arch)) + if (archList.contains(ALL) || archList.contains(arch)) return true; // OS and ARCH fits } return false; // OS or ARCH does not fit @@ -57,7 +77,88 @@ public abstract class AbstractCWizard extends CNewWizard { return true; // No platform: nothing to check } -/* comment it out for now.. + /** + * Checks toolchain for Language ID, Content type ID + * and Extensions, if they are required by wizard. + * + * @param tc - toolchain to check + * @param w - wizard which provides selection criteria + * @return + */ + protected boolean isLanguageCompatible(IToolChain tc, IWizard w) { + if (w == null) + return true; + if (!(w instanceof CDTCommonProjectWizard)) + return true; + + ITool[] tools = tc.getTools(); + CDTCommonProjectWizard wz = (CDTCommonProjectWizard)w; + String[] langIDs = wz.getLanguageIDs(); + String[] ctypeIDs = wz.getContentTypeIDs(); + String[] exts = wz.getExtensions(); + + // nothing requied ? + if (empty(langIDs) && empty(ctypeIDs) && empty(exts)) + return true; + + for (int i=0; i 0) { items.add(new EntryDescriptor(vs[i].getId(), null, vs[i].getName(), true, h, null)); @@ -74,7 +75,7 @@ public class ManagedBuildWizard extends AbstractCWizard { for (int i=0; i