merge heads
authorfturovic <frank.turovich@nokia.com>
Wed, 03 Jun 2009 14:54:51 -0500
changeset 198 bd0210e4c71e
parent 197 9a882d9560d4 (current diff)
parent 196 e58c537ddd6e (diff)
child 204 c14cf2c1fe78
child 205 2b3a45f17e6a
merge heads
debuggercdi/com.nokia.cdt.debug.cw.symbian/src/com/nokia/cdt/debug/cw/symbian/CarbideExecutableImporter.java
debuggercdi/com.nokia.cdt.debug.launch/src/com/nokia/cdt/internal/debug/launch/CarbideSourceFilesProvider.java
project/com.nokia.carbide.cpp.epoc.engine/src/com/nokia/carbide/cpp/epoc/engine/model/sbv/ESBVFlags.java
--- a/builder/com.nokia.carbide.cdt.builder.test/data/errorpatterns/sbsv2.errors.input.txt	Wed Jun 03 14:53:56 2009 -0500
+++ b/builder/com.nokia.carbide.cdt.builder.test/data/errorpatterns/sbsv2.errors.input.txt	Wed Jun 03 14:54:51 2009 -0500
@@ -5,6 +5,9 @@
 </info>
 <info>Making J:/epoc32/build/Cone/makefile.default</info>
 
+<info>Regression for bug 9091. Don't report info lines with SBSv2 error checker</info>
+<info>Could not write toolcheck cache: [Errno 2] No such file or directory: u'R:\\\\epoc32\\build\\toolcheck_cache__armv5_udeb.tmp'</info>
+
 <info>Executing 'make -r -f "J:/epoc32/build/Cone/makefile.default" -j 4
 DESCRAMBLE="C:/Symbian/SITK/sbs/bin/sbs_descramble.exe sbs2631027042"'</info>
 
