# HG changeset patch
# User timkelly
# Date 1276010652 18000
# Node ID 03403c6a4740e84ad139d5cc13906ef2087ba75a
# Parent  8534c28043b90404cb81d3197dca1066a1760b3c
Fixing up bug 11025 to load SBSv2 build contexts for older config names (no project config conversions done).
Also, added in a prelim look at SBSv2 Config manager prefs.

diff -r 8534c28043b9 -r 03403c6a4740 builder/com.nokia.carbide.cdt.builder/src/com/nokia/carbide/cdt/internal/api/builder/CarbideConfigurationDataProvider.java
--- a/builder/com.nokia.carbide.cdt.builder/src/com/nokia/carbide/cdt/internal/api/builder/CarbideConfigurationDataProvider.java	Mon Jun 07 10:17:00 2010 -0500
+++ b/builder/com.nokia.carbide.cdt.builder/src/com/nokia/carbide/cdt/internal/api/builder/CarbideConfigurationDataProvider.java	Tue Jun 08 10:24:12 2010 -0500
@@ -40,6 +40,7 @@
 import org.eclipse.core.runtime.Status;
 import org.eclipse.core.runtime.jobs.ISchedulingRule;
 import org.eclipse.core.runtime.jobs.Job;
+import org.eclipse.ui.internal.ide.handlers.BuildAllProjectsHandler;
 
 import com.nokia.carbide.cdt.builder.BuildArgumentsInfo;
 import com.nokia.carbide.cdt.builder.CarbideBuilderPlugin;
@@ -171,9 +172,9 @@
 			return null;
 		}
 		String configID = des.getConfiguration().getId();
-		String buidAlias = "";
-		String platform = "";
-		String target = "";
+		String buidAlias = null;
+		String platform = null;
+		String target = null;
 		String displayString = null;
 		String variant = "";
 		String sdkID = null;
@@ -181,6 +182,7 @@
 			for (ICStorageElement se : rootStorage.getChildren()) {
 				if (se.getName().equals(
 						CarbideBuildConfiguration.SBSV2_DATA_ID)) {
+					
 					String value = se.getAttribute(ISBSv2BuildConfigInfo.ATRRIB_CONFIG_BASE_PLATFORM);
 					if (value != null) {
 						platform = value;
@@ -206,8 +208,7 @@
 						displayString = value;
 					}
 					
-					value = se
-					.getAttribute(ISBSv2BuildConfigInfo.ATTRIB_SBSV2_SDK_ID);
+					value = se.getAttribute(ISBSv2BuildConfigInfo.ATTRIB_SBSV2_SDK_ID);
 					if (value != null) {
 						sdkID = value;
 					}
@@ -218,23 +219,28 @@
 		}
 		
 		ISymbianSDK sdk = null;
-		if (sdkID == null){
+		if (!configID.startsWith(ISBSv2BuildContext.BUILDER_ID)){
 			// pre-C3 project, get SDK id from config name
 			if (displayString == null){
 				displayString = configID;
+			} 
+			if (sdkID == null){
+				sdkID = BuildContextSBSv2.getSDKIDFromV1ConfigName(displayString);
 			}
-			sdkID = BuildContextSBSv2.getSDKIDFromConfigName(displayString);
+			if (platform == null){
+				platform = BuildContextSBSv2.getPlatformFromV1ConfigName(displayString);
+			}
+			if (target == null){
+				target = BuildContextSBSv2.getTargetFromV1ConfigName(displayString);
+			}
+			if (buidAlias == null){
+				buidAlias = BuildContextSBSv2.getBuildAliasFromV1ConfigName(displayString);
+			}
 		}
 		if (sdkID != null){
 			sdk = SDKCorePlugin.getSDKManager().getSDK(sdkID, true);
 			// TODO: NEED TO HANDLE MISSING SDK ID
 			if (sdk != null){
-				
-				if (displayString == null && !configID.startsWith(ISBSv2BuildContext.BUILDER_ID)){
-					displayString = configID; // Old config, used unique 'id' and config name interchangably
-				} else {
-					displayString = displayString;
-				}
 				return new BuildContextSBSv2(sdk, platform, target, buidAlias, displayString, configID);
 			}
 		}
diff -r 8534c28043b9 -r 03403c6a4740 builder/com.nokia.carbide.cdt.builder/src/com/nokia/carbide/cdt/internal/api/builder/ui/ManageConfigurationsDialog.java
--- a/builder/com.nokia.carbide.cdt.builder/src/com/nokia/carbide/cdt/internal/api/builder/ui/ManageConfigurationsDialog.java	Mon Jun 07 10:17:00 2010 -0500
+++ b/builder/com.nokia.carbide.cdt.builder/src/com/nokia/carbide/cdt/internal/api/builder/ui/ManageConfigurationsDialog.java	Tue Jun 08 10:24:12 2010 -0500
@@ -415,13 +415,13 @@
 											checkIt = true;
 										}
 									}
