com.nokia.s60tools.compatibilityanalyser.ui.wizards.CompatibilityAnalyserPreferences.java Source code

Java tutorial

Introduction

Here is the source code for com.nokia.s60tools.compatibilityanalyser.ui.wizards.CompatibilityAnalyserPreferences.java

Source

/*
* 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 "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.s60tools.compatibilityanalyser.ui.wizards;

import java.io.File;
import java.lang.reflect.InvocationTargetException;
import java.util.Vector;
import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.jface.dialogs.MessageDialog;
import org.eclipse.jface.dialogs.ProgressMonitorDialog;
import org.eclipse.jface.operation.IRunnableWithProgress;
import org.eclipse.jface.preference.IPreferenceStore;
import org.eclipse.jface.preference.PreferencePage;
import org.eclipse.jface.resource.ImageDescriptor;
import org.eclipse.swt.SWT;
import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.events.SelectionListener;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Combo;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Control;
import org.eclipse.swt.widgets.DirectoryDialog;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Group;
import org.eclipse.swt.widgets.Label;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.swt.widgets.Text;
import org.eclipse.ui.IWorkbench;
import org.eclipse.ui.IWorkbenchPreferencePage;
import org.eclipse.ui.IWorkbenchWindow;
import org.eclipse.ui.PlatformUI;

import com.nokia.carbide.cpp.sdk.core.ISymbianSDK;
import com.nokia.s60tools.compatibilityanalyser.CompatibilityAnalyserPlugin;
import com.nokia.s60tools.compatibilityanalyser.model.CompatibilityAnalyserEngine;
import com.nokia.s60tools.compatibilityanalyser.resources.Messages;
import com.nokia.s60tools.compatibilityanalyser.data.SavingUserData;
import com.nokia.s60tools.compatibilityanalyser.utils.FileMethods;
import com.nokia.s60tools.compatibilityanalyser.utils.HelpContextIDs;

/**
 * Compatibility Analyser preferences class 
 */