--- a/builder/com.nokia.carbide.cdt.builder/src/com/nokia/carbide/cdt/builder/DefaultIncludeFileLocator.java	Wed Jun 03 14:53:56 2009 -0500
+++ b/builder/com.nokia.carbide.cdt.builder/src/com/nokia/carbide/cdt/builder/DefaultIncludeFileLocator.java	Wed Jun 03 14:54:51 2009 -0500
@@ -72,7 +72,7 @@
 					}
 				} else if (sbvPlatform != null){
 					
-					Map<IPath, String> platPaths = sbvPlatform.getBuildIncludePaths();
+					LinkedHashMap<IPath, String> platPaths = sbvPlatform.getBuildIncludePaths();
 					Set<IPath> set = platPaths.keySet();
 					for (IPath path : set) {
 						String pathType = platPaths.get(path);
--- a/builder/com.nokia.carbide.cdt.builder/src/com/nokia/carbide/cdt/internal/builder/CarbideLanguageData.java	Wed Jun 03 14:53:56 2009 -0500
+++ b/builder/com.nokia.carbide.cdt.builder/src/com/nokia/carbide/cdt/internal/builder/CarbideLanguageData.java	Wed Jun 03 14:54:51 2009 -0500
@@ -179,7 +179,7 @@
 		}
 		else if (sbvPlat != null){
 			
-			Map<IPath, String> platPaths = sbvPlat.getBuildIncludePaths();
+			LinkedHashMap<IPath, String> platPaths = sbvPlat.getBuildIncludePaths();
 			Set<IPath> set = platPaths.keySet();
 			for (IPath path : set) {
 				String pathType = platPaths.get(path);
--- a/builder/com.nokia.carbide.cdt.builder/src/com/nokia/carbide/cdt/internal/builder/CarbideSBSv1Builder.java	Wed Jun 03 14:53:56 2009 -0500
+++ b/builder/com.nokia.carbide.cdt.builder/src/com/nokia/carbide/cdt/internal/builder/CarbideSBSv1Builder.java	Wed Jun 03 14:54:51 2009 -0500
@@ -1190,10 +1190,20 @@
 
 			// run abld build platform for each component
 			for (IPath path : normalMakMakePaths) {
-
+				
+				String buildPlatform = "";
+				if ( buildConfig.getPlatformString().startsWith(ISymbianBuildContext.ARMV5_PLATFORM) &&
+					 EpocEngineHelper.hasFeatureVariantKeyword(buildConfig.getCarbideProject(), path)) {
+					
+					buildPlatform = buildConfig.getPlatformString().toLowerCase();
+					
+				} else {
+					buildPlatform = buildConfig.getBasePlatformForVariation().toLowerCase();
+				}
+				
 				List<String> argsList = new ArrayList<String>();
 				argsList.add(BUILD_CMD);
-				argsList.add(buildConfig.getPlatformString().toLowerCase());
+				argsList.add(buildPlatform);
 				argsList.add(buildConfig.getTargetString().toLowerCase());
 				argsList.add(path.removeFileExtension().lastSegment());
 				
@@ -1212,11 +1222,21 @@
 
 			// run abld build platform target for each test component
 			for (IPath path : testMakMakePaths) {
-
+				
+				String buildPlatform = "";
+				if ( buildConfig.getPlatformString().startsWith(ISymbianBuildContext.ARMV5_PLATFORM) &&
+					 EpocEngineHelper.hasFeatureVariantKeyword(buildConfig.getCarbideProject(), path)) {
+					
+					buildPlatform = buildConfig.getPlatformString().toLowerCase();
+					
+				} else {
+					buildPlatform = buildConfig.getBasePlatformForVariation().toLowerCase();
+				}
+				
 				List<String> argsList = new ArrayList<String>();
 				argsList.add(TEST_CMD);
 				argsList.add(BUILD_CMD);
-				argsList.add(buildConfig.getPlatformString().toLowerCase());
+				argsList.add(buildPlatform);
 				argsList.add(buildConfig.getTargetString().toLowerCase());
 				argsList.add(path.removeFileExtension().lastSegment());
 				
@@ -1716,10 +1736,20 @@
 
 			// run abld clean/reallyclean for each component
 			for (IPath path : normalMakMakePaths) {
-
+				
+				String buildPlatform = "";
+				if ( buildConfig.getPlatformString().startsWith(ISymbianBuildContext.ARMV5_PLATFORM) &&
+					 EpocEngineHelper.hasFeatureVariantKeyword(buildConfig.getCarbideProject(), path)) {
+					
+					buildPlatform = buildConfig.getPlatformString().toLowerCase();
+					
+				} else {
+					buildPlatform = buildConfig.getBasePlatformForVariation().toLowerCase();
+				}
+				
 				List<String> argsList = new ArrayList<String>();
 				argsList.add(abldCleanCmd);
-				argsList.add(buildConfig.getPlatformString().toLowerCase());
+				argsList.add(buildPlatform);
 				argsList.add(buildConfig.getTargetString().toLowerCase());
 				argsList.add(path.removeFileExtension().lastSegment());
 				
@@ -1881,10 +1911,20 @@
 
 			// run abld freeze for each component
 			for (IPath path : normalMakMakePaths) {
-
+				
+				String buildPlatform = "";
+				if ( buildConfig.getPlatformString().startsWith(ISymbianBuildContext.ARMV5_PLATFORM) &&
+					 EpocEngineHelper.hasFeatureVariantKeyword(buildConfig.getCarbideProject(), path)) {
+					
+					buildPlatform = buildConfig.getPlatformString().toLowerCase();
+					
+				} else {
+					buildPlatform = buildConfig.getBasePlatformForVariation().toLowerCase();
+				}
+				
 				List<String> argsList = new ArrayList<String>();
 				argsList.add(FREEZE_CMD);
-				argsList.add(buildConfig.getPlatformString().toLowerCase());
+				argsList.add(buildPlatform);
 				argsList.add(path.removeFileExtension().lastSegment());
 				
 				for (String arg : buildConfig.getBuildArgumentsInfo().getAbldFreezeArgs().split(" ")) {
@@ -2351,8 +2391,16 @@
 				abldArgs.add(TEST_CMD); //$NON-NLS-1$
 			}
 			
+			String buildPlatform = "";
+			if ( config.getPlatformString().startsWith(ISymbianBuildContext.ARMV5_PLATFORM) &&
+					 EpocEngineHelper.hasFeatureVariantKeyword(config.getCarbideProject(), componentPath)){
+				buildPlatform = config.getPlatformString().toLowerCase();
+			} else {
+				buildPlatform = config.getBasePlatformForVariation().toLowerCase();
+			}
+			
 			abldArgs.add(MAKEFILE_CMD); //$NON-NLS-1$
-			abldArgs.add(config.getPlatformString().toLowerCase());
+			abldArgs.add(buildPlatform);
 			abldArgs.add(componentPath.removeFileExtension().lastSegment());
 			
 			for (String arg : config.getBuildArgumentsInfo().getAbldMakefileArgs().split(" ")) {
@@ -2780,6 +2828,9 @@
 				int firstInclude = rcompCmd.indexOf("-I");
 				int dashU = rcompCmd.lastIndexOf("-u");
 				int dashO = rcompCmd.lastIndexOf("-o$@");
+				if (dashO < 0){
+					dashO = rcompCmd.lastIndexOf("-o\"$@\"");
+				}
 				if (firstInclude < 0 || dashU < 0 || dashO < 0) {
 					throw new CoreException(new Status(IStatus.ERROR, CarbideBuilderPlugin.PLUGIN_ID, 0, "Failed trying to build cpp command", null)); //$NON-NLS-1$
 				}
@@ -2862,7 +2913,7 @@
 					// cleanup the __PRODUCT_INCLUDE__ macro if necessary
 					macros = macros.replaceFirst("\\\\\"", "\"<" + makefilePath.getDevice());
 					macros = macros.replaceFirst("\\\\\"", ">\"");
-					macros = macros.replaceAll("\\\\", "\\\\\\\\");
+					macros = macros.replaceAll("\\\\", "/");
 
 					newRule = newRule.replaceFirst("-u ", macros);
 				}
--- a/builder/com.nokia.carbide.cdt.builder/src/com/nokia/carbide/cdt/internal/builder/error/parsers/SBSv2ErrorParser.java	Wed Jun 03 14:53:56 2009 -0500
+++ b/builder/com.nokia.carbide.cdt.builder/src/com/nokia/carbide/cdt/internal/builder/error/parsers/SBSv2ErrorParser.java	Wed Jun 03 14:54:51 2009 -0500
@@ -26,6 +26,7 @@
 
 	private static final Pattern warningPattern = Pattern.compile("<warning>(.*)</warning>"); //$NON-NLS-1$
 	private static final Pattern errorPattern = Pattern.compile("<error>(.*)</error>"); //$NON-NLS-1$
+	private static final Pattern infoPattern = Pattern.compile("<info>(.*)</info>"); //$NON-NLS-1$
 
 	public SBSv2ErrorParser() {
 	}
@@ -34,7 +35,11 @@
 
 		initialise();
 		
-		Matcher matcher = warningPattern.matcher(line);
+		Matcher matcher = infoPattern.matcher(line);
+		if (matcher.matches()) {
+			return true; // just ignore info messages
+		}
+		matcher = warningPattern.matcher(line);
 		if (matcher.matches()) {
 			// strip the tags
 			String text = line.substring("<warning>".length(), line.length() - "</warning>".length()); //$NON-NLS-1$ //$NON-NLS-2$
--- a/core/com.nokia.carbide.cpp.doc.user/plugin.xml	Wed Jun 03 14:53:56 2009 -0500
+++ b/core/com.nokia.carbide.cpp.doc.user/plugin.xml	Wed Jun 03 14:54:51 2009 -0500
@@ -50,11 +50,11 @@
 		   category="com.nokia.carbide.trk.cheatsheets"
            contentFile="html/cheatsheets/install_remote_agent.xml"
            id="com.nokia.carbide.cpp.doc.user.install_remote_agent"
-           name="Installing Remote Agents"/>
+           name="Downloading and Installing Remote Agents"/>
 
 		 <cheatsheet
 		   category="com.nokia.carbide.trk.cheatsheets"
-           contentFile="html/cheatsheets/trk_appTrk_Using_cs.xml"
+           contentFile="html/cheatsheets/run_mode_cs.xml"
            id="com.nokia.carbide.cpp.doc.user.trk_appTRK_Using"
            name="Run Mode On-Device Debugging"/>
 	   
@@ -102,32 +102,7 @@
 
 
    </extension>
-
-   <!-- TRK cheatsheets extension -->
-   <!-- replaced by newer cheatsheet
-   <extension
-         point="org.eclipse.ui.cheatsheets.cheatSheetContent">
-          <category
-            id="com.nokia.carbide.trk.cheatsheets"
-            name="Carbide.c++ On-device Debugging"/>
-
-
-          <cheatsheet
-            category="com.nokia.carbide.trk.cheatsheets"
-            contentFile="html/cheatsheets/trk_setup_cs.xml"
-            id="com.nokia.carbide.cpp.doc.user.trk_setup"
-            name="On-device Debugging Setup" />
-
-	   	  <cheatsheet
-            category="com.nokia.carbide.trk.cheatsheets"
-			composite="true"
-            contentFile="html/cheatsheets/trk_appTrk_Using_cs.xml"
-            id="com.nokia.carbide.cpp.doc.user.trk_appTRK_Using"
-            name="Run Mode On-device Application Debugging" />
-
-	</extension>
-  -->
-
+	-->
 	
 <!-- =================================================================================== -->
 <!-- CONTEXT IDs for CONTEXTUAL HELP in windows, dialogs, and views                      -->
--- a/core/com.nokia.carbide.cpp.sdk.core.test/src/com/nokia/carbide/cpp/sdk/core/test/SBVCatalogTest.java	Wed Jun 03 14:53:56 2009 -0500
+++ b/core/com.nokia.carbide.cpp.sdk.core.test/src/com/nokia/carbide/cpp/sdk/core/test/SBVCatalogTest.java	Wed Jun 03 14:54:51 2009 -0500
@@ -18,8 +18,7 @@
 package com.nokia.carbide.cpp.sdk.core.test;
 
 import java.net.URL;
-import java.util.Map;
-import java.util.Set;
+import java.util.*;
 
 import junit.framework.TestCase;
 
@@ -106,12 +105,38 @@
 		platform = catalog.findPlatform("wilma88");
 		assertNull(platform);
 		
+	}	
+	
+	/**
+	 * Test the number and order of build include paths
+	 * @throws Exception
+	 */
+	public void testBuildIncludePaths() throws Exception {
+		setupForSDK(new Path("Data/var/group1"));
+		ISBVPlatform[] platforms = catalog.getPlatforms();
+		assertEquals(7, platforms.length);
+		
+		ISBVPlatform platform;
+		
 		// test build include paths
 		platform = catalog.findPlatform("dino79");
 		assertNotNull(platform);
 		assertEquals(4, platform.getBuildIncludePaths().size());
 		
-		Map<IPath, String> systemPaths = platform.getBuildIncludePaths();
+		LinkedHashMap<IPath, String> systemPaths = platform.getBuildIncludePaths();
+
+		Set<IPath> pathSet = systemPaths.keySet();
+		Object[] paths = pathSet.toArray();
+		IPath p;
+		p = (IPath)paths[0];
+		assertTrue("Variant build include Paths possibly in wrong order", p.toPortableString().contains("epoc32/include/config/flintstone500/dino79"));
+		p = (IPath)paths[1];
+		assertTrue("Variant build include Paths possibly in wrong order", p.toPortableString().contains("/epoc32/include/config/flintstone500"));
+		p = (IPath)paths[2];
+		assertTrue("Variant build include Paths possibly in wrong order", p.toPortableString().contains("/epoc32/include/config"));
+		p = (IPath)paths[3];
+		assertTrue("Variant build include Paths possibly in wrong order", p.toPortableString().contains("/epoc32/include"));
+		
 		Set<IPath> set = systemPaths.keySet();
 		for (IPath path : set) {
 			String pathType = systemPaths.get(path);
@@ -121,7 +146,8 @@
 		
 		assertEquals(16, platform.getROMBuildIncludePaths().size());
 		
-	}	
+		
+	}
 	
 	/**
 	 * @param built
--- a/core/com.nokia.carbide.cpp.sdk.core/src/com/nokia/carbide/cpp/internal/api/sdk/SymbianBuildContext.java	Wed Jun 03 14:53:56 2009 -0500
+++ b/core/com.nokia.carbide.cpp.sdk.core/src/com/nokia/carbide/cpp/internal/api/sdk/SymbianBuildContext.java	Wed Jun 03 14:54:51 2009 -0500
@@ -383,7 +383,7 @@
 							systemPaths.add(path.toFile());
 						}
 					} else if (sbvPlat != null) {
-						Map<IPath, String> platPaths = sbvPlat.getBuildIncludePaths();
+						LinkedHashMap<IPath, String> platPaths = sbvPlat.getBuildIncludePaths();
 						Set<IPath> set = platPaths.keySet();
 						for (IPath path : set) {
 							String pathType = platPaths.get(path);
--- a/core/com.nokia.carbide.cpp.sdk.core/src/com/nokia/carbide/cpp/internal/sdk/core/model/SBVPlatform.java	Wed Jun 03 14:53:56 2009 -0500
+++ b/core/com.nokia.carbide.cpp.sdk.core/src/com/nokia/carbide/cpp/internal/sdk/core/model/SBVPlatform.java	Wed Jun 03 14:54:51 2009 -0500
@@ -197,9 +197,9 @@
 		
 	}
 	
-	protected Map<IPath, String> getBuildIncludePathsFromParents(){
+	protected LinkedHashMap<IPath, String> getBuildIncludePathsFromParents(){
 		
-		Map<IPath, String> parentBuildIncludes = new HashMap<IPath, String>();
+		LinkedHashMap<IPath, String> parentBuildIncludes = new LinkedHashMap<IPath, String>();
 		
 		ISBVPlatform platform = getExtendedVariant();
 		ISBVPlatform prevPlat;
@@ -255,9 +255,9 @@
 		return sdkIncludePath.toOSString();
 	}
 	
-	public Map<IPath, String> getBuildIncludePaths(){
+	public LinkedHashMap<IPath, String> getBuildIncludePaths(){
 		
-		Map<IPath, String> fullPathMap = new HashMap<IPath, String>();
+		LinkedHashMap<IPath, String> fullPathMap = new LinkedHashMap<IPath, String>();
 		
 		fullPathMap.putAll(systemBuildIncludePaths);
 		fullPathMap.putAll(getBuildIncludePathsFromParents());
@@ -265,8 +265,8 @@
 		return fullPathMap;
 	}
 	
-	public Map<IPath, String> getROMBuildIncludePaths(){
-		Map<IPath, String> fullPathMap = new HashMap<IPath, String>();
+	public LinkedHashMap<IPath, String> getROMBuildIncludePaths(){
+		LinkedHashMap<IPath, String> fullPathMap = new LinkedHashMap<IPath, String>();
 		
 		fullPathMap.putAll(romBuildIncludePaths);
 		fullPathMap.putAll(getROMBuildIncludePathsFromParents());
--- a/core/com.nokia.carbide.cpp.sdk.core/src/com/nokia/carbide/cpp/internal/sdk/core/model/SymbianSDK.java	Wed Jun 03 14:53:56 2009 -0500
+++ b/core/com.nokia.carbide.cpp.sdk.core/src/com/nokia/carbide/cpp/internal/sdk/core/model/SymbianSDK.java	Wed Jun 03 14:54:51 2009 -0500
@@ -1156,7 +1156,7 @@
 	}
 	
 	public boolean isEKA1() {
-		return !isEKA2();
+		return !isEKA2() && getOSVersion().getMajor() < 9 && getOSVersion().getMajor() >= 6;
 	}
 	
 	public boolean isEKA2() {
--- a/core/com.nokia.carbide.cpp.sdk.core/src/com/nokia/carbide/cpp/sdk/core/ISBVPlatform.java	Wed Jun 03 14:53:56 2009 -0500
+++ b/core/com.nokia.carbide.cpp.sdk.core/src/com/nokia/carbide/cpp/sdk/core/ISBVPlatform.java	Wed Jun 03 14:54:51 2009 -0500
@@ -12,12 +12,12 @@
 */
 package com.nokia.carbide.cpp.sdk.core;
 
-import java.util.List;
-import java.util.Map;
+import java.util.LinkedHashMap;
 
 import org.eclipse.core.runtime.IPath;
 
 import com.nokia.carbide.cpp.epoc.engine.EpocEnginePlugin;
+import com.nokia.carbide.cpp.epoc.engine.model.sbv.ISBVView;
 
 /**
  * This interface defines a single Symbian Binary Variation (SBV) platform.
@@ -81,12 +81,12 @@
 	 * The MAP of BUILD_INCLUDE paths from the variant and all it's parents
 	 * @return Map of IPaths and the operation to perform (set, prepend, append)
 	 */
-	Map<IPath, String> getBuildIncludePaths();
+	LinkedHashMap<IPath, String> getBuildIncludePaths();
 	
 	/**
 	 * The MAP of ROM_INCLUDE paths from the variant and all it's parents
 	 * @return list of paths
 	 */
-	Map<IPath, String> getROMBuildIncludePaths();
+	LinkedHashMap<IPath, String> getROMBuildIncludePaths();
 	
 }
--- a/core/com.nokia.carbide.cpp/src/com/nokia/carbide/cpp/logging/LoggingPreferencesPage.java	Wed Jun 03 14:53:56 2009 -0500
+++ b/core/com.nokia.carbide.cpp/src/com/nokia/carbide/cpp/logging/LoggingPreferencesPage.java	Wed Jun 03 14:54:51 2009 -0500
@@ -18,11 +18,14 @@
 
 import java.io.File;
 import java.io.IOException;
+import java.util.*;
 import java.util.logging.Level;
 import java.util.logging.Logger;
 
 import org.eclipse.core.filesystem.EFS;
 import org.eclipse.core.filesystem.IFileStore;
+import org.eclipse.core.resources.ResourcesPlugin;
+import org.eclipse.core.runtime.IPath;
 import org.eclipse.core.runtime.Path;
 import org.eclipse.jface.preference.PreferencePage;
 import org.eclipse.jface.viewers.CheckStateChangedEvent;
@@ -58,6 +61,8 @@
 
 public class LoggingPreferencesPage extends PreferencePage implements IWorkbenchPreferencePage {
 
+	public static final String REFRESH_LOG_ITEM = "Refresh Log";
+
 	class TreeContentProvider implements IStructuredContentProvider, ITreeContentProvider {
 		public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
 		}
@@ -66,7 +71,10 @@
 		}
 
 		public Object[] getElements(Object inputElement) {
-			return DiagnosticLogManager.getDiagnosticLogManager().getLogGroups();
+			Collection<Object> elements = new ArrayList<Object>();
+			elements.addAll(Arrays.asList(DiagnosticLogManager.getDiagnosticLogManager().getLogGroups()));
+			elements.add(REFRESH_LOG_ITEM);
+			return elements.toArray();
 		}
 
 		public Object[] getChildren(Object parentElement) {
@@ -198,6 +206,10 @@
 				DiagnosticLog log = (DiagnosticLog) element;
 				enableLog(log, event.getChecked());
 			}
+			else if (element.equals(REFRESH_LOG_ITEM)) {
+				String prefId = ResourcesPlugin.PI_RESOURCES + ".refresh.log";
+				ResourcesPlugin.getPlugin().getPluginPreferences().setValue(prefId, event.getChecked());
+			}
 		updateGroupsCheckedState();
 	}
 
@@ -228,6 +240,12 @@
 					logPath.setText(log.getFile().getCanonicalPath());
 				} catch (IOException e) { e.printStackTrace(); }
 			}					
+			else if (firstElement.equals(REFRESH_LOG_ITEM)) {
+				IPath path = ResourcesPlugin.getWorkspace().getRoot().getLocation().append("refresh.log");
+				try {
+					logPath.setText(path.toFile().getCanonicalPath());
+				} catch (IOException e) {e.printStackTrace(); }
+			}
 		}
 		
 	}
@@ -251,7 +269,15 @@
 								IDE.openEditorOnFileStore(activePage, fileStore);
 							} catch (PartInitException e) { e.printStackTrace(); }							
 							}