-									else if (v2Context.getSBSv2Alias().equals(currV2Context.getSBSv2Alias()) &&
-										v2Context.getPlatformString().equals(currExistingConfig.getPlatformString()) &&
-										v2Context.getSDK().getUniqueId().equals(currExistingConfig.getSDK().getUniqueId() )
-										&& v2Context.getSBSv2Alias() != null && v2Context.getSBSv2Alias().split("_").length == 2){
-										
-										checkIt = true;
-									}
+//									else if (v2Context.getSBSv2Alias().equals(currV2Context.getSBSv2Alias()) &&
+//										v2Context.getPlatformString().equals(currExistingConfig.getPlatformString()) &&
+//										v2Context.getSDK().getUniqueId().equals(currExistingConfig.getSDK().getUniqueId() )
+//										&& v2Context.getSBSv2Alias() != null && v2Context.getSBSv2Alias().split("_").length == 2){
+//										
+//										checkIt = true;
+//									}
 								}
 							}
 							if (checkIt){
diff -r 8534c28043b9 -r 03403c6a4740 core/com.nokia.carbide.cpp.sdk.core/src/com/nokia/carbide/cpp/internal/api/sdk/BuildContextSBSv2.java
--- a/core/com.nokia.carbide.cpp.sdk.core/src/com/nokia/carbide/cpp/internal/api/sdk/BuildContextSBSv2.java	Mon Jun 07 10:17:00 2010 -0500
+++ b/core/com.nokia.carbide.cpp.sdk.core/src/com/nokia/carbide/cpp/internal/api/sdk/BuildContextSBSv2.java	Tue Jun 08 10:24:12 2010 -0500
@@ -15,6 +15,7 @@
 import com.nokia.carbide.cpp.sdk.core.ISymbianBuildContext;
 import com.nokia.carbide.cpp.sdk.core.ISymbianSDK;
 import com.nokia.carbide.cpp.sdk.core.SDKCorePlugin;
+import com.nokia.cpp.internal.api.utils.core.Check;
 
 public class BuildContextSBSv2 implements ISBSv2BuildContext {
 	
@@ -55,41 +56,7 @@
 	
 	@Override
 	public String getDisplayString() {
-		
-		
-		// TODO: Still need to decide on how to set display string
-		// and how it's used for legacy SBSv2 configs
-		if (displayString != null){
-			return displayString;
-		}
-		
-		// TODO: else fallback for old configs, we should convert
-		String EMULATOR_DISPLAY_TEXT = "Emulator"; //$NON-NLS-1$
-		String PHONE_DISPLAY_TEXT = "Phone"; //$NON-NLS-1$
-		String DEBUG_DISPLAY_TEXT = "Debug"; //$NON-NLS-1$
-		String RELEASE_DISPLAY_TEXT = "Release"; //$NON-NLS-1$
-		String SPACE_DISPLAY_TEXT = " "; //$NON-NLS-1$
-		String SDK_NOT_INSTALLED = "SDK not installed"; //$NON-NLS-1$
-		String displayString = null;
-		if (displayString == null) {
-			// in the form Emulation Debug (WINSCW) [S60_3rd_MR] or
-			// Phone Release (GCCE) [S60_3rd_MR]
-			if (platform.compareTo(ISymbianBuildContext.EMULATOR_PLATFORM) == 0) {
-				displayString = EMULATOR_DISPLAY_TEXT;
-			} else {
-				displayString = PHONE_DISPLAY_TEXT;
-			}
-			
-			if (target.compareTo(ISymbianBuildContext.DEBUG_TARGET) == 0) {
-				displayString = displayString + SPACE_DISPLAY_TEXT + DEBUG_DISPLAY_TEXT;
-			} else {
-				displayString = displayString + SPACE_DISPLAY_TEXT + RELEASE_DISPLAY_TEXT;
-			}
-			
-			String basePlatform = sbsv2Alias;
-			
-			displayString = displayString + " (" + basePlatform + ") [" + getSDK().getUniqueId() + "]"; //$NON-NLS-1$
-		}
+		Check.checkState(displayString != null);
 		return displayString;
 	}
 
@@ -302,18 +269,6 @@
 		return getCachedData().getSystemIncludePaths();
 	}
 	
-	
-	// Fall-back to get SDK id from old config name
-	public static String getSDKIDFromConfigName(String configName) {
-		int indexBegin = configName.indexOf("[");  //$NON-NLS-1$
-		int indexEnd = configName.indexOf("]");  //$NON-NLS-1$
-		if (indexBegin > 0 && indexEnd > 0){
-			return configName.substring(indexBegin+1, indexEnd);
-		} else {
-			return ""; //$NON-NLS-1$
-		}
-	}
-	
 	@Override
 	public int hashCode() {
 		final int prime = 31;
@@ -357,6 +312,44 @@
 		return true;
 	}
 
+	public static String getPlatformFromV1ConfigName(String displayString) {
+		String[] tokens = displayString.split(" ");
+		String sdkIdToken = tokens[2];
+		if (sdkIdToken.contains("_")){
+			sdkIdToken = sdkIdToken.substring(1, sdkIdToken.length()-1);
+			String[] aliasTokens = sdkIdToken.split("_");
+			return aliasTokens[0];
+		} else {
+			return sdkIdToken.substring(1, sdkIdToken.length()-1);
+		}
+	}
+
+	public static String getTargetFromV1ConfigName(String displayString) {
+		String[] tokens = displayString.split(" ");
+		if (tokens[1].compareTo("Debug") == 0) {
+			return ISymbianBuildContext.DEBUG_TARGET;
+		} else {
+			return ISymbianBuildContext.RELEASE_TARGET;
+		}
+	}
+
+	public static String getBuildAliasFromV1ConfigName(String displayString) {
+		String target = getTargetFromV1ConfigName(displayString);
+		String platform = getPlatformFromV1ConfigName(displayString);
+		return platform.toLowerCase() + "_" + target.toLowerCase();
+	}
+	
+	// Fall-back to get SDK id from old config name
+	public static String getSDKIDFromV1ConfigName(String configName) {
+		int indexBegin = configName.indexOf("[");  //$NON-NLS-1$
+		int indexEnd = configName.indexOf("]");  //$NON-NLS-1$
+		if (indexBegin > 0 && indexEnd > 0){
+			return configName.substring(indexBegin+1, indexEnd);
+		} else {
+			return ""; //$NON-NLS-1$
+		}
+	}
+
 
 
 }
