merge from RCL_2_0 to MCL
authorDan Podwall <dan.podwall@nokia.com>
Mon, 27 Apr 2009 15:07:35 -0500
changeset 128 c028612cc555
parent 127 c937102a5510 (current diff)
parent 124 4629a6a90ed5 (diff)
child 130 825355d51766
merge from RCL_2_0 to MCL
.branch.txt
builder/com.nokia.carbide.cdt.builder/src/com/nokia/carbide/cdt/builder/BuildArgumentsInfo.java
builder/com.nokia.carbide.cdt.builder/src/com/nokia/carbide/cdt/builder/builder/CarbideCPPBuilder.java
carbidesdk/com.nokia.carbide.cpp.sdk.doc.user/html/reference/api_Change_Notes.htm
core/carbide_releases/readme/readme_sdks.html
core/com.nokia.carbide.cpp.codescanner/html/customizing_cs.htm
core/com.nokia.carbide.cpp.codescanner/html/release_notes.htm
core/com.nokia.carbide.cpp.doc.user/html/bugs_fixed.htm
core/com.nokia.carbide.cpp.doc.user/tocCarbide.xml
core/com.nokia.carbide.cpp.sdk.core/src/com/nokia/carbide/cpp/internal/sdk/core/processes/CheckS60CustKitSupport.java
core/com.nokia.carbide.cpp/splash.bmp
--- a/.branch.txt	Sat Apr 25 12:54:10 2009 -0500
+++ b/.branch.txt	Mon Apr 27 15:07:35 2009 -0500
@@ -1,2 +1,2 @@
-default
+default
 
--- a/builder/com.nokia.carbide.cdt.builder/src/com/nokia/carbide/cdt/builder/EpocEngineHelper.java	Sat Apr 25 12:54:10 2009 -0500
+++ b/builder/com.nokia.carbide.cdt.builder/src/com/nokia/carbide/cdt/builder/EpocEngineHelper.java	Mon Apr 27 15:07:35 2009 -0500
@@ -171,7 +171,97 @@
 		for (IPath testPath : testFiles){
 			testExtensionPaths.add(testPath);
 		}
+	}
+	
+	/**
+	 * Return list of all named project extensions referenced by the given
+	 * bld.inf full path.  This function differentiates between PRJ_EXTENSIONS and PRJ_TESTEXTENSIONS
+	 * @param bldInfFilePath - The IPath to the bld.inf file that is to be preprocessed.
+	 * @param buildConfigs - List of build configuration to parse for.
+	 * @param normalExtensions - The list of named PRJ_EXTENSIONS for the bld.inf
+	 * @param testExtensions - The list of named PRJ_TESTEXTENSIONS for the bld.inf
+	 * @param monitor
+	 */
+	public static void getNamedExtensions(final IPath bldInfFilePath, List<ISymbianBuildContext> buildConfigs, 
+		List<IExtension> normalExtensions, List<IExtension> testExtensions, IProgressMonitor monitor) {
 		
+		// get a bld.inf view for each build target.  take the union of all extensions for each view
+		// of the bld.inf file.
+		final Set<IExtension> normalFiles = new LinkedHashSet<IExtension>();
+		final Set<IExtension> testFiles = new LinkedHashSet<IExtension>();
+		
+		monitor.beginTask("Scanning bld.inf project extensions", buildConfigs.size());
+
+		for (final ISymbianBuildContext context : buildConfigs) {
+			EpocEnginePlugin.runWithBldInfData(bldInfFilePath, 
+					new DefaultViewConfiguration(context, bldInfFilePath, new AcceptedNodesViewFilter()), 
+					new BldInfDataRunnableAdapter() {
+						public Object run(IBldInfData data) {
+							for (IExtension extension : data.getExtensions()) {
+								if (extension.getName() != null) {
+									normalFiles.add(extension);
+								}
+							}
+							for (IExtension extension : data.getTestExtensions()) {
+								if (extension.getName() != null) {
+									testFiles.add(extension);
+								}
+							}
+							return null;
+						}
+				});
+
+			monitor.worked(1);
+		}
+		
+		monitor.done();
+		
+		for (IExtension normal : normalFiles){
+			normalExtensions.add(normal);
+		}
+		for (IExtension test : testFiles){
+			testExtensions.add(test);
+		}
+	}
+	
+	/**
+	 * Determines if the given bld.inf file contains any unnamed project extensions
+	 * @param bldInfFilePath - The IPath to the bld.inf file that is to be preprocessed.
+	 * @param buildConfigs - List of build configuration to parse for.
+	 * @param monitor
+	 * @return
+	 */
+	public static boolean hasUnnamedExtensions(final IPath bldInfFilePath, List<ISymbianBuildContext> buildConfigs, IProgressMonitor monitor) {
+
+		final Set<IExtension> extensions = new LinkedHashSet<IExtension>();
+
+		monitor.beginTask("Scanning bld.inf project extensions", buildConfigs.size());
+
+		for (final ISymbianBuildContext context : buildConfigs) {
+			EpocEnginePlugin.runWithBldInfData(bldInfFilePath, 
+					new DefaultViewConfiguration(context, bldInfFilePath, new AcceptedNodesViewFilter()), 
+					new BldInfDataRunnableAdapter() {
+						public Object run(IBldInfData data) {
+							for (IExtension extension : data.getExtensions()) {
+								if (extension.getName() == null) {
+									extensions.add(extension);
+								}
+							}
+							for (IExtension extension : data.getTestExtensions()) {
+								if (extension.getName() == null) {
+									extensions.add(extension);
+								}
+							}
+							return null;
+						}
+				});
+
+			monitor.worked(1);
+		}
+		
+		monitor.done();
+
+		return extensions.size() > 0;
 	}
 	
 	/**
--- a/builder/com.nokia.carbide.cdt.builder/src/com/nokia/carbide/cdt/builder/builder/CarbideCPPBuilder.java	Sat Apr 25 12:54:10 2009 -0500
+++ b/builder/com.nokia.carbide.cdt.builder/src/com/nokia/carbide/cdt/builder/builder/CarbideCPPBuilder.java	Mon Apr 27 15:07:35 2009 -0500
@@ -66,6 +66,7 @@
 import com.nokia.carbide.cpp.epoc.engine.EpocEnginePlugin;
 import com.nokia.carbide.cpp.epoc.engine.MMPDataRunnableAdapter;
 import com.nokia.carbide.cpp.epoc.engine.PKGViewRunnableAdapter;
+import com.nokia.carbide.cpp.epoc.engine.model.bldinf.IExtension;
 import com.nokia.carbide.cpp.epoc.engine.model.mmp.EMMPLanguage;
 import com.nokia.carbide.cpp.epoc.engine.model.mmp.EMMPStatement;
 import com.nokia.carbide.cpp.epoc.engine.model.mmp.IMMPData;
@@ -695,8 +696,23 @@
 
 		// get the list of mmp/make files for this build configuration
 		EpocEngineHelper.getMakMakeFiles(cpi.getAbsoluteBldInfPath(), buildConfigList, normalMakMakePaths, testMakMakePaths, new NullProgressMonitor());
-		
-		// if we're not supposed to build test components then clear the list
+
+		if (CarbideBuilderPlugin.getBuildManager().isCarbideSBSv2Project(cpi.getProject())) {
+			// add any named extensions
+	    	List<IExtension> normalNamedExtensionsList = new ArrayList<IExtension>();
+			List<IExtension> testNamedExtensionsList = new ArrayList<IExtension>();
+			EpocEngineHelper.getNamedExtensions(cpi.getAbsoluteBldInfPath(), buildConfigList,
+					normalNamedExtensionsList, testNamedExtensionsList, new NullProgressMonitor());
+			
+	    	for (IExtension extension : normalNamedExtensionsList) {
+	    		normalMakMakePaths.add(new Path(extension.getName()));
+	    	}
+	    	for (IExtension extension : testNamedExtensionsList) {
+	    		testMakMakePaths.add(new Path(extension.getName()));
+	    	}
+		}
+
+    	// if we're not supposed to build test components then clear the list
 		if (cpi.isBuildingFromInf() && !cpi.isBuildingTestComps()) {
 			testMakMakePaths.clear();
 		}
@@ -722,16 +738,13 @@
 				}
 			}
 			
-			if (buildingSubset) {
-				List<IPath> normalExtensionPaths = new ArrayList<IPath>();
-				List<IPath> testExtensionPaths = new ArrayList<IPath>();
-				EpocEngineHelper.getExtensions(cpi.getAbsoluteBldInfPath(), buildConfigList, normalExtensionPaths, testExtensionPaths, new NullProgressMonitor());
-				
-				if (normalExtensionPaths.size() > 0 || testExtensionPaths.size() > 0) {
-					String warningText = "WARNING: PRJ_EXTENSIONS and PRJ_TESTEXTENSIONS will be excluded because you've selected a subset of the bld.inf.";
-					launcher.writeToConsole(warningText + "\n");
-		   			CarbideBuilderPlugin.createCarbideProjectMarker(cpi.getProject(), IMarker.SEVERITY_WARNING, warningText, IMarker.PRIORITY_LOW);
+			if (buildingSubset && EpocEngineHelper.hasUnnamedExtensions(cpi.getAbsoluteBldInfPath(), buildConfigList, new NullProgressMonitor())) {
+				String warningText = "WARNING: PRJ_EXTENSIONS and PRJ_TESTEXTENSIONS will be excluded from the build because you've selected to build a subset of the bld.inf, and there is no way to specify unnamed components.";
+				if (CarbideBuilderPlugin.getBuildManager().isCarbideSBSv2Project(cpi.getProject())) {
+					warningText = warningText + "  If you name the extensions then you can select them to be built from the UI.";
 				}
+				launcher.writeToConsole(warningText + "\n");
+	   			CarbideBuilderPlugin.createCarbideProjectMarker(cpi.getProject(), IMarker.SEVERITY_WARNING, warningText, IMarker.PRIORITY_LOW);
 			}
 		}
 	}
--- a/builder/com.nokia.carbide.cdt.builder/src/com/nokia/carbide/cdt/internal/api/builder/ui/MMPSelectionUI.java	Sat Apr 25 12:54:10 2009 -0500
+++ b/builder/com.nokia.carbide.cdt.builder/src/com/nokia/carbide/cdt/internal/api/builder/ui/MMPSelectionUI.java	Mon Apr 27 15:07:35 2009 -0500
@@ -18,6 +18,7 @@
 
 import com.nokia.carbide.cdt.builder.EpocEngineHelper;
 import com.nokia.carbide.cdt.builder.project.ICarbideProjectInfo;
+import com.nokia.carbide.cpp.epoc.engine.model.bldinf.IExtension;
 import com.nokia.carbide.cpp.sdk.core.ISymbianBuildContext;
 import com.nokia.cpp.internal.api.utils.core.Check;
 import com.nokia.cpp.internal.api.utils.core.ListenerList;
@@ -169,12 +170,13 @@
 	private List<? extends ISymbianBuildContext> buildConfigs;
 	private IPath bldInfFile;
 	private final IRunnableContext runnableContext;
-    private List<FileInfo> data = Collections.EMPTY_LIST;
-    private boolean hasProjectExtensions;
+    private List<FileInfo> data = Collections.emptyList();
+    private boolean hasUnnamedProjectExtensions;
 	private ViewerFilter testFileFilter;
 	private ViewerFilter extMakFileFilter;
 	private int lastSortColumn = BUILD_ORDER_COLUMN; // default
 	private int sortDirection = 1; // default
+	private boolean useSBSv2Builder;
 
 	/**
 	 * Create the composite
@@ -367,12 +369,14 @@
 	 * @param bldInfFile IPath
 	 * @param buildConfigs List<ISymbianBuildContext>
 	 */
-	public void setBldInfFile(final IPath bldInfFile, final List buildConfigs) {
+	public void setBldInfFile(final IPath bldInfFile, final List buildConfigs, final boolean useSBSv2Builder) {
 		if (bldInfFile.equals(this.bldInfFile) && buildConfigs.equals(this.buildConfigs))
 			return;
 		
 		this.bldInfFile = bldInfFile;
 		this.buildConfigs = buildConfigs;
+		this.useSBSv2Builder = useSBSv2Builder;
+
 		try {
 			runnableContext.run(true, true, new IRunnableWithProgress() {
 				public void run(IProgressMonitor monitor) {
@@ -388,11 +392,23 @@
 			    	for (IPath currPath : testMakMakeList) {
 						data.add(new FileInfo(currPath, ++i, true));
 			    	}
-					List<IPath> normalExtensionsList = new ArrayList<IPath>();
-					List<IPath> testExtensionsList = new ArrayList<IPath>();
-					EpocEngineHelper.getExtensions(bldInfFile, buildConfigs, 
-							normalExtensionsList, testExtensionsList, monitor);
-					hasProjectExtensions = normalExtensionsList.size() > 0 || testExtensionsList.size() > 0;
+
+			    	// named extensions are only supported in SBSv2
+			    	if (useSBSv2Builder) {
+				    	List<IExtension> normalNamedExtensionsList = new ArrayList<IExtension>();
+						List<IExtension> testNamedExtensionsList = new ArrayList<IExtension>();
+						EpocEngineHelper.getNamedExtensions(bldInfFile, buildConfigs,
+								normalNamedExtensionsList, testNamedExtensionsList, monitor);
+						
+				    	for (IExtension extension : normalNamedExtensionsList) {
+							data.add(new FileInfo(new Path(extension.getName()), ++i, false));
+				    	}
+				    	for (IExtension extension : testNamedExtensionsList) {
+							data.add(new FileInfo(new Path(extension.getName()), ++i, true));
+				    	}
+			    	}
+					
+			    	hasUnnamedProjectExtensions = EpocEngineHelper.hasUnnamedExtensions(bldInfFile, buildConfigs, monitor);
 				}
 			});
 		} catch (InvocationTargetException e) {
@@ -468,14 +484,6 @@
 		updateCheckedStateFromViewer();
 	}
 
-	/**
-	 * Return true if the current bld.inf file has project extensions
-	 * @return boolean
-	 */
-	public boolean hasProjectExtensions() {
-		return hasProjectExtensions;
-	}
-	
 	@Override
 	protected void checkSubclass() {
 		// Disable the check that prevents subclassing of SWT components
@@ -566,4 +574,15 @@
 		
 		return true;
 	}
+	
+	public String getExtensionsWarningMessage() {
+		if (hasUnnamedProjectExtensions && !isCheckedAll()) {
+			if (useSBSv2Builder) {
+				return Messages.getString("MMPSelectionUI.prjExtensionsWarningSBSv2"); //$NON-NLS-1$
+			} else {
+				return Messages.getString("MMPSelectionUI.prjExtensionsWarningSBSv1"); //$NON-NLS-1$
+			}
+		}
+		return null;
+	}
 }
--- a/builder/com.nokia.carbide.cdt.builder/src/com/nokia/carbide/cdt/internal/api/builder/ui/messages.properties	Sat Apr 25 12:54:10 2009 -0500
+++ b/builder/com.nokia.carbide.cdt.builder/src/com/nokia/carbide/cdt/internal/api/builder/ui/messages.properties	Mon Apr 27 15:07:35 2009 -0500
@@ -12,3 +12,5 @@
 MMPSelectionUI.DeselectAllLabel=Deselect All
 MMPSelectionUI.ExcludeExtMakefilesLabel=Exclude extension makefiles
 MMPSelectionUI.ExcludeTestCompsLabel=Exclude test components
+MMPSelectionUI.prjExtensionsWarningSBSv1=Warning: This bld.inf contains project extensions (prj_extensions and/or prj_testextensions).  These will only be built when building the entire bld.inf.
+MMPSelectionUI.prjExtensionsWarningSBSv2=Warning: This bld.inf contains unnamed project extensions (prj_extensions and/or prj_testextensions).  These will only be built when building the entire bld.inf.\r\nThis only applies to unnamed extensions, so if you provide a name in the extension, this will not be an issue.
--- a/builder/com.nokia.carbide.cdt.builder/src/com/nokia/carbide/cdt/internal/builder/EnvironmentVarsInfo2.java	Sat Apr 25 12:54:10 2009 -0500
+++ b/builder/com.nokia.carbide.cdt.builder/src/com/nokia/carbide/cdt/internal/builder/EnvironmentVarsInfo2.java	Mon Apr 27 15:07:35 2009 -0500
@@ -206,7 +206,10 @@
 					else {
 						String epocRootStr = epocRoot.toOSString();
 						if (epocRootStr.indexOf(":") == 1) {
-							epocRootStr = epocRootStr.substring(2);
+							// only strip the drive for SBSv1
+							if (!CarbideBuilderPlugin.getBuildManager().isCarbideSBSv2Project(projectTracker.getProject())) {
+								epocRootStr = epocRootStr.substring(2);
+							}
 						}
 						returnEnvArray[i] = EPOCROOT + EQUALS + epocRootStr;
 					}	
@@ -286,7 +289,10 @@
 					else {
 						String epocRootStr = epocRoot.toOSString();
 						if (epocRootStr.indexOf(":") == 1) {
-							epocRootStr = epocRootStr.substring(2);
+							// only strip the drive for SBSv1
+							if (!CarbideBuilderPlugin.getBuildManager().isCarbideSBSv2Project(projectTracker.getProject())) {
+								epocRootStr = epocRootStr.substring(2);
+							}
 						}
 						returnEnvArray[i] = EPOCROOT + EQUALS + epocRootStr;
 					}	
--- a/builder/com.nokia.carbide.cdt.builder/src/com/nokia/carbide/cdt/internal/builder/error/parsers/MakeSisErrorParser.java	Sat Apr 25 12:54:10 2009 -0500
+++ b/builder/com.nokia.carbide.cdt.builder/src/com/nokia/carbide/cdt/internal/builder/error/parsers/MakeSisErrorParser.java	Mon Apr 27 15:07:35 2009 -0500
@@ -22,19 +22,37 @@
 
 public class MakeSisErrorParser extends CarbideBaseErrorParser {
 	
+	String packageFile = null;
+	
 	public MakeSisErrorParser() {
 	}
 
 	public boolean processLine(String aLine, ErrorParserManager aErrorParserManager) {
-		// Known patterns.
+		// Known patterns:
+		//
 		// (a)
 		// filename(lineno) : description
+		// OR
+		// (lineno) : description 
 		//
 		// (b)
 		// filename(lineno) : Warning: description
+		// OR
+		// (lineno) : Warning: description
 		//
 		// (c)
 		// filename(lineno) : Error: description
+		// OR
+		// (lineno) : Error: description
+		
+		if (   aLine.contains("makesis.exe ")) {
+			int packageStart = aLine.indexOf("makesis.exe ") + "makesis.exe ".length();
+			int packageEnd   = aLine.indexOf(' ', packageStart);
+			// store the name of the package file for cases above where
+			// the line number is shown without the package filename
+			if (packageEnd != -1)
+				packageFile = aLine.substring(packageStart, packageEnd);
+		}
 		
 		if (aLine.equalsIgnoreCase("error: invalid destination file")){
 			msgSeverity = IMarkerGenerator.SEVERITY_ERROR_BUILD;
@@ -46,6 +64,17 @@
 			aErrorParserManager.generateMarker(null, -1, aLine, msgSeverity, null);
 		}
 		
+		// if line starts with (lineno):, prefix it with the package file name
+		if (   aLine.indexOf(':') >= 2
+			&& aLine.charAt(0) == '('
+			&& aLine.charAt(aLine.indexOf(':') - 2) == ')') {
+			try {
+				Integer.parseInt(aLine.substring(1, aLine.indexOf(':') - 2));
+				aLine = packageFile + aLine;
+			} catch (NumberFormatException nfe) {
+			}
+		}
+		
 		if (!setFirstColon(aLine)) {
 			return false;
 		}
--- a/builder/com.nokia.carbide.cdt.builder/src/com/nokia/carbide/cdt/internal/builder/ui/CarbideCPPProjectSettingsPage.java	Sat Apr 25 12:54:10 2009 -0500
+++ b/builder/com.nokia.carbide.cdt.builder/src/com/nokia/carbide/cdt/internal/builder/ui/CarbideCPPProjectSettingsPage.java	Mon Apr 27 15:07:35 2009 -0500
@@ -16,8 +16,43 @@
 */
 package com.nokia.carbide.cdt.internal.builder.ui;
 
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
+import java.util.ListIterator;
+
+import org.eclipse.cdt.core.model.ICProject;
+import org.eclipse.core.resources.IProject;
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.IPath;
+import org.eclipse.core.runtime.Path;
+import org.eclipse.jface.viewers.ISelectionChangedListener;
+import org.eclipse.jface.viewers.IStructuredContentProvider;
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.jface.viewers.ITableColorProvider;
+import org.eclipse.jface.viewers.ITableLabelProvider;
+import org.eclipse.jface.viewers.LabelProvider;
+import org.eclipse.jface.viewers.SelectionChangedEvent;
+import org.eclipse.jface.viewers.Viewer;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.events.SelectionAdapter;
+import org.eclipse.swt.events.SelectionEvent;
+import org.eclipse.swt.graphics.Color;
+import org.eclipse.swt.graphics.Image;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Button;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Control;
+import org.eclipse.swt.widgets.Display;
+import org.eclipse.swt.widgets.Group;
+import org.eclipse.swt.widgets.Label;
+import org.eclipse.swt.widgets.Link;
+import org.eclipse.ui.PlatformUI;
+import org.eclipse.ui.dialogs.PreferencesUtil;
+import org.eclipse.ui.dialogs.PropertyPage;
+
 import com.nokia.carbide.cdt.builder.CarbideBuilderPlugin;
-import com.nokia.carbide.cdt.builder.EpocEngineHelper;
 import com.nokia.carbide.cdt.builder.project.ICarbideProjectInfo;
 import com.nokia.carbide.cdt.internal.api.builder.ui.MMPSelectionUI;
 import com.nokia.carbide.cdt.internal.api.builder.ui.MMPSelectionUI.FileInfo;
@@ -26,25 +61,6 @@
 import com.nokia.carbide.cpp.internal.qt.core.QtCorePlugin;
 import com.nokia.carbide.cpp.sdk.core.ISymbianBuildContext;
 
-import org.eclipse.cdt.core.model.ICProject;
-import org.eclipse.core.resources.IProject;
-import org.eclipse.core.runtime.*;
-import org.eclipse.jface.viewers.*;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.events.SelectionAdapter;
-import org.eclipse.swt.events.SelectionEvent;
-import org.eclipse.swt.graphics.Color;
-import org.eclipse.swt.graphics.Image;
-import org.eclipse.swt.layout.GridData;
-import org.eclipse.swt.layout.GridLayout;
-import org.eclipse.swt.widgets.*;
-import org.eclipse.ui.PlatformUI;
-import org.eclipse.ui.dialogs.PreferencesUtil;
-import org.eclipse.ui.dialogs.PropertyPage;
-
-import java.util.*;
-import java.util.List;
-
 public class CarbideCPPProjectSettingsPage extends PropertyPage {
 	
     private	Label buildDirDynLabel;
@@ -57,9 +73,6 @@
 	private Group optionsGroup;
 	private BuildSettingsUI buildSettingsUI;
 	
-	List<IPath> normalExtensionPaths = new ArrayList<IPath>();
-	List<IPath> testExtensionPaths = new ArrayList<IPath>();
-
 	
 	protected Control createContents(Composite parent) {
 		Composite composite = new Composite(parent, SWT.NONE);
@@ -107,7 +120,6 @@
 			}
 		});
 		
-		
 		// spacer
 		new Label(composite, SWT.NONE).setLayoutData(new GridData(SWT.FILL, SWT.FILL, false, false, 2, 1));
 
@@ -137,7 +149,6 @@
 		optionsGroup.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false, 2, 1));
 
 		boolean sbsv2Project = false;
