# HG changeset patch # User timkelly # Date 1276899060 18000 # Node ID 2391353b9c2ad52a373d0e906d3a5cfbb331718d # Parent 440c4eac1a5ada1200506bf257977b49d30569e7# Parent 955e25610999cfc172ce0c8182c3645ce22abec6 merge commit diff -r 440c4eac1a5a -r 2391353b9c2a core/com.nokia.carbide.cpp.sdk.core/src/com/nokia/carbide/cpp/internal/sdk/core/model/AbstractSDKManager.java --- a/core/com.nokia.carbide.cpp.sdk.core/src/com/nokia/carbide/cpp/internal/sdk/core/model/AbstractSDKManager.java Fri Jun 18 17:10:13 2010 -0500 +++ b/core/com.nokia.carbide.cpp.sdk.core/src/com/nokia/carbide/cpp/internal/sdk/core/model/AbstractSDKManager.java Fri Jun 18 17:11:00 2010 -0500 @@ -41,6 +41,7 @@ import org.eclipse.core.runtime.IPath; import org.eclipse.core.runtime.IProgressMonitor; import org.eclipse.core.runtime.IStatus; +import org.eclipse.core.runtime.NullProgressMonitor; import org.eclipse.core.runtime.Path; import org.eclipse.core.runtime.Platform; import org.eclipse.core.runtime.Status; @@ -144,7 +145,7 @@ public AbstractSDKManager() { macroStore = SymbianMacroStore.getInstance(); - scanJob = new Job ("Scan System Drives") { + scanJob = new Job ("Scan for installed SDKs") { @Override protected IStatus run(IProgressMonitor monitor) { return handleScan(monitor); @@ -178,7 +179,9 @@ if (!doScanSDKs(monitor)) return Status.OK_STATUS;; - + + scanCarbideSDKCache(); + // now these SDK's are newly added, remove from internal list for (ISymbianSDK sdk : sdkList) { if (SDKManagerInternalAPI.getMissingSdk(sdk.getUniqueId()) != null) { @@ -196,12 +199,6 @@ found = true; break; } - if (sdk.getEPOCROOT().toLowerCase().equals(oldSdk.getEPOCROOT().toLowerCase())) { - // use the existing SDK name - ((SymbianSDK)sdk).setUniqueId(oldSdk.getUniqueId()); - found = true; - break; - } } if (found == false) { SDKManagerInternalAPI.addMissingSdk(oldSdk @@ -250,10 +247,8 @@ protected void ensureScannedSDKs() { if (!hasScannedSDKs) { - // load sdk list from cache during start up, this way we don't have to wait - // for sdk scanning job to be completed. - loadCarbideSDKCache(); - scanSDKs(); + handleScan(new NullProgressMonitor()); + fireInstalledSdkChanged(SDKChangeEventType.eSDKScanned); } } @@ -337,7 +332,7 @@ abstract protected boolean doRemoveSDK(String sdkId); - protected void loadCarbideSDKCache(){ + protected void scanCarbideSDKCache(){ DocumentBuilder docBuilder = null; try { docBuilder = DocumentBuilderFactory.newInstance().newDocumentBuilder(); @@ -363,58 +358,75 @@ // get the unique ID NamedNodeMap attribs = n.getAttributes(); String id = attribs.getNamedItem(SDK_CACHE_ID_ATTRIB).getNodeValue(); - - // get whether or not the SDK is enabled - String sdkEnabled = "true"; - Node sdkEnabledItem = attribs.getNamedItem(SDK_CACHE_ENABLED_ATTRIB); - if (sdkEnabledItem != null) - sdkEnabled = sdkEnabledItem.getNodeValue(); - - // get the os version - String osVersion = ""; - Node osVersionItem = attribs.getNamedItem(SDK_CACHE_OS_VERSION_ATTRIB); - if (osVersionItem != null) - osVersion = osVersionItem.getNodeValue(); - - // get the sdk version - String sdkVersion = ""; - Node sdkVersionItem = attribs.getNamedItem(SDK_CACHE_SDK_VERSION_ATTRIB); - if (sdkVersionItem != null) - sdkVersion = sdkVersionItem.getNodeValue(); - - // get the custom EPOCROOT, if allowed - String epocRoot = null; - Node epocrootItem = attribs.getNamedItem(SDK_CACHE_EPOCROOT_ATTRIB); - if (epocrootItem != null) - epocRoot = epocrootItem.getNodeValue(); - - // get whether or not this SDK has been scanned - String wasScanned = "false"; - Node sdkScannedItem = attribs.getNamedItem(SDK_SCANNED_FOR_PLUGINS); - if (sdkScannedItem != null) - wasScanned = sdkScannedItem.getNodeValue(); - - ISymbianSDK sdk = SymbianSDKFactory.createInstance(id, - epocRoot, - ISBSv1BuildInfo.S60_SDK_NAME, - new Version(osVersion), - new Version(sdkVersion)); - if (sdkEnabled.equalsIgnoreCase("true")){ - ((SymbianSDK)sdk).setEnabled(true); + + ISymbianSDK sdk = getSDK(id, false); + if (sdk == null) { + // unable to find ID in current SDK list, create a new entry and add it to the list + + // get whether or not the SDK is enabled + String sdkEnabled = "true"; + Node sdkEnabledItem = attribs.getNamedItem(SDK_CACHE_ENABLED_ATTRIB); + if (sdkEnabledItem != null) + sdkEnabled = sdkEnabledItem.getNodeValue(); + + // get the os version + String osVersion = ""; + Node osVersionItem = attribs.getNamedItem(SDK_CACHE_OS_VERSION_ATTRIB); + if (osVersionItem != null) + osVersion = osVersionItem.getNodeValue(); + + // get the sdk version + String sdkVersion = ""; + Node sdkVersionItem = attribs.getNamedItem(SDK_CACHE_SDK_VERSION_ATTRIB); + if (sdkVersionItem != null) + sdkVersion = sdkVersionItem.getNodeValue(); + + // get the EPOCROOT + String epocRoot = null; + Node epocrootItem = attribs.getNamedItem(SDK_CACHE_EPOCROOT_ATTRIB); + if (epocrootItem != null) + epocRoot = epocrootItem.getNodeValue(); + + // get whether or not this SDK has been scanned + String wasScanned = "false"; + Node sdkScannedItem = attribs.getNamedItem(SDK_SCANNED_FOR_PLUGINS); + if (sdkScannedItem != null) + wasScanned = sdkScannedItem.getNodeValue(); + + sdk = SymbianSDKFactory.createInstance(id, + epocRoot, + ISBSv1BuildInfo.S60_SDK_NAME, + new Version(osVersion), + new Version(sdkVersion)); + if (sdkEnabled.equalsIgnoreCase("true")){ + ((SymbianSDK)sdk).setEnabled(true); + } else { + ((SymbianSDK)sdk).setEnabled(false); + } + ISBSv1BuildInfo sbsv1BuildInfo = (ISBSv1BuildInfo)sdk.getBuildInfo(ISymbianBuilderID.SBSV1_BUILDER); + ISBSv2BuildInfo sbsv2BuildInfo = (ISBSv2BuildInfo)sdk.getBuildInfo(ISymbianBuilderID.SBSV2_BUILDER); + if (wasScanned.equalsIgnoreCase("true")){ + sbsv1BuildInfo.setPreviouslyScanned(true); + sbsv2BuildInfo.setPreviouslyScanned(true); + } else { + sbsv1BuildInfo.setPreviouslyScanned(false); + sbsv2BuildInfo.setPreviouslyScanned(false); + } + synchronized (sdkList) { + sdkList.add(sdk); + } } else { - ((SymbianSDK)sdk).setEnabled(false); - } - ISBSv1BuildInfo sbsv1BuildInfo = (ISBSv1BuildInfo)sdk.getBuildInfo(ISymbianBuilderID.SBSV1_BUILDER); - ISBSv2BuildInfo sbsv2BuildInfo = (ISBSv2BuildInfo)sdk.getBuildInfo(ISymbianBuilderID.SBSV2_BUILDER); - if (wasScanned.equalsIgnoreCase("true")){ - sbsv1BuildInfo.setPreviouslyScanned(true); - sbsv2BuildInfo.setPreviouslyScanned(true); - } else { - sbsv1BuildInfo.setPreviouslyScanned(false); - sbsv2BuildInfo.setPreviouslyScanned(false); - } - synchronized (sdkList) { - sdkList.add(sdk); + // get whether or not the SDK is enabled + String sdkEnabled = "true"; + Node sdkEnabledItem = attribs.getNamedItem(SDK_CACHE_ENABLED_ATTRIB); + if (sdkEnabledItem != null) + sdkEnabled = sdkEnabledItem.getNodeValue(); + + if (sdkEnabled.equalsIgnoreCase("true")){ + ((SymbianSDK)sdk).setEnabled(true); + } else { + ((SymbianSDK)sdk).setEnabled(false); + } } } // for } diff -r 440c4eac1a5a -r 2391353b9c2a core/com.nokia.carbide.cpp.sdk.ui/src/com/nokia/carbide/cpp/internal/sdk/ui/SDKPreferencePage.java --- a/core/com.nokia.carbide.cpp.sdk.ui/src/com/nokia/carbide/cpp/internal/sdk/ui/SDKPreferencePage.java Fri Jun 18 17:10:13 2010 -0500 +++ b/core/com.nokia.carbide.cpp.sdk.ui/src/com/nokia/carbide/cpp/internal/sdk/ui/SDKPreferencePage.java Fri Jun 18 17:11:00 2010 -0500 @@ -38,6 +38,7 @@ import org.eclipse.jface.viewers.EditingSupport; import org.eclipse.jface.viewers.ISelectionChangedListener; 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; @@ -82,7 +83,7 @@ extends PreferencePage implements IWorkbenchPreferencePage { - private class SDKLabelProvider extends LabelProvider implements ITableLabelProvider { + private class SDKLabelProvider extends LabelProvider implements ITableLabelProvider, ITableColorProvider { public Image getColumnImage(Object element, int columnIndex) { return null; } @@ -98,6 +99,15 @@ return ""; } } + + public Color getForeground(Object element, int columnIndex) { + ISymbianSDK sdk = (ISymbianSDK) element; + return updateSDKcolor(sdk); + } + + public Color getBackground(Object element, int columnIndex) { + return white; + } } private class IdEditingSupport extends EditingSupport { @@ -252,9 +262,10 @@ private Label iconLabel; private Label statusLabel; - private Color red; private Color black; private Color gray; + private Color red; + private Color white; /** * Constructor. @@ -339,9 +350,10 @@ protected Control createContents(Composite parent) { // Set up colors used in this preference page Shell shell = parent.getShell(); - red = shell.getDisplay().getSystemColor(SWT.COLOR_RED); black = shell.getDisplay().getSystemColor(SWT.COLOR_BLACK); gray = shell.getDisplay().getSystemColor(SWT.COLOR_WIDGET_BACKGROUND); + red = shell.getDisplay().getSystemColor(SWT.COLOR_RED); + white = shell.getDisplay().getSystemColor(SWT.COLOR_WHITE); Composite content = new Composite(parent, SWT.NONE); GridLayout gridLayout = new GridLayout(); @@ -636,6 +648,27 @@ statusLabel.getParent().layout(true); } + private Color updateSDKcolor(ISymbianSDK sdk){ + Color color = black; + + // Check SDK EPOCROOT + String epocRootStr = sdk.getEPOCROOT(); + IPath epocRoot = new Path(epocRootStr); + epocRoot = epocRoot.append("epoc32"); + File epocRootFile = epocRoot.toFile(); + if (!epocRootFile.exists()) { + color = red; + } + + // Check SDK OS Version + if ((sdk.getOSVersion().getMajor() < 9 || + (sdk.getOSVersion().getMajor() == 9 && sdk.getOSVersion().getMinor() < 4))) { + color = red; + } + + return color; + } + private void updateSDKStatus(ISymbianSDK sdk){ // No SDK selected if (sdk == null) {