diff -r 8534c28043b9 -r 03403c6a4740 core/com.nokia.carbide.cpp.sdk.ui/plugin.properties
--- a/core/com.nokia.carbide.cpp.sdk.ui/plugin.properties	Mon Jun 07 10:17:00 2010 -0500
+++ b/core/com.nokia.carbide.cpp.sdk.ui/plugin.properties	Tue Jun 08 10:24:12 2010 -0500
@@ -1,7 +1,7 @@
 // Copyright 2007 Nokia, Inc.
 
 SDKUIPlugin.SDK_Preferences=Symbian SDKs
-SDKUIPlugin.Platform_Filtering_Preferences=Platform Filtering Preferences
+SDKUIPlugin.Platform_Filtering_Preferences=Build Configuration Manager
 
 #Keywords for Carbide preferences
 carbcPreference.common=carbide symbian c cpp cplusplus
diff -r 8534c28043b9 -r 03403c6a4740 core/com.nokia.carbide.cpp.sdk.ui/src/com/nokia/carbide/cpp/internal/api/sdk/ui/BuildPlatformFilterPage.java
--- a/core/com.nokia.carbide.cpp.sdk.ui/src/com/nokia/carbide/cpp/internal/api/sdk/ui/BuildPlatformFilterPage.java	Mon Jun 07 10:17:00 2010 -0500
+++ b/core/com.nokia.carbide.cpp.sdk.ui/src/com/nokia/carbide/cpp/internal/api/sdk/ui/BuildPlatformFilterPage.java	Tue Jun 08 10:24:12 2010 -0500
@@ -38,6 +38,7 @@
 	
 	SBSv1PlatformFilterComposite sbsv1Tab;
 	SBSv2PlatformFilterComposite sbsv2Tab;