-		
 		IProject project = getProject();
 		if (project != null) {
 			sbsv2Project = CarbideBuilderPlugin.getBuildManager().isCarbideSBSv2Project(project);
@@ -344,10 +355,7 @@
     		List<ISymbianBuildContext> buildConfigList = new ArrayList<ISymbianBuildContext>();
 			buildConfigList.addAll(cpi.getBuildConfigurations());
 
-			EpocEngineHelper.getExtensions(cpi.getAbsoluteBldInfPath(), buildConfigList, normalExtensionPaths, testExtensionPaths, new NullProgressMonitor());
-    		
     		enableOrDisableControls();
-    		checkValid();
         }
 	}
 	
@@ -383,6 +391,8 @@
 		if (!CarbideBuilderPlugin.getBuildManager().isCarbideSBSv2Project(project)) {
 			buildSettingsUI.setMMPChangedActionEnabledState(useProjectSettings && !isQtProject);
 		}
+
+		checkValid();
 	}
 	
 	private void initMMPSelectionUI(CarbideProjectInfo cpi) {
@@ -395,7 +405,7 @@
 		selectionUI.setLayoutData(gridData);
 		
 		// set the data
-		selectionUI.setBldInfFile(cpi.getAbsoluteBldInfPath(), cpi.getBuildConfigurations());
+		selectionUI.setBldInfFile(cpi.getAbsoluteBldInfPath(), cpi.getBuildConfigurations(), CarbideBuilderPlugin.getBuildManager().isCarbideSBSv2Project(cpi.getProject()));
 		
 		// set checked state
 		selectionUI.setAllChecked(false);
@@ -512,12 +522,11 @@
 		
 		// if there are any new-style prj extensions, warn them that they won't be built
 		// when not building the entire bld.inf.
-    	if (normalExtensionPaths.size() > 0 || testExtensionPaths.size() > 0) {
-            if (selectedComponentsButton.getSelection()) {
-        		if (!selectionUI.isCheckedAll()) {
-        			setMessage(Messages.getString("CarbideCPPProjectSettingsPage.prjExtensionsWarning"), WARNING); //$NON-NLS-1$
-        		}
-            }
+        if (selectedComponentsButton.getSelection()) {
+    		String warning = selectionUI.getExtensionsWarningMessage();
+    		if (warning != null) {
+    			setMessage(warning, WARNING);
+    		}
     	}
 	}
 
--- a/builder/com.nokia.carbide.cdt.builder/src/com/nokia/carbide/cdt/internal/builder/ui/messages.properties	Sat Apr 25 12:54:10 2009 -0500
+++ b/builder/com.nokia.carbide.cdt.builder/src/com/nokia/carbide/cdt/internal/builder/ui/messages.properties	Mon Apr 27 15:07:35 2009 -0500
@@ -88,7 +88,6 @@
 CarbideCPPProjectSettingsPage.ConfigureWorkspaceSetting=Configure Workspace Settings
 CarbideCPPProjectSettingsPage.ProjectSettingsGroup=Project Settings
 CarbideCPPProjectSettingsPage.ProjectSettingsGroupToolTip=These settings override the workspace settings for this project.
-CarbideCPPProjectSettingsPage.prjExtensionsWarning=Warning: This bld.inf contains project extensions (prj_extensions and/or prj_testextensions).  These will only be built when building the entire bld.inf.
 
 BuilderPreferencePage.EmulatorBuildGroup=Emulator Build Options
 BuilderPreferencePage.EmulatorEnvOption=Use built-in Nokia x86 environment variables for WINSCW builds
--- a/carbidesdk/com.nokia.carbide.cpp.sdk.doc.user/book.css	Sat Apr 25 12:54:10 2009 -0500
+++ b/carbidesdk/com.nokia.carbide.cpp.sdk.doc.user/book.css	Mon Apr 27 15:07:35 2009 -0500
@@ -1,184 +1,184 @@
-/*	
-	Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). 
-	All rights reserved. 
-	License: http://www.eclipse.org/legal/epl-v10.html
-*/
-
-/*	Add whitespace around entire display to avoid crowding edges of view 	*/
-/* 	20070523-Removed top margin size to close gap between location breadcrumbs and page title	*/
-html {
-	margin: 2px 10px 10px 10px;
-	}
-
-/* 	Set default font to serif style, 12-pt and plain	*/
-body, p, table {
-	font-family: Georgia, "Times New Roman", Times, serif;
-	font-size: 13px;
-	font-weight: normal;
-}
-
-/*	Use sans-serif fonts for all title styles	*/
-h1, h2, h3, h4, h5, h6, strong, em {
-	font-family: Helvetica, sans-serif;
-	color: #000000;	
-	}
-
-h1	{ font-size:20px }
-h2	{ font-size:18px }
-h3	{ font-size:16px }
-h4	{ font-size:14px }
-h5	{ font-size:13px }
-h6	{ font-size:12px }
-
-/*	For headlines at the top of a view, add space	*/
-/*	20090224-changed green fade to gold header image	*/
-h1, h2, h3 {
-	background-image: url(html/img/gold_header.png);
-	background-repeat: no-repeat;
-	padding:10px 0px 10px 12px;	
-	}
-
-li	{
-	margin-bottom:8px;	
-	margin-top:8px;
-	}
-
-/*	Footer includes space and a gray line above the company logo	*/
-#footer {
-	padding-top:10px;
-	margin-top:20px;
-	border-top:1px solid #999;
-	font-family: Helvetica, sans-serif;
-	font-size: 11px;
-	color:#333;
-	}
-
-.listing	{
-	font-family: "Courier New", Courier, mono;
-	color: #000000;
-	background-color: #FFFFCC;
-	margin: 5px 0px;
-	}
-		
-.code, pre	{
-	font-family: "Courier New", Courier, mono;
-	font-size: 13px;
-	color: #000000;
-	}
-
-.step	{
-	/* background-color: #EEE; */
-	/* margin: 10px 0px; */
-	color: #111;
-	/* border-bottom:2px solid #EEE; */
-	}
-	
-.substep	{
-	background-color: #EEE;
-	}
-	
-	
-/*	Figure/Listing/Table titles are centered and gray	*/
-p.table {
-	color: #999;
-	font-weight: bold;
-	padding-top: 5px;
-	}
-
-table	{
-	border: solid #999 1px;
-	table-layout: auto;
-	font-size: 13px;
-	}
-
-td, th	{
-	border: solid #999 1px;
-	padding: 5px;
-	vertical-align:top;
-	}
-	
-/*	20070522-replaced gray with green background to match gradiant color for title	*/
-th	{
-	background-color:#FDDD1F;	/* background-color:#acd79b;
-	background-color:#999;
-	color:#FFF; */
-	}
-
-div.ol.p	{
-	margin-left: 3em;
-	}
-
-/* Make all ordered/unordered list items appear in bold gray */
-div ol > li, div ul > li {
-	font-weight:bold;
-	color: #333;
-	}
-
-div ol > p, div ul > p, div li > p {
-	font-weight:normal;
-	}
-	
-/* Make all H4 and H5 items appear in bold gray against a light green background */
-div h5, div h4	{
-	padding:5px 0px 5px 12px;
-	background-color:#FFFF66;
-	/* background-color: #EEE; */
-	font-weight:bold;
-	color: #000000;
-	}
-	
-	
-/*	Notes stand out using a light top & bottom borders with dark gray text	*/
-p.note {
-	/* color: #03C; */
-	/* background-color: #FFFF99; */
-	color: #333;
-	padding: 5px;
-	margin-left: 1em;
-	margin-right: 1em;
-	border-top: solid #BBB thin;
-	border-bottom: solid #BBB thin;
-	}
-
-	
-/*	Figure/Listing/Table titles are centered and gray	*/
-p.figure {
-	color: #333;
-	text-align: center;
-	font-weight: bold;
-	}
-
-/*	highly visible red background and white text for things that need fixing before release	*/
-/*  SHOULD NOT BE PRESENT IN RELEASED PRODUCTS */
-.fix	{
-	background-color: red;
-	font-weight: bold;
-	color: white;
-	}
-
-.question	{
-	font-style:italic;
-	font-weight:bold;
-	color: #555;
-	}
-	
-.titleSmall {
-	font-family: Helvetica, sans-serif;
-	font-size: 11px;
-	}
-
-	
-.plain {
-	font-family: Helvetica, sans-serif;
-	font-size: 12px;
-	font-style: normal;
-	line-height: normal;
-	font-weight: normal;
-	font-variant: normal;
-	color: #000000;
-	text-decoration: none;
-	}
-
-a:link 		{ color: #0033CC }
-a:visited	{ color: #555555 }
-a:hover 	{ color: #0033CC }
+/*	
+	Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). 
+	All rights reserved. 
+	License: http://www.eclipse.org/legal/epl-v10.html
+*/
+
+/*	Add whitespace around entire display to avoid crowding edges of view 	*/
+/* 	20070523-Removed top margin size to close gap between location breadcrumbs and page title	*/
+html {
+	margin: 2px 10px 10px 10px;
+	}
+
+/* 	Set default font to serif style, 12-pt and plain	*/
+body, p, table {
+	font-family: Geneva, Arial, Helvetica, sans-serif;
+	font-size: 13px;
+	font-weight: normal;
+}
+
+/*	Use sans-serif fonts for all title styles	*/
+h1, h2, h3, h4, h5, h6, strong, em {
+	font-family: Helvetica, sans-serif;
+	color: #000000;	
+	}
+
+h1	{ font-size:20px }
+h2	{ font-size:18px }
+h3	{ font-size:16px }
+h4	{ font-size:14px }
+h5	{ font-size:13px }
+h6	{ font-size:12px }
+
+/*	For headlines at the top of a view, add space	*/
+/*	20090224-changed green fade to gold header image	*/
+h1, h2, h3 {
+	background-image: url(html/img/gold_header.png);
+	background-repeat: no-repeat;
+	padding:10px 0px 10px 12px;	
+	}
+
+li	{
+	margin-bottom:8px;	
+	margin-top:8px;
+	}
+
+/*	Footer includes space and a gray line above the company logo	*/
+#footer {
+	padding-top:10px;
+	margin-top:20px;
+	border-top:1px solid #999;
+	font-family: Helvetica, sans-serif;
+	font-size: 11px;
+	color:#333;
+	}
+
+.listing	{
+	font-family: "Courier New", Courier, mono;
+	color: #000000;
+	background-color: #FFFFCC;
+	margin: 5px 0px;
+	}
+		
+.code, pre	{
+	font-family: "Courier New", Courier, mono;
+	font-size: 13px;
+	color: #000000;
+	}
+
+.step	{
+	/* background-color: #EEE; */
+	/* margin: 10px 0px; */
+	color: #111;
+	/* border-bottom:2px solid #EEE; */
+	}
+	
+.substep	{
+	background-color: #EEE;
+	}
+	
+	
+/*	Figure/Listing/Table titles are centered and gray	*/
+p.table {
+	color: #999;
+	font-weight: bold;
+	padding-top: 5px;
+	}
+
+table	{
+	border: solid #999 1px;
+	table-layout: auto;
+	font-size: 13px;
+	}
+
+td, th	{
+	border: solid #999 1px;
+	padding: 5px;
+	vertical-align:top;
+	}
+	
+/*	20070522-replaced gray with green background to match gradiant color for title	*/
+th	{
+	background-color:#FDDD1F;	/* background-color:#acd79b;
+	background-color:#999;
+	color:#FFF; */
+	}
+
+div.ol.p	{
+	margin-left: 3em;
+	}
+
+/* Make all ordered/unordered list items appear in bold gray */
+div ol > li, div ul > li {
+	font-weight:bold;
+	color: #333;
+	}
+
+div ol > p, div ul > p, div li > p {
+	font-weight:normal;
+	}
+	
+/* Make all H4 and H5 items appear in bold gray against a light green background */
+div h5, div h4	{
+	padding:5px 0px 5px 12px;
+	background-color:#FFFF66;
+	/* background-color: #EEE; */
+	font-weight:bold;
+	color: #000000;
+	}
+	
+	
+/*	Notes stand out using a light top & bottom borders with dark gray text	*/
+p.note {
+	/* color: #03C; */
+	/* background-color: #FFFF99; */
+	color: #333;
+	padding: 5px;
+	margin-left: 1em;
+	margin-right: 1em;
+	border-top: solid #BBB thin;
+	border-bottom: solid #BBB thin;
+	}
+
+	
+/*	Figure/Listing/Table titles are centered and gray	*/
+p.figure {
+	color: #333;
+	text-align: center;
+	font-weight: bold;
+	}
+
+/*	highly visible red background and white text for things that need fixing before release	*/
+/*  SHOULD NOT BE PRESENT IN RELEASED PRODUCTS */
+.fix	{
+	background-color: red;
+	font-weight: bold;
+	color: white;
+	}
+
+.question	{
+	font-style:italic;
+	font-weight:bold;
+	color: #555;
+	}
+	
+.titleSmall {
+	font-family: Helvetica, sans-serif;
+	font-size: 11px;
+	}
+
+	
+.plain {
+	font-family: Helvetica, sans-serif;
+	font-size: 12px;
+	font-style: normal;
+	line-height: normal;
+	font-weight: normal;
+	font-variant: normal;
+	color: #000000;
+	text-decoration: none;
+	}
+
+a:link 		{ color: #0033CC }
+a:visited	{ color: #555555 }
+a:hover 	{ color: #0033CC }
Binary file carbidesdk/com.nokia.carbide.cpp.sdk.doc.user/html/img/gold_header.png has changed
--- a/carbidesdk/com.nokia.carbide.cpp.sdk.doc.user/html/reference/api_Change_Notes.htm	Sat Apr 25 12:54:10 2009 -0500
+++ b/carbidesdk/com.nokia.carbide.cpp.sdk.doc.user/html/reference/api_Change_Notes.htm	Mon Apr 27 15:07:35 2009 -0500
@@ -126,3 +126,31 @@
 <div id="footer">Copyright &copy; 2009 Nokia Corporation and/or its subsidiary(-ies). All rights reserved. <br>License: <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a></div>
 </div></body>
 </html>
+
+<h3>Removed APIs</h3>
+<p>The following Carbide APIs have been removed and are no longer available to plug-ins.</p>
+<p>Since Carbide 1.2.0</p>
+<ul>
+  <li><i>N/A</i></li>
+</ul>
+<p>Since Carbide 1.2.1</p>
+<ul>
+  <li><i>N/A</i></li>
+</ul>
+<p>Since Carbide 1.2.2</p>
+<ul>
+  <li><i>Some methods that were not intended to be made public were removed from the following classes and interfaces: </i></li>
+  <ul>
+    <li><i>com.nokia.carbide.cdt.builder.builder.CarbideCPPBuilder</i></li>
+    <li><i>com.nokia.carbide.cdt.builder.ICarbideBuildManager</i></li>
+    <li><i>com.nokia.carbide.cdt.builder.project.ICarbideProjectInfo</i></li>
+    <li><i>com.nokia.carbide.cdt.builder.project.ICarbideBuildConfiguration</i></li>
+  </ul>
+</ul>
+<p>Since Carbide 2.0</p>
+<ul>
+  <li>None</li>
+</ul>
+<div id="footer">Copyright &copy; 2009 Nokia Corporation and/or its subsidiary(-ies). All rights reserved. <br>License: <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a></div>
+</div></body>
+</html>
--- a/carbidesdk/com.nokia.carbide.cpp.sdk.doc.user/html/tasks/carbide_adding_plugins.htm	Sat Apr 25 12:54:10 2009 -0500
+++ b/carbidesdk/com.nokia.carbide.cpp.sdk.doc.user/html/tasks/carbide_adding_plugins.htm	Mon Apr 27 15:07:35 2009 -0500
@@ -1,33 +1,34 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
-
-<html>
-<head>
-	<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
-	<title>Installing Your Own Carbide Plug-ins</title>
-<link rel="StyleSheet" href="../../book.css" type="text/css"/>
-</head>
-
-<body>
-<h2>Installing Your Own Carbide Plug-ins</h2>
-
-<p>Many people want to create installers that  automatically locate and install custom plug-ins into their Carbide installation. You can now query the Registry to locate Carbide installations and use the information there to correctly install your plug-ins into the Carbide / <span class="code">plugins</span> folder. </p>
-<p>When the Carbide Installer runs, it  creates a Registry key that contains the name and location of the installed product. The Registry key location is: </p>
-<blockquote>
-  <p class="code">	Hkey Local Machine/Software/Nokia/Carbide.c++ v2.x</p>
-</blockquote>
-<p>And it  contains these two key values: </p>
-<ul>
-  <li><b>Name</b> &#8212;  contains the name used to identify the program in the <b>Start &gt; Programs</b> menu as specified during the Carbide installation </li>
-  <li><b>Location</b> &#8212; contains the complete path to the Carbide installation (<span class="code">C:\Program Files\Nokia\Carbide.c++ v2.0</span>) </li>
-</ul>
-<p>For each new release of Carbide, the Carbide folder should not exist, so the installer creates it. Each folder name is unique in that it includes the major version number as part of the folder name. </p>
-<p>For users that have multiple Carbide installations of the same version, the folder name also includes an additional identifier. The &quot;Name&quot; value in the key will reflect the unique name given to the <b>Start &gt; Programs</b> shortcut (ie Carbide.c++ v2.0_[1])  as part of the install location. For example, if you installed three copies of version 2.0, the keys might look like this:</p>
-<blockquote>
-  <p class="code">Hkey Local Machine/Software/Nokia/Carbide.c++ v2.0<br>
-  Hkey Local Machine/Software/Nokia/Carbide.c++ v2.0_[1]<br>
-  Hkey Local Machine/Software/Nokia/Carbide.c++ v2.0_[2]</p>
-</blockquote>
-<p>Where the appended <span class="code">_[1]</span>, <span class="code">_[2]</span> help to identify the different installs. </p>
-<div id="footer"><img src="../img/nokia_copyright.png" alt="copyright" width="280" height="21">
-</div></body>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+
+<html>
+<head>
+	<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+	<title>Installing Your Own Carbide Plug-ins</title>
+<link rel="StyleSheet" href="../../book.css" type="text/css"/>
+</head>
+
+<body>
+<h2>Installing Your Own Carbide Plug-ins</h2>
+
+<p>Many people want to create installers that  automatically locate and install custom plug-ins into their Carbide installation. You can now query the Registry to locate Carbide installations and use the information there to correctly install your plug-ins into the Carbide / <span class="code">plugins</span> folder. </p>
+<p>When the Carbide Installer runs, it  creates a Registry key that contains the name and location of the installed product. The Registry key location is: </p>
+<blockquote>
+  <p class="code">	Hkey Local Machine/Software/Nokia/Carbide.c++ v2.x</p>
+</blockquote>
+<p>And it  contains these two key values: </p>
+<ul>
+  <li><b>Name</b> &#8212;  contains the name used to identify the program in the <b>Start &gt; Programs</b> menu as specified during the Carbide installation </li>
+  <li><b>Location</b> &#8212; contains the complete path to the Carbide installation (<span class="code">C:\Program Files\Nokia\Carbide.c++ v2.0</span>) </li>
+</ul>
+<p>For each new release of Carbide, the Carbide folder should not exist, so the installer creates it. Each folder name is unique in that it includes the major version number as part of the folder name. </p>
+<p>For users that have multiple Carbide installations of the same version, the folder name also includes an additional identifier. The &quot;Name&quot; value in the key will reflect the unique name given to the <b>Start &gt; Programs</b> shortcut (ie Carbide.c++ v2.0_[1])  as part of the install location. For example, if you installed three copies of version 2.0, the keys might look like this:</p>
+<blockquote>
+  <p class="code">Hkey Local Machine/Software/Nokia/Carbide.c++ v2.0<br>
+  Hkey Local Machine/Software/Nokia/Carbide.c++ v2.0_[1]<br>
+  Hkey Local Machine/Software/Nokia/Carbide.c++ v2.0_[2]</p>
+</blockquote>
+<p>Where the appended <span class="code">_[1]</span>, <span class="code">_[2]</span> help to identify the different installs. </p>
+<div id="footer">Copyright &copy; 2009 Nokia Corporation and/or its subsidiary(-ies). All rights reserved. <br>
+  License: <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a></div>
+</body>
 </html>
\ No newline at end of file
Binary file core/com.nokia.carbide.cpp.codescanner/html/images/brand/gold_header.png has changed
--- a/core/com.nokia.carbide.cpp.codescanner/html/pref_codescanner_03.htm	Sat Apr 25 12:54:10 2009 -0500
+++ b/core/com.nokia.carbide.cpp.codescanner/html/pref_codescanner_03.htm	Mon Apr 27 15:07:35 2009 -0500
@@ -1,480 +1,492 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><html><head>
-<title>CodeScanner Rules preferences </title>
-<link rel="StyleSheet" href="../book.css" type="text/css"/>
-<script language="JavaScript" src="PLUGINS_ROOT/org.eclipse.help/livehelp.js"></script>
-</head>
-   <body>
-   <div class="Head1">
-<h2>CodeScanner Rules preferences </h2>
-</div>
-   <p>Use the <img src="images/command_link.png" width="16" height="12" border="0" alt="" /> <a class="command-link" href='javascript:executeCommand("org.eclipse.ui.window.preferences(preferencePageId=com.nokia.carbide.cpp.codescanner.ui.CSPreferencePage)")'>
-   CodeScanner</a> <b>Rules</b> page in the <b>Preferences</b> window  or the project's <a href="#cs_Projects">properties</a> window to enable or disable the rules used to validate Symbian OS project files. Rules are divided by  category and have a severity assigned to them by CodeScanner, but you can use the Edit control to change those settings to better suit your  work environment. You can also sort the rules by clicking a column title.  </p>
-   <p align="center"><img src="images/pref_cs_rules.png" width="705" height="603" alt="" /></p>
-   <p class="figure">Figure 1. Rules global settings </p>
-   <table width="700"
-border="0" cellpadding="2" cellspacing="0">
-	 <tr valign="top"><th width="221" class="Cell">Name</th><th width="558" class="Cell">Function</th></tr>
-         <tr valign="top">
-           <td class="Cell"><b>Configure Project Specific Settings... </b></td>
-           <td class="Cell"><p>Click to open the project  <b>Properties</b> window and configure CodeScanner for that specific project. </p>
-           <p class="note"><b>NOTE</b> Only visible in the global CodeScanner preference panels. This also applies to the File Filters and General pages</p></td>
-         </tr>
-         <tr valign="top">
-           <td class="Cell"><b>CodeScanner rules </b></td>
-           <td class="Cell"><p>The list of all CodeScanner rules and their active state. </p>           </td>
-        </tr>
-         <tr valign="top">
-           <td class="Cell"><b>Edit...</b></td>
-           <td class="Cell">Opens the currently selected rule in the edit rule dialog where you can set the categroy and severity of the rule. </td>
-         </tr>
-         <tr valign="top">
-           <td class="Cell"><b>Enable All </b></td>
-           <td class="Cell">Activates all the rules in the CodeScanner rules list. </td>
-         </tr>
-         <tr valign="top">
-           <td class="Cell"><b>Disable All </b></td>
-           <td class="Cell">Deactivates all the rules in the CodeScanner rules list. </td>
-         </tr>
-         <tr valign="top">
-           <td class="Cell"><b>Details</b></td>
-           <td class="Cell">Displays helpful advice to help you avoid triggering the selected rule in your source code and projects. </td>
-         </tr>
-   </table>
-	 <p>&nbsp;</p>
-	 <p>The following table indicates an example of  rules listed in the Rules tab and associated error messages that would be generated in the Problems view.</p>
-	 <table border="0" cellspacing="0" cellpadding="2">
-	 <tr valign="top"><th width="294" class="Cell">Name</th>
-	   <th width="585" class="Cell">Description</th>
-	 </tr>
-
-       <tr>
-         <td width="294" valign="top" class="code"><p>accessArrayElementWithoutCheck</p></td>
-         <td width="585" valign="top"><p>Array element accessed by At()    function without checking index is within array range</p></td>
-       </tr>
-       <tr>
-         <td width="294" valign="top" class="code"><p>accessArrayElementWithoutCheck2</p></td>
-         <td width="585" valign="top"><p>Array element accessed by []    without checking range</p></td>
-       </tr>
-       <tr>
-         <td width="294" valign="top" class="code"><p>activestart</p></td>
-         <td width="585" valign="top"><p>Using CActiveScheduler::Start</p></td>
-       </tr>
-       <tr>
-         <td width="294" valign="top" class="code"><p>activestop</p></td>
-         <td width="585" valign="top"><p>Using CActiveScheduler::Stop</p></td>
-       </tr>
-       <tr>
-         <td width="294" valign="top" class="code"><p>arraypassing</p></td>
-         <td width="585" valign="top"><p>Passing arrays by value rather    than reference</p></td>
-       </tr>
-       <tr>
-         <td width="294" valign="top" class="code"><p>arrayptrcleanup</p></td>
-         <td width="585" valign="top"><p>Using local CArrayPtr classes    without cleanup items</p></td>
-       </tr>
-       <tr>
-         <td width="294" valign="top" class="code"><p>assertdebuginvariant</p></td>
-         <td width="585" valign="top"><p>__ASSERT_DEBUG with    User::Invariant</p></td>
-       </tr>
-       <tr>
-         <td width="294" valign="top" class="code"><p>baddefines</p></td>
-         <td width="585" valign="top"><p>Lowercase definition names</p></td>
-       </tr>
-       <tr>
-         <td width="294" valign="top" class="code"><p>baseconstruct</p></td>
-         <td width="585" valign="top"><p>Leaving function called before    BaseConstructL()</p></td>
-       </tr>
-       <tr>
-         <td width="294" valign="top" class="code"><p>callActiveObjectWithoutCheckingOrStopping</p></td>
-         <td width="585" valign="top"><p>Active object called without checking whether it is active or canceling it first</p></td>
-       </tr>
-       <tr>
-         <td width="294" valign="top" class="code"><p>changenotification</p></td>
-         <td width="585" valign="top"><p>Using RSAVarChangeNotify to see System Agent changes</p></td>
-       </tr>
-       <tr>
-         <td width="294" valign="top" class="code"><p>cleanup</p></td>
-         <td width="585" valign="top"><p>CleanupStack::Pop(AndDestroy) parameters</p></td>
-       </tr>
-       <tr>
-         <td width="294" valign="top" class="code"><p>commentcode</p></td>
-         <td width="585" valign="top"><p>Commented-out code</p></td>
-       </tr>
-       <tr>
-         <td width="294" valign="top" class="code"><p>connect</p></td>
-         <td width="585" valign="top"><p>Ignoring Connect() return value</p></td>
-       </tr>
-       <tr>
-         <td width="294" valign="top" class="code"><p>ConnectAndDontCloseMemberVariable</p></td>
-         <td width="585" valign="top"><p>Calling Connect() or Open() on a member variable without calling Close() in the destructor</p></td>
-       </tr>
-       <tr>
-         <td width="294" valign="top" class="code"><p>constnames</p></td>
-         <td width="585" valign="top"><p>Badly-named constants</p></td>
-       </tr>
-       <tr>
-         <td width="294" valign="top" class="code"><p>consttdescptr</p></td>
-         <td width="585" valign="top"><p>Const descriptor pointer as argument</p></td>
-       </tr>
-       <tr>
-         <td width="294" valign="top" class="code"><p>controlornull</p></td>
-         <td width="585" valign="top"><p>Accessing return value of ControlOrNull()</p></td>
-       </tr>
-       <tr>
-         <td width="294" valign="top" class="code"><p>ctltargettype</p></td>
-         <td width="585" valign="top"><p>Use of targettype ctl</p></td>
-       </tr>
-       <tr>
-         <td width="294" valign="top" class="code"><p>debugrom</p></td>
-         <td width="585" valign="top"><p>Debug components in ROM</p></td>
-       </tr>
-       <tr>
-         <td width="294" valign="top" class="code"><p>declarename</p></td>
-         <td width="585" valign="top"><p>Use of __DECLARE_NAME</p></td>
-       </tr>
-       <tr>
-         <td width="294" valign="top" class="code"><p>deleteMemberVariable</p></td>
-         <td width="585" valign="top"><p>Member variable deleted incorrectly</p></td>
-       </tr>
-       <tr>
-         <td width="294" valign="top" class="code"><p>destructor</p></td>
-         <td width="585" valign="top"><p>Pointer access in destructors</p></td>
-       </tr>
-       <tr>
-         <td width="294" valign="top" class="code"><p>doubleSemiColon</p></td>
-         <td width="585" valign="top"><p>Use of double semicolon</p></td>
-       </tr>
-       <tr>
-         <td width="294" valign="top" class="code"><p>driveletters</p></td>
-         <td width="585" valign="top"><p>Hard-coded drive letters</p></td>
-       </tr>
-       <tr>
-         <td width="294" valign="top" class="code"><p>eikbuttons</p></td>
-         <td width="585" valign="top"><p>Checks that the R_EIK_BUTTONS_* resources are not being used</p></td>
-       </tr>
-       <tr>
-         <td width="294" valign="top" class="code"><p>eikonenvstatic</p></td>
-         <td width="585" valign="top"><p>Using CEikonEnv::Static</p></td>
-       </tr>
-       <tr>
-         <td width="294" valign="top" class="code"><p>enummembers</p></td>
-         <td width="585" valign="top"><p>Enums with badly-named members</p></td>
-       </tr>
-       <tr>
-         <td width="294" valign="top" class="code"><p>enumnames</p></td>
-         <td width="585" valign="top"><p>Badly-named enums</p></td>
-       </tr>
-       <tr>
-         <td width="294" valign="top" class="code"><p>exportinline</p></td>
-         <td width="585" valign="top"><p>Exporting inline functions</p></td>
-       </tr>
-       <tr>
-         <td width="294" valign="top" class="code"><p>exportpurevirtual</p></td>
-         <td width="585" valign="top"><p>Exporting pure virtual functions</p></td>
-       </tr>
-       <tr>
-         <td width="294" valign="top" class="code"><p>externaldriveletters</p></td>
-         <td width="585" valign="top"><p>Hard-coded external drive letters</p></td>
-       </tr>
-       <tr>
-         <td width="294" valign="top" class="code"><p>foff</p></td>
-         <td width="585" valign="top"><p>Use of _FOFF</p></td>
-       </tr>
-       <tr>
-         <td width="294" valign="top" class="code"><p>forbiddenwords</p></td>
-         <td width="585" valign="top"><p>Use of forbidden words in header files</p></td>
-       </tr>
-       <tr>
-         <td width="294" valign="top" class="code"><p>forgottoputptroncleanupstack</p></td>
-         <td width="585" valign="top"><p>Neglected to put variable on cleanup stack</p></td>
-       </tr>
-       <tr>
-         <td width="294" valign="top" class="code"><p>friend</p></td>
-         <td width="585" valign="top"><p>Use of friends</p></td>
-       </tr>
-       <tr>
-         <td width="294" valign="top" class="code"><p>goto</p></td>
-         <td width="585" valign="top"><p>Use of goto</p></td>
-       </tr>
-       <tr>
-         <td width="294" valign="top" class="code"><p>ifassignments</p></td>
-         <td width="585" valign="top"><p>Assignment in an If statement</p></td>
-       </tr>
-       <tr>
-         <td width="294" valign="top" class="code"><p>ifpreprocessor</p></td>
-         <td width="585" valign="top"><p>Use of #if in .h files</p></td>
-       </tr>
-       <tr>
-         <td width="294" valign="top" class="code"><p>inheritanceorder</p></td>
-         <td width="585" valign="top"><p>Incorrect inheritance order of M and C classes</p></td>
-       </tr>
-       <tr>
-         <td width="294" valign="top" class="code"><p>intleaves</p></td>
-         <td width="585" valign="top"><p>Methods that leave AND return a TInt error</p></td>
-       </tr>
-       <tr>
-         <td width="294" valign="top" class="code"><p>jmp</p></td>
-         <td width="585" valign="top"><p>Use of setjmp and/or longjmp</p></td>
-       </tr>
-       <tr>
-         <td width="294" valign="top" class="code"><p>leave</p></td>
-         <td width="585" valign="top"><p>Leaving functions called in non-leaving functions</p></td>
-       </tr>
-       <tr>
-         <td width="294" valign="top" class="code"><p>LeaveNoError</p></td>
-         <td width="585" valign="top"><p>Leaving with KErrNone</p></td>
-       </tr>
-       <tr>
-         <td width="294" valign="top" class="code"><p>leavingoperators</p></td>
-         <td width="585" valign="top"><p>Leaving functions called in operator functions</p></td>
-       </tr>
-       <tr>
-         <td width="294" valign="top" class="code"><p>LFunctionCantLeave</p></td>
-         <td width="585" valign="top"><p>L-functions that cannot leave</p></td>
-       </tr>
-       <tr>
-         <td width="294" valign="top" class="code"><p>longlines</p></td>
-         <td width="585" valign="top"><p>Overly long lines of code</p></td>
-       </tr>
-       <tr>
-         <td width="294" valign="top" class="code"><p>magicnumbers</p></td>
-         <td width="585" valign="top"><p>Use of magic numbers</p></td>
-       </tr>
-       <tr>
-         <td width="294" valign="top" class="code"><p>mclassdestructor</p></td>
-         <td width="585" valign="top"><p>M class has destructor</p></td>
-       </tr>
-       <tr>
-         <td width="294" valign="top" class="code"><p>memberlc</p></td>
-         <td width="585" valign="top"><p>Assigning LC methods to member variables</p></td>
-       </tr>
-       <tr>
-         <td width="294" valign="top" class="code"><p>membervariablecallld</p></td>
-         <td width="585" valign="top"><p>Calling LD function on member variable</p></td>
-       </tr>
-       <tr>
-         <td width="294" valign="top" class="code"><p>missingcancel</p></td>
-         <td width="585" valign="top"><p>Cancel() not called in active object's destructor</p></td>
-       </tr>
-       <tr>
-         <td width="294" valign="top" class="code"><p>missingcclass</p></td>
-         <td width="585" valign="top"><p>C class not inheriting from another C class</p></td>
-       </tr>
-       <tr>
-         <td width="294" valign="top" class="code"><p>mmpsourcepath</p></td>
-         <td width="585" valign="top"><p>Use of absolute path names in MMP files</p></td>
-       </tr>
-       <tr>
-         <td width="294" valign="top" class="code"><p>multilangrsc</p></td>
-         <td width="585" valign="top"><p>Not using    BaflUtils::NearestLanguageFile() when loading a resource file</p></td>
-       </tr>
-       <tr>
-         <td width="294" valign="top" class="code"><p>multipledeclarations</p></td>
-         <td width="585" valign="top"><p>Multiple declarations on one line</p></td>
-       </tr>
-       <tr>
-         <td width="294" valign="top" class="code"><p>multipleinheritance</p></td>
-         <td width="585" valign="top"><p>Non M-class multiple inheritance</p></td>
-       </tr>
-       <tr>
-         <td width="294" valign="top" class="code"><p>mydocs</p></td>
-         <td width="585" valign="top"><p>Hard-coded mydocs directory strings</p></td>
-       </tr>
-       <tr>
-         <td width="294" valign="top" class="code"><p>namespace</p></td>
-         <td width="585" valign="top"><p>Use of namespace</p></td>
-       </tr>
-       <tr>
-         <td width="294" valign="top" class="code"><p>newlreferences</p></td>
-         <td width="585" valign="top"><p>NewL() returning a reference</p></td>
-       </tr>
-       <tr>
-         <td width="294" valign="top" class="code"><p>noleavetrap</p></td>
-         <td width="585" valign="top"><p>TRAP used with no leaving functions</p></td>
-       </tr>
-       <tr>
-         <td width="294" valign="top" class="code"><p>nonconsthbufc</p></td>
-         <td width="585" valign="top"><p>Non-const HBufC* parameter passing</p></td>
-       </tr>
-       <tr>
-         <td width="294" valign="top" class="code"><p>nonconsttdesc</p></td>
-         <td width="585" valign="top"><p>Non-const TDesC&amp; parameter passing</p></td>
-       </tr>
-       <tr>
-         <td width="294" valign="top" class="code"><p>nonleavenew</p></td>
-         <td width="585" valign="top"><p>Use of new without (ELeave)</p></td>
-       </tr>
-       <tr>
-         <td width="294" valign="top" class="code"><p>nonunicodeskins</p></td>
-         <td width="585" valign="top"><p>Non-Unicode skins</p></td>
-       </tr>
-       <tr>
-         <td width="294" valign="top" class="code"><p>null</p></td>
-         <td width="585" valign="top"><p>NULL equality check</p></td>
-       </tr>
-       <tr>
-         <td width="294" valign="top" class="code"><p>open</p></td>
-         <td width="585" valign="top"><p>Ignoring Open() return value</p></td>
-       </tr>
-       <tr>
-         <td width="294" valign="top" class="code"><p>pointertoarrays</p></td>
-         <td width="585" valign="top"><p>Pointer to arrays as members of a C class</p></td>
-       </tr>
-       <tr>
-         <td width="294" valign="top" class="code"><p>pragmadisable</p></td>
-         <td width="585" valign="top"><p>Use of #pragma warning</p></td>
-       </tr>
-       <tr>
-         <td width="294" valign="top" class="code"><p>pragmamessage</p></td>
-         <td width="585" valign="top"><p>Use of #pragma message</p></td>
-       </tr>
-       <tr>
-         <td width="294" valign="top" class="code"><p>pragmaother</p></td>
-         <td width="585" valign="top"><p>Use of #pragma other than warning and message</p></td>
-       </tr>
-       <tr>
-         <td width="294" valign="top" class="code"><p>privateinheritance</p></td>
-         <td width="585" valign="top"><p>Use of private inheritance</p></td>
-       </tr>
-       <tr>
-         <td width="294" valign="top" class="code"><p>pushaddrvar</p></td>
-         <td width="585" valign="top"><p>Pushing address of a variable onto the cleanup stack</p></td>
-       </tr>
-       <tr>
-         <td width="294" valign="top" class="code"><p>pushmember</p></td>
-         <td width="585" valign="top"><p>Pushing data members onto the cleanup stack</p></td>
-       </tr>
-       <tr>
-         <td width="294" valign="top" class="code"><p>readresource</p></td>
-         <td width="585" valign="top"><p>Using ReadResource() instead of ReadResourceL()</p></td>
-       </tr>
-       <tr>
-         <td width="294" valign="top" class="code"><p>resourcenotoncleanupstack</p></td>
-         <td width="585" valign="top"><p>Neglected to put resource objects on cleanup stack</p></td>
-       </tr>
-       <tr>
-         <td width="294" valign="top" class="code"><p>resourcesonheap</p></td>
-         <td width="585" valign="top"><p>Resource objects on the heap</p></td>
-       </tr>
-       <tr>
-         <td width="294" valign="top" class="code"><p>returndescriptoroutofscope</p></td>
-         <td width="585" valign="top"><p>Return descriptor out of scope</p></td>
-       </tr>
-       <tr>
-         <td width="294" valign="top" class="code"><p>rfs</p></td>
-         <td width="585" valign="top"><p>Use of non-pointer/reference RFs</p></td>
-       </tr>
-       <tr>
-         <td width="294" valign="top" class="code"><p>rssnames</p></td>
-         <td width="585" valign="top"><p>Duplicate RSS names</p></td>
-       </tr>
-       <tr>
-         <td width="294" valign="top" class="code"><p>stringliterals</p></td>
-         <td width="585" valign="top"><p>Use of _L string literals</p></td>
-       </tr>
-       <tr>
-         <td width="294" valign="top" class="code"><p>stringsinresourcefiles</p></td>
-         <td width="585" valign="top"><p>Strings in RSS or RA files</p></td>
-       </tr>
-       <tr>
-         <td width="294" valign="top" class="code"><p>struct</p></td>
-         <td width="585" valign="top"><p>Use of struct</p></td>
-       </tr>
-       <tr>
-         <td width="294" valign="top" class="code"><p>tcclasses</p></td>
-         <td width="585" valign="top"><p>T classes inheriting from C classes</p></td>
-       </tr>
-       <tr>
-         <td width="294" valign="top" class="code"><p>tclassdestructor</p></td>
-         <td width="585" valign="top"><p>T class has destructor</p></td>
-       </tr>
-       <tr>
-         <td width="294" valign="top" class="code"><p>todocomments</p></td>
-         <td width="585" valign="top"><p>&quot;To do&rdquo; comments</p></td>
-       </tr>
-       <tr>
-         <td width="294" valign="top" class="code"><p>trapcleanup</p></td>
-         <td width="585" valign="top"><p>Use of LC function in TRAPs</p></td>
-       </tr>
-       <tr>
-         <td width="294" valign="top" class="code"><p>trapeleave</p></td>
-         <td width="585" valign="top"><p>Trapping new(ELeave)</p></td>
-       </tr>
-       <tr>
-         <td width="294" valign="top" class="code"><p>traprunl</p></td>
-         <td width="585" valign="top"><p>Trapping of (Do)RunL() rather than using RunError()</p></td>
-       </tr>
-       <tr>
-         <td width="294" valign="top" class="code"><p>trspassing</p></td>
-         <td width="585" valign="top"><p>Passing TRequestStatus parameters by value</p></td>
-       </tr>
-       <tr>
-         <td width="294" valign="top" class="code"><p>uids</p></td>
-         <td width="585" valign="top"><p>Duplicate UIDs</p></td>
-       </tr>
-       <tr>
-         <td width="294" valign="top" class="code"><p>uncompressedaif</p></td>
-         <td width="585" valign="top"><p>Uncompressed AIFs in ROM</p></td>
-       </tr>
-       <tr>
-         <td width="294" valign="top" class="code"><p>uncompressedbmp</p></td>
-         <td width="585" valign="top"><p>Uncompressed bitmaps in ROM</p></td>
-       </tr>
-       <tr>
-         <td width="294" valign="top" class="code"><p>unicodesource</p></td>
-         <td width="585" valign="top"><p>Unicode source files</p></td>
-       </tr>
-       <tr>
-         <td width="294" valign="top" class="code"><p>userafter</p></td>
-         <td width="585" valign="top"><p>Use of User::After</p></td>
-       </tr>
-       <tr>
-         <td width="294" valign="top" class="code"><p>userfree</p></td>
-         <td width="585" valign="top"><p>Using User::Free directly</p></td>
-       </tr>
-       <tr>
-         <td width="294" valign="top" class="code"><p>userWaitForRequest</p></td>
-         <td width="585" valign="top"><p>Use of User::WaitForRequest</p></td>
-       </tr>
-       <tr>
-         <td width="294" valign="top" class="code"><p>variablenames</p></td>
-         <td width="585" valign="top"><p>Local variables with member/argument names</p></td>
-       </tr>
-       <tr>
-         <td width="294" valign="top" class="code"><p>voidparameter</p></td>
-         <td width="585" valign="top"><p>Void parameter explicitly declared</p></td>
-       </tr>
-       <tr>
-         <td width="294" valign="top" class="code"><p>worryingcomments</p></td>
-         <td width="585" valign="top"><p>Worrying comments</p></td>
-       </tr>
-     </table>
-   <p>&nbsp;</p>
-	 <h3><a name="cs_Projects" id="cs_Projects"></a>CodeScanner for projects </h3>
-	 <p>CodeScanner options can also be set at the project level in the <a href="pref_codescanner_01.htm#cs_Projects">Properties</a> window. Right-click the project and choose <strong>Properties</strong>, then select the <strong>Carbide.c++ &gt; Carbide CodeScanner</strong> element in the properties  list. Click a tab to view the appropriate page and set its options. </p>
-	 <p align="left">CodeScanner options specific to the project:</p>
-	 <table width="700"
-border="0" cellpadding="2" cellspacing="0">
-       <tr valign="top">
-         <th width="203" class="Cell">Name</th>
-         <th width="487" class="Cell">Description</th>
-       </tr>
-       <tr valign="top">
-         <td class="Cell"><strong>Enable Project Specific Settings </strong></td>
-         <td class="Cell">Activate to set project specific CodeScanner settings. By default a project in the workspace uses the global CodeScanner settings unless this option is activated. </td>
-       </tr>
-       <tr valign="top">
-         <td class="Cell"><b>Configure Workspace Settings... </b></td>
-         <td class="Cell"><p>Click to open the <b>Preferences</b> window and configure CodeScanner for the workspace. </p>
-             <p class="note"><b>NOTE</b> Only visible in the project CodeScanner property panels. </p></td>
-       </tr>
-     </table>
-	 <p>&nbsp;</p>
-	 <h5>Other references</h5>
-	 <ul>
-	   <li><a href="pref_codescanner_01.htm">CodeScanner General </a></li>
-	   <li><a href="pref_codescanner_02.htm">CodeScanner File Filters</a></li>
-   </ul>
-	 <div id="footer">Copyright &copy; 2009 Nokia Corporation and/or its subsidiary(-ies). All rights reserved. <br>License: <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a></div>
-   </body>
-   </html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><html><head>
+<title>CodeScanner Rules preferences </title>
+<link rel="StyleSheet" href="../book.css" type="text/css"/>
+<script language="JavaScript" src="PLUGINS_ROOT/org.eclipse.help/livehelp.js"></script>
+</head>
+   <body>
+   <div class="Head1">
+<h2>CodeScanner Rules preferences </h2>
+</div>
+   <p>Use the <img src="images/command_link.png" width="16" height="12" border="0" alt="" /> <a class="command-link" href='javascript:executeCommand("org.eclipse.ui.window.preferences(preferencePageId=com.nokia.carbide.cpp.codescanner.ui.CSPreferencePage)")'>
+   CodeScanner</a> <b>Rules</b> page in the <b>Preferences</b> window  or the project's <a href="#cs_Projects">properties</a> window to enable or disable the rules used to validate Symbian OS project files. Rules are divided by  category and have a severity assigned to them by CodeScanner, but you can use the Edit control to change those settings to better suit your  work environment. You can also sort the rules by clicking a column title.  </p>
+   <p align="center"><img src="images/pref_cs_rules.png" width="705" height="603" alt="" /></p>
+   <p class="figure">Figure 1. Rules global settings </p>
+   <table width="700"
+border="0" cellpadding="2" cellspacing="0">
+	 <tr valign="top"><th width="221" class="Cell">Name</th><th width="558" class="Cell">Function</th></tr>
+         <tr valign="top">
+           <td class="Cell"><b>Configure Project Specific Settings... </b></td>
+           <td class="Cell"><p>Click to open the project  <b>Properties</b> window and configure CodeScanner for that specific project. </p>
+           <p class="note"><b>NOTE</b> Only visible in the global CodeScanner preference panels. This also applies to the File Filters and General pages</td>
+         </tr>
+         <tr valign="top">
+           <td class="Cell"><b>CodeScanner rules </b></td>
+           <td class="Cell"><p>The list of all CodeScanner rules and their active state. </p>           </td>
+        </tr>
+         <tr valign="top">
+           <td class="Cell"><b>Edit...</b></td>
+           <td class="Cell">Opens the currently selected rule in the edit rule dialog where you can set the categroy and severity of the rule. </td>
+         </tr>
+         <tr valign="top">
+           <td class="Cell"><b>Enable All </b></td>
+           <td class="Cell">Activates all the rules in the CodeScanner rules list. </td>
+         </tr>
+         <tr valign="top">
+           <td class="Cell"><b>Disable All </b></td>
+           <td class="Cell">Deactivates all the rules in the CodeScanner rules list. </td>
+         </tr>
+         <tr valign="top">
+           <td class="Cell"><b>Details</b></td>
+           <td class="Cell">Displays helpful advice to help you avoid triggering the selected rule in your source code and projects. </td>
+         </tr>
+   </table>
+	 <p>&nbsp;</p>
+	 <p>The following table indicates an example of  rules listed in the Rules tab and associated error messages that would be generated in the Problems view.</p>
+	 <table border="0" cellspacing="0" cellpadding="2">
+	 <tr valign="top"><th width="353" class="Cell">Name</th>
+	   <th width="398" class="Cell">Description</th>
+	 </tr>
+
+       <tr>
+         <td class="code">accessArrayElementWithoutCheck</td>
+         <td width="398" valign="top">Array element accessed by At() function without checking index is within array range</td>
+       </tr>
+       <tr>
+         <td class="code">accessArrayElementWithoutCheck2</td>
+         <td width="398" valign="top">Array element accessed by [] without checking range</td>
+       </tr>
+       <tr>
+         <td class="code">activestart</td>
+         <td width="398" valign="top">Using CActiveScheduler::Start</td>
+       </tr>
+       <tr>
+         <td class="code">activestop</td>
+         <td width="398" valign="top">Using CActiveScheduler::Stop</td>
+       </tr>
+       <tr>
+         <td class="code">arraypassing</td>
+         <td width="398" valign="top">Passing arrays by value rather    than reference</td>
+       </tr>
+       <tr>
+         <td class="code">arrayptrcleanup</td>
+         <td width="398" valign="top">Using local CArrayPtr classes    without cleanup items</td>
+       </tr>
+       <tr>
+         <td class="code">assertdebuginvariant</td>
+         <td width="398" valign="top">__ASSERT_DEBUG with    User::Invariant</td>
+       </tr>
+       <tr>
+         <td class="code">baddefines</td>
+         <td width="398" valign="top">Lowercase definition names</td>
+       </tr>
+       <tr>
+         <td class="code">baseconstruct</td>
+         <td width="398" valign="top">Leaving function called before    BaseConstructL()</td>
+       </tr>
+       <tr>
+         <td class="code">callActiveObjectWithoutCheckingOrStopping</td>
+         <td width="398" valign="top">Active object called without checking whether it is active or canceling it first</td>
+       </tr>
+       <tr>
+         <td class="code">changenotification</td>
+         <td width="398" valign="top">Using RSAVarChangeNotify to see System Agent changes</td>
+       </tr>
+       <tr>
+         <td class="code">cleanup</td>
+         <td width="398" valign="top">CleanupStack::Pop(AndDestroy) parameters</td>
+       </tr>
+       <tr>
+         <td class="code">commentcode</td>
+         <td width="398" valign="top">Commented-out code</td>
+       </tr>
+       <tr>
+         <td class="code">connect</td>
+         <td width="398" valign="top">Ignoring Connect() return value</td>
+       </tr>
+       <tr>
+         <td class="code">ConnectAndDontCloseMemberVariable</td>
+         <td width="398" valign="top">Calling Connect() or Open() on a member variable without calling Close() in the destructor</td>
+       </tr>
+       <tr>
+         <td class="code">constnames</td>
+         <td width="398" valign="top">Badly-named constants</td>
+       </tr>
+       <tr>
+         <td class="code">consttdescptr</td>
+         <td width="398" valign="top">Const descriptor pointer as argument</td>
+       </tr>
+       <tr>
+         <td class="code">controlornull</td>
+         <td width="398" valign="top">Accessing return value of ControlOrNull()</td>
+       </tr>
+       <tr>
+         <td class="code">crepositorie</td>
+         <td valign="top">Check for Central Repository usage</td>
+       </tr>
+       <tr>
+         <td class="code">ctltargettype</td>
+         <td width="398" valign="top">Use of targettype ctl</td>
+       </tr>
+       <tr>
+         <td valign="top" class="code">customizableicons</td>
+         <td valign="top"> Check for customizable icons</td>
+       </tr>
+       <tr>
+         <td class="code">debugrom</td>
+         <td width="398" valign="top">Debug components in ROM</td>
+       </tr>
+       <tr>
+         <td class="code">declarename</td>
+         <td width="398" valign="top">Use of __DECLARE_NAME</td>
+       </tr>
+       <tr>
+         <td class="code">deleteMemberVariable</td>
+         <td width="398" valign="top">Member variable deleted incorrectly</td>
+       </tr>
+       <tr>
+         <td class="code">destructor</td>
+         <td width="398" valign="top">Pointer access in destructors</td>
+       </tr>
+       <tr>
+         <td class="code">doubleSemiColon</td>
+         <td width="398" valign="top">Use of double semicolon</td>
+       </tr>
+       <tr>
+         <td class="code">driveletters</td>
+         <td width="398" valign="top">Hard-coded drive letters</td>
+       </tr>
+       <tr>
+         <td class="code">eikbuttons</td>
+         <td width="398" valign="top">Checks that the R_EIK_BUTTONS_* resources are not being used</td>
+       </tr>
+       <tr>
+         <td class="code">eikonenvstatic</td>
+         <td width="398" valign="top">Using CEikonEnv::Static</td>
+       </tr>
+       <tr>
+         <td class="code">enummembers</td>
+         <td width="398" valign="top">Enums with badly-named members</td>
+       </tr>
+       <tr>
+         <td class="code">enumnames</td>
+         <td width="398" valign="top">Badly-named enums</td>
+       </tr>
+       <tr>
+         <td class="code">exportinline</td>
+         <td width="398" valign="top">Exporting inline functions</td>
+       </tr>
+       <tr>
+         <td class="code">exportpurevirtual</td>
+         <td width="398" valign="top">Exporting pure virtual functions</td>
+       </tr>
+       <tr>
+         <td class="code">externaldriveletters</td>
+         <td width="398" valign="top">Hard-coded external drive letters</td>
+       </tr>
+       <tr>
+         <td class="code">flags</td>
+         <td valign="top">Check for flag usage</td>
+       </tr>
+       <tr>
+         <td class="code">foff</td>
+         <td width="398" valign="top">Use of _FOFF</td>
+       </tr>
+       <tr>
+         <td class="code">forbiddenwords</td>
+         <td width="398" valign="top">Use of forbidden words in header files</td>
+       </tr>
+       <tr>
+         <td class="code">forgottoputptroncleanupstack</td>
+         <td width="398" valign="top">Neglected to put variable on cleanup stack</td>
+       </tr>
+       <tr>
+         <td class="code">friend</td>
+         <td width="398" valign="top">Use of friends</td>
+       </tr>
+       <tr>
+         <td class="code">goto</td>
+         <td width="398" valign="top">Use of goto</td>
+       </tr>
+       <tr>
+         <td class="code">ifassignments</td>
+         <td width="398" valign="top">Assignment in an If statement</td>
+       </tr>
+       <tr>
+         <td class="code">ifpreprocessor</td>
+         <td width="398" valign="top">Use of #if in .h files</td>
+       </tr>
+       <tr>
+         <td class="code">inheritanceorder</td>
+         <td width="398" valign="top">Incorrect inheritance order of M and C classes</td>
+       </tr>
+       <tr>
+         <td class="code">intleaves</td>
+         <td width="398" valign="top">Methods that leave AND return a TInt error</td>
+       </tr>
+       <tr>
+         <td class="code">jmp</td>
+         <td width="398" valign="top">Use of setjmp and/or longjmp</td>
+       </tr>
+       <tr>
+         <td class="code">leave</td>
+         <td width="398" valign="top">Leaving functions called in non-leaving functions</td>
+       </tr>
+       <tr>
+         <td class="code">LeaveNoError</td>
+         <td width="398" valign="top">Leaving with KErrNone</td>
+       </tr>
+       <tr>
+         <td class="code">leavingoperators</td>
+         <td width="398" valign="top">Leaving functions called in operator functions</td>
+       </tr>
+       <tr>
+         <td class="code">LFunctionCantLeave</td>
+         <td width="398" valign="top">L-functions that cannot leave</td>
+       </tr>
+       <tr>
+         <td class="code">longlines</td>
+         <td width="398" valign="top">Overly long lines of code</td>
+       </tr>
+       <tr>
+         <td class="code">magicnumbers</td>
+         <td width="398" valign="top">Use of magic numbers</td>
+       </tr>
+       <tr>
+         <td class="code">mclassdestructor</td>
+         <td width="398" valign="top">M class has destructor</td>
+       </tr>
+       <tr>
+         <td class="code">memberlc</td>
+         <td width="398" valign="top">Assigning LC methods to member variables</td>
+       </tr>
+       <tr>
+         <td class="code">membervariablecallld</td>
+         <td width="398" valign="top">Calling LD function on member variable</td>
+       </tr>
+       <tr>
+         <td class="code">missingcancel</td>
+         <td width="398" valign="top">Cancel() not called in active object's destructor</td>
+       </tr>
+       <tr>
+         <td class="code">missingcclass</td>
+         <td width="398" valign="top">C class not inheriting from another C class</td>
+       </tr>
+       <tr>
+         <td class="code">mmpsourcepath</td>
+         <td width="398" valign="top">Use of absolute path names in MMP files</td>
+       </tr>
+       <tr>
+         <td class="code">multilangrsc</td>
+         <td width="398" valign="top">Not using    BaflUtils::NearestLanguageFile() when loading a resource file</td>
+       </tr>
+       <tr>
+         <td class="code">multipledeclarations</td>
+         <td width="398" valign="top">Multiple declarations on one line</td>
+       </tr>
+       <tr>
+         <td class="code">multipleinheritance</td>
+         <td width="398" valign="top">Non M-class multiple inheritance</td>
+       </tr>
+       <tr>
+         <td class="code">mydocs</td>
+         <td width="398" valign="top">Hard-coded mydocs directory strings</td>
+       </tr>
+       <tr>
+         <td class="code">namespace</td>
+         <td width="398" valign="top">Use of namespace</td>
+       </tr>
+       <tr>
+         <td class="code">newlreferences</td>
+         <td width="398" valign="top">NewL() returning a reference</td>
+       </tr>
+       <tr>
+         <td class="code">noleavetrap</td>
+         <td width="398" valign="top">TRAP used with no leaving functions</td>
+       </tr>
+       <tr>
+         <td class="code">nonconsthbufc</td>
+         <td width="398" valign="top">Non-const HBufC* parameter passing</td>
+       </tr>
+       <tr>
+         <td class="code">nonconsttdesc</td>
+         <td width="398" valign="top">Non-const TDesC&amp; parameter passing</td>
+       </tr>
+       <tr>
+         <td class="code">nonleavenew</td>
+         <td width="398" valign="top">Use of new without (ELeave)</td>
+       </tr>
+       <tr>
+         <td class="code">nonunicodeskins</td>
+         <td width="398" valign="top">Non-Unicode skins</td>
+       </tr>
+       <tr>
+         <td class="code">null</td>
+         <td width="398" valign="top">NULL equality check</td>
+       </tr>
+       <tr>
+         <td class="code">open</td>
+         <td width="398" valign="top">Ignoring Open() return value</td>
+       </tr>
+       <tr>
+         <td class="code">pointertoarrays</td>
+         <td width="398" valign="top">Pointer to arrays as members of a C class</td>
+       </tr>
+       <tr>
+         <td class="code">pragmadisable</td>
+         <td width="398" valign="top">Use of #pragma warning</td>
+       </tr>
+       <tr>
+         <td class="code">pragmamessage</td>
+         <td width="398" valign="top">Use of #pragma message</td>
+       </tr>
+       <tr>
+         <td class="code">pragmaother</td>
+         <td width="398" valign="top">Use of #pragma other than warning and message</td>
+       </tr>
+       <tr>
+         <td class="code">privateinheritance</td>
+         <td width="398" valign="top">Use of private inheritance</td>
+       </tr>
+       <tr>
+         <td class="code">pushaddrvar</td>
+         <td width="398" valign="top">Pushing address of a variable onto the cleanup stack</td>
+       </tr>
+       <tr>
+         <td class="code">pushmember</td>
+         <td width="398" valign="top">Pushing data members onto the cleanup stack</td>
+       </tr>
+       <tr>
+         <td class="code">readresource</td>
+         <td width="398" valign="top">Using ReadResource() instead of ReadResourceL()</td>
+       </tr>
+       <tr>
+         <td class="code">resourcenotoncleanupstack</td>
+         <td width="398" valign="top">Neglected to put resource objects on cleanup stack</td>
+       </tr>
+       <tr>
+         <td class="code">resourcesonheap</td>
+         <td width="398" valign="top">Resource objects on the heap</td>
+       </tr>
+       <tr>
+         <td class="code">returndescriptoroutofscope</td>
+         <td width="398" valign="top">Return descriptor out of scope</td>
+       </tr>
+       <tr>
+         <td class="code">rfs</td>
+         <td width="398" valign="top">Use of non-pointer/reference RFs</td>
+       </tr>
+       <tr>
+         <td class="code">rssnames</td>
+         <td width="398" valign="top">Duplicate RSS names</td>
+       </tr>
+       <tr>
+         <td class="code">stringliterals</td>
+         <td width="398" valign="top">Use of _L string literals</td>
+       </tr>
+       <tr>
+         <td class="code">stringsinresourcefiles</td>
+         <td width="398" valign="top">Strings in RSS or RA files</td>
+       </tr>
+       <tr>
+         <td class="code">struct</td>
+         <td width="398" valign="top">Use of struct</td>
+       </tr>
+       <tr>
+         <td class="code">tcclasses</td>
+         <td width="398" valign="top">T classes inheriting from C classes</td>
+       </tr>
+       <tr>
+         <td class="code">tclassdestructor</td>
+         <td width="398" valign="top">T class has destructor</td>
+       </tr>
+       <tr>
+         <td class="code">todocomments</td>
+         <td width="398" valign="top">&quot;To do&rdquo; comments</td>
+       </tr>
+       <tr>
+         <td class="code">trapcleanup</td>
+         <td width="398" valign="top">Use of LC function in TRAPs</td>
+       </tr>
+       <tr>
+         <td class="code">trapeleave</td>
+         <td width="398" valign="top">Trapping new(ELeave)</td>
+       </tr>
+       <tr>
+         <td class="code">traprunl</td>
+         <td width="398" valign="top">Trapping of (Do)RunL() rather than using RunError()</td>
+       </tr>
+       <tr>
+         <td class="code">trspassing</td>
+         <td width="398" valign="top">Passing TRequestStatus parameters by value</td>
+       </tr>
+       <tr>
+         <td class="code">uids</td>
+         <td width="398" valign="top">Duplicate UIDs</td>
+       </tr>
+       <tr>
+         <td class="code">uncompressedaif</td>
+         <td width="398" valign="top">Uncompressed AIFs in ROM</td>
+       </tr>
+       <tr>
+         <td class="code">uncompressedbmp</td>
+         <td width="398" valign="top">Uncompressed bitmaps in ROM</td>
+       </tr>
+       <tr>
+         <td class="code">unicodesource</td>
+         <td width="398" valign="top">Unicode source files</td>
+       </tr>
+       <tr>
+         <td class="code">userafter</td>
+         <td width="398" valign="top">Use of User::After</td>
+       </tr>
+       <tr>
+         <td class="code">userfree</td>
+         <td width="398" valign="top">Using User::Free directly</td>
+       </tr>
+       <tr>
+         <td class="code">userWaitForRequest</td>
+         <td width="398" valign="top">Use of User::WaitForRequest</td>
+       </tr>
+       <tr>
+         <td class="code">variablenames</td>
+         <td width="398" valign="top">Local variables with member/argument names</td>
+       </tr>
+       <tr>
+         <td class="code">voidparameter</td>
+         <td width="398" valign="top">Void parameter explicitly declared</td>
+       </tr>
+       <tr>
+         <td class="code">worryingcomments</td>
+         <td width="398" valign="top">Worrying comments</td>
+       </tr>
+     </table>
+   &nbsp;</p>
+	 <h3><a name="cs_Projects" id="cs_Projects"></a>CodeScanner for projects </h3>
+	 <p>CodeScanner options can also be set at the project level in the <a href="pref_codescanner_01.htm#cs_Projects">Properties</a> window. Right-click the project and choose <strong>Properties</strong>, then select the <strong>Carbide.c++ &gt; Carbide CodeScanner</strong> element in the properties  list. Click a tab to view the appropriate page and set its options. </p>
+	 <p align="left">CodeScanner options specific to the project:</p>
+	 <table width="700"
+border="0" cellpadding="2" cellspacing="0">
+       <tr valign="top">
+         <th width="203" class="Cell">Name</th>
+         <th width="487" class="Cell">Description</th>
+       </tr>
+       <tr valign="top">
+         <td class="Cell"><strong>Enable Project Specific Settings </strong></td>
+         <td class="Cell">Activate to set project specific CodeScanner settings. By default a project in the workspace uses the global CodeScanner settings unless this option is activated. </td>
+       </tr>
+       <tr valign="top">
+         <td class="Cell"><b>Configure Workspace Settings... </b></td>
+         <td class="Cell"><p>Click to open the <b>Preferences</b> window and configure CodeScanner for the workspace. </p>
+           <p class="note"><b>NOTE</b> Only visible in the project CodeScanner property panels. </td>
+       </tr>
+     </table>
+	 <p>&nbsp;</p>
+	 <h5>Other references</h5>
+	 <ul>
+	   <li><a href="pref_codescanner_01.htm">CodeScanner General </a></li>
+	   <li><a href="pref_codescanner_02.htm">CodeScanner File Filters</a></li>
+   </ul>
+	 <div id="footer">Copyright &copy; 2009 Nokia Corporation and/or its subsidiary(-ies). All rights reserved. <br>License: <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a></div>
+   </body>
+   </html>
    
\ No newline at end of file
--- a/core/com.nokia.carbide.cpp.codescanner/html/release_notes.htm	Sat Apr 25 12:54:10 2009 -0500
+++ b/core/com.nokia.carbide.cpp.codescanner/html/release_notes.htm	Mon Apr 27 15:07:35 2009 -0500
@@ -27,7 +27,6 @@
   </li>
 </ul>
 <h4>2.1.2</h4>
-<ul>
   <li>Added support for  <a href="pref_codescaner_01.htm">Knowledge Base Scanning</a>, the ability to scan code and detect possible  API issues related to a specific SDK, for example when porting to a new Touch UI SDK. For each SDK, specific porting information is defined as a set of rules specified in  XML files. CodeScanner can merge these into the existing set of CodeScanner rules for   scanning operations. The results are displayed in the <strong>Console</strong> view and as information markers  in source code.</li>
 </ul>
 <h4>2.1.1</h4>
--- a/core/com.nokia.carbide.cpp.codescanner/tocCodeScanner.xml	Sat Apr 25 12:54:10 2009 -0500
+++ b/core/com.nokia.carbide.cpp.codescanner/tocCodeScanner.xml	Mon Apr 27 15:07:35 2009 -0500
@@ -1,29 +1,30 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<?NLS TYPE="org.eclipse.help.toc"?>
-
-<toc label="CodeScanner User Guide"
-	link_to="../com.nokia.carbide.help.common/carbideHelpTOC.xml#anchorCarbideMisc" >
-
-	<topic label="CodeScanner User Guide" href="html/codescanner.htm" >
-		
-		<topic label="Overview" href="html/overview_cs.htm" />
-		<topic label="Quick Start" href="html/start_cs.htm" />
-		
-		<topic label="CodeScanner preferences"		href="html/pref_codescanner_01.htm" >
-			<topic label="File Filters" 	href="html/pref_codescanner_02.htm" />
-			<topic label="Rules" 			href="html/pref_codescanner_03.htm" />
-		</topic>
-		
-		<topic label="Running CodeScanner" 			href="html/run_cs.htm" >
-			<topic label="Carbide.c++ IDE" 			href="html/run_cs_plugin.htm" />
-			<topic label="Command-line Tools"		href="html/run_cs_cmd_line.htm" />
-		</topic>
-		
-		<topic label="Viewing Reports"				href="html/view_output.htm" />
-		<topic label="Optimizing CodeScanner"		href="html/optimizing_cs.htm" />
-		<topic label="Customizing CodeScanner"		href="html/customizing_cs.htm" />
-		
-		<topic label="Release Notes"        href="html/release_notes.htm" />
-	</topic>
-	
+<?xml version="1.0" encoding="UTF-8"?>
+<?NLS TYPE="org.eclipse.help.toc"?>
+
+<toc label="CodeScanner User Guide"
+	link_to="../com.nokia.carbide.help.common/carbideHelpTOC.xml#anchorCarbideMisc" >
+
+	<topic label="CodeScanner User Guide" href="html/codescanner.htm" >
+		
+		<topic label="Release Notes"        href="html/release_notes.htm" />
+		<topic label="Overview" 			href="html/overview_cs.htm" />
+		<topic label="Quick Start" 			href="html/start_cs.htm" />
+		
+		<topic label="CodeScanner preferences"		href="html/pref_codescanner_01.htm" >
+			<topic label="File Filters" 	href="html/pref_codescanner_02.htm" />
+			<topic label="Rules" 			href="html/pref_codescanner_03.htm" />
+		</topic>
+		
+		<topic label="Running CodeScanner" 			href="html/run_cs.htm" >
+			<topic label="Carbide.c++ IDE" 			href="html/run_cs_plugin.htm" />
+			<topic label="Command-line Tools"		href="html/run_cs_cmd_line.htm" />
+		</topic>
+		
+		<topic label="Viewing Reports"				href="html/view_output.htm" />
+		<topic label="Optimizing CodeScanner"		href="html/optimizing_cs.htm" />
+		<topic label="Customizing CodeScanner"		href="html/customizing_cs.htm" />
+		
+		<topic label="Bugs Fixed"        href="html/bugs_fixed.htm" />
+	</topic>
+	
 </toc>
\ No newline at end of file
Binary file core/com.nokia.carbide.cpp.compiler.doc.user/html/images/gold_header.png has changed
--- a/core/com.nokia.carbide.cpp.doc.user/html/bugs_fixed.htm	Sat Apr 25 12:54:10 2009 -0500
+++ b/core/com.nokia.carbide.cpp.doc.user/html/bugs_fixed.htm	Mon Apr 27 15:07:35 2009 -0500
@@ -25,10 +25,16 @@
 </ul>
 <h3><a name="bugs204" id="bugs5"></a>Bugs Fixed in v2.0.4</h3>
 <ul>
+  
   <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=8050">8050</a> - Fixed an issue that preventing the building of a target when another target of the same project is being debugged.</li>
   <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=8196">8282</a> - Fixed several issues with <span class="code">PRJ_EXTENSION</span> that prevented resource building under SBSv1.</li>
   <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=8694">8694</a> - Fixed an issue that prevented  building a project using SBSv2 when the workspace and kit resided on different drives.</li>
   <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=8196">8804</a> - Fixed a problem where the number of build errors reported wasn't consistent between the Console and Problem views.</li>
+  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=8196">8816</a> - Bash errors from SBSv2 should now appear in the Problems view. </li>
+  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=8196">8890</a> - The Mark All Read button in the Carbide News view now works as expected. </li>
+  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=8196">8914</a> - Corrected an issue with scanning SDKs that cause the scan to repeat endlessly. </li>
+  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=8196">8919</a> - Fixed a CORBA error with the Carbide symbol reading API that prevented its use.</li>
+  <li><a href="https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=8196">8923</a> - Added explicit notes on checking the proxy setting in the Network Connections preference panel when experiencing issues with Hover Help. </li>
 </ul>
 <h3><a name="bugs203" id="bugs3"></a>Bugs Fixed in v2.0.3</h3>
 <ul>
Binary file core/com.nokia.carbide.cpp.doc.user/html/images/gold_header.png has changed
Binary file core/com.nokia.carbide.cpp.doc.user/html/reference/images/context_menu_remote_conn_view.png has changed
Binary file core/com.nokia.carbide.cpp.doc.user/html/reference/images/view_remote_connections.png has changed
--- a/core/com.nokia.carbide.cpp.doc.user/html/reference/menus/menus.htm	Sat Apr 25 12:54:10 2009 -0500
+++ b/core/com.nokia.carbide.cpp.doc.user/html/reference/menus/menus.htm	Mon Apr 27 15:07:35 2009 -0500
@@ -1,37 +1,37 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
-<meta http-equiv="Content-Style-Type" content="text/css" />
-<meta name="LASTUPDATED" content="06/17/05 11:09:43" />
-<title>Carbide Menu Items </title>
-<link rel="StyleSheet" href="../../../book.css" type="text/css"/>
-</head>
-<body bgcolor="#FFFFFF">
-<h2>Carbide Menus </h2>
-<p>Common menu and context menu commands used in Carbide.c++:</p>
-<ul>
-  <li><a href="abld.htm">ABLD Actions</a></li>
-  <li><a href="build_all_targets.htm">Build All Configurations</a></li>
-  <li><a href="build_pkg_file.htm">Build PKG File</a></li>
-  <li><a href="build_symbian_comp.htm">Build Symbian Component</a></li>
-  <li><a href="clean_symbian_comp.htm">Clean Symbian Component</a></li>
-  <li><a href="compile_source.htm">Compile</a></li>
-  <li><a href="freeze_exports.htm">Freeze Exports</a></li>
-  <li><a href="freeze_symbian_comp.htm">Freeze Symbian Component</a></li>
-  <li><a href="on_device_setup.htm">On-Device Setup</a> </li>
-  <li><a href="open_cmd_window.htm">Open Command Window</a></li>
-  <li><a href="open_explorer_window.htm">Show in  Explorer</a></li>
-  <li><a href="preprocess_source.htm">Preprocess</a></li>
-  <li><a href="run_codescanner.htm">Run Codescanner</a></li>
-  <li><a href="run_leavescan.htm">Run Leavescan</a></li>
-  <li><a href="s60_ui_designer.htm">S60 UI Designer</a></li>
-  <li><a href="new_symbian_class.htm">Symbian OS C++ Class</a></li>
-  <li><a href="new_symbian_project.htm">Symbian OS C++ Project</a></li>
-  <li><a href="new_symbian_project.htm">Symbian OS MMP File </a></li>
-  <li><a href="hardware_breakpoints.htm">Toggle HW Breakpoint</a></li>
-</ul>
-<div id="footer">Copyright &copy; 2009 Nokia Corporation and/or its subsidiary(-ies). All rights reserved. <br>License: <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a></div>
-
-</body>
-</html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+<meta http-equiv="Content-Style-Type" content="text/css" />
+<meta name="LASTUPDATED" content="06/17/05 11:09:43" />
+<title>Carbide Menu Items </title>
+<link rel="StyleSheet" href="../../../book.css" type="text/css"/>
+</head>
+<body bgcolor="#FFFFFF">
+<h2>Carbide Menus </h2>
+<p>Common menu and context menu commands used in Carbide.c++:</p>
+<ul>
+  <li><a href="abld.htm">ABLD Actions</a></li>
+  <li><a href="build_all_targets.htm">Build All Configurations</a></li>
+  <li><a href="build_pkg_file.htm">Build PKG File</a></li>
+  <li><a href="build_symbian_comp.htm">Build Symbian Component</a></li>
+  <li><a href="clean_symbian_comp.htm">Clean Symbian Component</a></li>
+  <li><a href="compile_source.htm">Compile</a></li>
+  <li><a href="freeze_exports.htm">Freeze Exports</a></li>
+  <li><a href="freeze_symbian_comp.htm">Freeze Symbian Component</a></li>
+  <li><a href="../trk/wnd_on_device_setup.htm">On-Device Connections</a> </li>
+  <li><a href="open_cmd_window.htm">Open Command Window</a></li>
+  <li><a href="open_explorer_window.htm">Show in  Explorer</a></li>
+  <li><a href="preprocess_source.htm">Preprocess</a></li>
+  <li><a href="run_codescanner.htm">Run Codescanner</a></li>
+  <li><a href="run_leavescan.htm">Run Leavescan</a></li>
+  <li><a href="s60_ui_designer.htm">S60 UI Designer</a></li>
+  <li><a href="new_symbian_class.htm">Symbian OS C++ Class</a></li>
+  <li><a href="new_symbian_project.htm">Symbian OS C++ Project</a></li>
+  <li><a href="new_symbian_project.htm">Symbian OS MMP File </a></li>
+  <li><a href="hardware_breakpoints.htm">Toggle HW Breakpoint</a></li>
+</ul>
+<div id="footer">Copyright &copy; 2009 Nokia Corporation and/or its subsidiary(-ies). All rights reserved. <br>License: <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a></div>
+
+</body>
+</html>
--- a/core/com.nokia.carbide.cpp.doc.user/html/reference/trk/view_remote_connection.htm	Sat Apr 25 12:54:10 2009 -0500
+++ b/core/com.nokia.carbide.cpp.doc.user/html/reference/trk/view_remote_connection.htm	Mon Apr 27 15:07:35 2009 -0500
@@ -1,109 +1,123 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
-<meta http-equiv="Content-Style-Type" content="text/css" />
-<meta name="keywords" content="Check TRK, TRK, Install TRK"
-<meta name="LASTUPDATED" content="06/17/05 11:09:43" />
-<title>Remote Connections view</title>
-<link rel="StyleSheet" href="../../../book.css" type="text/css"/>
-<script language="JavaScript" src="PLUGINS_ROOT/org.eclipse.help/livehelp.js"></script>
-</head>
-<body bgcolor="#FFFFFF">
-<h2>Remote Connections view</h2>
-<p>Use  the <strong>Remote Connections</strong> view to monitor, create, edit, or remove  common  connection settings for remote agents.The columns include:</p>
-<ul>
-  <li>Connection/Services - connection name defined by you and remote agent type</li>
-  <li>Type - connection type, i.e. Bluetooth, USB, TCP/IP, etc.</li>
-  <li>Status - current connection status, i.e. Available, Not available, etc.</li>
-</ul>
-<p align="center"><img src="../images/view_remote_connections.png" width="413" height="153"></p>
-<p class="figure">Figure 1 - Remote Connections view</p>
-<h3>Remote Connections view toolbar icons</h3>
-<p>The following commands appear on the toolbar within the Remote Connections view: </p>
-<table width="100%"  border="0" cellpadding="2" cellspacing="0">
-  <tr>
-    <th width="28%" scope="col">Item</th>
-    <th width="13%" scope="col">Icon</th>
-    <th width="59%" scope="col">Explanation</th>
-  </tr>
-  <tr>
-    <td><strong>Refresh Connections</strong></td>
-    <td><center>
-      <img src="../images/icon_remote_connection_refresh.png" width="18" height="18">
-    </center>    </td>
-    <td><p>Click to update the connection list status.</p>    </td>
-  </tr>
-  <tr>
-    <td><strong>New Connection</strong></td>
-    <td><center>
-      <img src="../images/icon_remote_connection_new.png" width="18" height="17">
-    </center>    </td>
-    <td>Click to open the New  Connection wizard to add a connection.</td>
-  </tr>
-  <tr>
-    <td><strong>Edit Connection</strong></td>
-    <td><center>
-      <img src="../images/icon_remote_connection_edit.png" width="18" height="17">
-    </center>    </td>
-    <td><p>Click to edit the selected remote connection.</p>    </td>
-  </tr>
-</table>
-<h3>Remote Connections view context menu options</h3>
-<p>Based on the current selection, one or more of the following commands appear on the context menu when you right-click within the Remote Connections view. For example, if no connections are defined, only the <b>New Connection</b> command is available on the context menu. Right-click on a connection name and the additional <b>Enable Service Testing</b> and <b>Disable Service Testing</b> are available.</p>
-<p align="center"><img src="../images/context_menu_remote_conn_view.png" width="193" height="86"></p>
-<p class="figure">Figure 2 - Remote Connections context menu</p>
-<table width="100%"  border="0" cellpadding="2" cellspacing="0">
-  <tr>
-    <th width="30%" scope="col">Item</th>
-    <th width="11%" scope="col">Icon</th>
-    <th width="59%" scope="col">Explanation</th>
-  </tr>
-  <tr>
-    <td><strong>New Connection</strong></td>
-    <td><center>
-      <img src="../images/icon_remote_connection_new.png" width="20" height="18">
-    </center>    </td>
-    <td>Select to open the New  Connection wizard to add a connection.</td>
-  </tr>
-  <tr>
-    <td><strong>Edit Connection Settings</strong></td>
-    <td><center>
-      <img src="../images/icon_remote_connection_edit.png" width="19" height="19">
-    </center>    </td>
-    <td><p>Select to edit the selected remote connection.</p></td>
-  </tr>
-  <tr>
-    <td><strong>Delete Connection</strong></td>
-    <td><center>
-      <img src="../images/icon_remote_connection_delete.png" width="17" height="16">
-    </center>    </td>
-    <td><p>Select to delete the selected connection from the connection list.</p></td>
-  </tr>
-  <tr>
-    <td><b>Connection Documentation</b></td>
-    <td><center>
-        <img src="../images/icon_remote_connection_docs.png" width="19" height="17">
-    </center></td>
-    <td>Select to open the Help view with connection information.</td>
-  </tr>
-  <tr>
-    <td><b>Disable Service Testing</b></td>
-    <td>&nbsp;</td>
-    <td>Select to disable the connection testing. This releases the port so other connection services can use it. </td>
-  </tr>
-  <tr>
-    <td><b>Enable Service Testing</b></td>
-    <td>&nbsp;</td>
-    <td>Select to re-enable testing of the connection.</td>
-  </tr>
-</table>
-<h5>Related references</h5>
-<ul>
-  <li><a href="wnd_on_device_setup.htm">On-Device Setup</a></li>
-  <li><a href="wnd_new_conn_install_tab.htm">Install latest TRK</a> </li>
-</ul>
-<div id="footer">Copyright &copy; 2009 Nokia Corporation and/or its subsidiary(-ies). All rights reserved. <br>License: <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a></div>
-
-</body>
-</html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+<meta http-equiv="Content-Style-Type" content="text/css" />
+<meta name="keywords" content="Check TRK, TRK, Install TRK"
+><meta name="LASTUPDATED" content="06/17/05 11:09:43" />
+<title>Remote Connections view</title>
+<link rel="StyleSheet" href="../../../book.css" type="text/css"/>
+<script language="JavaScript" src="PLUGINS_ROOT/org.eclipse.help/livehelp.js"></script>
+<style type="text/css">
+<!--
+.style1 {
+	font-family: Helvetica, sans-serif;
+	font-weight: bold;
+}
+-->
+</style>
+</head>
+<body bgcolor="#FFFFFF">
+<h2>Remote Connections view</h2>
+<p>Use  the <strong>Remote Connections</strong> view to monitor, create, edit, or remove  common  connection settings for remote agents. The columns include:</p>
+<ul>
+  <li>Connection/Services - connection name defined by you and remote agent type</li>
+  <li>Type - connection type, i.e. Bluetooth, USB, TCP/IP, etc.</li>
+  <li>Status - current connection status, i.e. Available, Not available, In Use, etc.</li>
+  <li>Description - provides information on the current connection test status.</li>
+</ul>
+<p align="center"><img src="../images/view_remote_connections.png" width="431" height="252"></p>
+<p class="figure">Figure 1 - Remote Connections view</p>
+<h3>Remote Connections view toolbar icons</h3>
+<p>The following commands appear on the toolbar within the Remote Connections view: </p>
+<table width="100%"  border="0" cellpadding="2" cellspacing="0">
+  <tr>
+    <th width="28%" scope="col">Item</th>
+    <th width="13%" scope="col">Icon</th>
+    <th width="59%" scope="col">Explanation</th>
+  </tr>
+  <tr>
+    <td><strong>Refresh Connections</strong></td>
+    <td><center>
+      <img src="../images/icon_remote_connection_refresh.png" width="18" height="18">
+    </center>    </td>
+    <td><p>Click to update the connection list status.</p>    </td>
+  </tr>
+  <tr>
+    <td><strong>New Connection</strong></td>
+    <td><center>
+      <img src="../images/icon_remote_connection_new.png" width="18" height="17">
+    </center>    </td>
+    <td>Click to open the New  Connection wizard to add a connection.</td>
+  </tr>
+  <tr>
+    <td><strong>Edit Connection</strong></td>
+    <td><center>
+      <img src="../images/icon_remote_connection_edit.png" width="18" height="17">
+    </center>    </td>
+    <td><p>Click to edit the selected remote connection.</p>    </td>
+  </tr>
+</table>
+<h3>Remote Connections view context menu options</h3>
+<p>Based on the current selection, one or more of the following commands appear on the context menu when you right-click within the Remote Connections view. For example, if no connections are defined, only the <b>New Connection</b> command is available on the context menu. Right-click on a connection name and the additional <b>Enable Service Testing</b> and <b>Disable Service Testing</b> are available.</p>
+<p align="center"><img src="../images/context_menu_remote_conn_view.png" width="211" height="104"></p>
+<p class="figure">Figure 2 - Remote Connections context menu</p>
+<table width="100%"  border="0" cellpadding="2" cellspacing="0">
+  <tr>
+    <th width="30%" scope="col">Item</th>
+    <th width="11%" scope="col">Icon</th>
+    <th width="59%" scope="col">Explanation</th>
+  </tr>
+  <tr>
+    <td><span class="style1">New Connection</span></td>
+    <td><center>
+      <img src="../images/icon_remote_connection_new.png" width="20" height="18">
+    </center>    </td>
+    <td>Select to open the New  Connection wizard to add a connection.</td>
+  </tr>
+  <tr>
+    <td><span class="style1">Rename Connection</span></td>
+    <td>&nbsp;</td>
+    <td>Select to rename the currently selected connection.</td>
+  </tr>
+  <tr>
+    <td><span class="style1">Edit Connection Settings</span></td>
+    <td><center>
+      <img src="../images/icon_remote_connection_edit.png" width="19" height="19">
+    </center>    </td>
+    <td><p>Select to edit the selected remote connection.</p></td>
+  </tr>
+  <tr>
+    <td><span class="style1">Delete Connection</span></td>
+    <td><center>
+      <img src="../images/icon_remote_connection_delete.png" width="17" height="16">
+    </center>    </td>
+    <td><p>Select to delete the selected connection from the connection list.</p></td>
+  </tr>
+  <tr>
+    <td><span class="style1">Connection Documentation</span></td>
+    <td><center>
+        <img src="../images/icon_remote_connection_docs.png" width="19" height="17">
+    </center></td>
+    <td>Select to open the Help view with connection information.</td>
+  </tr>
+  <tr>
+    <td><span class="style1">Disable Service Testing</span></td>
+    <td>&nbsp;</td>
+    <td>Select to disable the connection testing. This releases the port so other connection services can use it. </td>
+  </tr>
+  <tr>
+    <td><span class="style1">Enable Service Testing</span></td>
+    <td>&nbsp;</td>
+    <td>Select to re-enable testing of the connection.</td>
+  </tr>
+</table>
+<h5>Related references</h5>
+<ul>
+  <li><a href="../trk/wnd_on_device_setup.htm">On-Device Connections</a><a href="wnd_on_device_setup.htm"></a></li>
+  <li><a href="wnd_new_conn_install_tab.htm">Install latest TRK</a> </li>
+</ul>
+<div id="footer">Copyright &copy; 2009 Nokia Corporation and/or its subsidiary(-ies). All rights reserved. <br>License: <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a></div>
+
+</body>
+</html>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/core/com.nokia.carbide.cpp.doc.user/html/tasks/carbide_tools.htm	Mon Apr 27 15:07:35 2009 -0500
@@ -0,0 +1,45 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
+"http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Creating Carbide Tools</title>
+<link href="../../book.css" rel="stylesheet" type="text/css">
+</head>
+
+<body>
+<h2>Creating Carbide Tools</h2>
+<p>Carbide.c++ provides a host of functionality when it comes to designing, writing, compiling, and debugging Symbian OS based applications for mobile devices. In addition there are tools for evaluating your applications performance, memory, and energy usage to make them run faster and use less resources. </p>
+<p>However, while there are a lot of tools included with Carbide.c++ you may have ideas of your own that you'd like to develop and use. Since Carbide is based upon Eclipse, a highly extensible open framework, you can develop  tools and employ them inside the Carbide  environment where they can operate alongside   the standard tools. Best of all, you can do this all within the famliiar Carbide IDE. </p>
+<p>To effectively write Carbide tool plug-ins you will need:</p>
+<ul>
+  <li>The <b>Carbide Development Kit</b> (CDK) includes the resources, examples, and documentation necessary to create plug-ins within Carbide (required)</li>
+  <li>Knowledge and experience writing Java code and the Eclipse plug-in framework</li>
+  <li>Familiarity with writing and debugging Eclipse plug-ins </li>
+  <li>Some knowledge of the Carbide APIs</li>
+</ul>
+<p>Download the CDK  to get started developing your own Carbide tool plug-ins using the instructions below.</p>
+<div class="step">
+  <h4>Downloading the <b>Carbide Development Kit</b></h4>
+    <p>The CDK contains all the resources you need to write Carbide tool plug-ins. To download:</p>
+    <ol>
+      <li>Click <b>Help &gt; Software Updates &gt; Find &amp; Install</b>. </li>
+      <li>Select the Search for new features to install option, click Next.<br />
+      <p class="note"><b>NOTE</b> If you experience problems connecting to the updater site, verify that the connection settings are correct in the <a href="PLUGINS_ROOT/org.eclipse.platform.doc.user/reference/ref-net-preferences.htm">Network Connections</a> preference panel before trying again. This is especially important if  a proxy setting is required to connect to the internet.</p>
+      </li>
+      <li>On the Update sites to search page, checkmark the Carbide.c++ Update Site option, click Finish.</li>
+      <li>On the Search results page, checkmark the Carbide.c++ Development Kit option, click Next.</li>
+      <li>On the Feature license  page, accept the license agreement, click Next.</li>
+      <li>On the Optional features page, click Next.</li>
+      <li>On the Installation page, click Finish.</li>
+    </ol>
+</div>
+<p>Carbide downloads and asks for permission to install the CDK. Once installed, it asks you to restart Carbide to load the new plug-ins.</p>
+<p>To learn more about writing Carbide tool plug-ins, see the <b>Help &gt; Carbide Tools &gt; Carbide.c++ Plug-in Developer Guide</b> installed by the CDK. It provides more detailed information on writing Carbide tool plug-ins.</p>
+<h4>Other references</h4>
+<ul>
+  <li>Carbide.c++ Plug-in Developer Guide</li>
+</ul>
+<div id="footer">Copyright &copy; 2009 Nokia Corporation and/or its subsidiary(-ies). All rights reserved. <br>License: <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a></div>
+</body>
+</html>
--- a/core/com.nokia.carbide.cpp.doc.user/tocCarbide.xml	Sat Apr 25 12:54:10 2009 -0500
+++ b/core/com.nokia.carbide.cpp.doc.user/tocCarbide.xml	Mon Apr 27 15:07:35 2009 -0500
@@ -31,7 +31,7 @@
 
 	<topic label="Carbide Menus " 					href="html/reference/menus/menus.htm" >
 
-		<topic label="On-Device Connection..."		href="html/reference/trk/view_remote_connection.htm" />
+     <topic href="html/reference/trk/wnd_on_device_setup.htm" label="On-Device Connection..."/>
 		<topic label="Open Command Window"			href="html/reference/menus/open_cmd_window.htm" />
 		<topic label="Run CodeScanner"				href="html/reference/menus/run_codescanner.htm" />
 		<topic label="Run Leavescan"				href="html/reference/menus/run_leavescan.htm" />
@@ -446,6 +446,7 @@
 			<topic label="System Search preferences"    href="html/reference/search/wnd_system_search_prefs.htm" />
  	</topic>
 		
-	<topic href="html/hints_tips.htm" label="Tips &amp; Hints">
- </topic>
+	<topic href="html/hints_tips.htm" label="Tips &amp; Hints" />
+	<topic href="html/tasks/carbide_tools.htm" label="Creating Carbide Tools" />
+
 </toc>
--- a/core/com.nokia.carbide.cpp.news.reader.tests/src/com/nokia/carbide/cpp/news/reader/tests/FeedManagerTest.java	Sat Apr 25 12:54:10 2009 -0500
+++ b/core/com.nokia.carbide.cpp.news.reader.tests/src/com/nokia/carbide/cpp/news/reader/tests/FeedManagerTest.java	Mon Apr 27 15:07:35 2009 -0500
@@ -120,19 +120,20 @@
 		}
 	}
 
-	public void testRemoveNewsFeedEntry() {
+	public void testMarkEntryAsRead() {
 		try {
 			feedManager.loadFeeds();
 			List<CarbideSyndFeed> newsFeeds = feedManager.getNewsFeeds();
 			if (newsFeeds != null && newsFeeds.size() > 0) {
 				CarbideSyndFeed feed = newsFeeds.get(0);
-				List<CarbideSyndEntry> feedEntries = feed.getEntries();
-				if (feedEntries != null && feedEntries.size() > 0) {
+				List<CarbideSyndEntry> feedEntries = feed.getUnreadEntries();
+				while (feedEntries != null && feedEntries.size() > 0) {
 					int oldCount = feed.getUnreadEntries().size();
 					CarbideSyndEntry feedEntry = feedEntries.get(0);
-					feedManager.removeNewsFeedEntry(feedEntries, feedEntry.getTitle());
+					feedManager.markEntryAsRead(feedEntries, feedEntry.getTitle());
 					int newCount = feed.getUnreadEntries().size();
-					assertTrue(newCount > oldCount);
+					assertTrue(newCount < oldCount);
+					feedEntries = feed.getUnreadEntries();
 				}
 			}
 		} catch (Exception e) {
--- a/core/com.nokia.carbide.cpp.news.reader/src/com/nokia/carbide/cpp/internal/news/reader/editor/NewsPage.java	Sat Apr 25 12:54:10 2009 -0500
+++ b/core/com.nokia.carbide.cpp.news.reader/src/com/nokia/carbide/cpp/internal/news/reader/editor/NewsPage.java	Mon Apr 27 15:07:35 2009 -0500
@@ -557,7 +557,7 @@
 	private void handleMarkEntryRead(String feedTitle, String entryTitle) {
 		CarbideSyndFeed feed = newsFeeds.get(currentFeed);
 		if (feed != null) {
-			CarbideNewsReaderPlugin.getFeedManager().removeNewsFeedEntry(feed.getEntries(), entryTitle);
+			CarbideNewsReaderPlugin.getFeedManager().markEntryAsRead(feed.getEntries(), entryTitle);
 		}
 		newsBrowser.setText(createNewsContents());
 		newsFeedsTableViewer.refresh();
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/core/com.nokia.carbide.cpp.news.reader/src/com/nokia/carbide/cpp/internal/news/reader/feed/CarbideFeedFetcher.java	Mon Apr 27 15:07:35 2009 -0500
@@ -0,0 +1,57 @@
+/*
+* 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.carbide.cpp.internal.news.reader.feed;
+
+import java.net.URLConnection;
+
+import com.sun.syndication.fetcher.impl.FeedFetcherCache;
+import com.sun.syndication.fetcher.impl.HttpURLFeedFetcher;
+import com.sun.syndication.fetcher.impl.SyndFeedInfo;
+
+/**
+ * A class to retrieve feed via HTTP connection. 
+ *
+ */
+public class CarbideFeedFetcher extends HttpURLFeedFetcher {
+
+	/**
+	 * Constructor to enable CarbideFeedFetcher without caching feeds.
+	 */
+	public CarbideFeedFetcher() {
+		super();
+	}
+
+	/**
+	 * Constructor to enable CarbideFeedFetcher to cache feeds
+	 * @param feedCache - an instance of the FeedFetcherCache interface
+	 */
+	public CarbideFeedFetcher(FeedFetcherCache feedInfoCache) {
+		super(feedInfoCache);
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * @see com.sun.syndication.fetcher.impl.HttpURLFeedFetcher#setRequestHeaders(java.net.URLConnection, com.sun.syndication.fetcher.impl.SyndFeedInfo)
+	 */
+	protected void setRequestHeaders(URLConnection connection, SyndFeedInfo syndFeedInfo) {
+		super.setRequestHeaders(connection, syndFeedInfo);
+		// specify acceptable content types
+		connection.setRequestProperty("Accept", "*/xml");
+	}
+
+}
--- a/core/com.nokia.carbide.cpp.news.reader/src/com/nokia/carbide/cpp/internal/news/reader/feed/FeedManager.java	Sat Apr 25 12:54:10 2009 -0500
+++ b/core/com.nokia.carbide.cpp.news.reader/src/com/nokia/carbide/cpp/internal/news/reader/feed/FeedManager.java	Mon Apr 27 15:07:35 2009 -0500
@@ -44,7 +44,6 @@
 import com.sun.syndication.fetcher.FeedFetcher;
 import com.sun.syndication.fetcher.impl.FeedFetcherCache;
 import com.sun.syndication.fetcher.impl.HashMapFeedInfoCache;
-import com.sun.syndication.fetcher.impl.HttpURLFeedFetcher;
 
 /**
  * A class to manage feeds for the Carbide.c++ news reader.
@@ -96,7 +95,7 @@
 	@SuppressWarnings("static-access")
 	public void loadFeeds() {
 		try {
-			if (!loadFeedListing()) {
+			if (!loadFeedListing(false)) {
 				return;
 			}
 
@@ -191,11 +190,11 @@
 	}
 
 	/**
-	 * Remove an entry from a feed.
-	 * @param feed - feed object in question
-	 * @param entryTitle - title of the entry to be removed
+	 * Search for a feed entry by name and then mark it as read.
+	 * @param entries - feed entries to be checked
+	 * @param entryTitle - title of the entry to be marked as read
 	 */
-	public void removeNewsFeedEntry(List<CarbideSyndEntry> entries, String entryTitle) {
+	public void markEntryAsRead(List<CarbideSyndEntry> entries, String entryTitle) {
 		if (entries == null || entryTitle == null) {
 			return;
 		}
@@ -204,7 +203,7 @@
 			CarbideSyndEntry entry = iterator.next();
 			String title = entry.getTitle();
 			title = title.replaceAll("\n", "");
-			if (title.equals(entryTitle)) {
+			if (title.equals(entryTitle) && !entry.isRead()) {
 				entry.setRead(true);
 				break;
 			}
@@ -252,7 +251,7 @@
 	@SuppressWarnings("static-access")
 	public void updateFeeds() {
 		try {
-			if (!loadFeedListing()) {
+			if (!loadFeedListing(false)) {
 				return;
 			}
 
@@ -333,7 +332,7 @@
 		}
 
 		FeedFetcherCache feedInfoCache = HashMapFeedInfoCache.getInstance();
-		FeedFetcher fetcher = new HttpURLFeedFetcher(feedInfoCache);
+		FeedFetcher fetcher = new CarbideFeedFetcher(feedInfoCache);
 		SyndFeed sFeed = fetcher.retrieveFeed(feedUrl);
 		CarbideSyndFeed feed = new CarbideSyndFeed(sFeed);
 		if (feed != null) {
@@ -384,11 +383,12 @@
 	}
 
 	/**
-	 * Load feed information from feed listing file. 
+	 * Load feed information from feed listing file.
+	 * @param useLocal - use local copy of feed listing file? 
 	 * @return true on success; false otherwise
 	 */
-	private boolean loadFeedListing() throws Exception {
-		URL url = feedListingManager.getFeedInfoFileURL();
+	private boolean loadFeedListing(boolean useLocalCopy) throws Exception {
+		URL url = feedListingManager.getFeedInfoFileURL(useLocalCopy);
 		if (url != null) {
 			return feedListingManager.loadFeedInfo(url);
 		}
@@ -458,9 +458,9 @@
 	 * Reload feeds from cache if necessary.
 	 */
 	private void validateFeeds() {
-		if (newsFeeds == null || newsFeeds.size() == 0 || resourceFeed == null) {
+		if ((newsFeeds == null || newsFeeds.size() == 0) && resourceFeed == null) {
 			try {
-				if (!loadFeedListing()) {
+				if (!loadFeedListing(true)) {
 					return;
 				}
 
--- a/core/com.nokia.carbide.cpp.news.reader/src/com/nokia/carbide/cpp/internal/news/reader/gen/FeedInfo/FeedInfoManager.java	Sat Apr 25 12:54:10 2009 -0500
+++ b/core/com.nokia.carbide.cpp.news.reader/src/com/nokia/carbide/cpp/internal/news/reader/gen/FeedInfo/FeedInfoManager.java	Mon Apr 27 15:07:35 2009 -0500
@@ -106,27 +106,40 @@
 	/**
 	 * Retrieve the feed info file from remote server, make a local copy of this file
 	 * and returns the URL to the local copy.
+	 * @param useLocal - use local copy of feed listing file? 
 	 * @return URL of local copy of feed info file
 	 * @throws Exception
 	 */
-	public URL getFeedInfoFileURL() throws Exception {
+	public URL getFeedInfoFileURL(boolean useLocalCopy) throws Exception {
+		if (feedInfoFile == null) {
+			feedInfoFile = createFeedInfoFile();
+		}
+
+		if (useLocalCopy) {
+			// try to use local copy of the fee info file if it exists.
+			if (feedInfoFile != null && feedInfoFile.exists()) {
+				return feedInfoFile.toURL();
+			}
+			else {
+				return null;
+			}
+		}
+
+		// retrieve the feed info file from remote server and make a local copy of this file
 		String pathStr = CarbideNewsReaderPlugin.getFeedManager().getProperty(FEED_INFO_FILE_KEY);
 		if (pathStr != null) {
 			URL fileUrl = new URL(pathStr);
 			if (fileUrl != null) {
-				HttpURLConnection httpConnection = null;
+				HttpURLConnection connection = null;
 				InputStream inputStream = null;
 				try {
-					URLConnection connection = fileUrl.openConnection();
-					httpConnection = (HttpURLConnection)connection;
-					httpConnection.connect();
-					int responseCode = httpConnection.getResponseCode();
+					connection = (HttpURLConnection) fileUrl.openConnection();
+					setRequestHeaders(connection);
+					connection.connect();
+					int responseCode = connection.getResponseCode();
 					handlesHttpErrorCode(responseCode);
 					inputStream = connection.getInputStream();
 					if (inputStream != null) {
-						if (feedInfoFile == null) {
-							feedInfoFile = createFeedInfoFile();
-						}
 						if (feedInfoFile != null) {
 							if (feedInfoFile.exists()) {
 								feedInfoFile.delete();
@@ -138,8 +151,8 @@
 				} catch (Exception e) {
 					CarbideNewsReaderPlugin.log(e);
 				} finally {
-					if (httpConnection != null) {
-					    httpConnection.disconnect();
+					if (connection != null) {
+					    connection.disconnect();
 					}
 					if (inputStream != null) {
 						inputStream.close();
@@ -147,6 +160,7 @@
 				}
 			}
 		}
+
 		return null;
 	}
 
@@ -205,8 +219,17 @@
 		} else if (responseCode >= 400 && responseCode < 500) {
 			throw new Exception("The requested resource could not be found. HTTP Response code was:" + responseCode);
 		} else if (responseCode >= 500 && responseCode < 600) {
-			throw new Exception("The server encounted an error. HTTP Response code was:" + responseCode);
+			throw new Exception("The server encountered an error. HTTP Response code was:" + responseCode);
 		}
 	}
 
+	/**
+	 * Sets appropriate HTTP headers.
+	 * @param connection - URL connection
+	 */
+	private void setRequestHeaders(URLConnection connection) {
+		// specify acceptable content types
+		connection.setRequestProperty("Accept", "*/xml");
+	}
+
 }
--- a/core/com.nokia.carbide.cpp.sdk.core/src/com/nokia/carbide/cpp/internal/sdk/core/model/SDKManager.java	Sat Apr 25 12:54:10 2009 -0500
+++ b/core/com.nokia.carbide.cpp.sdk.core/src/com/nokia/carbide/cpp/internal/sdk/core/model/SDKManager.java	Mon Apr 27 15:07:35 2009 -0500
@@ -164,9 +164,6 @@
 					}
 				}
 
-				// make sure we don't rescan over and over again
-				hasScannedSDKs = true;
-
 			} catch (MalformedURLException e) {
 				e.printStackTrace();
 			} catch (URISyntaxException e) {
@@ -176,6 +173,9 @@
 			}
 		}
 
+		// make sure we don't rescan over and over again
+		hasScannedSDKs = true;
+		
 		// tell others about it
 		fireInstalledSdkChanged(SDKChangeEventType.eSDKScanned);
 		scanCarbideSDKCache();
--- a/core/com.nokia.carbide.cpp.sdk.core/src/com/nokia/carbide/cpp/internal/sdk/core/model/SymbianSDK.java	Sat Apr 25 12:54:10 2009 -0500
+++ b/core/com.nokia.carbide.cpp.sdk.core/src/com/nokia/carbide/cpp/internal/sdk/core/model/SymbianSDK.java	Mon Apr 27 15:07:35 2009 -0500
@@ -997,6 +997,17 @@
 						if (index > 0){
 							String osVersionString = versionTokens[2].substring(index+1, versionTokens[2].length());
 							
+							if (osVersionString.compareToIgnoreCase("tb91sf") == 0){
+								setOSVersion(new Version("9.4.0"));
+								setSDKVersion(new Version("5.1.0"));
+								break;
+							}
+							
+							if (osVersionString.compareToIgnoreCase("tb92sf") == 0){
+								setOSVersion(new Version("9.5.0"));
+								break;
+							}
+							
 							if (osVersionString.endsWith(EKA1_A_BRANCH_IDENTIFIER) || 
 							    osVersionString.endsWith(EKA2_B_BRANCH_IDENTIFIER) ||
 							    osVersionString.endsWith(EKA1_S_BRANCH_IDENTIFIER)){
--- a/core/com.nokia.carbide.cpp.sysdoc.hover/plugin.xml	Sat Apr 25 12:54:10 2009 -0500
+++ b/core/com.nokia.carbide.cpp.sysdoc.hover/plugin.xml	Mon Apr 27 15:07:35 2009 -0500
@@ -52,7 +52,7 @@
              class="com.nokia.carbide.cpp.sysdoc.internal.hover.view.DeveloperLibraryView"
              icon="icons/view.gif"
              id="com.nokia.carbide.cpp.sysdoc.internal.hover.view.DeveloperLibraryView"
-             name="Devloper Library">
+             name="Developer Library">
        </view>
     </extension>
   	
--- a/core/com.nokia.carbide.cpp.sysdoc.hover/resources/help context/dl_hover/html/getting_started.html	Sat Apr 25 12:54:10 2009 -0500
+++ b/core/com.nokia.carbide.cpp.sysdoc.hover/resources/help context/dl_hover/html/getting_started.html	Mon Apr 27 15:07:35 2009 -0500
@@ -1,59 +1,58 @@
-<html>
-    <head>
-        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-        <title>Overview in Hover Help Guide</title>
-	    <link rel="stylesheet" type="text/css" href="_stock/css/sfdl.css" media="screen" />
-		<link rel="stylesheet" type="text/css" href="_stock/css/ui.css" media="screen" />
-		<link rel="stylesheet" type="text/css" href="_stock/css/sysdoc.css" media="screen" />
-	    <link href="_stock/css/ajaxToc-sfdl.css" type="text/css" rel="stylesheet">
-    </head>
-<body>
-		<div id="main_content">
-			<table width="100%" cellpadding="0" cellspacing="0" border="0">
-				<tr>
-					<td valign="top" width="100%">
-						<div id="main_content_txt">
-							<div class="main_content_padding">		
-																<div id="main">
-									<div id="navigator">
-										<div id="navigator_padding">
-										
-											&nbsp;<span class="separator">&#187;</span>
-											<a href="index.html">Hover&nbsp;Help&nbsp;Plug-in&nbsp;Guide</a>
-										
-										</div>
-									</div>
-									<div id="authoredContent">
-        <div class="section">
-<a name="hover%2egs%2e"></a><h1>Hover Help Overview</h1><p>
-		  Hover Help provides a link
-		  between the Carbide IDE and the Symbian OS C++ Developer Library. When activated, Hover Help
-		  provides developers with easy access to the API reference documentation. When a
-		  user hovers over a C++ API item, such as a class name, the editor shows the documentation for that API
-		  reference.
-		</p><p>
-		  Hover Help uses <em>Developer Library plug-ins</em>. These are Eclipse
-		  documentation plug-ins that contain the information displayed when an
-		  API reference item is hovered over.
-		</p><p>
-		  You can download Developer Library plug-ins from the
-		  <a href="http://symbianfoundation.org/">Symbian Foundation</a> website. 
-		</p></div>
-   </div>
-
-									</div>
-									<div id="fnFeedbackChannelCommentsPlaceholder"></div>
-								<br /><br />
-										<div id="footer"><hr>
-											<p id="copyright">
-Copyright &copy; 2009 Nokia Corporation and/or its subsidiary(-ies). All rights reserved. <br>License: <a href="http://www.symbianfoundation.org/legal/sfl-v10.html">http://www.symbianfoundation.org/legal/sfl-v10.html</a>.</p>        
-							  </div>   
-									</div> 
-								</div>
-					
-				
-			</table>
-			<div style="clear: both"></div>
-		
-</div></body>
-</html>
+<html>
+    <head>
+        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+        <title>Overview in Hover Help Guide</title>
+	    <link rel="stylesheet" type="text/css" href="_stock/css/sfdl.css" media="screen" />
+		<link rel="stylesheet" type="text/css" href="_stock/css/ui.css" media="screen" />
+		<link rel="stylesheet" type="text/css" href="_stock/css/sysdoc.css" media="screen" />
+	    <link href="_stock/css/ajaxToc-sfdl.css" type="text/css" rel="stylesheet">
+    </head>
+<body>
+		<div id="main_content">
+			<table width="100%" cellpadding="0" cellspacing="0" border="0">
+				<tr>
+					<td valign="top" width="100%">
+						<div id="main_content_txt">
+							<div class="main_content_padding">		
+																<div id="main">
+									<div id="navigator">
+										<div id="navigator_padding">
+										
+											&nbsp;<span class="separator">&#187;</span>
+											<a href="index.html">Hover&nbsp;Help&nbsp;Plug-in&nbsp;Guide</a>										</div>
+									</div>
+									<div id="authoredContent">
+        <div class="section">
+<a name="hover%2egs%2e"></a><h1>Hover Help Overview</h1><p>
+		  Hover Help provides a link
+		  between the Carbide IDE and the Symbian OS C++ Developer Library. When activated, Hover Help
+		  provides developers with easy access to the API reference documentation. When a
+		  user hovers over a C++ API item, such as a class name, the editor shows the documentation for that API
+		  reference.
+		</p><p>
+		  Hover Help uses <em>Developer Library plug-ins</em>. These are Eclipse
+		  documentation plug-ins that contain the information displayed when an
+		  API reference item is hovered over.
+		</p><p>
+		  You can download Developer Library plug-ins from the
+		  <a href="http://symbianfoundation.org/">Symbian Foundation</a> website. 
+		</p>
+        <blockquote>
+          <p class="note"><b>NOTE</b> If you experience problems connecting to the  site, verify that the connection settings are correct in the <a href="PLUGINS_ROOT/org.eclipse.platform.doc.user/reference/ref-net-preferences.htm">Network Connections</a> preference panel before trying again. This is especially important if  a proxy setting is required to connect to the internet.</p>
+        </blockquote>
+        </div>
+   </div>
+									</div>
+									<div id="fnFeedbackChannelCommentsPlaceholder"></div>
+								<br /><br />
+										<div id="footer"><hr>
+											<p id="copyright">
+Copyright &copy; 2009 Nokia Corporation and/or its subsidiary(-ies). All rights reserved. <br>License: <a href="http://www.symbianfoundation.org/legal/sfl-v10.html">http://www.symbianfoundation.org/legal/sfl-v10.html</a>.</p>        
+							  </div>   
+									</div> 
+								</div>
+		  </table>
+			<div style="clear: both"></div>
+		
+</div></body>
+</html>
--- a/core/com.nokia.carbide.cpp.sysdoc.hover/resources/help context/dl_hover/html/setup.html	Sat Apr 25 12:54:10 2009 -0500
+++ b/core/com.nokia.carbide.cpp.sysdoc.hover/resources/help context/dl_hover/html/setup.html	Mon Apr 27 15:07:35 2009 -0500
@@ -1,105 +1,106 @@
-<html>
-    <head>
-        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-        <title>Set Up in Hover Help Guide</title>
-	    <link rel="stylesheet" type="text/css" href="_stock/css/sfdl.css" media="screen" />
-		<link rel="stylesheet" type="text/css" href="_stock/css/ui.css" media="screen" />
-		<link rel="stylesheet" type="text/css" href="_stock/css/sysdoc.css" media="screen" />
-	    <link href="_stock/css/ajaxToc-sfdl.css" type="text/css" rel="stylesheet">
-</head>
-	<body>		
-		<div id="main_content">
-			<table width="100%" cellpadding="0" cellspacing="0" border="0">
-				<tr>
-					<td valign="top" width="100%">
-						<div id="main_content_txt">
-							<div class="main_content_padding">		
-																<div id="main">
-									<div id="navigator">
-										<div id="navigator_padding">
-										
-											&nbsp;<span class="separator">&#187;</span>
-											<a href="index.html">Hover&nbsp;Help&nbsp;Plug-in&nbsp;Guide</a>
-										
-										</div>
-									</div>
-									<div id="authoredContent">
-        <div class="section">
-<h1>Hover Help Set Up</h1><a name="hover%2ecomponents%2e"></a><p>
-		This section describes the initial set up of Hover Help and how
-		to add a Developer Library plug-in. 
-	 </p><div class="section">
-<h2>Developer Library Indexing</h2><p>
-		  When the Carbide IDE starts, Hover Help automatically
-		    prepares for its first use by indexing its Developer Library. 
-		</p><p>
-		  This process takes a few seconds, and progress is displayed in the Progress view. 
-		</p><p>
-		  If you cancel indexing from the Progress view, Hover Help will be
-		  deactivated. You can reactivate Hover Help using
-		  <a href="preferences.html#hover%2eprefs%2e" title="This section describes the preferences panel that can configure and change the Developer Library plug-ins used by Hover Help.">the preferences panel</a>,
-		  and the indexing will start again. 
-		</p></div>
-<div class="section">
-<a name="hover%2eadd_DL%2e"></a><h2>Adding a New Developer Library Plug-in</h2><p>
-		  New versions of the Developer Library plug-in are published regularly.
-		  You can configure Hover Help to use a new version as follows: 
-		</p><ol> 
-		  <li>
- 
-			 
-				Obtain the latest Developer Library plug-in from the
-				<a href="http://symbianfoundation.org/">Symbian Foundation</a> website,
-				and copy the new plug-in into Carbide&#8217;s <code class="filename">plugins</code> directory. 
-			 
-		  </li>
- 
-		  <li>
- 
-			 
-				Restart Carbide. 
-			  
-		  </li>
- 
-	  	<li>
- 
-			 
-				From the Window > Preferences > Carbide.c++ > Hover Help preferences panel, make sure the new added Developer Library 
-				is selected. If not, select it from the Developer Libraries drop-down box. 
-			  
-		  </li>
- 		  
-		</ol></div>
-<div class="section">
-<a name="hover%2eactivate_HH%2e"></a><h2>Activating Hover Help</h2>
-<p>
-		  If Hover Help is deactivated, you can activate it from the
-		    <b>Window > Preferences > Carbide.c++ > Hover Help</b> preferences panel by
-		  unchecking the  "Deactivate Hovering" option.
-		</p>
-<p></p>
-		When you activate Hover Help, the checkbox
-		<a href="preferences.html#hover%2eprefs%2eautomatic" title="When you check the checkbox &quot;Automatically select the latest Developer Library&quot; the Developer Library is automatically selected for you. The name of the selected library is displayed in the greyed field.">&quot;Automatically select latest Developer Library&quot;</a> is automatically checked.
-		<p></p><p></p>
-		If you need a particular Developer Library, uncheck the checkbox
-		<a href="preferences.html#hover%2eprefs%2eautomatic" title="When you check the checkbox &quot;Automatically select the latest Developer Library&quot; the Developer Library is automatically selected for you. The name of the selected library is displayed in the greyed field.">&quot;Automatically select latest Developer Library&quot;</a>.
-		Then select a Developer Library from the Developer Libraries drop-down box.
-</div>
-</div>
-									<div id="fnFeedbackChannelCommentsPlaceholder"></div>
-								<br /><br />
-										<div id="footer">        
-											<p id="copyright">
-Copyright &copy; 2009 Nokia Corporation and/or its subsidiary(-ies). All rights reserved. <br>License: <a href="http://www.symbianfoundation.org/legal/sfl-v10.html">http://www.symbianfoundation.org/legal/sfl-v10.html</a>.</p>        
-									  </div>   
-									</div> 
-								</div>
-							</div>
-						</div>
-					</td>
-				</tr>
-			</table>
-			<div style="clear: both"></div>
-		</div>
-</body>
-</html>
+<html>
+    <head>
+        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+        <title>Set Up in Hover Help Guide</title>
+	    <link rel="stylesheet" type="text/css" href="_stock/css/sfdl.css" media="screen" />
+		<link rel="stylesheet" type="text/css" href="_stock/css/ui.css" media="screen" />
+		<link rel="stylesheet" type="text/css" href="_stock/css/sysdoc.css" media="screen" />
+	    <link href="_stock/css/ajaxToc-sfdl.css" type="text/css" rel="stylesheet">
+</head>
+	<body>		
+		<div id="main_content">
+			<table width="100%" cellpadding="0" cellspacing="0" border="0">
+				<tr>
+					<td valign="top" width="100%">
+						<div id="main_content_txt">
+							<div class="main_content_padding">		
+																<div id="main">
+									<div id="navigator">
+										<div id="navigator_padding">
+										
+											&nbsp;<span class="separator">&#187;</span>
+											<a href="index.html">Hover&nbsp;Help&nbsp;Plug-in&nbsp;Guide</a>
+										
+										</div>
+									</div>
+									<div id="authoredContent">
+        <div class="section">
+<h1>Hover Help Set Up</h1><a name="hover%2ecomponents%2e"></a><p>
+		This section describes the initial set up of Hover Help and how
+		to add a Developer Library plug-in. 
+	 </p><div class="section">
+<h2>Developer Library Indexing</h2><p>
+		  When the Carbide IDE starts, Hover Help automatically
+		    prepares for its first use by indexing its Developer Library. 
+		</p><p>
+		  This process takes a few seconds, and progress is displayed in the Progress view. 
+		</p><p>
+		  If you cancel indexing from the Progress view, Hover Help will be
+		  deactivated. You can reactivate Hover Help using
+		  <a href="preferences.html#hover%2eprefs%2e" title="This section describes the preferences panel that can configure and change the Developer Library plug-ins used by Hover Help.">the preferences panel</a>,
+		  and the indexing will start again. 
+		</p></div>
+<div class="section">
+<a name="hover%2eadd_DL%2e"></a><h2>Adding a New Developer Library Plug-in</h2><p>
+		  New versions of the Developer Library plug-in are published regularly.
+		  You can configure Hover Help to use a new version as follows: 
+		</p><ol> 
+		  <li>
+ 
+			 
+				Obtain the latest Developer Library plug-in from the
+				<a href="http://symbianfoundation.org/">Symbian Foundation</a> website,
+				and copy the new plug-in into Carbide&#8217;s <code class="filename">plugins</code> directory. 
+			 
+		        <p class="note"><b>NOTE</b> If you experience problems connecting to the  site, verify that the connection settings are correct in the <a href="PLUGINS_ROOT/org.eclipse.platform.doc.user/reference/ref-net-preferences.htm">Network Connections</a> preference panel before trying again. This is especially important if  a proxy setting is required to connect to the internet.</p>
+		  </li>
+ 
+		  <li>
+ 
+			 
+				Restart Carbide. 
+			  
+		  </li>
+ 
+	  	<li>
+ 
+			 
+				From the Window > Preferences > Carbide.c++ > Hover Help preferences panel, make sure the new added Developer Library 
+				is selected. If not, select it from the Developer Libraries drop-down box. 
+			  
+</li>
+ 		  
+		</ol></div>
+<div class="section">
+<a name="hover%2eactivate_HH%2e"></a><h2>Activating Hover Help</h2>
+<p>
+		  If Hover Help is deactivated, you can activate it from the
+		    <b>Window > Preferences > Carbide.c++ > Hover Help</b> preferences panel by
+		  unchecking the  "Deactivate Hovering" option.
+		</p>
+<p></p>
+		When you activate Hover Help, the checkbox
+		<a href="preferences.html#hover%2eprefs%2eautomatic" title="When you check the checkbox &quot;Automatically select the latest Developer Library&quot; the Developer Library is automatically selected for you. The name of the selected library is displayed in the greyed field.">&quot;Automatically select latest Developer Library&quot;</a> is automatically checked.
+		<p></p><p></p>
+		If you need a particular Developer Library, uncheck the checkbox
+		<a href="preferences.html#hover%2eprefs%2eautomatic" title="When you check the checkbox &quot;Automatically select the latest Developer Library&quot; the Developer Library is automatically selected for you. The name of the selected library is displayed in the greyed field.">&quot;Automatically select latest Developer Library&quot;</a>.
+		Then select a Developer Library from the Developer Libraries drop-down box.
+</div>
+</div>
+									<div id="fnFeedbackChannelCommentsPlaceholder"></div>
+								<br /><br />
+										<div id="footer">        
+											<p id="copyright">
+Copyright &copy; 2009 Nokia Corporation and/or its subsidiary(-ies). All rights reserved. <br>License: <a href="http://www.symbianfoundation.org/legal/sfl-v10.html">http://www.symbianfoundation.org/legal/sfl-v10.html</a>.</p>        
+									  </div>   
+									</div> 
+								</div>
+							</div>
+						</div>
+					</td>
+				</tr>
+			</table>
+			<div style="clear: both"></div>
+		</div>
+</body>
+</html>
Binary file core/com.nokia.carbide.cpp/icons/gold_header.png has changed
Binary file debuggercdi/com.nokia.carbide.cpp.debug.crashdebugger/html/gold_header.png has changed
--- a/debuggercdi/com.nokia.carbide.cpp.debug.kernelaware/src/com/nokia/carbide/cpp/debug/kernelaware/testapi/SymbianOSViewTester.java	Sat Apr 25 12:54:10 2009 -0500
+++ b/debuggercdi/com.nokia.carbide.cpp.debug.kernelaware/src/com/nokia/carbide/cpp/debug/kernelaware/testapi/SymbianOSViewTester.java	Mon Apr 27 15:07:35 2009 -0500
@@ -19,8 +19,7 @@
 
 import com.freescale.cdt.debug.cw.core.CWPlugin;
 import com.nokia.carbide.cpp.debug.kernelaware.*;
-import com.nokia.carbide.cpp.debug.kernelaware.ui.GenericTableTab;
-import com.nokia.carbide.cpp.debug.kernelaware.ui.SymbianOSView;
+import com.nokia.carbide.cpp.debug.kernelaware.ui.*;
 
 import org.eclipse.jface.viewers.*;
 import org.eclipse.swt.widgets.TabFolder;
@@ -123,7 +122,13 @@
 	 */
 	public static Text getFilterText(IViewPart viewPart) {
 		Viewer viewer = getCurrentViewer(viewPart);
-		GenericTableTab tableTab = (GenericTableTab) viewer.getData("controller");
-		return tableTab.getFilterText();
+		Object data = viewer.getData("controller");
+		if (data instanceof GenericTableTab) {
+			return ((GenericTableTab) data).getFilterText();
+		}
+		else if (data instanceof OverviewTab) {
+			return ((OverviewTab) data).getFilterText();
+		}
+		return null;
 	}
 }
--- a/debuggercdi/com.nokia.carbide.cpp.debug.kernelaware/src/com/nokia/carbide/cpp/debug/kernelaware/ui/OverviewTab.java	Sat Apr 25 12:54:10 2009 -0500
+++ b/debuggercdi/com.nokia.carbide.cpp.debug.kernelaware/src/com/nokia/carbide/cpp/debug/kernelaware/ui/OverviewTab.java	Mon Apr 27 15:07:35 2009 -0500
@@ -261,6 +261,7 @@
 		Tree tree = viewer.getTree();
 		tree.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true, 3, 1));
 
+		viewer.setData("controller", this); //$NON-NLS-1$
 		return viewer;
 	}
 
@@ -277,4 +278,9 @@
 				viewer.refresh();
 		}
 	}
+	
+	
+	public Text getFilterText() {
+		return filterText;
+	}
 }
--- a/project/com.nokia.carbide.cpp.epoc.engine.tests/src/com/nokia/carbide/cpp/epoc/engine/tests/model/TestBldInfView4.java	Sat Apr 25 12:54:10 2009 -0500
+++ b/project/com.nokia.carbide.cpp.epoc.engine.tests/src/com/nokia/carbide/cpp/epoc/engine/tests/model/TestBldInfView4.java	Mon Apr 27 15:07:35 2009 -0500
@@ -1257,5 +1257,54 @@
 				"AddingInsideConditional"));
 
 	}
+
+	public void testNamedExtension() throws Exception {
+		String text= "PRJ_MMPFILES\n"+
+		"first.mmp\n"+
+		"\n"+
+		"PRJ_TESTEXTENSIONS\r\n" + 
+		"start       extension        base\\config       myExtension\r\n" +
+		"tool armcc\r\n"+
+		"target zap_ma_ma\r\n"+
+		"sources ..\\src\\file1.cpp sub\\file2.cpp\r\n"+
+		"dependencies ..\\src\\file1 sub\\file2\r\n"+
+		"\r\n" + 
+		"end";
+		
+		makeModel(text);
+		IBldInfView view = getView(config);
+		checkNoProblems(view);
+	
+		_testNamedExtension(view);
+		_testNamedExtension(view.getData());
+		
+		commitTest(view, text);
+	}
+
+	private void _testNamedExtension(IBldInfData bldInfData) {
+		IExtension ext = bldInfData.getTestExtensions().get(0);
+		assertNotNull(ext);
+		assertTrue(ext.isValid());
+		assertNotNull(ext.getName());
+		assertEquals("myExtension", ext.getName());
+	}
+
+	public void testModifyNamedExtension() {
+		makeModel("PRJ_EXTENSIONS\n"+
+				"START EXTENSION base/graphics/svg\n"+
+				"END\n");
+		IBldInfView view = getView(config);
+		checkNoProblems(view);
+
+		IExtension ext = view.getExtensions().get(0);
+		ext.setName("myExtension");	
+		assertNotNull(ext.getName());
+		assertEquals("myExtension", ext.getName());
+		commitTest(view,
+				"PRJ_EXTENSIONS\n"+
+				"START EXTENSION base/graphics/svg myExtension\n"+
+				"END\n");
+	}
+
 }
 
--- a/project/com.nokia.carbide.cpp.epoc.engine/src/com/nokia/carbide/cpp/epoc/engine/model/bldinf/IExtension.java	Sat Apr 25 12:54:10 2009 -0500
+++ b/project/com.nokia.carbide.cpp.epoc.engine/src/com/nokia/carbide/cpp/epoc/engine/model/bldinf/IExtension.java	Mon Apr 27 15:07:35 2009 -0500
@@ -53,6 +53,12 @@
 	/** Access/modify the list of dependencies.  No interpretation is performed.  As in the bld.inf, no extension will be present. */
 	List<IPath> getDependencies();
 	
+	/** Get the name associated with the extension, may be null for unnamed extension */
+	String getName();
+	
+	/** Set the name associated with the extension, may be null for unnamed extension */
+	void setName(String name);
+	
 	/** Get the tool name, may be null */
 	String getToolName();
 	
--- a/project/com.nokia.carbide.cpp.epoc.engine/src/com/nokia/carbide/internal/cpp/epoc/engine/model/bldinf/Extension.java	Sat Apr 25 12:54:10 2009 -0500
+++ b/project/com.nokia.carbide.cpp.epoc.engine/src/com/nokia/carbide/internal/cpp/epoc/engine/model/bldinf/Extension.java	Mon Apr 27 15:07:35 2009 -0500
@@ -33,6 +33,7 @@
 	private IPath targetPath;
 	private IPath templatePath;
 	private String toolName;
+	private String extensionName;
 
 	public Extension() {
 	}
@@ -44,6 +45,7 @@
 		this.targetPath = other.targetPath;
 		this.templatePath = other.templatePath;
 		this.toolName = other.toolName;
+		this.extensionName = other.extensionName;
 	}
 
 	@Override
@@ -60,6 +62,8 @@
 				+ ((templatePath == null) ? 0 : templatePath.hashCode());
 		result = prime * result
 				+ ((toolName == null) ? 0 : toolName.hashCode());
+		result = prime * result
+				+ ((extensionName == null) ? 0 : extensionName.hashCode());
 		return result;
 	}
 
@@ -104,6 +108,11 @@
 				return false;
 		} else if (!toolName.equalsIgnoreCase(other.toolName))
 			return false;
+		if (extensionName == null) {
+			if (other.extensionName != null)
+				return false;
+		} else if (!extensionName.equalsIgnoreCase(other.extensionName))
+			return false;
 		return true;
 	}
 
@@ -122,6 +131,14 @@
 		return dependencies;
 	}
 
+	/*
+	 * (non-Javadoc)
+	 * @see com.nokia.carbide.cpp.epoc.engine.model.bldinf.IExtension#getName()
+	 */
+	public String getName() {
+		return extensionName;
+	}
+
 	/* (non-Javadoc)
 	 * @see com.nokia.carbide.cpp.epoc.engine.model.bldinf.IExtension#getOptions()
 	 */
@@ -157,6 +174,14 @@
 		return toolName;
 	}
 
+	/*
+	 * (non-Javadoc)
+	 * @see com.nokia.carbide.cpp.epoc.engine.model.bldinf.IExtension#setName(java.lang.String)
+	 */
+	public void setName(String name) {
+		extensionName = name;
+	}
+
 	/* (non-Javadoc)
 	 * @see com.nokia.carbide.cpp.epoc.engine.model.bldinf.IExtension#setTargetPath(org.eclipse.core.runtime.IPath)
 	 */
--- a/project/com.nokia.carbide.cpp.epoc.engine/src/com/nokia/carbide/internal/cpp/epoc/engine/model/bldinf/ExtensionListConverter.java	Sat Apr 25 12:54:10 2009 -0500
+++ b/project/com.nokia.carbide.cpp.epoc.engine/src/com/nokia/carbide/internal/cpp/epoc/engine/model/bldinf/ExtensionListConverter.java	Mon Apr 27 15:07:35 2009 -0500
@@ -77,6 +77,9 @@
 			return null;
 		}
 		extension.setTemplatePath(FileUtils.createPossiblyRelativePath(extensionStmt.getArguments().get(1).getValue()));
+		if (extensionStmt.getArguments().size() > 2) {
+			extension.setName(extensionStmt.getArguments().get(2).getValue());
+		}
 		for (IASTBldInfExtensionStatement stmt : extensionStmt.getList()) {
 			if (stmt.getArguments() == null || stmt.getArguments().size() == 0) {
 				bldInfView.addErrorMessage(Messages.getString("ExtensionListConverter.MissingArgumentsError"),  stmt); //$NON-NLS-1$
@@ -137,6 +140,9 @@
 		IASTListNode<IASTLiteralTextNode> arguments = ASTFactory.createListNode(" "); //$NON-NLS-1$
 		arguments.add(ASTFactory.createPreprocessorLiteralTextNode(EXTENSION_KEYWORD));
 		arguments.add(ASTFactory.createPreprocessorLiteralTextNode(bldInfView.pathString(extension.getTemplatePath())));
+		if (extension.getName() != null) {
+			arguments.add(ASTFactory.createPreprocessorLiteralTextNode(extension.getName()));
+		}
 		
 		IASTListNode<IASTBldInfExtensionStatement> stmts = ASTBldInfFactory.createBldInfExtensionStatementList();
 		if (extension.getTargetPath() != null) {
--- a/project/com.nokia.carbide.cpp.project.ui/src/com/nokia/carbide/cpp/internal/project/ui/importWizards/BldInfImportWizard.java	Sat Apr 25 12:54:10 2009 -0500
+++ b/project/com.nokia.carbide.cpp.project.ui/src/com/nokia/carbide/cpp/internal/project/ui/importWizards/BldInfImportWizard.java	Mon Apr 27 15:07:35 2009 -0500
@@ -122,7 +122,7 @@
         		newProject = ProjectCorePlugin.createProject(projectName, rootDirectory.toOSString());
         		monitor.worked(1);
 
-    			newProject.setSessionProperty(CarbideBuilderPlugin.SBSV2_PROJECT, Boolean.valueOf(bldInfSelectionPage.useSBSv2Builder()));
+    			newProject.setSessionProperty(CarbideBuilderPlugin.SBSV2_PROJECT, Boolean.valueOf(useSBSv2Builder()));
 
     			// TODO pass PKG file path to postProjectCreatedActions, currently passing null
         		ProjectCorePlugin.postProjectCreatedActions(newProject, projectRelativePath, selectedConfigs, components, debugMMP, null, monitor);
@@ -188,4 +188,8 @@
     	// setting the last page is good enough
     	projectPropertiesPage.setPageComplete(false);
     }
+    
+    public boolean useSBSv2Builder() {
+    	return bldInfSelectionPage.useSBSv2Builder();
+    }
 }
--- a/project/com.nokia.carbide.cpp.project.ui/src/com/nokia/carbide/cpp/internal/project/ui/importWizards/MMPSelectionPage.java	Sat Apr 25 12:54:10 2009 -0500
+++ b/project/com.nokia.carbide.cpp.project.ui/src/com/nokia/carbide/cpp/internal/project/ui/importWizards/MMPSelectionPage.java	Mon Apr 27 15:07:35 2009 -0500
@@ -93,12 +93,11 @@
 			setErrorMessage(Messages.MMPSelectionPage_noMMPsSelectedError);
 			return false;
 		}
-		// if there are any new-style prj extensions, warn them that they won't be built
+		// if there are any unnamed new-style prj extensions, warn them that they won't be built
 		// when not building the entire bld.inf.
-		boolean hasProjectExtensions = selectionUI.hasProjectExtensions();
-		if (hasProjectExtensions && !areAllMakMakeReferencesChecked()) {
-			setMessage(Messages.MMPSelectionPage_prjExtensionsWarning, WARNING);
-			return true;
+		String warning = selectionUI.getExtensionsWarningMessage();
+		if (warning != null) {
+			setMessage(warning, WARNING);
 		}
 		return true;
     }
@@ -111,7 +110,7 @@
 		// know if we need to re-parse again if either of these changes, e.g. the user
 		// hits back and selects a different bld.inf or set of configs
 		if (visible) {
-			selectionUI.setBldInfFile(new Path(theWizard.getBldInfFile()), theWizard.getSelectedConfigs());
+			selectionUI.setBldInfFile(new Path(theWizard.getBldInfFile()), theWizard.getSelectedConfigs(), theWizard.useSBSv2Builder());
 		}
 		super.setVisible(visible);
 	}
--- a/project/com.nokia.carbide.cpp.project.ui/src/com/nokia/carbide/cpp/internal/project/ui/importWizards/Messages.java	Sat Apr 25 12:54:10 2009 -0500
+++ b/project/com.nokia.carbide.cpp.project.ui/src/com/nokia/carbide/cpp/internal/project/ui/importWizards/Messages.java	Mon Apr 27 15:07:35 2009 -0500
@@ -71,8 +71,6 @@
 
 	public static String MMPSelectionPage_noMMPsSelectedError;
 
-	public static String MMPSelectionPage_prjExtensionsWarning;
-
 	public static String ProjectPropertiesPage_noProjectSpecifiedError;
 
 	public static String ProjectPropertiesPage_projectExistsError;
--- a/project/com.nokia.carbide.cpp.project.ui/src/com/nokia/carbide/cpp/internal/project/ui/importWizards/messages.properties	Sat Apr 25 12:54:10 2009 -0500
+++ b/project/com.nokia.carbide.cpp.project.ui/src/com/nokia/carbide/cpp/internal/project/ui/importWizards/messages.properties	Mon Apr 27 15:07:35 2009 -0500
@@ -29,7 +29,6 @@
 MMPSelectionPage_sortByMMPNameCheckboxTooltip=Sorts the list alphabetically by name. Otherwise they are displayed in the order listed in the bld.inf file.
 MMPSelectionPage_noMMPsFoundWarning=Note: No mmp or extension make files were found in the bld.inf file.
 MMPSelectionPage_noMMPsSelectedError=Please select at least one mmp or extension makefile.
-MMPSelectionPage_prjExtensionsWarning=Warning: This bld.inf contains project extensions (prj_extensions and/or prj_testextensions).  These will only be built when building the entire bld.inf.
 BldInfImportWizard_title=File Import Wizard
 BldInfSelectionPage_title=Symbian OS Bld.inf file
 BldInfSelectionPage_description=Import an existing Symbian OS project
--- a/qt/com.nokia.carbide.cpp.qt.core/META-INF/MANIFEST.MF	Sat Apr 25 12:54:10 2009 -0500
+++ b/qt/com.nokia.carbide.cpp.qt.core/META-INF/MANIFEST.MF	Mon Apr 27 15:07:35 2009 -0500
@@ -11,7 +11,7 @@
  org.eclipse.jface,
  com.nokia.carbide.cpp.sdk.core,
  com.nokia.carbide.cpp.sdk.ui,
- com.trolltech.qtcppproject;bundle-version="1.4.3"
+ com.trolltech.qtcppproject;bundle-version="1.5.0"
 Bundle-RequiredExecutionEnvironment: J2SE-1.5
 Bundle-ActivationPolicy: lazy
 Export-Package: com.nokia.carbide.cpp.internal.qt.core
--- a/qt/com.nokia.carbide.cpp.qt.test/META-INF/MANIFEST.MF	Sat Apr 25 12:54:10 2009 -0500
+++ b/qt/com.nokia.carbide.cpp.qt.test/META-INF/MANIFEST.MF	Mon Apr 27 15:07:35 2009 -0500
@@ -15,7 +15,7 @@
  org.eclipse.core.resources,
  com.nokia.carbide.cpp.project.core,
  org.eclipse.cdt.core,
- com.trolltech.qtcppproject;bundle-version="1.4.3",
+ com.trolltech.qtcppproject;bundle-version="1.5.0",
  com.nokia.carbide.cdt.builder
 Bundle-RequiredExecutionEnvironment: J2SE-1.5
 Bundle-ActivationPolicy: lazy
--- a/qt/com.nokia.carbide.cpp.qt.ui/META-INF/MANIFEST.MF	Sat Apr 25 12:54:10 2009 -0500
+++ b/qt/com.nokia.carbide.cpp.qt.ui/META-INF/MANIFEST.MF	Mon Apr 27 15:07:35 2009 -0500
@@ -22,6 +22,6 @@
  com.nokia.carbide.cdt.builder,
  org.eclipse.cdt.core,
  org.eclipse.ui.ide,
- com.trolltech.qtcppproject;bundle-version="1.4.3"
+ com.trolltech.qtcppproject;bundle-version="1.5.0"
 Bundle-RequiredExecutionEnvironment: J2SE-1.5
 Bundle-ActivationPolicy: lazy
Binary file uidesigner/com.nokia.carbide.cpp.uidesigner.doc.user/html/images/gold_header.png has changed
Binary file uidesigner/com.nokia.carbide.cpp.uiq.doc.user/html/images/gold_header.png has changed
--- a/uidesigner/com.nokia.carbide.cpp.uiq.ui/src/com/nokia/carbide/cpp/uiq/ui/viewwizard/ViewWizardManager.java	Sat Apr 25 12:54:10 2009 -0500
+++ b/uidesigner/com.nokia.carbide.cpp.uiq.ui/src/com/nokia/carbide/cpp/uiq/ui/viewwizard/ViewWizardManager.java	Mon Apr 27 15:07:35 2009 -0500
@@ -17,9 +17,13 @@
 /* START_USECASES: CU1, CU2 END_USECASES */
 package com.nokia.carbide.cpp.uiq.ui.viewwizard;
 
+import com.nokia.carbide.cpp.uiq.ui.UIQUserInterfacePlugin;
 import com.nokia.carbide.internal.api.templatewizard.ui.IWizardDataPage;
 import com.nokia.carbide.internal.api.templatewizard.ui.TemplateWizard;
 import com.nokia.carbide.template.engine.ITemplate;
+import com.nokia.cpp.internal.api.utils.core.Check;
+import com.nokia.cpp.internal.api.utils.core.Logging;
+import com.nokia.cpp.internal.api.utils.ui.UITaskUtils;
 import com.nokia.sdt.component.*;
 import com.nokia.sdt.component.adapter.CommonAttributes;
 import com.nokia.sdt.component.adapter.IAttributes;
@@ -34,16 +38,11 @@
 import com.nokia.sdt.editor.EditorServices;
 import com.nokia.sdt.editor.IDesignerDataModelEditor;
 import com.nokia.sdt.emf.dm.*;
-import com.nokia.carbide.cpp.internal.featureTracker.FeatureUseTrackerConsts;
-import com.nokia.carbide.cpp.internal.featureTracker.FeatureUseTrackerPlugin;
-import com.nokia.carbide.cpp.uiq.ui.UIQUserInterfacePlugin;
 import com.nokia.sdt.sourcegen.*;
 import com.nokia.sdt.symbian.dm.*;
 import com.nokia.sdt.symbian.ui.UIPlugin;
 import com.nokia.sdt.symbian.workspace.ISymbianProjectContext;
 import com.nokia.sdt.symbian.workspace.impl.ProjectContextProvider;
-import com.nokia.cpp.internal.api.utils.core.*;
-import com.nokia.cpp.internal.api.utils.ui.UITaskUtils;
 import com.nokia.sdt.workspace.*;
 
 import org.eclipse.cdt.core.model.*;
@@ -271,7 +270,6 @@
 	 * 
 	 */
 	public ViewWizardManager() {
-		FeatureUseTrackerPlugin.getFeatureUseProxy().startUsingFeature(FeatureUseTrackerConsts.CARBIDE_UI_DESIGNER);
 		dataModelProvider = new DesignerDataModelProvider();
 		ComponentSystem cs = ComponentSystem.getComponentSystem();
 		try {
@@ -1023,7 +1021,6 @@
 			disposeStoredModel(ROOT_MODEL_KEY);
 		}
 		disposeStoredModel(VIEW_MODEL_KEY);
-		FeatureUseTrackerPlugin.getFeatureUseProxy().stopUsingFeature(FeatureUseTrackerConsts.CARBIDE_UI_DESIGNER);
 	}
 	
 	public void disposeStoredModel(String modelKey) {
--- a/uidesigner/com.nokia.sdt.series60.componentlibrary/src/com/nokia/sdt/series60/viewwizard/ViewWizardManager.java	Sat Apr 25 12:54:10 2009 -0500
+++ b/uidesigner/com.nokia.sdt.series60.componentlibrary/src/com/nokia/sdt/series60/viewwizard/ViewWizardManager.java	Mon Apr 27 15:07:35 2009 -0500
@@ -228,7 +228,6 @@
 	 * 
 	 */
 	public ViewWizardManager() {
-		FeatureUseTrackerPlugin.getFeatureUseProxy().startUsingFeature(FeatureUseTrackerConsts.CARBIDE_UI_DESIGNER);
 		dataModelProvider = new DesignerDataModelProvider();
 		ComponentSystem cs = ComponentSystem.getComponentSystem();
 		try {
@@ -916,7 +915,6 @@
 			disposeStoredModel(ROOT_MODEL_KEY);
 		}
 		disposeStoredModel(VIEW_MODEL_KEY);
-		FeatureUseTrackerPlugin.getFeatureUseProxy().stopUsingFeature(FeatureUseTrackerConsts.CARBIDE_UI_DESIGNER);
 	}
 	
 	public void disposeStoredModel(String modelKey) {
--- a/uidesigner/com.nokia.sdt.symbian.ui/src/com/nokia/sdt/symbian/ui/appeditor/ApplicationEditor.java	Sat Apr 25 12:54:10 2009 -0500
+++ b/uidesigner/com.nokia.sdt.symbian.ui/src/com/nokia/sdt/symbian/ui/appeditor/ApplicationEditor.java	Mon Apr 27 15:07:35 2009 -0500
@@ -155,7 +155,8 @@
 	}
 
 	protected IStatus preLoadInput(IProgressMonitor monitor) {
-		FeatureUseTrackerPlugin.getFeatureUseProxy().startUsingFeature(FeatureUseTrackerConsts.CARBIDE_UI_DESIGNER);
+		if (!EditorServices.isAnyEditorOpen())
+			FeatureUseTrackerPlugin.getFeatureUseProxy().startUsingFeature(FeatureUseTrackerConsts.CARBIDE_UI_DESIGNER);
 		IFile file = ResourceUtil.getFile(getEditorInput());
 		WorkspaceContext wc = WorkspaceContext.getContext();
 		IDesignerDataModelSpecifier modelSpecifier = wc.findSpecifierForResource(file);
@@ -292,8 +293,9 @@
 	 * Subclasses may extend.
 	 */
 	public void dispose() {
-		FeatureUseTrackerPlugin.getFeatureUseProxy().stopUsingFeature(FeatureUseTrackerConsts.CARBIDE_UI_DESIGNER);
 		super.dispose();
+		if (!EditorServices.isAnyEditorOpen())
+			FeatureUseTrackerPlugin.getFeatureUseProxy().stopUsingFeature(FeatureUseTrackerConsts.CARBIDE_UI_DESIGNER);
 	}
 		
 	/**
--- a/uidesigner/com.nokia.sdt.uidesigner/src/com/nokia/sdt/uidesigner/ui/DesignerEditor.java	Sat Apr 25 12:54:10 2009 -0500
+++ b/uidesigner/com.nokia.sdt.uidesigner/src/com/nokia/sdt/uidesigner/ui/DesignerEditor.java	Mon Apr 27 15:07:35 2009 -0500
@@ -20,6 +20,7 @@
 
 import com.nokia.carbide.cpp.internal.featureTracker.FeatureUseTrackerConsts;
 import com.nokia.carbide.cpp.internal.featureTracker.FeatureUseTrackerPlugin;
+import com.nokia.sdt.editor.EditorServices;
 import com.nokia.sdt.uidesigner.ui.utils.Strings;
 import com.nokia.cpp.internal.api.utils.core.Logging;
 import com.nokia.cpp.internal.api.utils.ui.WorkbenchUtils;
@@ -56,7 +57,8 @@
 
 	@Override
 	protected IStatus doLoadInput(IProgressMonitor monitor) {
-		FeatureUseTrackerPlugin.getFeatureUseProxy().startUsingFeature(FeatureUseTrackerConsts.CARBIDE_UI_DESIGNER);
+		if (!EditorServices.isAnyEditorOpen())
+			FeatureUseTrackerPlugin.getFeatureUseProxy().startUsingFeature(FeatureUseTrackerConsts.CARBIDE_UI_DESIGNER);
 		return super.doLoadInput(monitor);
 	}
 
@@ -64,7 +66,8 @@
 	public void dispose() {
 		super.dispose();
 		designerEditorPage = null; // page will be disposed by superclass
-		FeatureUseTrackerPlugin.getFeatureUseProxy().stopUsingFeature(FeatureUseTrackerConsts.CARBIDE_UI_DESIGNER);
+		if (!EditorServices.isAnyEditorOpen())
+			FeatureUseTrackerPlugin.getFeatureUseProxy().stopUsingFeature(FeatureUseTrackerConsts.CARBIDE_UI_DESIGNER);
 	}
 
 	@Override