-					}										
+					}
+					else if (object.equals(REFRESH_LOG_ITEM)) {
+						IPath path = ResourcesPlugin.getWorkspace().getRoot().getLocation().append("refresh.log");
+						File f = path.toFile();
+						IFileStore fileStore= EFS.getLocalFileSystem().getStore(Path.fromOSString(f.getAbsolutePath()));
+						try {
+							IDE.openEditorOnFileStore(activePage, fileStore);
+						} catch (PartInitException e) { e.printStackTrace(); }							
+					}
 				}
 				
 			}					
@@ -272,7 +298,9 @@
 			checkboxTreeViewer.setChecked(logGroup, allChecked);
 			checkboxTreeViewer.setGrayed(logGroup, anyChecked && !allChecked);
 		}
-		
+		String prefId = ResourcesPlugin.PI_RESOURCES + ".refresh.log";
+		boolean prefState = ResourcesPlugin.getPlugin().getPluginPreferences().getBoolean(prefId);
+		checkboxTreeViewer.setChecked(REFRESH_LOG_ITEM, prefState);
 	}
 
 	protected void mailLogs() {
--- a/debuggercdi/com.nokia.cdt.debug.cw.symbian/plugin.xml	Wed Jun 03 14:53:56 2009 -0500
+++ b/debuggercdi/com.nokia.cdt.debug.cw.symbian/plugin.xml	Wed Jun 03 14:54:51 2009 -0500
@@ -183,5 +183,21 @@
          </action>
       </viewerContribution>
    </extension>   
-    
+
+   <!-- *************** Executables manager extensions **************** -->
+   <extension
+       point="org.eclipse.cdt.debug.core.ExecutablesProvider">
+      <provider class="com.nokia.cdt.debug.cw.symbian.CarbideExecutablesProvider"/>
+   </extension>
+
+   <extension
+       point="org.eclipse.cdt.debug.core.SourceFilesProvider">
+      <provider class="com.nokia.cdt.debug.cw.symbian.ui.executables.CarbideSourceFilesProvider"/>
+   </extension>
+
+   <extension
+       point="org.eclipse.cdt.debug.core.SourceRemappingProvider">
+      <provider class="com.nokia.cdt.debug.cw.symbian.ui.executables.SymbianSourceFileRemapping"/>
+   </extension>
+
 </plugin>
--- a/debuggercdi/com.nokia.cdt.debug.cw.symbian/src/com/nokia/cdt/debug/cw/symbian/CarbideExecutableImporter.java	Wed Jun 03 14:53:56 2009 -0500
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,44 +0,0 @@
-/*
-* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). 
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of the License "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description: 
-*
-*/
-
-package com.nokia.cdt.debug.cw.symbian;
-
-import org.eclipse.cdt.debug.core.executables.StandardExecutableImporter;
-import org.eclipse.core.runtime.IPath;
-
-public class CarbideExecutableImporter extends StandardExecutableImporter {
-
-	private CarbideExecutablesProvider exeProvider;
-
-	public CarbideExecutableImporter(CarbideExecutablesProvider provider ) {
-		exeProvider = provider;
-	}
-
-	@Override
-	public boolean AllowImport(IPath path) {
-		if ( super.AllowImport(path) )
-		{
-			 return (!exeProvider.executableExists(path));			
-		}
-		return false;
-	}
-
-	public int getPriority(String[] fileNames) {
-		return HIGH_PRIORITY;
-	}
-
-}
--- a/debuggercdi/com.nokia.cdt.debug.cw.symbian/src/com/nokia/cdt/debug/cw/symbian/CarbideExecutablesProvider.java	Wed Jun 03 14:53:56 2009 -0500
+++ b/debuggercdi/com.nokia.cdt.debug.cw.symbian/src/com/nokia/cdt/debug/cw/symbian/CarbideExecutablesProvider.java	Wed Jun 03 14:54:51 2009 -0500
@@ -21,139 +21,80 @@
 import java.util.ArrayList;
 import java.util.List;
 
+import org.eclipse.cdt.core.CCProjectNature;
+import org.eclipse.cdt.core.CProjectNature;
 import org.eclipse.cdt.debug.core.executables.Executable;
-import org.eclipse.cdt.debug.core.executables.ExecutablesManager;
-import org.eclipse.cdt.debug.core.executables.StandardExecutableProvider;
+import org.eclipse.cdt.debug.core.executables.IProjectExecutablesProvider;
 import org.eclipse.core.resources.IProject;
-import org.eclipse.core.resources.IWorkspaceRoot;
-import org.eclipse.core.resources.ResourcesPlugin;
 import org.eclipse.core.runtime.IPath;
 import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.core.runtime.IStatus;
 import org.eclipse.core.runtime.Path;
-import org.eclipse.core.runtime.jobs.IJobChangeEvent;
-import org.eclipse.core.runtime.jobs.IJobChangeListener;
-import org.eclipse.core.runtime.jobs.Job;
+import org.eclipse.core.runtime.Status;
+import org.eclipse.core.runtime.SubMonitor;
 
 import com.nokia.carbide.cdt.builder.CarbideBuilderPlugin;
 import com.nokia.carbide.cdt.builder.EpocEngineHelper;
-import com.nokia.carbide.cdt.builder.project.ICarbideBuildConfiguration;
 import com.nokia.carbide.cdt.builder.project.ICarbideProjectInfo;
 
-public class CarbideExecutablesProvider extends StandardExecutableProvider implements IJobChangeListener {
+public class CarbideExecutablesProvider implements IProjectExecutablesProvider {
 
-	private ArrayList<Executable> executables = new ArrayList<Executable>();
-	private ArrayList<Executable> activeExecutables = new ArrayList<Executable>();
+	List<String> supportedNatureIds = new ArrayList<String>();
 
 	public CarbideExecutablesProvider() {
-		super();
-		Job.getJobManager().addJobChangeListener(this);		
-	}
-
-	public int getPriority() {
-		return HIGH_PRIORITY;
+		supportedNatureIds.add(CProjectNature.C_NATURE_ID);
+		supportedNatureIds.add(CCProjectNature.CC_NATURE_ID);
+		supportedNatureIds.add(CarbideBuilderPlugin.CARBIDE_PROJECT_NATURE_ID);
+		supportedNatureIds.add(CarbideBuilderPlugin.CARBIDE_SBSV2_PROJECT_NATURE_ID);
 	}
-
-	public boolean executableExists(IPath exePath) {
-		for (Executable executable : executables) {
-			if (executable.getPath().equals(exePath))
-				return true;
-		}
-		return false;
+	
+	public List<String> getProjectNatures() {
+		return supportedNatureIds;
 	}
 
-	public Executable[] getExecutables(IProgressMonitor monitor) {
+	public List<Executable> getExecutables(IProject project, IProgressMonitor monitor) {
+		List<Executable> executables = new ArrayList<Executable>();
 
-		synchronized (executables) {
-			executables.clear();
-			activeExecutables.clear();
-			
-			IWorkspaceRoot root = ResourcesPlugin.getWorkspace().getRoot();
-			IProject[] projects = root.getProjects();
+		if (CarbideBuilderPlugin.getBuildManager().isCarbideProject(project)) {
+			ICarbideProjectInfo cpi = CarbideBuilderPlugin.getBuildManager().getProjectInfo(project);
+			if (cpi != null) {
+				List<IPath> mmps = EpocEngineHelper.getMMPFilesForBuildConfiguration(cpi.getDefaultConfiguration());
 
-			monitor.beginTask("Checking Carbide Projects", projects.length);
-
-			for (IProject project : projects) {
-
-				if (monitor.isCanceled())
-					break;
+				SubMonitor progress = SubMonitor.convert(monitor, mmps.size());
 
-				try {
-					if (CarbideBuilderPlugin.getBuildManager().isCarbideProject(project)) {
-						ICarbideProjectInfo cpi = CarbideBuilderPlugin.getBuildManager().getProjectInfo(project);
-						if (cpi != null) {
-							ICarbideBuildConfiguration defaultConfig = cpi.getDefaultConfiguration();
-							List<ICarbideBuildConfiguration> buildConfigList = cpi.getBuildConfigurations();
-							for (ICarbideBuildConfiguration currConfig : buildConfigList) {
-								if (monitor.isCanceled())
-									break;
+				for (IPath mmp : mmps) {
+					if (progress.isCanceled()) {
+						break;
+					}
+					
+					progress.subTask("Parsing " + mmp.lastSegment());
 
-								for (IPath mmp : EpocEngineHelper.getMMPFilesForBuildConfiguration(currConfig)) {
-									if (monitor.isCanceled())
-										break;
-
-									IPath hp = EpocEngineHelper.getHostPathForExecutable(currConfig, mmp);
-									if (hp != null) {
-										File hpFile = hp.toFile();
-										if (hpFile.exists())
-										{
-											Executable exe = new Executable(new Path(hpFile.getCanonicalPath()), project, null);
-											executables.add(exe);
-											if (currConfig == defaultConfig)
-												activeExecutables.add(exe);										
-										}
-									}
-								}
+ 					IPath hp = EpocEngineHelper.getHostPathForExecutable(cpi.getDefaultConfiguration(), mmp);
+					if (hp != null) {
+						File hpFile = hp.toFile();
+						if (hpFile.exists()) {
+							try {
+								Executable exe = new Executable(new Path(hpFile.getCanonicalPath()), project, null);
+								executables.add(exe);
+							} catch (Exception e) {
 							}
 						}
-
 					}
-				} catch (Exception e) {
-					e.printStackTrace();
-				}
-				monitor.worked(1);
-			}
-
-			monitor.done();
-		}
-		return activeExecutables.toArray(new Executable[activeExecutables.size()]);
-	}
-
-	public void aboutToRun(IJobChangeEvent event) {}
-
-	public void awake(IJobChangeEvent event) {}
-
-	/**
-	 * This is the lower case name of the build job for "Build Target Only". This is used here to avoid
-	 * having a reference to com.nokia.cdt.carbide.builder.utils.
-	 * @see com.nokia.carbide.cdt.build.utils.popup.actions.AbldCommandAction#runAbldActionOnProject(...)
-	 */
-	private static final String BUILD_TARGET_ONLY_JOB_NAME_LOWER = "performing targeted build for configuration";
-	
-	/**
-	 * This is the lower case name of the build job for "Build Symbian Component". This is used here to avoid
-	 * having a reference to com.nokia.cdt.carbide.builder.utils.
-	 * @see com.nokia.carbide.cdt.build.utils.popup.actions.AbldCommandAction#doBuildSingleMMPComponent(...)
-	 */
-	private static final String BUILD_SYMBIAN_COMPONENT_JOB_NAME_LOWER = "building selected component";
-
-	private static final String BUILD_ALL_CONFIGURATIONS_JOB_NAME_LOWER = "building all configurations for project";
-
-	public void done(IJobChangeEvent event) {
-
-		if (event.getJob().belongsTo(ResourcesPlugin.FAMILY_MANUAL_BUILD) ||
-				event.getJob().getName().toLowerCase().startsWith(BUILD_TARGET_ONLY_JOB_NAME_LOWER) ||
-				event.getJob().getName().toLowerCase().startsWith(BUILD_ALL_CONFIGURATIONS_JOB_NAME_LOWER) ||
-				event.getJob().getName().toLowerCase().startsWith(BUILD_SYMBIAN_COMPONENT_JOB_NAME_LOWER)) {
-				{
-					ExecutablesManager.getExecutablesManager().scheduleRefresh(this, 1000);
+					
+					progress.worked(1);
 				}
 			}
 		}
-
-	public void running(IJobChangeEvent event) {}
+		
+		return executables;
+	}
 
-	public void scheduled(IJobChangeEvent event) {}
-
-	public void sleeping(IJobChangeEvent event) {}
-
+	public IStatus removeExecutable(Executable executable, IProgressMonitor monitor) {
+		try {
+			executable.getPath().toFile().delete();
+		} catch (Exception e) {
+			return new Status(IStatus.WARNING, SymbianPlugin.PLUGIN_ID, "An error occured trying to delete " + executable.getPath().toOSString());
+		}
+		return Status.OK_STATUS;
+	}
 }
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/debuggercdi/com.nokia.cdt.debug.cw.symbian/src/com/nokia/cdt/debug/cw/symbian/ui/executables/CarbideSourceFilesProvider.java	Wed Jun 03 14:54:51 2009 -0500
@@ -0,0 +1,45 @@
+/*
+* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of the License "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: 
+*
+*/
+package com.nokia.cdt.debug.cw.symbian.ui.executables;
+
+import java.util.ArrayList;
+
+import org.eclipse.cdt.debug.core.executables.Executable;
+import org.eclipse.cdt.debug.core.executables.ISourceFilesProvider;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.core.runtime.PlatformObject;
+
+import com.nokia.cdt.debug.cw.symbian.symbolreader.ISymbolFile;
+import com.nokia.cdt.debug.cw.symbian.symbolreader.SymbolReaderManager;
+
+public class CarbideSourceFilesProvider extends PlatformObject implements
+		ISourceFilesProvider {
+
+	public String[] getSourceFiles(Executable executable,
+			IProgressMonitor monitor) {	
+		ArrayList<String> sourceFiles = new ArrayList<String>();
+		ISymbolFile symFile = SymbolReaderManager.getSymbolReaderManager().openSymbolFile(executable.getPath().toOSString());
+		String[] sourceArray = symFile.getSourceFiles();
+		symFile.close();
+		return sourceArray;
+	}
+
+	public int getPriority(Executable executable) {
+		return ISourceFilesProvider.HIGH_PRIORITY;
+	}
+
+}
--- a/debuggercdi/com.nokia.cdt.debug.launch/src/com/nokia/cdt/internal/debug/launch/CarbideSourceFilesProvider.java	Wed Jun 03 14:53:56 2009 -0500
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,45 +0,0 @@
-/*
-* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of the License "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description: 
-*
-*/
-package com.nokia.cdt.internal.debug.launch;
-
-import java.util.ArrayList;
-
-import org.eclipse.cdt.debug.core.executables.Executable;
-import org.eclipse.cdt.debug.core.executables.ISourceFilesProvider;
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.core.runtime.PlatformObject;
-
-import com.nokia.cdt.debug.cw.symbian.symbolreader.ISymbolFile;
-import com.nokia.cdt.debug.cw.symbian.symbolreader.SymbolReaderManager;
-
-public class CarbideSourceFilesProvider extends PlatformObject implements
-		ISourceFilesProvider {
-
-	public String[] getSourceFiles(Executable executable,
-			IProgressMonitor monitor) {	
-		ArrayList<String> sourceFiles = new ArrayList<String>();
-		ISymbolFile symFile = SymbolReaderManager.getSymbolReaderManager().openSymbolFile(executable.getPath().toOSString());
-		String[] sourceArray = symFile.getSourceFiles();
-		symFile.close();
-		return sourceArray;
-	}
-
-	public int getPriority(Executable executable) {
-		return ISourceFilesProvider.HIGH_PRIORITY;
-	}
-
-}
--- a/debuggercdi/com.nokia.cdt.debug.launch/src/com/nokia/cdt/internal/debug/launch/LaunchPlugin.java	Wed Jun 03 14:53:56 2009 -0500
+++ b/debuggercdi/com.nokia.cdt.debug.launch/src/com/nokia/cdt/internal/debug/launch/LaunchPlugin.java	Wed Jun 03 14:54:51 2009 -0500
@@ -21,7 +21,6 @@
 import org.eclipse.cdt.core.model.*;
 import org.eclipse.cdt.debug.core.ICDTLaunchConfigurationConstants;
 import org.eclipse.cdt.debug.core.executables.Executable;
-import org.eclipse.cdt.debug.core.executables.ExecutablesManager;
 import org.eclipse.cdt.ui.CUIPlugin;
 import org.eclipse.core.resources.IProject;
 import org.eclipse.core.runtime.*;
@@ -46,10 +45,8 @@
 import com.nokia.carbide.cdt.builder.project.ICarbideProjectInfo;
 import com.nokia.carbide.cpp.sdk.core.ISymbianBuildContext;
 import com.nokia.carbide.remoteconnections.RemoteConnectionsActivator;
-import com.nokia.carbide.remoteconnections.interfaces.IConnectionTypeProvider;
 import com.nokia.carbide.remoteconnections.interfaces.IService;
 import com.nokia.cdt.debug.cw.symbian.*;
-import com.nokia.cdt.debug.cw.symbian.ui.executables.SymbianSourceFileRemapping;
 import com.nokia.cdt.internal.debug.launch.wizard.LaunchCreationWizard;
 import com.nokia.cpp.internal.api.utils.core.Logging;
 
@@ -435,15 +432,6 @@
 			@Override
 			public IStatus runInUIThread(IProgressMonitor monitor) {
 				listenForVariablesView();
-				
-				CarbideExecutablesProvider provider = new CarbideExecutablesProvider();
-				ExecutablesManager em = ExecutablesManager.getExecutablesManager();
-				em.addSourceFileRemapping(new SymbianSourceFileRemapping());
-				em.addExecutablesProvider(provider);
-				em.addExecutableImporter(new CarbideExecutableImporter(provider));
-				em.scheduleRefresh(provider, 0);
-				em.addSourceFilesProvider(new CarbideSourceFilesProvider());
-				
 				return Status.OK_STATUS;
 			}};
 			earlyJob.schedule();
--- a/debuggercdi/com.nokia.cdt.debug.launch/src/com/nokia/cdt/internal/debug/launch/NokiaAbstractLaunchDelegate.java	Wed Jun 03 14:53:56 2009 -0500
+++ b/debuggercdi/com.nokia.cdt.debug.launch/src/com/nokia/cdt/internal/debug/launch/NokiaAbstractLaunchDelegate.java	Wed Jun 03 14:54:51 2009 -0500
@@ -30,7 +30,6 @@
 import org.eclipse.cdt.core.model.CModelException;
 import org.eclipse.cdt.core.model.IBinary;
 import org.eclipse.cdt.core.model.ICProject;
-import org.eclipse.cdt.debug.core.executables.ExecutablesManager;
 import org.eclipse.cdt.launch.AbstractCLaunchDelegate;
 import org.eclipse.cdt.ui.CUIPlugin;
 import org.eclipse.core.resources.IProject;
@@ -221,7 +220,6 @@
 	protected IPath[] getOtherExecutables(ICProject project, IPath exePath,
 			ILaunchConfiguration config, IProgressMonitor monitor) throws CModelException {
 		ArrayList<IPath> targetedBinaries = new ArrayList<IPath>();
-		ExecutablesManager.getExecutablesManager().setRefreshNeeded(true);
 		targetedBinaries.addAll(getBldInfExecutables(project, exePath, config, monitor));
 		return (IPath[]) targetedBinaries.toArray(new IPath[targetedBinaries
 				.size()]);
--- a/debuggercdi/com.nokia.cdt.debug.launch/src/com/nokia/cdt/internal/debug/launch/ui/ExecutablesTab.java	Wed Jun 03 14:53:56 2009 -0500
+++ b/debuggercdi/com.nokia.cdt.debug.launch/src/com/nokia/cdt/internal/debug/launch/ui/ExecutablesTab.java	Wed Jun 03 14:54:51 2009 -0500
@@ -26,7 +26,6 @@
 import org.eclipse.cdt.debug.core.ICDTLaunchConfigurationConstants;
 import org.eclipse.cdt.debug.core.executables.Executable;
 import org.eclipse.cdt.debug.core.executables.ExecutablesManager;
-import org.eclipse.cdt.debug.core.executables.IExecutablesChangeEvent;
 import org.eclipse.cdt.debug.core.executables.IExecutablesChangeListener;
 import org.eclipse.cdt.launch.AbstractCLaunchDelegate;
 import org.eclipse.cdt.launch.ui.CLaunchConfigurationTab;
@@ -124,7 +123,7 @@
 
 	public ExecutablesTab(boolean supportsTargetAll) {
 		this.supportsTargetAll = supportsTargetAll;
-		executablesToTarget = Collections.EMPTY_LIST; // avoid NPE if accessed before filled
+		executablesToTarget = Collections.emptyList(); // avoid NPE if accessed before filled
 	}
 
 	/* (non-Javadoc)
@@ -401,14 +400,12 @@
 		try {
 			String launchExeName = AbstractCLaunchDelegate.getProgramName(configuration);
 			if (launchExeName == null)
-				return Collections.EMPTY_LIST;
+				return Collections.emptyList();
 			
 			// ignore 'urel', 'udeb' and 'lib' directories when getting the binaries for the same target
 			// removeLastSegments(2) will strip the filename and 'urel', 'udeb' or 'lib'
 			IPath launchExeTargetPath = new Path(new File(launchExeName).getCanonicalPath()).removeLastSegments(2); 
-			Executable[] exes = ExecutablesManager.getExecutablesManager().getExecutables();
-			for (int i = 0; i < exes.length; i++) {
-				Executable executable = exes[i];
+			for (Executable executable : ExecutablesManager.getExecutablesManager().getExecutables()) {
 				IPath exePath = executable.getPath();
 				if (launchExeTargetPath.isPrefixOf(exePath))
 						files.add(new ExeFileToDebug(exePath.toOSString(), true));
@@ -447,11 +444,14 @@
 		getControl().setFocus();
 	}
 
-	public void executablesChanged(IExecutablesChangeEvent event) {
-		changeTargetingRule(targetingRule);
-	}
-
 	public ILaunchConfiguration getLaunchConfiguration() {
 		return configuration;
 	}
+
+	public void executablesChanged(List<Executable> executables) {
+	}
+
+	public void executablesListChanged() {
+		changeTargetingRule(targetingRule);
+	}
 }
--- a/project/com.nokia.carbide.cpp.epoc.engine/src/com/nokia/carbide/cpp/epoc/engine/model/sbv/ESBVFlags.java	Wed Jun 03 14:53:56 2009 -0500
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,30 +0,0 @@
-/*
-* Copyright (c) 2007-2009 Nokia Corporation and/or its subsidiary(-ies).
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of the License "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description: 
-*
-*/
-
-package com.nokia.carbide.cpp.epoc.engine.model.sbv;
-
-/**
- * This enumeration defines all the flags which may appear in the SBV (.var)
- * grammar.
- *
- */
-public enum ESBVFlags {
-	COMPILEWITHPARENT,
-	COMPILEALONE,
-	VIRTUALVARIANT,
-	VARIANT
-}
--- a/project/com.nokia.carbide.cpp.project.ui/src/com/nokia/carbide/cpp/internal/project/ui/editors/inf/ExportsPage.java	Wed Jun 03 14:53:56 2009 -0500
+++ b/project/com.nokia.carbide.cpp.project.ui/src/com/nokia/carbide/cpp/internal/project/ui/editors/inf/ExportsPage.java	Wed Jun 03 14:54:51 2009 -0500
@@ -105,4 +105,8 @@
 		return testExports;
 	}
 
+	public String getErrorMesaage() {
+		return getManagedForm().getForm().getMessage();
+	}
+
 }
--- a/project/com.nokia.carbide.cpp.project.ui/src/com/nokia/carbide/cpp/internal/project/ui/editors/inf/OverviewPage.java	Wed Jun 03 14:53:56 2009 -0500
+++ b/project/com.nokia.carbide.cpp.project.ui/src/com/nokia/carbide/cpp/internal/project/ui/editors/inf/OverviewPage.java	Wed Jun 03 14:54:51 2009 -0500
@@ -194,4 +194,8 @@
 		return testMakMakeFiles;
 	}
 
+	public String getErrorMesaage() {
+		return getManagedForm().getForm().getMessage();
+	}
+
 }
--- a/project/com.nokia.carbide.cpp.project.ui/src/com/nokia/carbide/cpp/internal/project/ui/editors/inf/testapi/ExpportsPageTester.java	Wed Jun 03 14:53:56 2009 -0500
+++ b/project/com.nokia.carbide.cpp.project.ui/src/com/nokia/carbide/cpp/internal/project/ui/editors/inf/testapi/ExpportsPageTester.java	Wed Jun 03 14:54:51 2009 -0500
@@ -32,6 +32,19 @@
 public class ExpportsPageTester {
 
 	/**
+	 * Retrieves any error message from the Exports page.
+	 * @param page - Exports page provided by caller
+	 * @return error message string if success, null otherwise
+	 */
+	public static String getErrorMesaage(FormPage page) {
+		if (page != null && page instanceof ExportsPage) {
+			ExportsPage exportsPage = (ExportsPage) page;
+			return exportsPage.getErrorMesaage();
+		}
+		return null;
+	}
+
+	/**
 	 * Retrieves the Exports section from an Exports page.
 	 * @param page - Exports page provided by caller
 	 * @return - Exports section if success, null otherwise
--- a/project/com.nokia.carbide.cpp.project.ui/src/com/nokia/carbide/cpp/internal/project/ui/editors/inf/testapi/OverviewPageTester.java	Wed Jun 03 14:53:56 2009 -0500
+++ b/project/com.nokia.carbide.cpp.project.ui/src/com/nokia/carbide/cpp/internal/project/ui/editors/inf/testapi/OverviewPageTester.java	Wed Jun 03 14:54:51 2009 -0500
@@ -35,6 +35,19 @@
 public class OverviewPageTester {
 
 	/**
+	 * Retrieves any error message from the Overview page.
+	 * @param page - Overview page provided by caller
+	 * @return error message string if success, null otherwise
+	 */
+	public static String getErrorMesaage(FormPage page) {
+		if (page != null && page instanceof OverviewPage) {
+			OverviewPage overviewPage = (OverviewPage) page;
+			return overviewPage.getErrorMesaage();
+		}
+		return null;
+	}
+
+	/**
 	 * Retrieves the "Active Build Configuration" label from the Overview page.
 	 * @param page - Overview page provided by caller
 	 * @return - label widget if success, null otherwise
--- a/project/com.nokia.carbide.cpp.project.ui/src/com/nokia/carbide/cpp/internal/project/ui/mmpEditor/LibrariesPage.java	Wed Jun 03 14:53:56 2009 -0500
+++ b/project/com.nokia.carbide.cpp.project.ui/src/com/nokia/carbide/cpp/internal/project/ui/mmpEditor/LibrariesPage.java	Wed Jun 03 14:54:51 2009 -0500
@@ -156,4 +156,8 @@
 		return debugLibraries;
 	}
 
+	public String getErrorMesaage() {
+		return getManagedForm().getForm().getMessage();
+	}
+
 }
--- a/project/com.nokia.carbide.cpp.project.ui/src/com/nokia/carbide/cpp/internal/project/ui/mmpEditor/OptionsPage.java	Wed Jun 03 14:53:56 2009 -0500
+++ b/project/com.nokia.carbide.cpp.project.ui/src/com/nokia/carbide/cpp/internal/project/ui/mmpEditor/OptionsPage.java	Wed Jun 03 14:54:51 2009 -0500
@@ -127,4 +127,8 @@
 		return kernelSectionPart;
 	}
 
+	public String getErrorMesaage() {
+		return getManagedForm().getForm().getMessage();
+	}
+
 }
--- a/project/com.nokia.carbide.cpp.project.ui/src/com/nokia/carbide/cpp/internal/project/ui/mmpEditor/OverviewPage.java	Wed Jun 03 14:53:56 2009 -0500
+++ b/project/com.nokia.carbide.cpp.project.ui/src/com/nokia/carbide/cpp/internal/project/ui/mmpEditor/OverviewPage.java	Wed Jun 03 14:54:51 2009 -0500
@@ -452,5 +452,9 @@
 	public ImageHyperlink getOptionsHyperlink() {
 		return optionsImageHyperlink;
 	}
-	
+
+	public String getErrorMesaage() {
+		return getManagedForm().getForm().getMessage();
+	}
+
 }
--- a/project/com.nokia.carbide.cpp.project.ui/src/com/nokia/carbide/cpp/internal/project/ui/mmpEditor/SourcesPage.java	Wed Jun 03 14:53:56 2009 -0500
+++ b/project/com.nokia.carbide.cpp.project.ui/src/com/nokia/carbide/cpp/internal/project/ui/mmpEditor/SourcesPage.java	Wed Jun 03 14:54:51 2009 -0500
@@ -136,4 +136,8 @@
 		return missingSourcesSectionPart;
 	}
 
+	public String getErrorMesaage() {
+		return getManagedForm().getForm().getMessage();
+	}
+
 }
--- a/project/com.nokia.carbide.cpp.project.ui/src/com/nokia/carbide/cpp/internal/project/ui/mmpEditor/testapi/LibrariesPageTester.java	Wed Jun 03 14:53:56 2009 -0500
+++ b/project/com.nokia.carbide.cpp.project.ui/src/com/nokia/carbide/cpp/internal/project/ui/mmpEditor/testapi/LibrariesPageTester.java	Wed Jun 03 14:54:51 2009 -0500
@@ -32,6 +32,19 @@
 public class LibrariesPageTester {
 
 	/**
+	 * Retrieves any error message from the Libraries page.
+	 * @param page - Libraries page provided by caller
+	 * @return error message string if success, null otherwise
+	 */
+	public static String getErrorMesaage(FormPage page) {
+		if (page != null && page instanceof LibrariesPage) {
+			LibrariesPage librariesPage = (LibrariesPage) page;
+			return librariesPage.getErrorMesaage();
+		}
+		return null;
+	}
+
+	/**
 	 * Retrieves the "Libraries" section of the Libraries page.
 	 * @param page - Libraries page provided by caller
 	 * @return - section part if success, null otherwise
--- a/project/com.nokia.carbide.cpp.project.ui/src/com/nokia/carbide/cpp/internal/project/ui/mmpEditor/testapi/OptionsPageTester.java	Wed Jun 03 14:53:56 2009 -0500
+++ b/project/com.nokia.carbide.cpp.project.ui/src/com/nokia/carbide/cpp/internal/project/ui/mmpEditor/testapi/OptionsPageTester.java	Wed Jun 03 14:54:51 2009 -0500
@@ -37,6 +37,19 @@
 public class OptionsPageTester {
 
 	/**
+	 * Retrieves any error message from the Options page.
+	 * @param page - Options page provided by caller
+	 * @return error message string if success, null otherwise
+	 */
+	public static String getErrorMesaage(FormPage page) {
+		if (page != null && page instanceof OptionsPage) {
+			OptionsPage optionsPage = (OptionsPage) page;
+			return optionsPage.getErrorMesaage();
+		}
+		return null;
+	}
+
+	/**
 	 * Retrieves the "Runtime" section of the Options page.
 	 * @param page - Options page provided by caller
 	 * @return - section part if success, null otherwise
--- a/project/com.nokia.carbide.cpp.project.ui/src/com/nokia/carbide/cpp/internal/project/ui/mmpEditor/testapi/OverviewPageTester.java	Wed Jun 03 14:53:56 2009 -0500
+++ b/project/com.nokia.carbide.cpp.project.ui/src/com/nokia/carbide/cpp/internal/project/ui/mmpEditor/testapi/OverviewPageTester.java	Wed Jun 03 14:54:51 2009 -0500
@@ -32,6 +32,19 @@
 public class OverviewPageTester {
 
 	/**
+	 * Retrieves any error message from the Overview page.
+	 * @param page - Overview page provided by caller
+	 * @return error message string if success, null otherwise
+	 */
+	public static String getErrorMesaage(FormPage page) {
+		if (page != null && page instanceof OverviewPage) {
+			OverviewPage overviewPage = (OverviewPage) page;
+			return overviewPage.getErrorMesaage();
+		}
+		return null;
+	}
+
+	/**
 	 * Retrieves the "Active Build Configuration" label of the Overview page.
 	 * @param page - Overview page provided by caller
 	 * @return - label widget if success, null otherwise
--- a/project/com.nokia.carbide.cpp.project.ui/src/com/nokia/carbide/cpp/internal/project/ui/mmpEditor/testapi/SourcesPageTester.java	Wed Jun 03 14:53:56 2009 -0500
+++ b/project/com.nokia.carbide.cpp.project.ui/src/com/nokia/carbide/cpp/internal/project/ui/mmpEditor/testapi/SourcesPageTester.java	Wed Jun 03 14:54:51 2009 -0500
@@ -35,6 +35,19 @@
 public class SourcesPageTester {
 
 	/**
+	 * Retrieves any error message from the Sources page.
+	 * @param page - Sources page provided by caller
+	 * @return error message string if success, null otherwise
+	 */
+	public static String getErrorMesaage(FormPage page) {
+		if (page != null && page instanceof SourcesPage) {
+			SourcesPage sourcesPage = (SourcesPage) page;
+			return sourcesPage.getErrorMesaage();
+		}
+		return null;
+	}
+
+	/**
 	 * Retrieves the "C/C++ Sources" section of the Sources page.
 	 * @param page - Overview page provided by caller
 	 * @return - section part if success, null otherwise