public class CompatibilityAnalyserPreferences extends PreferencePage
        implements IWorkbenchPreferencePage, SelectionListener {

    private Text webLink;
    private Text knowniss_webLink;
    private Button defaultcoreBtn;
    private Button localcoreBtn;
    private Button browse1;
    private Combo sdkCmb;
    private Combo localCmb;
    private Button webcoreBtn;
    private Button sdkcoreBtn;
    private Vector<ISymbianSDK> rndSdkList;
    private Label coretoolsVersion;
    private ISymbianSDK[] sdkItems;
    private Button refreshBtn;
    private Composite composite;
    private String currentWebserverPath;

    private String extractionStatus;
    private String targetPath;

    private boolean isRefreshInvoked = false;
    private SavingUserData userData = new SavingUserData();
    private Text baselineTxt;;

    private static final String BASELINES_WEBSERVER_URL = Messages.getString("BaselineSDK.URL");
    private static final String CORETOOLS_WEBSERVER_URL = Messages.getString("Coretools.URL");
    private static final String KNOWNISSUES_WEBSERVER_URL = Messages.getString("Knownissues.URL");

    public CompatibilityAnalyserPreferences() {
    }

    public CompatibilityAnalyserPreferences(String title) {
        super(title);
    }

    public CompatibilityAnalyserPreferences(String title, ImageDescriptor image) {
        super(title, image);
    }

    @Override
    protected Control createContents(Composite parent) {

        composite = new Composite(parent, SWT.NONE);
        GridLayout gd = new GridLayout(1, false);
        composite.setLayout(gd);
        GridData data = new GridData(GridData.FILL_BOTH);
        data.verticalIndent = 5;
        composite.setLayoutData(data);

        Group coreToolGrp = new Group(composite, SWT.NONE);
        coreToolGrp.setText(Messages.getString("CompatibilityAnalyserPreferences.Configurecoretools")); //$NON-NLS-1$

        coreToolGrp.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
        GridLayout gd1 = new GridLayout(3, false);
        coreToolGrp.setLayout(gd1);

        defaultcoreBtn = new Button(coreToolGrp, SWT.RADIO);
        defaultcoreBtn.setText(Messages.getString("CompatibilityAnalyserPreferences.UseDefaultTools")); //$NON-NLS-1$
        GridData gd11 = new GridData(GridData.HORIZONTAL_ALIGN_BEGINNING);
        gd11.horizontalSpan = 3;
        gd11.horizontalAlignment = GridData.FILL_HORIZONTAL;
        defaultcoreBtn.setLayoutData(gd11);
        defaultcoreBtn.setFocus();
        defaultcoreBtn.setSelection(true);
        defaultcoreBtn.addSelectionListener(this);

        localcoreBtn = new Button(coreToolGrp, SWT.RADIO);
        localcoreBtn.setText(Messages.getString("CompatibilityAnalyserPreferences.UseLocalTools")); //$NON-NLS-1$
        GridData gd12 = new GridData(GridData.BEGINNING);
        gd12.horizontalSpan = 3;
        gd12.horizontalAlignment = GridData.FILL_HORIZONTAL;
        localcoreBtn.setLayoutData(gd12);
        localcoreBtn.addSelectionListener(this);

        localCmb = new Combo(coreToolGrp, SWT.DROP_DOWN | SWT.BORDER);
        GridData gd20 = new GridData(GridData.FILL_HORIZONTAL);
        gd20.horizontalSpan = 2;
        localCmb.setLayoutData(gd20);
        localCmb.setEnabled(false);
        String[] lastUsedDirs = userData.getPreviousValues(SavingUserData.ValueTypes.CORE_PATH);
        if (lastUsedDirs != null) {
            localCmb.setItems(lastUsedDirs);
            localCmb.select(0);
        }
        localCmb.addSelectionListener(this);

        browse1 = new Button(coreToolGrp, SWT.PUSH);
        browse1.setText(Messages.getString("CompatibilityAnalyserPreferences.Browse")); //$NON-NLS-1$
        browse1.setEnabled(false);
        browse1.addSelectionListener(this);

        webcoreBtn = new Button(coreToolGrp, SWT.RADIO);
        webcoreBtn.setText(Messages.getString("CompatibilityAnalyserPreferences.UseWebTools")); //$NON-NLS-1$
        GridData gd13 = new GridData(GridData.BEGINNING);
        gd13.horizontalSpan = 3;
        gd13.horizontalAlignment = GridData.FILL_HORIZONTAL;
        webcoreBtn.setLayoutData(gd13);
        webcoreBtn.addSelectionListener(this);

        webLink = new Text(coreToolGrp, SWT.BORDER | SWT.DROP_DOWN);
        GridData gd14 = new GridData(GridData.FILL_HORIZONTAL);
        gd14.horizontalSpan = 3;
        webLink.setText(CORETOOLS_WEBSERVER_URL); //$NON-NLS-1$
        webLink.setLayoutData(gd14);
        webLink.setEnabled(false);

        sdkcoreBtn = new Button(coreToolGrp, SWT.RADIO);
        sdkcoreBtn.setText(Messages.getString("CompatibilityAnalyserPreferences.UseSDKTools")); //$NON-NLS-1$
        sdkcoreBtn.addSelectionListener(this);

        GridData gd15 = new GridData(GridData.FILL_HORIZONTAL);
        gd15.horizontalSpan = 2;
        sdkCmb = new Combo(coreToolGrp, SWT.DROP_DOWN | SWT.BORDER | SWT.READ_ONLY);
        sdkCmb.setLayoutData(gd15);
        sdkCmb.setEnabled(false);

        //retrieving loaded Rnd sdk's only and adding them to the List box
        sdkItems = CompatibilityAnalyserPlugin.fetchLoadedSdkList().toArray(new ISymbianSDK[0]);
        rndSdkList = new Vector<ISymbianSDK>();

        if (sdkItems.length == 0) {
            MessageDialog.openError(this.getShell(), "SDK Error", "No SDK's installed");
        } else {
            int i = 0;
            for (int k = 0; k < sdkItems.length; k++) {
                File bctoolsFolder = new File(sdkItems[k].getEPOCROOT() + File.separator
                        + Messages.getString("CompatibilityAnalyserPreferences.epoc32") + File.separator //$NON-NLS-1$
                        + Messages.getString("CompatibilityAnalyserPreferences.tools") + File.separator + //$NON-NLS-1$
                        Messages.getString("CompatibilityAnalyserPreferences.s60rndtools") + File.separator //$NON-NLS-1$
                        + Messages.getString("CompatibilityAnalyserPreferences.bctools")); //$NON-NLS-1$
                if (bctoolsFolder.exists()) {
                    rndSdkList.add(i, sdkItems[k]);
                    sdkCmb.add(sdkItems[k].getUniqueId(), i);
                    i++;
                }

            }
        }
        sdkCmb.addSelectionListener(this);

        Group verinfoGrp = new Group(coreToolGrp, SWT.NONE);
        GridData verinfodata = new GridData(GridData.HORIZONTAL_ALIGN_FILL);
        verinfodata.horizontalSpan = 3;
        verinfoGrp.setLayoutData(verinfodata);

        verinfoGrp.setLayout(new GridLayout(3, false));

        coretoolsVersion = new Label(verinfoGrp, SWT.RADIO);
        coretoolsVersion.setText(Messages.getString("CompatibilityAnalyserPreferences.CoretoolsNotAvailable")); //$NON-NLS-1$
        GridData vergd13 = new GridData(GridData.FILL_HORIZONTAL);
        vergd13.horizontalSpan = 2;
        coretoolsVersion.setLayoutData(vergd13);

        refreshBtn = new Button(verinfoGrp, SWT.PUSH);
        refreshBtn.setText(Messages.getString("CompatibilityAnalyserPreferences.RefreshVersion")); //$NON-NLS-1$
        refreshBtn.addSelectionListener(this);

        Group issuesGrp = new Group(composite, SWT.NONE);
        issuesGrp.setText(Messages.getString("CompatibilityAnalyserPreferences.ConfigureKnownIssues")); //$NON-NLS-1$
        issuesGrp.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
        issuesGrp.setLayout(new GridLayout(2, false));

        Label lbl = new Label(issuesGrp, SWT.NONE);
        lbl.setText(Messages.getString("CompatibilityAnalyserPreferences.URLofIssuesWebserver")); //$NON-NLS-1$
        GridData gd17 = new GridData(GridData.FILL_HORIZONTAL);
        gd17.horizontalSpan = 2;
        lbl.setLayoutData(gd17);

        knowniss_webLink = new Text(issuesGrp, SWT.BORDER | SWT.DROP_DOWN);
        GridData gd16 = new GridData(GridData.FILL_HORIZONTAL);
        gd16.horizontalSpan = 2;
        knowniss_webLink.setLayoutData(gd16);
        knowniss_webLink.setText(KNOWNISSUES_WEBSERVER_URL); //$NON-NLS-1$

        Group predefinedBaselineGrp = new Group(composite, SWT.NONE);
        predefinedBaselineGrp.setText("Configure URL for predefined baseline profiles");
        predefinedBaselineGrp.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
        predefinedBaselineGrp.setLayout(new GridLayout(2, false));

        Label lbl4 = new Label(predefinedBaselineGrp, SWT.NONE);
        lbl4.setText("");

        baselineTxt = new Text(predefinedBaselineGrp, SWT.BORDER);
        baselineTxt.setText(BASELINES_WEBSERVER_URL);
        baselineTxt.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
        baselineTxt.addSelectionListener(this);

        getPrefsStoreValues();

        setHelp();
        return composite;
    }

    /**
     * Fetches the default values from the preference store object.
     */
    protected void performDefaults() {

        defaultcoreBtn.setSelection(true);

        localcoreBtn.setSelection(false);
        localCmb.setEnabled(false);
        browse1.setEnabled(false);

        webcoreBtn.setSelection(false);
        webLink.setEnabled(false);

        sdkcoreBtn.setSelection(false);
        sdkCmb.setEnabled(false);

        webLink.setText(CORETOOLS_WEBSERVER_URL); //$NON-NLS-1$
        knowniss_webLink.setText(KNOWNISSUES_WEBSERVER_URL); //$NON-NLS-1$
        baselineTxt.setText(BASELINES_WEBSERVER_URL);

        IPreferenceStore store = CompatibilityAnalyserPlugin.getCompatabilityAnalyserPrefStore();
        store.setValue(CompatibilityAnalyserPreferencesConstants.DEFAULT_ISSUES, true);
        store.setValue(CompatibilityAnalyserPreferencesConstants.LATEST_ISSUES, false);
        store.setValue(CompatibilityAnalyserPreferencesConstants.WEB_ISSUES, false);
        store.setValue(CompatibilityAnalyserPreferencesConstants.LOCAL_ISSUES, false);

        super.performDefaults();
    }

    /**
     * Stores the latest values to preference store object.
     */
    public boolean performOk() {
        IPreferenceStore store = CompatibilityAnalyserPlugin.getCompatabilityAnalyserPrefStore();
        SavingUserData userData = new SavingUserData();

        String url2 = knowniss_webLink.getText();

        if (url2.length() != 0) {
            store.setValue(CompatibilityAnalyserPreferencesConstants.KNOWNISSUES_URL, url2);
        }
        /*else
        {
           MessageDialog.openError(Display.getCurrent().getActiveShell(), Messages.getString("CompatibilityAnalyserPreferences.25"), Messages.getString("CompatibilityAnalyserPreferences.26")); //$NON-NLS-1$ //$NON-NLS-2$
           return false;
        }*/
        if (localcoreBtn.getSelection() == true) {
            File checkbc = null;
            if (localCmb.getText().length() != 0) {
                checkbc = new File(FileMethods.appendPathSeparator(localCmb.getText())
                        + Messages.getString("CompatibilityAnalyserPreferences.27")); //$NON-NLS-1$
            } else {
                MessageDialog.openError(Display.getCurrent().getActiveShell(),
                        Messages.getString("CompatibilityAnalyserPreferences.28"), //$NON-NLS-1$
                        Messages.getString("CompatibilityAnalyserPreferences.29")); //$NON-NLS-1$
                return false;
            }

            //check whether the checkbc.py exists or not 
            if (checkbc.exists() && checkbc.isFile()) {
                try {
                    String dv = CompatibilityAnalyserEngine
                            .getDataVersion(checkbc.getParentFile().getAbsolutePath());
                    int num = Integer.parseInt(dv);
                    if (num != CompatibilityAnalyserPlugin.DATA_VERSION) {
                        if (!checkbc.getParentFile().getAbsolutePath()
                                .equalsIgnoreCase(CompatibilityAnalyserPlugin.getDefaltCoretoolsPath()))
                            MessageDialog.openError(Display.getCurrent().getActiveShell(),
                                    Messages.getString("CompatibilityAnalyserPreferences.42"),
                                    "Invalid data version of coretools. Please check the coretools.\nPlease select the coretools of data version "
                                            + CompatibilityAnalyserPlugin.DATA_VERSION + ".");
                        return false;
                    }
                } catch (NumberFormatException e) {
                    MessageDialog.openError(Display.getCurrent().getActiveShell(),
                            Messages.getString("CompatibilityAnalyserPreferences.42"),
                            "Invalid data version of coretools. Please check the coretools.\nPlease select the coretools of data version "
                                    + CompatibilityAnalyserPlugin.DATA_VERSION + ".");
                    return false;
                } catch (Exception e) {
                    MessageDialog.openError(Display.getCurrent().getActiveShell(),
                            Messages.getString("CompatibilityAnalyserPreferences.42"),
                            "Invalid data version of coretools. Please check the coretools.\nPlease select the coretools of data version "
                                    + CompatibilityAnalyserPlugin.DATA_VERSION + ".");
                    return false;
                }
                store.setValue(CompatibilityAnalyserPreferencesConstants.LOCAL_TOOLS_PATH, localCmb.getText());
                userData.saveValue(SavingUserData.ValueTypes.CORE_PATH, localCmb.getText());
            } else {
                MessageDialog.openError(Display.getCurrent().getActiveShell(),
                        Messages.getString("CompatibilityAnalyserPreferences.30"), //$NON-NLS-1$
                        Messages.getString("CompatibilityAnalyserPreferences.31")); //$NON-NLS-1$ //$NON-NLS-3$
                return false;
            }
        }
        if (webcoreBtn.getSelection() == true) {
            String url1 = webLink.getText();
            if (url1.length() != 0) {
                if (isRefreshInvoked) {
                    String prevFolder = store
                            .getString(CompatibilityAnalyserPreferencesConstants.PREVIOUS_WEB_CORE_TOOLS_ROOTDIR);

                    FileMethods.deleteFolder(prevFolder);

                    File currentFolder = new File(targetPath);
                    currentFolder.renameTo(new File(CompatibilityAnalyserEngine.getWorkspacePath() + File.separator
                            + Messages.getString("CompatibilityAnalyserPreferences.WebServerContentsNew"))); //$NON-NLS-1$

                    String corePath = CompatibilityAnalyserEngine.getWebServerToolsPath();

                    if (corePath != null && corePath.equalsIgnoreCase(targetPath)) {
                        store.setValue(CompatibilityAnalyserPreferencesConstants.PREVIOUS_WEB_CORE_TOOLS_PATH,
                                CompatibilityAnalyserEngine.getWorkspacePath() + File.separator + Messages
                                        .getString("CompatibilityAnalyserPreferences.WebServerContentsNew"));
                    } else if (!corePath.equalsIgnoreCase(targetPath)) {
                        String coreRoot = CompatibilityAnalyserEngine.getWebServerToolsPath()
                                .substring(targetPath.length() + 1);
                        store.setValue(CompatibilityAnalyserPreferencesConstants.PREVIOUS_WEB_CORE_TOOLS_PATH,
                                CompatibilityAnalyserEngine.getWorkspacePath() + File.separator
                                        + Messages
                                                .getString("CompatibilityAnalyserPreferences.WebServerContentsNew")
                                        + File.separator + coreRoot);
                    }

                    store.setValue(CompatibilityAnalyserPreferencesConstants.PREVIOUS_WEB_CORE_TOOLS_URL, url1);
                    store.setValue(CompatibilityAnalyserPreferencesConstants.PREVIOUS_WEB_CORE_TOOLS_ROOTDIR,
                            CompatibilityAnalyserEngine.getWorkspacePath() + File.separator
                                    + Messages.getString("CompatibilityAnalyserPreferences.WebServerContentsNew")); //$NON-NLS-1$

                    isRefreshInvoked = false;

                }
                store.setValue(CompatibilityAnalyserPreferencesConstants.CORETOOLS_URL, url1);
            } else {
                MessageDialog.openError(Display.getCurrent().getActiveShell(),
                        Messages.getString("CompatibilityAnalyserPreferences.38"), //$NON-NLS-1$
                        Messages.getString("CompatibilityAnalyserPreferences.39")); //$NON-NLS-1$
                return false;
            }
        }
        if (sdkcoreBtn.getSelection() == true) {
            if (sdkCmb.getText().length() != 0) {
                store.setValue(CompatibilityAnalyserPreferencesConstants.SDK_NAME, sdkCmb.getText());
                ISymbianSDK selectedSdk = rndSdkList.elementAt(sdkCmb.getSelectionIndex());
                String bctoolsPath = FileMethods.appendPathSeparator(selectedSdk.getEPOCROOT())
                        + Messages.getString("CompatibilityAnalyserPreferences.40"); //$NON-NLS-1$
                File cbc = new File(
                        bctoolsPath + File.separator + Messages.getString("CompatibilityAnalyserPreferences.41")); //$NON-NLS-1$
                if (!cbc.exists()) {
                    MessageDialog.openError(Display.getCurrent().getActiveShell(),
                            Messages.getString("CompatibilityAnalyserPreferences.42"), //$NON-NLS-1$
                            bctoolsPath + Messages.getString("CompatibilityAnalyserPreferences.43")); //$NON-NLS-1$
                    return false;
                }

                try {
                    String dv = CompatibilityAnalyserEngine.getDataVersion(bctoolsPath);
                    int num = Integer.parseInt(dv);
                    if (num != CompatibilityAnalyserPlugin.DATA_VERSION) {
                        if (!bctoolsPath.equalsIgnoreCase(CompatibilityAnalyserPlugin.getDefaltCoretoolsPath()))
                            MessageDialog.openError(Display.getCurrent().getActiveShell(),
                                    Messages.getString("CompatibilityAnalyserPreferences.42"),
                                    "Invalid data version of coretools. Please check the coretools.\nPlease select the coretools of data version "
                                            + CompatibilityAnalyserPlugin.DATA_VERSION + ".");
                        return false;
                    }
                } catch (NumberFormatException e) {
                    MessageDialog.openError(Display.getCurrent().getActiveShell(),
                            Messages.getString("CompatibilityAnalyserPreferences.42"),
                            "Invalid data version of coretools. Please check the coretools.\nPlease select the coretools of data version "
                                    + CompatibilityAnalyserPlugin.DATA_VERSION + ".");
                    return false;
                } catch (Exception e) {
                    MessageDialog.openError(Display.getCurrent().getActiveShell(),
                            Messages.getString("CompatibilityAnalyserPreferences.42"),
                            "Invalid data version of coretools. Please check the coretools.\nPlease select the coretools of data version "
                                    + CompatibilityAnalyserPlugin.DATA_VERSION + ".");
                    return false;
                }

                store.setValue(CompatibilityAnalyserPreferencesConstants.SDK_TOOLS_PATH, bctoolsPath);
            } else {
                MessageDialog.openError(Display.getCurrent().getActiveShell(),
                        Messages.getString("CompatibilityAnalyserPreferences.44"), //$NON-NLS-1$
                        "Please provide a R&D SDK for coretools"); //$NON-NLS-1$
                return false;
            }
        }

        store.setValue(CompatibilityAnalyserPreferencesConstants.DEFAULT_TOOLS, defaultcoreBtn.getSelection());
        store.setValue(CompatibilityAnalyserPreferencesConstants.LOCAL_TOOLS, localcoreBtn.getSelection());
        store.setValue(CompatibilityAnalyserPreferencesConstants.WEB_TOOLS, webcoreBtn.getSelection());
        store.setValue(CompatibilityAnalyserPreferencesConstants.SDK_TOOLS, sdkcoreBtn.getSelection());

        store.setValue(CompatibilityAnalyserPreferencesConstants.BASELINES_URL, baselineTxt.getText());

        return super.performOk();
    }

    /**
     * Get and set the previous values to the preferences page. 
     *
     */
    private void getPrefsStoreValues() {

        IPreferenceStore store = CompatibilityAnalyserPlugin.getCompatabilityAnalyserPrefStore();

        defaultcoreBtn.setSelection(store.getBoolean(CompatibilityAnalyserPreferencesConstants.DEFAULT_TOOLS));
        localcoreBtn.setSelection(store.getBoolean(CompatibilityAnalyserPreferencesConstants.LOCAL_TOOLS));
        webcoreBtn.setSelection(store.getBoolean(CompatibilityAnalyserPreferencesConstants.WEB_TOOLS));
        sdkcoreBtn.setSelection(store.getBoolean(CompatibilityAnalyserPreferencesConstants.SDK_TOOLS));
        if (defaultcoreBtn.getSelection() == true) {
            localCmb.setEnabled(false);
            browse1.setEnabled(false);
            webLink.setEnabled(false);
            sdkCmb.setEnabled(false);

        } else if (localcoreBtn.getSelection() == true) {
            localCmb.setEnabled(true);
            String[] lastUsedDirs = userData.getPreviousValues(SavingUserData.ValueTypes.CORE_PATH);

            if (lastUsedDirs != null) {
                localCmb.setItems(lastUsedDirs);
                localCmb.select(0);
            }

            browse1.setEnabled(true);
            webLink.setEnabled(false);
            sdkCmb.setEnabled(false);

            if (CompatibilityAnalyserPreferencesConstants.LOCAL_TOOLS_PATH != null
                    && !CompatibilityAnalyserPreferencesConstants.LOCAL_TOOLS_PATH.equals(""))
                localCmb.setText(store.getString(CompatibilityAnalyserPreferencesConstants.LOCAL_TOOLS_PATH));

        }

        else if (webcoreBtn.getSelection() == true) {
            localCmb.setEnabled(false);
            browse1.setEnabled(false);
            webLink.setEnabled(true);
            sdkCmb.setEnabled(false);
            webLink.setText(store.getString(CompatibilityAnalyserPreferencesConstants.CORETOOLS_URL));

            String toolsPath = store
                    .getString(CompatibilityAnalyserPreferencesConstants.PREVIOUS_WEB_CORE_TOOLS_PATH);
            displayVersion(toolsPath, Messages.getString("CompatibilityAnalyserPreferences.49")); //$NON-NLS-1$
        }

        else if (sdkcoreBtn.getSelection() == true) {
            localCmb.setEnabled(false);
            browse1.setEnabled(false);
            webLink.setEnabled(false);
            sdkCmb.setEnabled(true);
            String prevSDK = store.getString(CompatibilityAnalyserPreferencesConstants.SDK_NAME);

            if (sdkCmb.indexOf(prevSDK) != -1) {
                sdkCmb.select(sdkCmb.indexOf(prevSDK));
            }
        }

        String url2 = store.getString(CompatibilityAnalyserPreferencesConstants.KNOWNISSUES_URL);
        knowniss_webLink.setText(url2);

        baselineTxt.setText(store.getString(CompatibilityAnalyserPreferencesConstants.BASELINES_URL));
    }

    public void init(IWorkbench workbench) {
    }

    public void widgetDefaultSelected(SelectionEvent e) {
    }

    public void widgetSelected(SelectionEvent e) {
        if (e.widget == browse1) {
            DirectoryDialog dirDlg = new DirectoryDialog(Display.getCurrent().getActiveShell());
            String dirName = null;
            if ((dirName = dirDlg.open()) != null) {
                localCmb.setText(dirName);
                displayVersion(localCmb.getText(), Messages.getString("CompatibilityAnalyserPreferences.50")); //$NON-NLS-1$
            } else
                return;
        } else if (e.widget == defaultcoreBtn && defaultcoreBtn.getSelection()) {
            localCmb.setEnabled(false);
            browse1.setEnabled(false);
            webLink.setEnabled(false);
            sdkCmb.setEnabled(false);
            String corePath = FileMethods
                    .appendPathSeparator(CompatibilityAnalyserPlugin.getInstallPathOfToolsPlugin())
                    + Messages.getString("CompatibilityAnalyserPreferences.51"); //$NON-NLS-1$
            displayVersion(corePath, Messages.getString("CompatibilityAnalyserPreferences.52")); //$NON-NLS-1$

        } else if (e.widget == localcoreBtn && localcoreBtn.getSelection()) {
            localCmb.setEnabled(true);

            SavingUserData userData = new SavingUserData();
            String[] lastUsedDirs = userData.getPreviousValues(SavingUserData.ValueTypes.CORE_PATH);

            if (lastUsedDirs != null) {
                localCmb.setItems(lastUsedDirs);
                localCmb.select(0);
            }

            browse1.setEnabled(true);
            webLink.setEnabled(false);
            sdkCmb.setEnabled(false);
            displayVersion(localCmb.getText(), Messages.getString("CompatibilityAnalyserPreferences.53")); //$NON-NLS-1$

        } else if (e.widget == sdkcoreBtn && sdkcoreBtn.getSelection()) {
            localCmb.setEnabled(false);
            browse1.setEnabled(false);
            webLink.setEnabled(false);
            sdkCmb.setEnabled(true);
            ISymbianSDK[] sdks = rndSdkList.toArray(new ISymbianSDK[0]);
            String toolsPath = null;
            if (sdks.length != 0) {
                sdkCmb.select(0);
                String epocRoot = sdks[sdkCmb.getSelectionIndex()].getEPOCROOT();

                toolsPath = FileMethods.appendPathSeparator(epocRoot)
                        + Messages.getString("CompatibilityAnalyserPreferences.epoc32") + File.separator //$NON-NLS-1$
                        + Messages.getString("CompatibilityAnalyserPreferences.tools") + File.separator + //$NON-NLS-1$
                        Messages.getString("CompatibilityAnalyserPreferences.s60rndtools") + File.separator //$NON-NLS-1$
                        + Messages.getString("CompatibilityAnalyserPreferences.bctools"); //$NON-NLS-1$
            }
            displayVersion(toolsPath, Messages.getString("CompatibilityAnalyserPreferences.58")); //$NON-NLS-1$

        } else if (e.widget == webcoreBtn && webcoreBtn.getSelection()) {
            localCmb.setEnabled(false);
            browse1.setEnabled(false);
            webLink.setEnabled(true);
            sdkCmb.setEnabled(false);

            IPreferenceStore store = CompatibilityAnalyserPlugin.getCompatabilityAnalyserPrefStore();
            String toolsPath = store
                    .getString(CompatibilityAnalyserPreferencesConstants.PREVIOUS_WEB_CORE_TOOLS_PATH);
            displayVersion(toolsPath, Messages.getString("CompatibilityAnalyserPreferences.60")); //$NON-NLS-1$

        } else if (e.widget == sdkCmb) {
            ISymbianSDK[] sdks = rndSdkList.toArray(new ISymbianSDK[0]);
            String epocRoot = sdks[sdkCmb.getSelectionIndex()].getEPOCROOT();

            String toolsPath = FileMethods.appendPathSeparator(epocRoot)
                    + Messages.getString("CompatibilityAnalyserPreferences.epoc32") + File.separator //$NON-NLS-1$
                    + Messages.getString("CompatibilityAnalyserPreferences.tools") + File.separator + //$NON-NLS-1$
                    Messages.getString("CompatibilityAnalyserPreferences.s60rndtools") + File.separator //$NON-NLS-1$
                    + Messages.getString("CompatibilityAnalyserPreferences.bctools"); //$NON-NLS-1$
            displayVersion(toolsPath, Messages.getString("CompatibilityAnalyserPreferences.65")); //$NON-NLS-1$

        } else if (e.widget == refreshBtn) {
            showWebToolsProgressBar();
        }

    }

    /**
     * Starts downloading coretools from the URL given.
     * Displays the version of coretools after downloading the tools 
     *
     */
    public void showWebToolsProgressBar() {
        if (webcoreBtn.getSelection()) {
            currentWebserverPath = webLink.getText();
            if (CompatibilityAnalyserEngine.isDownloadAndExtractionNeeded(currentWebserverPath)) {
                // if true download latest
                IRunnableWithProgress op = new IRunnableWithProgress() {
                    public void run(IProgressMonitor monitor) {
                        targetPath = CompatibilityAnalyserEngine.getWorkspacePath() + File.separator
                                + Messages.getString("CompatibilityAnalyserPreferences.WebServerLatest"); //$NON-NLS-1$
                        extractionStatus = CompatibilityAnalyserEngine
                                .readAndDownloadSupportedCoretools(currentWebserverPath, targetPath, monitor);
                    }
                };
                IWorkbench wb = PlatformUI.getWorkbench();
                IWorkbenchWindow win = wb.getActiveWorkbenchWindow();
                Shell shell = win != null ? win.getShell() : null;
                try {
                    new ProgressMonitorDialog(shell).run(true, true, op);
                } catch (InvocationTargetException e) {
                    e.printStackTrace();
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }

                ////After download check the version and display
                if (extractionStatus == null) {
                    isRefreshInvoked = true;
                    displayVersion(CompatibilityAnalyserEngine.getWebServerToolsPath(),
                            Messages.getString("CompatibilityAnalyserPreferences.67")); //$NON-NLS-1$
                } else {

                    if (targetPath != null) {
                        File latest = new File(targetPath);
                        if (latest.exists()) {
                            FileMethods.deleteFolder(latest.getAbsolutePath());
                        }
                    }
                    MessageDialog.openError(Display.getCurrent().getActiveShell(),
                            Messages.getString("CompatibilityAnalyserPreferences.44"),
                            "Error in Extracting CoreTools: " + extractionStatus);
                }
            } else {
                MessageDialog.openInformation(Display.getCurrent().getActiveShell(),
                        Messages.getString("CompatibilityAnalyserPreferences.69"), //$NON-NLS-1$
                        Messages.getString("CompatibilityAnalyserPreferences.70")); //$NON-NLS-1$
                IPreferenceStore store = CompatibilityAnalyserPlugin.getCompatabilityAnalyserPrefStore();
                String toolsPath = store
                        .getString(CompatibilityAnalyserPreferencesConstants.PREVIOUS_WEB_CORE_TOOLS_PATH);
                displayVersion(toolsPath, Messages.getString("CompatibilityAnalyserPreferences.71")); //$NON-NLS-1$
            }
        } else if (localcoreBtn.getSelection()) {
            displayVersion(localCmb.getText(), Messages.getString("CompatibilityAnalyserPreferences.72")); //$NON-NLS-1$
        } else if (sdkcoreBtn.getSelection()) {
            ISymbianSDK[] sdks = rndSdkList.toArray(new ISymbianSDK[0]);
            String toolsPath = null;
            if (sdks.length != 0 && sdkCmb.getSelectionIndex() != -1) {
                String epocRoot = sdks[sdkCmb.getSelectionIndex()].getEPOCROOT();

                toolsPath = FileMethods.appendPathSeparator(epocRoot)
                        + Messages.getString("CompatibilityAnalyserPreferences.epoc32") + File.separator //$NON-NLS-1$
                        + Messages.getString("CompatibilityAnalyserPreferences.tools") + File.separator + //$NON-NLS-1$
                        Messages.getString("CompatibilityAnalyserPreferences.s60rndtools") + File.separator //$NON-NLS-1$
                        + Messages.getString("CompatibilityAnalyserPreferences.bctools"); //$NON-NLS-1$
            }
            displayVersion(toolsPath, Messages.getString("CompatibilityAnalyserPreferences.77")); //$NON-NLS-1$
        } else if (defaultcoreBtn.getSelection()) {
            String corePath = FileMethods
                    .appendPathSeparator(CompatibilityAnalyserPlugin.getInstallPathOfToolsPlugin())
                    + Messages.getString("CompatibilityAnalyserPreferences.78"); //$NON-NLS-1$
            displayVersion(corePath, Messages.getString("CompatibilityAnalyserPreferences.79")); //$NON-NLS-1$
        }

    }

    public void displayVersion(String toolsPath, String lblText) {
        if (toolsPath != null) {
            File checkbc = new File(FileMethods.appendPathSeparator(toolsPath)
                    + Messages.getString("CompatibilityAnalyserPreferences.80")); //$NON-NLS-1$
            if (checkbc.exists() && checkbc.isFile()) {
                try {
                    String ver = CompatibilityAnalyserEngine.getCoreToolsVersion(toolsPath);

                    if (ver == null) {
                        MessageDialog.openError(Display.getCurrent().getActiveShell(),
                                Messages.getString("CompatibilityAnalyserPreferences.44"),
                                "Error in getting coretools version. Please check the coretools");
                    } else if (ver.length() < 8)
                        coretoolsVersion.setText(lblText + " : " + ver); //$NON-NLS-1$
                    else
                        coretoolsVersion
                                .setText(lblText + Messages.getString("CompatibilityAnalyserPreferences.82")); //$NON-NLS-1$

                    return;

                } catch (Exception e1) {
                    e1.printStackTrace();
                }
            }
        }

        coretoolsVersion.setText(lblText + Messages.getString("CompatibilityAnalyserPreferences.83")); //$NON-NLS-1$
    }

    public boolean performCancel() {
        if (targetPath != null) {
            File latest = new File(targetPath);
            if (latest.exists()) {
                FileMethods.deleteFolder(latest.getAbsolutePath());
            }
        }
        return super.performCancel();
    }

    /**
     * Sets context sensitive help for this page.
     *
     */
    public void setHelp() {
        PlatformUI.getWorkbench().getHelpSystem().setHelp(webLink, HelpContextIDs.CONFIGURE_PREFERENCES);
        PlatformUI.getWorkbench().getHelpSystem().setHelp(knowniss_webLink, HelpContextIDs.CONFIGURE_PREFERENCES);
        PlatformUI.getWorkbench().getHelpSystem().setHelp(localCmb, HelpContextIDs.CONFIGURE_PREFERENCES);
        PlatformUI.getWorkbench().getHelpSystem().setHelp(localcoreBtn, HelpContextIDs.CONFIGURE_PREFERENCES);
        PlatformUI.getWorkbench().getHelpSystem().setHelp(sdkCmb, HelpContextIDs.CONFIGURE_PREFERENCES);
        PlatformUI.getWorkbench().getHelpSystem().setHelp(sdkcoreBtn, HelpContextIDs.CONFIGURE_PREFERENCES);
        PlatformUI.getWorkbench().getHelpSystem().setHelp(defaultcoreBtn, HelpContextIDs.CONFIGURE_PREFERENCES);
    }

}