core/com.nokia.carbide.cpp.sdk.ui/src/com/nokia/carbide/cpp/internal/sdk/ui/SDKPreferencePage.java
branchC3_BUILDER_WORK
changeset 1431 536cdcdc768b
parent 1421 587da7cb64b7
child 1434 79471fd1fd69
--- a/core/com.nokia.carbide.cpp.sdk.ui/src/com/nokia/carbide/cpp/internal/sdk/ui/SDKPreferencePage.java	Thu Jun 03 09:58:29 2010 -0500
+++ b/core/com.nokia.carbide.cpp.sdk.ui/src/com/nokia/carbide/cpp/internal/sdk/ui/SDKPreferencePage.java	Thu Jun 03 17:43:59 2010 -0500
@@ -32,6 +32,9 @@
 import org.eclipse.jface.viewers.CellEditor;
 import org.eclipse.jface.viewers.CheckboxTableViewer;
 import org.eclipse.jface.viewers.ColumnViewer;
+import org.eclipse.jface.viewers.ColumnViewerEditor;
+import org.eclipse.jface.viewers.ColumnViewerEditorActivationEvent;
+import org.eclipse.jface.viewers.ColumnViewerEditorActivationStrategy;
 import org.eclipse.jface.viewers.EditingSupport;
 import org.eclipse.jface.viewers.ISelectionChangedListener;
 import org.eclipse.jface.viewers.IStructuredSelection;
@@ -40,6 +43,7 @@
 import org.eclipse.jface.viewers.SelectionChangedEvent;
 import org.eclipse.jface.viewers.StructuredSelection;
 import org.eclipse.jface.viewers.TableViewerColumn;
+import org.eclipse.jface.viewers.TableViewerEditor;
 import org.eclipse.jface.viewers.TextCellEditor;
 import org.eclipse.swt.SWT;
 import org.eclipse.swt.events.SelectionAdapter;
@@ -124,8 +128,16 @@
 
 		@Override
 		protected void setValue(Object element, Object value) {
+			String sdkID = value.toString();
+
+			// check for spaces in ID
+			if (sdkID.contains(" ")){ //$NON-NLS-1$
+				MessageDialog.openError(getShell(), Messages.getString("AddSDKDialog.Invalid_SDK_ID"), Messages.getString("AddSDKDialog.SDK_ID_No_Spaces")); //$NON-NLS-1$ //$NON-NLS-2$
+				return;
+			}
+
 			ISymbianSDK sdk = (ISymbianSDK) element;
-			sdk.setUniqueID(value.toString());
+			sdk.setUniqueID(sdkID);
 			SDKCorePlugin.getSDKManager().updateSDK(sdk);
 			getViewer().refresh();
 		}
@@ -197,6 +209,17 @@
 		}		
 	}
 
+	private class SDKViewerStrategy extends ColumnViewerEditorActivationStrategy {
+		public SDKViewerStrategy(ColumnViewer viewer) {
+			super(viewer);
+		}
+
+		@Override
+		protected boolean isEditorActivationEvent(ColumnViewerEditorActivationEvent event) {
+			return (event.eventType ==  ColumnViewerEditorActivationEvent.MOUSE_DOUBLE_CLICK_SELECTION);
+		}
+	}
+
 	private class ScanJobListener implements IJobChangeListener {
 		public void done(IJobChangeEvent event) {
 			Display.getDefault().asyncExec(new Runnable() {
@@ -331,11 +354,11 @@
 
 		// Buttons composite
 		Composite composite1 = new Composite(content, SWT.NONE);
-		composite1.setLayoutData(new GridData());
 		gridLayout = new GridLayout();
 		gridLayout.makeColumnsEqualWidth = true;
 		composite1.setLayout(gridLayout);
 		GridData gridData = new GridData(SWT.LEFT, SWT.TOP, true, false);
+		composite1.setLayoutData(gridData);
 
 		// Add button
 		addButton = new Button(composite1, SWT.NONE);
@@ -456,11 +479,14 @@
 		final Table table = sdkListTableViewer.getTable();
 		GridData gridData = new GridData(SWT.FILL, SWT.CENTER, true, false);
 		gridData.widthHint = 350;
-		gridData.heightHint = table.getItemHeight() * 6;
+		gridData.heightHint = table.getItemHeight() * 10;
 		table.setLayoutData(gridData);
 		table.setHeaderVisible(true);
 		table.setLinesVisible(false);
 
+		SDKViewerStrategy strategy = new SDKViewerStrategy(sdkListTableViewer);
+		TableViewerEditor.create(sdkListTableViewer, strategy, ColumnViewerEditor.DEFAULT);
+
 		TableViewerColumn enabledCol = new TableViewerColumn(sdkListTableViewer, SWT.LEFT);
 		enabledCol.getColumn().setText(Messages.getString("SDKPreferencePage.SDK_Table_Enabled_Column_Label")); //$NON-NLS-1$
 		enabledCol.getColumn().setWidth(50);
@@ -506,15 +532,11 @@
 
 	private void handlePropertiesButton() {
 		ISymbianSDK sdk = (ISymbianSDK)((IStructuredSelection)sdkListTableViewer.getSelection()).getFirstElement();
+		int index = sdkListTableViewer.getTable().getSelectionIndex();
 		if (sdk != null){
 			SDKPropertiesDialog sdkPropDlg = new SDKPropertiesDialog(getShell(), sdk);
-			if (sdkPropDlg.open() == SDKPropertiesDialog.OK){
-				sdkListTableViewer.refresh();
-				updateSDKStatus(sdk);
-				// forcible rescan; dump cache
-				SymbianBuildContextDataCache.refreshForSDKs(new ISymbianSDK[] { sdk });
-				sdkMgr.scanSDKs();
-			}
+			sdkPropDlg.open();
+			selectSDKEntry(index);
 		} else {
 			MessageDialog.openError(getShell(), Messages.getString("SDKPreferencePage.No_SDK_Selected"), Messages.getString("SDKPreferencePage.No_selected_SDK_detected")); //$NON-NLS-1$ //$NON-NLS-2$
 		}
@@ -614,7 +636,7 @@
 
 			// Check SDK OS Version
 			if ((sdk.getOSVersion().getMajor() < 9 ||
-				(sdk.getOSVersion().getMajor() == 9 && sdk.getOSVersion().getMinor() < 5))) {
+				(sdk.getOSVersion().getMajor() == 9 && sdk.getOSVersion().getMinor() < 4))) {
 				statusError(MessageFormat.format(
 						Messages.getString("SDKPreferencePage.Invalid_SDK_Message"),  //$NON-NLS-1$
 						sdk.getOSVersion().toString())); //$NON-NLS-1$