+	SBSv2ConfigManager sbsConfigManagerTab;
 	
 	public BuildPlatformFilterPage() {
 		super();
@@ -61,6 +62,16 @@
 			sbsv2Tab = new SBSv2PlatformFilterComposite(tabFolder);
 			sbsv2Tab.createControls();
 			sbsv2TabItem.setControl(sbsv2Tab);
+			
+			// New SBS config manager, to replace SBSv2PlatformFilterComposite
+			TabItem sbsConfigMgrItem = new TabItem(tabFolder, SWT.NONE);
+			sbsConfigMgrItem.setText("SBS Configuration Manager"); //$NON-NLS-1$
+			sbsConfigMgrItem.setToolTipText("TODO"); //$NON-NLS-1$
+
+			sbsConfigManagerTab = new SBSv2ConfigManager(tabFolder);
+			sbsConfigManagerTab.createControls();
+			sbsConfigMgrItem.setControl(sbsConfigManagerTab);
+			
 		}
 		
 		if (SBSv2Utils.enableSBSv1Support()) {
diff -r 8534c28043b9 -r 03403c6a4740 core/com.nokia.carbide.cpp.sdk.ui/src/com/nokia/carbide/cpp/internal/api/sdk/ui/SBSv2ConfigManager.java
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/core/com.nokia.carbide.cpp.sdk.ui/src/com/nokia/carbide/cpp/internal/api/sdk/ui/SBSv2ConfigManager.java	Tue Jun 08 10:24:12 2010 -0500
@@ -0,0 +1,226 @@
+package com.nokia.carbide.cpp.internal.api.sdk.ui;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.eclipse.jface.viewers.ArrayContentProvider;
+import org.eclipse.jface.viewers.CellEditor;
+import org.eclipse.jface.viewers.CheckboxTableViewer;
+import org.eclipse.jface.viewers.ColumnViewer;
+import org.eclipse.jface.viewers.ComboBoxViewerCellEditor;
+import org.eclipse.jface.viewers.EditingSupport;
+import org.eclipse.jface.viewers.IStructuredContentProvider;
+import org.eclipse.jface.viewers.ITableLabelProvider;
+import org.eclipse.jface.viewers.LabelProvider;
+import org.eclipse.jface.viewers.TableViewerColumn;
+import org.eclipse.jface.viewers.Viewer;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.graphics.Image;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Control;
+import org.eclipse.swt.widgets.Table;
+import org.eclipse.swt.widgets.Text;
+
+import com.nokia.carbide.cpp.internal.api.sdk.BuildContextSBSv2;
+import com.nokia.carbide.cpp.sdk.core.ISBSv2BuildContext;
+import com.nokia.carbide.cpp.sdk.core.ISymbianSDK;
+import com.nokia.carbide.cpp.sdk.core.SDKCorePlugin;
+
+public class SBSv2ConfigManager extends Composite {
+
+	private CheckboxTableViewer sbsConfigTableViewer;
+	private List<ISBSv2BuildContext> sbsContexts;
+	List<String> globalBuildAliasList = new ArrayList<String>();
+	List<ISBSv2BuildContext> sbsBuildContexts = new ArrayList<ISBSv2BuildContext>();
+	
+	private class SBSv2BuildContextLabelProvider extends LabelProvider implements ITableLabelProvider {
+		public Image getColumnImage(Object element, int columnIndex) {
+			return null;
+		}
+
+		public String getColumnText(Object element, int columnIndex) {
+			ISBSv2BuildContext sdk = (ISBSv2BuildContext) element;
+			switch (columnIndex) {
+			case 1:
+				return sdk.getSBSv2Alias();
+			case 2:
+				return sdk.getBuildVariationName();
+			case 3:
+				return sdk.getDisplayString();
+			default:
+				return "";
+			}
+		}
+	}
+	
+	private class BuildAliasEditingSupport extends EditingSupport {
+		private BuildAliasComboEditor editor;
+
+		public BuildAliasEditingSupport(ColumnViewer viewer) {
+			super(viewer);
+			editor = new BuildAliasComboEditor((Composite) viewer.getControl());
+		}
+
+		@Override
+		protected boolean canEdit(Object element) {
+			if (element instanceof ISBSv2BuildContext) {
+				return true;
+			}
+			return false;
+		}
+
+		@Override
+		protected CellEditor getCellEditor(Object element) {
+			return editor;
+		}
+
+		@Override
+		protected Object getValue(Object element) {
+			ISBSv2BuildContext context = (ISBSv2BuildContext) element;
+			return context.getSBSv2Alias();
+		}
+
+		@Override
+		protected void setValue(Object element, Object value) {
+			if (value == null)
+				return;
+			
+			ISBSv2BuildContext context = (ISBSv2BuildContext) element;
+			
+			
+			// TODO: Use real data. Here we can find an existing build context that works, or create a new one if a variant was applied
+			// We would need to run the query here to fill out extra params
+			context = new BuildContextSBSv2(context.getSDK(), "ARMV5", "UDEB", value.toString(), "New Display name", ISBSv2BuildContext.BUILDER_ID + ".arvm5_udeb." + context.getSDK().getUniqueId());
+			// TODO: Handle edit and store data if alias changes
+			getViewer().refresh();
+		}
+	}
+
+	class BuildAliasContentProvider implements IStructuredContentProvider {
+
+		public void dispose() {
+		}
+
+		public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
+		}
+
+		public Object[] getElements(Object inputElement) {
+			return globalBuildAliasList.toArray();
+		}	
+		
+	}
+	
+	private class BuildAliasComboEditor extends ComboBoxViewerCellEditor {
+		private Text text;
+
+		public BuildAliasComboEditor(Composite parent) {
+			super(parent);
+		}
+
+		
+		@Override
+		protected Control createControl(Composite parent) {
+			Control control = super.createControl(parent);
+			this.setContenProvider(new BuildAliasContentProvider());
+			this.setInput(globalBuildAliasList);
+			return control;
+		}
+	}
+	
+	public SBSv2ConfigManager(Composite parent) {
+		super(parent, SWT.NONE);
+	}
+
+	public void createControls() {
+		GridLayout gridLayout = new GridLayout();
+		gridLayout.numColumns = 2;
+		setLayout(gridLayout);
+		
+		initData();
+		
+		sbsConfigTableViewer = CheckboxTableViewer.newCheckList(this, 
+				SWT.BORDER | SWT.SINGLE | SWT.FULL_SELECTION);
+		createSBSConfigTable();
+	
+		addBuildConfigurationTableItems();	
+	}
+
+	private void initData() {
+		
+		////////////////////TODO: DUMMY DATA. GET FROM RAPTOR QUERY
+		globalBuildAliasList.add("armv5_udeb");
+		globalBuildAliasList.add("armv5_urel");
+		globalBuildAliasList.add("winscw_udeb");
+		globalBuildAliasList.add("winscw_urel");
+		globalBuildAliasList.add("tools2_deb");
+		globalBuildAliasList.add("tools2_rel");
+		/////////////////////
+		
+	}
+
+	private void createSBSConfigTable() {
+		final Table table = sbsConfigTableViewer.getTable();
+		GridData gridData = new GridData(SWT.FILL, SWT.CENTER, true, false);
+		gridData.widthHint = 425;
+		gridData.heightHint = table.getItemHeight() * 10;
+		table.setLayoutData(gridData);
+		table.setHeaderVisible(true);
+		table.setLinesVisible(false);
+
+		
+		TableViewerColumn enabledCol = new TableViewerColumn(sbsConfigTableViewer, SWT.LEFT);
+		enabledCol.getColumn().setText("Enabled"); //$NON-NLS-1$
+		enabledCol.getColumn().setWidth(50);
+		
+		TableViewerColumn aliasCol = new TableViewerColumn(sbsConfigTableViewer, SWT.LEFT);
+		aliasCol.setEditingSupport(new BuildAliasEditingSupport(sbsConfigTableViewer)); //$NON-NLS-1$
+		aliasCol.getColumn().setText("SBS Configuration");
+		aliasCol.getColumn().setWidth(160);
+		
+		TableViewerColumn variantCol = new TableViewerColumn(sbsConfigTableViewer, SWT.LEFT);
+		//aliasCol.setEditingSupport(new IdEditingSupport(sbsConfigTableViewer)); //$NON-NLS-1$
+		variantCol.getColumn().setText("Product Variant");
+		variantCol.getColumn().setWidth(120);
+		
+		TableViewerColumn displaNameCol = new TableViewerColumn(sbsConfigTableViewer, SWT.LEFT);
+		//aliasCol.setEditingSupport(new IdEditingSupport(sbsConfigTableViewer)); //$NON-NLS-1$
+		displaNameCol.getColumn().setText("Display Name");
+		displaNameCol.getColumn().setWidth(160);
+		
+	}
+	
+	private void addBuildConfigurationTableItems() {
+		sbsConfigTableViewer.setLabelProvider(new SBSv2BuildContextLabelProvider());
+		sbsConfigTableViewer.setContentProvider(new ArrayContentProvider());
+		sbsContexts = getGlobalSBSContexts();
+		sbsConfigTableViewer.setInput(sbsContexts.toArray());
+		sbsConfigTableViewer.getTable().setToolTipText("TODO Tooltip"); //$NON-NLS-1$
+		setCheckedElements();
+//		addSDKTableViewerListeners();
+		if (sbsContexts == null || sbsContexts.size() == 0){
+//			statusError(Messages.getString("SDKPreferencePage.No_SDKs_Available_Message")); //$NON-NLS-1$
+		}
+	}
+
+	// TODO: Get context list from SDKManager for SBSv2
+	private List<ISBSv2BuildContext> getGlobalSBSContexts() {
+		List<ISBSv2BuildContext> contexts = new ArrayList<ISBSv2BuildContext>();
+		
+		// TODO: DUMMY TEST DATA
+		ISymbianSDK sdk = SDKCorePlugin.getSDKManager().getSDKList().get(0);
+		ISBSv2BuildContext testContext = new BuildContextSBSv2(sdk, "ARMV5", "DEBUG", "arvm5_udeb", "ARMV5 Debug", ISBSv2BuildContext.BUILDER_ID + ".arvm5_udeb." + sdk.getUniqueId());
+		contexts.add(testContext);
+		testContext = new BuildContextSBSv2(sdk, "ARMV5", "Release", "arvm5_urel", "ARMV5 Release", ISBSv2BuildContext.BUILDER_ID + ".arvm5_udeb." + sdk.getUniqueId());
+		contexts.add(testContext);
+		
+		return contexts;
+	}
+
+	private void setCheckedElements() {
+		// TODO Auto-generated method stub
+		
+	}
+
+}
diff -r 8534c28043b9 -r 03403c6a4740 core/com.nokia.carbide.cpp.sdk.ui/src/com/nokia/carbide/cpp/internal/sdk/ui/SDKPropertiesDialog.java
--- a/core/com.nokia.carbide.cpp.sdk.ui/src/com/nokia/carbide/cpp/internal/sdk/ui/SDKPropertiesDialog.java	Mon Jun 07 10:17:00 2010 -0500
+++ b/core/com.nokia.carbide.cpp.sdk.ui/src/com/nokia/carbide/cpp/internal/sdk/ui/SDKPropertiesDialog.java	Tue Jun 08 10:24:12 2010 -0500
@@ -29,7 +29,6 @@
 import org.eclipse.swt.widgets.Table;
 import org.eclipse.swt.widgets.TableColumn;
 import org.eclipse.swt.widgets.TableItem;
-import org.eclipse.swt.widgets.Text;
 import org.eclipse.ui.PlatformUI;
 
 import com.nokia.carbide.cpp.sdk.core.ISymbianSDK;