--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/core/com.nokia.carbide.cpp.sdk.ui/src/com/nokia/carbide/cpp/internal/sdk/ui/SDKPreferencePage.java Fri Apr 03 23:33:03 2009 +0100
@@ -0,0 +1,568 @@
+/*
+* 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.sdk.ui;
+
+import java.io.*;
+import java.util.*;
+import java.util.List;
+
+import org.eclipse.jface.dialogs.MessageDialog;
+import org.eclipse.jface.preference.IPreferenceStore;
+import org.eclipse.jface.preference.PreferencePage;
+import org.eclipse.jface.viewers.*;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.events.*;
+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.*;
+
+import com.nokia.carbide.cpp.sdk.core.*;
+import com.nokia.carbide.cpp.sdk.ui.SDKUIPlugin;
+import com.nokia.carbide.cpp.sdk.ui.shared.AddSDKDialog;
+
+public class SDKPreferencePage
+ extends PreferencePage
+ implements IWorkbenchPreferencePage {
+
+ ISDKManager sdkMgr;
+ private CheckboxTableViewer sdkListTableViewer;
+ private List<ISymbianSDK> sdkList;
+ private Button sdkpropertiesButton;
+ private Button removeSdkButton;
+ private Button addNewSdkButton;
+ private Button rescanNowButton;
+
+ private Label epocrootLabel;
+ private Label availablePlatformsLabel;
+ private Label osVersionLabel;
+ private Label diagnosticCheckLabel;
+
+ private Button listenForDevicesXMLChangeButton;
+
+ private static final String EPOCROOT_LABEL = "EPOCROOT: "; //$NON-NLS-1$
+ private static final String PLATFORMS_LABEL = "Available Platforms: "; //$NON-NLS-1$
+ private static final String DIAGNOSTIC_CHECK_LABEL = "Diagnostic Check: "; //$NON-NLS-1$
+ private static final String OS_VERSION_LABEL = "OS Version: "; //$NON-NLS-1$
+
+ private Color RED;
+ private Color BLACK;
+ private Color GRAY;
+ Shell shell;
+
+ public SDKPreferencePage() {
+ super();
+
+ }
+
+ @Override
+ protected Control createContents(Composite parent) {
+ return null;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.ui.IWorkbenchPreferencePage#init(org.eclipse.ui.IWorkbench)
+ */
+ public void init(IWorkbench workbench) {
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.jface.dialogs.IDialogPage#createControl(org.eclipse.swt.widgets.Composite)
+ */
+ public void createControl(Composite parent) {
+
+ IPreferenceStore prefsStore = SDKUIPlugin.getDefault().getPreferenceStore();
+ sdkMgr = SDKCorePlugin.getSDKManager();
+ if (sdkMgr == null){
+ return;
+ }
+
+ shell = parent.getShell();
+ sdkList = sdkMgr.getSDKList();
+ RED = shell.getDisplay().getSystemColor(SWT.COLOR_RED);
+ BLACK = shell.getDisplay().getSystemColor(SWT.COLOR_BLACK);
+ GRAY = shell.getDisplay().getSystemColor(SWT.COLOR_WIDGET_BACKGROUND);
+
+ // check that devices.xml actually exists
+ checkDevicesXMLExist();
+
+ Composite content = new Composite(parent, SWT.NONE);
+ setControl(content);
+ final GridLayout gridLayout = new GridLayout();
+ gridLayout.numColumns = 2;
+ content.setLayout(gridLayout);
+
+ final Group availableSymbianOsGroup = new Group(content, SWT.NONE);
+ availableSymbianOsGroup.setToolTipText(Messages.getString("SDKPreferencePage.OS_Group_ToolTip")); //$NON-NLS-1$
+ final GridData availableSymbianOsGridData = new GridData(SWT.FILL, SWT.CENTER, true, false);
+ availableSymbianOsGridData.widthHint = 350;
+ availableSymbianOsGroup.setText(Messages.getString("SDKPreferencePage.Available_SDKs_Label")); //$NON-NLS-1$
+ availableSymbianOsGroup.setLayoutData(availableSymbianOsGridData);
+ availableSymbianOsGroup.setLayout(new GridLayout());
+
+ sdkListTableViewer = CheckboxTableViewer.newCheckList(availableSymbianOsGroup, SWT.BORDER);
+ sdkListTableViewer.getTable().setLayoutData(availableSymbianOsGridData);
+
+ final Composite composite = new Composite(content, SWT.NONE);
+ composite.setLayoutData(new GridData());
+ final GridLayout gridLayout_1 = new GridLayout();
+ gridLayout_1.makeColumnsEqualWidth = true;
+ composite.setLayout(gridLayout_1);
+
+ removeSdkButton = new Button(composite, SWT.NONE);
+ removeSdkButton.setToolTipText(Messages.getString("SDKPreferencePage.Delete_SDK_ToolTip")); //$NON-NLS-1$
+ final GridData gridData = new GridData(SWT.LEFT, SWT.TOP, true, false);
+ removeSdkButton.setLayoutData(gridData);
+ removeSdkButton.setText(Messages.getString("SDKPreferencePage.Remove_SDK_Label")); //$NON-NLS-1$
+ addButtonListener(removeSdkButton);
+
+ addNewSdkButton = new Button(composite, SWT.NONE);
+ addNewSdkButton.setToolTipText(Messages.getString("SDKPreferencePage.Add_New_SDK_ToolTip")); //$NON-NLS-1$
+ addNewSdkButton.setLayoutData(gridData);
+ addNewSdkButton.setText(Messages.getString("SDKPreferencePage.Add_New_SDK_Label")); //$NON-NLS-1$
+ addButtonListener(addNewSdkButton);
+
+ sdkpropertiesButton = new Button(composite, SWT.NONE);
+ sdkpropertiesButton.setToolTipText(Messages.getString("SDKPreferencePage.SDK_Props_Button_ToolTip")); //$NON-NLS-1$
+ sdkpropertiesButton.setLayoutData(gridData);
+ sdkpropertiesButton.setText(Messages.getString("SDKPreferencePage.SDK_Props_Button_Label")); //$NON-NLS-1$
+ addButtonListener(sdkpropertiesButton);
+
+ final Group sdkInformationGroup = new Group(content, SWT.NONE);
+ sdkInformationGroup.setToolTipText(Messages.getString("SDKPreferencePage.SDK_Info_ToolTip")); //$NON-NLS-1$
+ final GridData sdkInfoGridData = new GridData(SWT.FILL, SWT.FILL, true, true);
+ sdkInfoGridData.widthHint = 350;
+ sdkInformationGroup.setText(Messages.getString("SDKPreferencePage.SDK_Info_Label")); //$NON-NLS-1$
+ sdkInformationGroup.setLayoutData(sdkInfoGridData);
+ sdkInformationGroup.setLayout(new GridLayout());
+
+ epocrootLabel = new Label(sdkInformationGroup, SWT.WRAP);
+ epocrootLabel.setToolTipText(Messages.getString("SDKPreferencePage.EPOC32_Loc_ToolTip")); //$NON-NLS-1$
+ epocrootLabel.setLayoutData(new GridData(300, SWT.DEFAULT));
+ epocrootLabel.setText("EPOCROOT:"); //$NON-NLS-1$
+
+ osVersionLabel = new Label(sdkInformationGroup, SWT.WRAP);
+ osVersionLabel.setToolTipText(Messages.getString("SDKPreferencePage.OSVesions_ToolTip")); //$NON-NLS-1$
+ osVersionLabel.setLayoutData(new GridData(300, SWT.DEFAULT));
+ osVersionLabel.setText(Messages.getString("SDKPreferencePage.OSVersion_Label")); //$NON-NLS-1$
+
+ availablePlatformsLabel = new Label(sdkInformationGroup, SWT.WRAP);
+ availablePlatformsLabel.setToolTipText(Messages.getString("SDKPreferencePage.Platforms_ToolTip")); //$NON-NLS-1$
+ availablePlatformsLabel.setLayoutData(new GridData(300, SWT.DEFAULT));
+ availablePlatformsLabel.setText(Messages.getString("SDKPreferencePage.Available_Platforms")); //$NON-NLS-1$
+
+ diagnosticCheckLabel = new Label(sdkInformationGroup, SWT.WRAP);
+ diagnosticCheckLabel.setToolTipText(Messages.getString("SDKPreferencePage.Diagnostic_Check_ToolTip")); //$NON-NLS-1$
+ diagnosticCheckLabel.setLayoutData(sdkInfoGridData);
+ diagnosticCheckLabel.setText(Messages.getString("SDKPreferencePage.Diagnostic_Check_Label")); //$NON-NLS-1$
+ new Label(content, SWT.NONE);
+
+ listenForDevicesXMLChangeButton = new Button(content, SWT.CHECK);
+ listenForDevicesXMLChangeButton.setText(Messages.getString("SDKPreferencePage.listerForDevicesXML"));
+ listenForDevicesXMLChangeButton.setToolTipText(Messages.getString("SDKPreferencePage.listerForDevicesXML_Tooltip")); //$NON-NLS-1$
+ listenForDevicesXMLChangeButton.setSelection(prefsStore.getBoolean(SDKUIPreferenceConstants.LISTEN_FOR_DEVICES_XML_CHANGE));
+
+ new Label(content, SWT.WRAP); // filler
+
+ rescanNowButton = new Button(content, SWT.NONE);
+ rescanNowButton.setToolTipText(Messages.getString("SDKPreferencePage.Rescan_Button_ToolTip")); //$NON-NLS-1$
+ rescanNowButton.setLayoutData(new GridData());
+ rescanNowButton.setText(Messages.getString("SDKPreferencePage.Rescan_Button_Label")); //$NON-NLS-1$
+ addButtonListener(rescanNowButton);
+ new Label(content, SWT.NONE);
+
+ // Build the checked table of SDKs
+ addSDKComponentTableItems();
+
+ ISymbianSDK sdk = (ISymbianSDK)sdkListTableViewer.getElementAt(0);
+ if (sdk != null){
+ sdkListTableViewer.setSelection(new StructuredSelection(sdk), true);
+ setSelectedSDKInfoText(sdk);
+ }
+
+
+ PlatformUI.getWorkbench().getHelpSystem().setHelp(super.getControl(), SDKUIHelpIds.SDK_PREFERENCES_PAGE);
+ }
+
+ public boolean performOk() {
+
+ IPreferenceStore prefsStore = SDKUIPlugin.getDefault().getPreferenceStore();
+ prefsStore.setValue(SDKUIPreferenceConstants.LISTEN_FOR_DEVICES_XML_CHANGE, listenForDevicesXMLChangeButton.getSelection());
+
+ for (ISymbianSDK sdk : sdkMgr.getSDKList()){
+ sdk.setEnabled(false);
+ }
+ Object[] sdkObjects = sdkListTableViewer.getCheckedElements();
+ for (Object currObj : sdkObjects){
+ if (currObj instanceof ISymbianSDK){
+ ISymbianSDK sdk = (ISymbianSDK)currObj;
+ sdk.setEnabled(true);
+ }
+ }
+
+ ISDKManager sdkMgr =SDKCorePlugin.getSDKManager();
+ sdkMgr.updateCarbideSDKCache();
+
+ return super.performOk();
+ }
+
+ private void addSDKComponentTableItems() {
+ sdkListTableViewer.setContentProvider(new SDKTableComponentsContentProvider());
+ sdkListTableViewer.setLabelProvider(new SDKTableComponentsLabelProvider());
+ Table lTable = sdkListTableViewer.getTable();
+
+ sdkList = SDKCorePlugin.getSDKManager().getSDKList();
+ sdkListTableViewer.setInput(sdkList);
+ lTable.setToolTipText(Messages.getString("SDKPreferencePage.List_of_Available_SDKs_ToolTip")); //$NON-NLS-1$
+ lTable.setVisible(true);
+ addSDKTableViewerSelectionListener();
+ //lTable.setLayoutData(grid);
+ if (sdkList == null || sdkList.size() == 0){
+ diagnosticCheckLabel.setText(DIAGNOSTIC_CHECK_LABEL + Messages.getString("SDKPreferencePage.No_SDKs_Available")); //$NON-NLS-1$
+ diagnosticCheckLabel.setForeground(RED);
+ diagnosticCheckLabel.setBackground(GRAY);
+ } else {
+ setCheckBoxes(sdkList);
+ }
+ }
+
+ /**
+ * Sets the checkbox state for enabled SDKs.
+ */
+ private void setCheckBoxes(List<ISymbianSDK> sdkList) {
+ List<ISymbianSDK> sdkListCopy = new ArrayList<ISymbianSDK>();
+ for (ISymbianSDK sdkCheck : sdkList){
+ if (sdkCheck.isEnabled()){
+ sdkListCopy.add(sdkCheck);
+ }
+ }
+ sdkListTableViewer.setCheckedElements(sdkListCopy.toArray(new ISymbianSDK[sdkListCopy.size()]));
+ }
+
+ /**
+ * Extends <code>LabelProvider</code> with the default implementation
+ * and implements<code>ITableLabelProvider</code> with the methods
+ * to provide the text and/or image for each column of a given element.
+ * Used by table viewers.
+ */
+
+ static class SDKTableComponentsLabelProvider extends LabelProvider implements ITableLabelProvider, ITableColorProvider {
+
+ /**
+ * Returns the label image for the given column of the given element.
+ * The default implementation returns null.
+ *
+ * @return image object
+ */
+ public Image getColumnImage(Object element, int columnIndex) {
+ return null;
+ }
+
+ /**
+ * Returns the label text for the given column of the given element.
+ *
+ * @return string is the label text for the given column.
+ */
+ public String getColumnText(Object arg0, int column) {
+ if (arg0 instanceof ISymbianSDK){
+ ISymbianSDK sdk = (ISymbianSDK)arg0;
+ return sdk.getUniqueId();
+ }
+
+ return ""; //$NON-NLS-1$
+ }
+
+ private Color lBlack = Display.getDefault().getSystemColor(SWT.COLOR_BLACK);
+ private Color lRed = Display.getDefault().getSystemColor(SWT.COLOR_RED);
+
+ public Color getForeground(Object obj, int index) {
+ if (obj instanceof ISymbianSDK) {
+ ISymbianSDK sdk = (ISymbianSDK)obj;
+ File epocRootTest = new File(sdk.getEPOCROOT());
+ if ((sdk.getAvailablePlatforms().size() <= 0) || !epocRootTest.exists()) {
+ // There are no build configs and/or no epocroot exists
+ return lRed;
+ } else {
+ return lBlack;
+ }
+ }
+ return null;
+ }
+
+ public Color getBackground(Object element, int columnIndex) {
+ return null;
+ }
+ }
+
+ /**
+ * This implementation of <code>IStructuredContentProvider</code> handles
+ * the case where the viewer input is an unchanging array or collection of elements.
+ *
+ */
+ static class SDKTableComponentsContentProvider implements IStructuredContentProvider {
+
+
+ /**
+ * Returns the elements in the input
+ *
+ * @return array of objects.
+ */
+ public Object[] getElements(Object arg0) {
+ if (arg0 instanceof ArrayList) {
+ return ((ArrayList<?>)arg0).toArray();
+ }
+ return new Object[0];
+ }
+
+ public void dispose() {
+ }
+
+ public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
+ //do nothing
+ }
+ }
+
+ /**
+ * Sets the listener event to a button.
+ *
+ * @param aButton
+ */
+ private void addButtonListener( final Button aButton ) {
+ SelectionListener listener = new SelectionAdapter() {
+ public void widgetSelected( SelectionEvent e ) {
+ if (e.getSource().equals(sdkpropertiesButton)) {
+ sdkpropertiesButtonAction();
+ } else if (e.getSource().equals(addNewSdkButton)) {
+ addNewSdkButtonAction();
+ } else if (e.getSource().equals(removeSdkButton)) {
+ removeSdkButtonAction();
+ } else if (e.getSource().equals(rescanNowButton)) {
+ rescanNowButtonAction();
+ }
+
+ }
+ };
+ aButton.addSelectionListener(listener);
+ }
+
+ private void sdkpropertiesButtonAction(){
+ ISymbianSDK sdk = (ISymbianSDK)((IStructuredSelection)sdkListTableViewer.getSelection()).getFirstElement();
+ if (sdk != null){
+ SDKPropertiesDialog sdkPropDlg = new SDKPropertiesDialog(getShell(), this, sdk);
+ if (sdkPropDlg.open() == SDKPropertiesDialog.OK){
+ sdkListTableViewer.refresh();
+ setSelectedSDKInfoText(sdk);
+ }
+ } else {
+ MessageDialog.openError(getShell(), Messages.getString("SDKPreferencePage.No_SDK_Selected"), Messages.getString("SDKPreferencePage.No_selected_SDK_detected")); //$NON-NLS-1$ //$NON-NLS-2$
+ }
+
+ }
+
+ private void removeSdkButtonAction(){
+ ISymbianSDK sdk = (ISymbianSDK)((IStructuredSelection)sdkListTableViewer.getSelection()).getFirstElement();
+ if (sdk != null){
+ if (MessageDialog.openConfirm(getShell(), Messages.getString("SDKPreferencePage.Confirm_Delete") + sdk.getUniqueId() , Messages.getString("SDKPreferencePage.Confirm_Delete_Msg"))){ //$NON-NLS-1$ //$NON-NLS-2$
+ if (sdkMgr.removeSDK(sdk.getUniqueId())){
+ sdkList.remove(sdk);
+ sdkListTableViewer.refresh();
+ sdk = (ISymbianSDK)sdkListTableViewer.getElementAt(0);
+ if (sdk != null){
+ sdkListTableViewer.setSelection(new StructuredSelection(sdk), true);
+ setSelectedSDKInfoText(sdk);
+ }
+ }
+ }
+ }
+ }
+
+ private void addNewSdkButtonAction(){
+
+ AddSDKDialog dialog = new AddSDKDialog(getShell());
+ if (dialog.open() == AddSDKDialog.OK){
+ addSDKComponentTableItems();
+ sdkListTableViewer.refresh();
+ }
+ }
+
+ private void rescanNowButtonAction(){
+ sdkListTableViewer.getTable().clearAll();
+ sdkListTableViewer.refresh();
+ sdkList.clear();
+ ISDKManager sdkMgr = SDKCorePlugin.getSDKManager();
+ sdkMgr.scanSDKs();
+ sdkList = sdkMgr.getSDKList();
+ addSDKComponentTableItems();
+ sdkListTableViewer.refresh();
+
+ ISymbianSDK sdk = (ISymbianSDK)sdkListTableViewer.getElementAt(0);
+ if (sdk != null){
+ sdkListTableViewer.setSelection(new StructuredSelection(sdk), true);
+ setSelectedSDKInfoText(sdk);
+ }
+
+ NewPluginChecker.checkForNewlyInstalledPlugins(SDKUIPlugin.getDefault().getWorkbench());
+ }
+
+ /**
+ * Sets the selection listener action event to the CheckboxTableViewer.
+ *
+ * @param sdkTable
+ */
+ private void addSDKTableViewerSelectionListener(){
+ sdkListTableViewer.addSelectionChangedListener(new ISelectionChangedListener() {
+ public void selectionChanged(SelectionChangedEvent event) {
+
+ if(event.getSelection() instanceof IStructuredSelection) {
+ IStructuredSelection selection = (IStructuredSelection)event.getSelection();
+ if (selection.size() == 1){
+ ISymbianSDK sdk = (ISymbianSDK)selection.getFirstElement();
+ sdkpropertiesButton.setEnabled(true);
+ removeSdkButton.setEnabled(true);
+ setSelectedSDKInfoText(sdk);
+
+ }else {
+ sdkpropertiesButton.setEnabled(false);
+ removeSdkButton.setEnabled(false);
+ }
+ }
+ }
+ } );
+ }
+
+ private void setSelectedSDKInfoText(ISymbianSDK sdk){
+ boolean sdkHasError = false;
+ String epocRootStr = sdk.getEPOCROOT();
+ File epocRootTest = new File(epocRootStr);
+ if (!epocRootTest.exists()) {
+ sdkHasError = true;
+ epocrootLabel.setText(EPOCROOT_LABEL + epocRootStr + Messages.getString("SDKPreferencePage.Path_Does_Not_Exist")); //$NON-NLS-1$
+ epocrootLabel.setForeground(RED);
+ epocrootLabel.setBackground(GRAY);
+ }
+ else {
+ epocrootLabel.setText(EPOCROOT_LABEL + epocRootStr);
+ epocrootLabel.setForeground(BLACK);
+ epocrootLabel.setBackground(GRAY);
+ }
+
+ // Set platforms
+ if (sdk.getAvailablePlatforms().size() == 0) {
+ sdkHasError = true;
+ availablePlatformsLabel.setText(PLATFORMS_LABEL + Messages.getString("SDKPreferencePage.Platforms_cannot_be_determined")); //$NON-NLS-1$
+ availablePlatformsLabel.setForeground(RED);
+ availablePlatformsLabel.setBackground(GRAY);
+ }
+ else {
+ availablePlatformsLabel.setText(PLATFORMS_LABEL + sdk.getAvailablePlatforms().toString());
+ availablePlatformsLabel.setForeground(BLACK);
+ availablePlatformsLabel.setBackground(GRAY);
+ }
+
+ // Set OS Version
+ if (sdk.getOSVersion().getMajor() == 0) {
+ sdkHasError = true;
+ osVersionLabel.setText(OS_VERSION_LABEL + Messages.getString("SDKPreferencePage.OS_Version_Cannot_Be_Determined")); //$NON-NLS-1$
+ osVersionLabel.setForeground(RED);
+ osVersionLabel.setBackground(GRAY);
+ }
+ else {
+ if (sdk.getSDKOSBranch().length() > 0) {
+ osVersionLabel.setText(OS_VERSION_LABEL + sdk.getOSVersion().toString() + " (Branch = \"" + sdk.getSDKOSBranch() + "\")"); //$NON-NLS-1$ //$NON-NLS-2$
+ } else {
+ osVersionLabel.setText(OS_VERSION_LABEL + sdk.getOSVersion().toString());
+ }
+ osVersionLabel.setForeground(BLACK);
+ osVersionLabel.setBackground(GRAY);
+ }
+
+ // Get diagnostic check
+ //if (lsdk.getSomeError().size() <= 0) {
+ if (sdkHasError){
+ diagnosticCheckLabel.setText(DIAGNOSTIC_CHECK_LABEL + Messages.getString("SDKPreferencePage.SDK_Cannot_Be_Used")); //$NON-NLS-1$
+ diagnosticCheckLabel.setForeground(RED);
+ diagnosticCheckLabel.setBackground(GRAY);
+ }
+ else {
+ // check for other types of errors:
+ if (!sdk.getToolsPath().toFile().exists()){
+ diagnosticCheckLabel.setText(DIAGNOSTIC_CHECK_LABEL + Messages.getString("SDKPreferencePage.No_Tools_Path") + " " + sdk.getToolsPath().toOSString()); //$NON-NLS-1$
+ diagnosticCheckLabel.setForeground(RED);
+ diagnosticCheckLabel.setBackground(GRAY);
+ } else if (!sdk.getIncludePath().toFile().exists()){
+ diagnosticCheckLabel.setText(DIAGNOSTIC_CHECK_LABEL + Messages.getString("SDKPreferencePage.No_Include_Path") + " " + sdk.getIncludePath().toOSString()); //$NON-NLS-1$
+ diagnosticCheckLabel.setForeground(RED);
+ diagnosticCheckLabel.setBackground(GRAY);
+ } else if ( ((sdk.getPrefixFile() == null) || (!sdk.getPrefixFile().exists())) && (sdk.getOSVersion().getMajor() >= 9)){
+ diagnosticCheckLabel.setText(DIAGNOSTIC_CHECK_LABEL + Messages.getString("SDKPreferencePage.No_HRH_File")); //$NON-NLS-1$
+ diagnosticCheckLabel.setForeground(RED);
+ diagnosticCheckLabel.setBackground(GRAY);
+ } else if ( ((sdk.isS60()) && sdk.getSDKVersion().getMajor() == 0)){
+ diagnosticCheckLabel.setText(DIAGNOSTIC_CHECK_LABEL + Messages.getString("SDKPreferencePage.No_SDK_Version")); //$NON-NLS-1$
+ diagnosticCheckLabel.setForeground(RED);
+ diagnosticCheckLabel.setBackground(GRAY);
+ } else {
+ // Everything is OK....
+ diagnosticCheckLabel.setText(DIAGNOSTIC_CHECK_LABEL + "OK\r\n "); //$NON-NLS-1$
+ diagnosticCheckLabel.setForeground(BLACK);
+ diagnosticCheckLabel.setBackground(GRAY);
+ }
+ }
+ }
+
+ protected List<ISymbianSDK> getSDKList(){
+ return sdkList;
+ }
+
+ protected ISDKManager getSDKManager(){
+ return sdkMgr;
+ }
+
+ private void checkDevicesXMLExist(){
+ if (sdkMgr == null){
+ return;
+ }
+
+ File devicesFile = sdkMgr.getDevicesXMLFile();
+ if (!devicesFile.exists()){
+ if (true == MessageDialog.openQuestion(shell, "Cannot find devices.xml.", "Devices.xml is required for Carbide.c++ use. Do you want to create this file?\n\n" + ISDKManager.DEFAULT_DEVICES_XML_DIR + ISDKManager.DEVICES_FILE_NAME)){
+ try {
+ //First check to make sure the directory exists....
+ File devicesPath = new File(ISDKManager.DEFAULT_DEVICES_XML_DIR);
+ if (!devicesPath.exists()){
+ devicesPath.mkdirs();
+ }
+
+ devicesFile = new File(ISDKManager.DEFAULT_DEVICES_XML_DIR + ISDKManager.DEVICES_FILE_NAME);
+ devicesFile.createNewFile();
+ FileWriter fw = new FileWriter(devicesFile);
+ fw.write("<?xml version=\"1.0\" encoding=\"UTF-8\"?><devices version=\"1.0\"></devices>");
+ fw.close();
+ } catch (IOException e){
+ MessageDialog.openError(shell, "Cannot create file.", "Could not create file: " + devicesFile.toString());
+ e.printStackTrace();
+ }
+ } else {
+ MessageDialog.openError(shell, "File not created.", "File not created. You will be unable to create project in Carbide.c++.");
+ }
+
+ }
+ }
+
+}
\ No newline at end of file