# HG changeset patch # User timkelly # Date 1280763408 18000 # Node ID ba74c19c6de3e02534a2add3838b0021bb4f861c # Parent 13355a75b65c0ea05cecea4bb82857fb18d94d37 fix bug 11762. Fix targettypes for MMP editor to retrieve properly depending on whether build config is SBsv1 or SBSv2. diff -r 13355a75b65c -r ba74c19c6de3 core/com.nokia.carbide.cpp.sdk.core.test/src/com/nokia/carbide/cpp/sdk/core/test/SDKCreationTest.java --- a/core/com.nokia.carbide.cpp.sdk.core.test/src/com/nokia/carbide/cpp/sdk/core/test/SDKCreationTest.java Fri Jul 30 13:18:50 2010 -0500 +++ b/core/com.nokia.carbide.cpp.sdk.core.test/src/com/nokia/carbide/cpp/sdk/core/test/SDKCreationTest.java Mon Aug 02 10:36:48 2010 -0500 @@ -66,7 +66,6 @@ } assertTrue(sdk.getOSVersion().getMajor() == 0); assertTrue(sbsv1BuildInfo.getPlatformMacros("WINSCW").size() == 0); - assertTrue(sdk.getSupportedTargetTypes().size() == 0); File epocRoot = new File(sdk.getEPOCROOT()); assertTrue(epocRoot.exists() == false); } diff -r 13355a75b65c -r ba74c19c6de3 core/com.nokia.carbide.cpp.sdk.core/src/com/nokia/carbide/cpp/internal/api/sdk/BuildContextSBSv2.java --- a/core/com.nokia.carbide.cpp.sdk.core/src/com/nokia/carbide/cpp/internal/api/sdk/BuildContextSBSv2.java Fri Jul 30 13:18:50 2010 -0500 +++ b/core/com.nokia.carbide.cpp.sdk.core/src/com/nokia/carbide/cpp/internal/api/sdk/BuildContextSBSv2.java Mon Aug 02 10:36:48 2010 -0500 @@ -368,4 +368,9 @@ return null; } + @Override + public List getSupportedTargettypes() { + return configQueryData.getTargettypes(); + } + } diff -r 13355a75b65c -r ba74c19c6de3 core/com.nokia.carbide.cpp.sdk.core/src/com/nokia/carbide/cpp/internal/api/sdk/ISBSv1BuildInfo.java --- a/core/com.nokia.carbide.cpp.sdk.core/src/com/nokia/carbide/cpp/internal/api/sdk/ISBSv1BuildInfo.java Fri Jul 30 13:18:50 2010 -0500 +++ b/core/com.nokia.carbide.cpp.sdk.core/src/com/nokia/carbide/cpp/internal/api/sdk/ISBSv1BuildInfo.java Mon Aug 02 10:36:48 2010 -0500 @@ -88,4 +88,19 @@ */ List getBuiltinMacros(ISymbianBuildContext context); + /** + * Get a list of supported targettypes listed by this SDK. This routine parses the + * \epoc32\tools\trgttype.pm file to build it's list. + * @return A list of targettype names that can be used in an MMP file + */ + List getSupportedTargetTypes(); + + + /** + * Returns a list of the macros defined in the variant.cfg file. This is NOT the macros + * in the HRH file, but the actual maros written to the variant.cfg file. + * @return A String list of macros found as is, or an empty list if none. + */ + List getVariantCFGMacros(); + } diff -r 13355a75b65c -r ba74c19c6de3 core/com.nokia.carbide.cpp.sdk.core/src/com/nokia/carbide/cpp/internal/api/sdk/SymbianBuildContextDataCache.java --- a/core/com.nokia.carbide.cpp.sdk.core/src/com/nokia/carbide/cpp/internal/api/sdk/SymbianBuildContextDataCache.java Fri Jul 30 13:18:50 2010 -0500 +++ b/core/com.nokia.carbide.cpp.sdk.core/src/com/nokia/carbide/cpp/internal/api/sdk/SymbianBuildContextDataCache.java Mon Aug 02 10:36:48 2010 -0500 @@ -120,6 +120,9 @@ private String contextKey; + /** + * One of {@link ISymbianBuilderID} + */ private String builderId; private boolean changed; @@ -254,18 +257,22 @@ hrhFilesParsed.add(inc); } - List variantCFGMacros = new ArrayList(); - variantCFGMacros = sdk.getVariantCFGMacros(); - for (String cfgMacros : variantCFGMacros){ - // we don't want duplicate macros, so check to see if it's already there. - IDefine existingMacro = namedMacros.get(cfgMacros); - if (existingMacro != null) { - macros.remove(existingMacro); + if (buildInfo instanceof ISBSv1BuildInfo) { + // SBSv2 does not parse the variant.cfg file to collect macros. + List variantCFGMacros = new ArrayList(); + + variantCFGMacros = ((ISBSv1BuildInfo)buildInfo).getVariantCFGMacros(); + for (String cfgMacros : variantCFGMacros){ + // we don't want duplicate macros, so check to see if it's already there. + IDefine existingMacro = namedMacros.get(cfgMacros); + if (existingMacro != null) { + macros.remove(existingMacro); + } + + IDefine macro = DefineFactory.createSimpleFreeformDefine(cfgMacros); + macros.add(macro); + namedMacros.put(macro.getName(), macro); } - - IDefine macro = DefineFactory.createSimpleFreeformDefine(cfgMacros); - macros.add(macro); - namedMacros.put(macro.getName(), macro); } } diff -r 13355a75b65c -r ba74c19c6de3 core/com.nokia.carbide.cpp.sdk.core/src/com/nokia/carbide/cpp/internal/api/sdk/sbsv2/SBSv2ConfigQueryData.java --- a/core/com.nokia.carbide.cpp.sdk.core/src/com/nokia/carbide/cpp/internal/api/sdk/sbsv2/SBSv2ConfigQueryData.java Fri Jul 30 13:18:50 2010 -0500 +++ b/core/com.nokia.carbide.cpp.sdk.core/src/com/nokia/carbide/cpp/internal/api/sdk/sbsv2/SBSv2ConfigQueryData.java Mon Aug 02 10:36:48 2010 -0500 @@ -31,6 +31,7 @@ private Map buildMacros = new HashMap(); // cpp preprocessor macros private Map metaDataMacros = new HashMap(); // macros to parse the INF/MMPs files (these do not contain values) private List metaDataIncludes = new ArrayList(); + private List targettypes = new ArrayList(); private String buildPrefix = ""; private String metaDataVariantHRH = ""; private String outputPathString = ""; @@ -61,6 +62,11 @@ public Map getBuildMacros() { return buildMacros; } + + @Override + public List getTargettypes() { + return targettypes; + } @Override public String getConfigurationErrorMessage() { @@ -187,6 +193,11 @@ buildMacros.put(name, value); } else if (buildChild.getNodeName().equals("preinclude")){ buildPrefix = attribs.getNamedItem("file").getNodeValue(); + } else if (buildChild.getNodeName().equals("targettype")){ + String targettype = attribs.getNamedItem("name").getNodeValue(); + if (targettype != null && targettype.length() > 0){ + targettypes.add(targettype); + } } } catch (Exception e) { // skip it diff -r 13355a75b65c -r ba74c19c6de3 core/com.nokia.carbide.cpp.sdk.core/src/com/nokia/carbide/cpp/internal/sdk/core/model/SBSv1BuildInfo.java --- a/core/com.nokia.carbide.cpp.sdk.core/src/com/nokia/carbide/cpp/internal/sdk/core/model/SBSv1BuildInfo.java Fri Jul 30 13:18:50 2010 -0500 +++ b/core/com.nokia.carbide.cpp.sdk.core/src/com/nokia/carbide/cpp/internal/sdk/core/model/SBSv1BuildInfo.java Mon Aug 02 10:36:48 2010 -0500 @@ -25,6 +25,7 @@ import java.util.Map; import java.util.Set; import java.util.regex.Matcher; +import java.util.regex.Pattern; import org.eclipse.core.runtime.IPath; import org.eclipse.core.runtime.Path; @@ -58,7 +59,15 @@ private List binaryVariantContextList = new ArrayList(0); private List bsfContextList = new ArrayList(0); private Map> cachedPlatformMacros = new HashMap>(); + private List supportedTargetTypesList = new ArrayList(); + + private static final String TARGETTYPE_PM_FILE = "epoc32/tools/trgtype.pm"; //$NON-NLS-1$ + public static final String VARIANT_CFG_FILE = "epoc32/tools/variant/variant.cfg"; //$NON-NLS-1$ + public static final String SPP_VARIANT_CFG_FILE = "epoc32/tools/variant/spp_variant.cfg"; //$NON-NLS-1$ + // greedy match means the filename is in the last group + public static Pattern VARIANT_HRH_LINE_PATTERN = Pattern.compile("(?i)(.*)(/|\\\\)(.*hrh)"); + public SBSv1BuildInfo(ISymbianSDK sdk) { this.sdk = sdk; } @@ -151,9 +160,9 @@ public IPath getPrefixFromVariantCfg(){ File epocRoot = new File(sdk.getEPOCROOT()); File variantCfg; - variantCfg = new File(epocRoot, SymbianSDK.SPP_VARIANT_CFG_FILE); + variantCfg = new File(epocRoot, SPP_VARIANT_CFG_FILE); if (!variantCfg.exists()) { - variantCfg = new File(epocRoot, SymbianSDK.VARIANT_CFG_FILE); + variantCfg = new File(epocRoot, VARIANT_CFG_FILE); if (!variantCfg.exists()) return null; } @@ -174,7 +183,7 @@ // parse the variant line, which is an EPOCROOT-relative // path to a bldvariant.hrh file - Matcher matcher = SymbianSDK.VARIANT_HRH_LINE_PATTERN.matcher(line); + Matcher matcher = VARIANT_HRH_LINE_PATTERN.matcher(line); if (matcher.matches()) { variantDir = matcher.group(1); variantFile = matcher.group(3); @@ -327,6 +336,93 @@ return macros; } + + // TODO: This needs to move under ISymianBuildContext. For abld we can use this method. + // For SBSv2, this is configuration dependent and the information is obtained from + // the sbs --query=config[] call. + public List getSupportedTargetTypes() { + + synchronized (supportedTargetTypesList) { + if (supportedTargetTypesList.size() > 0){ + return supportedTargetTypesList; + } + + File epocRoot = new File(sdk.getEPOCROOT()); + File targetTypePM = new File(epocRoot, TARGETTYPE_PM_FILE); + if (!targetTypePM.exists()) + return supportedTargetTypesList; + + // greedy match means the filename is in the last group + try { + char[] cbuf = new char[(int) targetTypePM.length()]; + Reader reader = new FileReader(targetTypePM); + reader.read(cbuf); + reader.close(); + String[] lines = new String(cbuf).split("\r|\r\n|\n"); + for (int i = 0; i < lines.length; i++) { + // skip comments and blank lines + String line = SymbianSDK.removeComments(lines[i]); + if (line.matches("\\s*#.*") || line.trim().length() == 0) + continue; + + // parse current line... the slitting could be done better with more efficent reg exp.... + line = line.trim(); + line = line.replaceAll(" ", ""); + if (line.endsWith("=>{")){ + String[] lineSplit = line.split("=>"); + if (lineSplit.length == 2 && Character.isLetter(lineSplit[0].charAt(0))){ + supportedTargetTypesList.add(lineSplit[0]); + } + } + } + } catch (IOException e) { + e.printStackTrace(); + } + } + return supportedTargetTypesList; + } + + @SuppressWarnings("unchecked") + public List getVariantCFGMacros(){ + + List variantCFGMacros = new ArrayList(); + File epocRoot = new File(sdk.getEPOCROOT()); + File variantCfg; + variantCfg = new File(epocRoot, SPP_VARIANT_CFG_FILE); + if (!variantCfg.exists()) { + variantCfg = new File(epocRoot, VARIANT_CFG_FILE); + if (!variantCfg.exists()) + return Collections.EMPTY_LIST; + } + + try { + char[] cbuf = new char[(int) variantCfg.length()]; + Reader reader = new FileReader(variantCfg); + reader.read(cbuf); + reader.close(); + String[] lines = new String(cbuf).split("\r\n|\r|\n"); + for (int i = 0; i < lines.length; i++) { + // skip comments and blank lines + String line = SymbianSDK.removeComments(lines[i]); + if (line.matches("\\s*#.*") || line.trim().length() == 0) + continue; + + // parse the variant line, which is an EPOCROOT-relative + // path to a bldvariant.hrh file + Matcher matcher = VARIANT_HRH_LINE_PATTERN.matcher(line); + if (matcher.matches()) { + continue; // Skip this it's the file + } else { + // all other patterns are assumed to be macro + variantCFGMacros.add(line.trim()); + } + } + } catch (IOException e) { + } + + return variantCFGMacros; + } + } diff -r 13355a75b65c -r ba74c19c6de3 core/com.nokia.carbide.cpp.sdk.core/src/com/nokia/carbide/cpp/internal/sdk/core/model/SymbianSDK.java --- a/core/com.nokia.carbide.cpp.sdk.core/src/com/nokia/carbide/cpp/internal/sdk/core/model/SymbianSDK.java Fri Jul 30 13:18:50 2010 -0500 +++ b/core/com.nokia.carbide.cpp.sdk.core/src/com/nokia/carbide/cpp/internal/sdk/core/model/SymbianSDK.java Mon Aug 02 10:36:48 2010 -0500 @@ -70,9 +70,6 @@ private static final String PATH_ID_SRCDIR = "srcDir"; //$NON-NLS-1$ private static final String RELEASE = "release"; //$NON-NLS-1$ - public static final String VARIANT_CFG_FILE = "epoc32/tools/variant/variant.cfg"; //$NON-NLS-1$ - public static final String SPP_VARIANT_CFG_FILE = "epoc32/tools/variant/spp_variant.cfg"; //$NON-NLS-1$ - private static final String TARGETTYPE_PM_FILE = "epoc32/tools/trgtype.pm"; //$NON-NLS-1$ private static final String BUILD_INFO_TXT_FILE = "epoc32/data/buildinfo.txt"; //$NON-NLS-1$ private static final String BUILD_INFO_KEYWORD = "ManufacturerSoftwareBuild"; @@ -83,15 +80,11 @@ protected DeviceType deviceEntry = null; private boolean enabled = true; private Version osVersion; - private List supportedTargetTypesList = new ArrayList(); private Map buildInfoMap = new HashMap(); private Map prefixFileMap = new HashMap(); @SuppressWarnings("rawtypes") private Set sdkFeatures = new HashSet(); - // greedy match means the filename is in the last group - public static Pattern VARIANT_HRH_LINE_PATTERN = Pattern.compile("(?i)(.*)(/|\\\\)(.*hrh)"); - public SymbianSDK(DeviceType device) { deviceEntry = device; scanSDK(); @@ -196,52 +189,6 @@ return sdkFeatures; } - // TODO: This needs to move under ISymianBuildContext. For abld we can use this method. - // For SBSv2, this is configuration dependent and the information is obtained from - // the sbs --query=config[] call. - public List getSupportedTargetTypes() { - - synchronized (supportedTargetTypesList) { - if (supportedTargetTypesList.size() > 0){ - return supportedTargetTypesList; - } - - File epocRoot = new File(getEPOCROOT()); - File targetTypePM = new File(epocRoot, TARGETTYPE_PM_FILE); - if (!targetTypePM.exists()) - return supportedTargetTypesList; - - // greedy match means the filename is in the last group - try { - char[] cbuf = new char[(int) targetTypePM.length()]; - Reader reader = new FileReader(targetTypePM); - reader.read(cbuf); - reader.close(); - String[] lines = new String(cbuf).split("\r|\r\n|\n"); - for (int i = 0; i < lines.length; i++) { - // skip comments and blank lines - String line = removeComments(lines[i]); - if (line.matches("\\s*#.*") || line.trim().length() == 0) - continue; - - // parse current line... the slitting could be done better with more efficent reg exp.... - line = line.trim(); - line = line.replaceAll(" ", ""); - if (line.endsWith("=>{")){ - String[] lineSplit = line.split("=>"); - if (lineSplit.length == 2 && Character.isLetter(lineSplit[0].charAt(0))){ - supportedTargetTypesList.add(lineSplit[0]); - } - } - } - } catch (IOException e) { - e.printStackTrace(); - } - } - - return supportedTargetTypesList; - } - public IPath getToolsPath() { String epocRoot = getEPOCROOT(); if (epocRoot.length() > 0) { @@ -263,46 +210,7 @@ return ""; } - @SuppressWarnings("unchecked") - public List getVariantCFGMacros(){ - - List variantCFGMacros = new ArrayList(); - File epocRoot = new File(getEPOCROOT()); - File variantCfg; - variantCfg = new File(epocRoot, SPP_VARIANT_CFG_FILE); - if (!variantCfg.exists()) { - variantCfg = new File(epocRoot, VARIANT_CFG_FILE); - if (!variantCfg.exists()) - return Collections.EMPTY_LIST; - } - - try { - char[] cbuf = new char[(int) variantCfg.length()]; - Reader reader = new FileReader(variantCfg); - reader.read(cbuf); - reader.close(); - String[] lines = new String(cbuf).split("\r\n|\r|\n"); - for (int i = 0; i < lines.length; i++) { - // skip comments and blank lines - String line = removeComments(lines[i]); - if (line.matches("\\s*#.*") || line.trim().length() == 0) - continue; - - // parse the variant line, which is an EPOCROOT-relative - // path to a bldvariant.hrh file - Matcher matcher = VARIANT_HRH_LINE_PATTERN.matcher(line); - if (matcher.matches()) { - continue; // Skip this it's the file - } else { - // all other patterns are assumed to be macro - variantCFGMacros.add(line.trim()); - } - } - } catch (IOException e) { - } - - return variantCFGMacros; - } + public boolean isEnabled() { if (!SDKCorePlugin.SUPPORTS_SBSV1_BUILDER && diff -r 13355a75b65c -r ba74c19c6de3 core/com.nokia.carbide.cpp.sdk.core/src/com/nokia/carbide/cpp/sdk/core/ISBSv2BuildContext.java --- a/core/com.nokia.carbide.cpp.sdk.core/src/com/nokia/carbide/cpp/sdk/core/ISBSv2BuildContext.java Fri Jul 30 13:18:50 2010 -0500 +++ b/core/com.nokia.carbide.cpp.sdk.core/src/com/nokia/carbide/cpp/sdk/core/ISBSv2BuildContext.java Mon Aug 02 10:36:48 2010 -0500 @@ -65,5 +65,11 @@ * @return */ public String getPlatformReleaseDirName(); + + /** + * Get the supported targettypes for this build configuration + * @return + */ + public List getSupportedTargettypes(); } diff -r 13355a75b65c -r ba74c19c6de3 core/com.nokia.carbide.cpp.sdk.core/src/com/nokia/carbide/cpp/sdk/core/ISBSv2ConfigQueryData.java --- a/core/com.nokia.carbide.cpp.sdk.core/src/com/nokia/carbide/cpp/sdk/core/ISBSv2ConfigQueryData.java Fri Jul 30 13:18:50 2010 -0500 +++ b/core/com.nokia.carbide.cpp.sdk.core/src/com/nokia/carbide/cpp/sdk/core/ISBSv2ConfigQueryData.java Mon Aug 02 10:36:48 2010 -0500 @@ -17,4 +17,5 @@ public List getMetaDataIncludes(); public String getMetaDataVariantHRH(); public String getOutputPathString(); + public List getTargettypes(); } diff -r 13355a75b65c -r ba74c19c6de3 core/com.nokia.carbide.cpp.sdk.core/src/com/nokia/carbide/cpp/sdk/core/ISDKBuildInfo.java --- a/core/com.nokia.carbide.cpp.sdk.core/src/com/nokia/carbide/cpp/sdk/core/ISDKBuildInfo.java Fri Jul 30 13:18:50 2010 -0500 +++ b/core/com.nokia.carbide.cpp.sdk.core/src/com/nokia/carbide/cpp/sdk/core/ISDKBuildInfo.java Mon Aug 02 10:36:48 2010 -0500 @@ -40,5 +40,5 @@ * @return A path object, or null if the variant.cfg does not exist. This routine does not check to see if the returned path exists. */ public IPath getPrefixFromVariantCfg(); - + } diff -r 13355a75b65c -r ba74c19c6de3 core/com.nokia.carbide.cpp.sdk.core/src/com/nokia/carbide/cpp/sdk/core/ISymbianSDK.java --- a/core/com.nokia.carbide.cpp.sdk.core/src/com/nokia/carbide/cpp/sdk/core/ISymbianSDK.java Fri Jul 30 13:18:50 2010 -0500 +++ b/core/com.nokia.carbide.cpp.sdk.core/src/com/nokia/carbide/cpp/sdk/core/ISymbianSDK.java Mon Aug 02 10:36:48 2010 -0500 @@ -85,14 +85,7 @@ */ @SuppressWarnings("rawtypes") Set getSupportedFeatures(); - - /** - * Get a list of supported targettypes listed by this SDK. This routine parses the - * \epoc32\tools\trgttype.pm file to build it's list. - * @return A list of targettype names that can be used in an MMP file - */ - List getSupportedTargetTypes(); - + /** * Returns an IPath for the epoc32\tools directory of a SDK. * @return an IPath for the epoc32\tools directory, or null. @@ -107,13 +100,6 @@ String getUniqueId(); /** - * Returns a list of the macros defined in the variant.cfg file. This is NOT the macros - * in the HRH file, but the actual maros written to the variant.cfg file. - * @return A String list of macros found as is, or an empty list if none. - */ - List getVariantCFGMacros(); - - /** * Returns true if the SDK is enabled, false otherwise. * * @return true if the SDK is enabled, and diff -r 13355a75b65c -r ba74c19c6de3 project/com.nokia.carbide.cpp.project.ui/src/com/nokia/carbide/cpp/internal/project/ui/mmpEditor/OverviewPage.java --- a/project/com.nokia.carbide.cpp.project.ui/src/com/nokia/carbide/cpp/internal/project/ui/mmpEditor/OverviewPage.java Fri Jul 30 13:18:50 2010 -0500 +++ b/project/com.nokia.carbide.cpp.project.ui/src/com/nokia/carbide/cpp/internal/project/ui/mmpEditor/OverviewPage.java Mon Aug 02 10:36:48 2010 -0500 @@ -21,7 +21,10 @@ import org.eclipse.jface.dialogs.IPageChangedListener; import org.eclipse.jface.dialogs.PageChangedEvent; -import org.eclipse.jface.viewers.*; +import org.eclipse.jface.viewers.ArrayContentProvider; +import org.eclipse.jface.viewers.ComboViewer; +import org.eclipse.jface.viewers.LabelProvider; +import org.eclipse.jface.viewers.ViewerSorter; import org.eclipse.swt.SWT; import org.eclipse.swt.layout.FormAttachment; import org.eclipse.swt.layout.FormData; @@ -29,7 +32,11 @@ import org.eclipse.swt.layout.GridData; import org.eclipse.swt.layout.GridLayout; import org.eclipse.swt.layout.RowLayout; -import org.eclipse.swt.widgets.*; +import org.eclipse.swt.widgets.Combo; +import org.eclipse.swt.widgets.Composite; +import org.eclipse.swt.widgets.Control; +import org.eclipse.swt.widgets.Label; +import org.eclipse.swt.widgets.Text; import org.eclipse.ui.forms.IManagedForm; import org.eclipse.ui.forms.events.HyperlinkAdapter; import org.eclipse.ui.forms.events.HyperlinkEvent; @@ -44,13 +51,18 @@ import org.osgi.framework.Version; import com.nokia.carbide.cpp.epoc.engine.model.mmp.EMMPStatement; +import com.nokia.carbide.cpp.internal.api.sdk.ISBSv1BuildInfo; import com.nokia.carbide.cpp.internal.project.ui.ProjectUIPlugin; -import com.nokia.carbide.cpp.internal.project.ui.editors.common.*; +import com.nokia.carbide.cpp.internal.project.ui.editors.common.ControlHandler; +import com.nokia.carbide.cpp.internal.project.ui.editors.common.FormUtilities; import com.nokia.carbide.cpp.internal.project.ui.mmpEditor.commands.EMMPListSelector; import com.nokia.carbide.cpp.internal.project.ui.mmpEditor.commands.EMMPStringValueSelector; +import com.nokia.carbide.cpp.sdk.core.ISBSv1BuildContext; +import com.nokia.carbide.cpp.sdk.core.ISBSv2BuildContext; +import com.nokia.carbide.cpp.sdk.core.ISymbianBuilderID; import com.nokia.carbide.cpp.sdk.core.ISymbianSDK; -import com.nokia.cpp.internal.api.utils.core.*; -import com.nokia.cpp.internal.api.utils.ui.*; +import com.nokia.cpp.internal.api.utils.core.TextUtils; +import com.nokia.cpp.internal.api.utils.ui.WorkbenchUtils; import com.nokia.cpp.internal.api.utils.ui.editor.FormEditorEditingContext; import com.swtdesigner.ResourceManager; import com.swtdesigner.SWTResourceManager; @@ -340,9 +352,18 @@ void refresh() { if (getPartControl() != null) { + ISymbianSDK sdk = editorContext.activeBuildConfig.getSDK(); List supportedTargetTypes = new ArrayList(); - List sdkTypes = sdk.getSupportedTargetTypes(); + List sdkTypes = new ArrayList(); + if (editorContext.activeBuildConfig.getBuildContext() instanceof ISBSv1BuildContext){ + ISBSv1BuildInfo sbsv1BuildInfo = ((ISBSv1BuildInfo)sdk.getBuildInfo(ISymbianBuilderID.SBSV1_BUILDER)); + sdkTypes = sbsv1BuildInfo.getSupportedTargetTypes(); + } else if (editorContext.activeBuildConfig.getBuildContext() instanceof ISBSv2BuildContext){ + ISBSv2BuildContext sbsv2BuildContext = ((ISBSv2BuildContext)editorContext.activeBuildConfig.getBuildContext()); + sdkTypes = sbsv2BuildContext.getSupportedTargettypes(); + } + // this could come back empty if a devkit is not completely installed if (sdkTypes != null) { supportedTargetTypes.addAll(sdkTypes);