com.nokia.carbide.internal.bugdatacollector.ui.preferences.BugDataCollectorPreferencePage.java Source code

Java tutorial

Introduction

Here is the source code for com.nokia.carbide.internal.bugdatacollector.ui.preferences.BugDataCollectorPreferencePage.java

Source

/*
* Copyright (c) 2007 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.internal.bugdatacollector.ui.preferences;

import org.eclipse.core.runtime.Platform;
import org.eclipse.jface.preference.IPreferenceNode;
import org.eclipse.jface.preference.IPreferencePage;
import org.eclipse.jface.preference.IPreferenceStore;
import org.eclipse.jface.preference.PreferenceDialog;
import org.eclipse.jface.preference.PreferenceManager;
import org.eclipse.jface.preference.PreferenceNode;
import org.eclipse.jface.preference.PreferencePage;
import org.eclipse.swt.SWT;
import org.eclipse.swt.widgets.Button;
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.Event;
import org.eclipse.swt.widgets.Label;
import org.eclipse.swt.widgets.Link;
import org.eclipse.swt.widgets.Listener;
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.PlatformUI;
import org.eclipse.ui.browser.IWebBrowser;
import com.nokia.carbide.internal.bugdatacollector.model.DesEncrypter;
import com.nokia.carbide.internal.bugdatacollector.plugin.BugDataCollectorPlugin;
import com.nokia.carbide.internal.bugdatacollector.resources.HelpContextIDs;
import com.nokia.carbide.internal.bugdatacollector.resources.Messages;

/**
 * Preference page for Carbide BugReport. Contains fields for 
 * BugZilla username and password. Contains also link to BugZilla 
 * main page. 
 *
 */
public class BugDataCollectorPreferencePage extends PreferencePage implements IWorkbenchPreferencePage, Listener {

    private Label emailLabel;
    private Text emailText;
    private Label passwordLabel;
    private Text passwordText;
    private Link bugzillaLink;

    private Button sdkButton;
    private Button logButton;

    public BugDataCollectorPreferencePage() {
        super(Messages.getString("BugDataCollectorPreferencePage.BugReports")); //$NON-NLS-1$
    }

    public void init(IWorkbench arg0) {
    }

    @Override
    protected Control createContents(Composite parent) {
        Composite container = new Composite(parent, SWT.NULL);
        GridLayout gridLayout = new GridLayout();
        gridLayout.numColumns = 1;
        container.setLayout(gridLayout);

        emailLabel = new Label(container, SWT.LEFT);
        emailLabel.setText(Messages.getString("BugDataCollectorPreferencePage.Username")); //$NON-NLS-1$

        emailText = new Text(container, SWT.SINGLE | SWT.BORDER);
        emailText.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));

        passwordLabel = new Label(container, SWT.LEFT);
        passwordLabel.setText(Messages.getString("BugDataCollectorPreferencePage.Password")); //$NON-NLS-1$

        passwordText = new Text(container, SWT.SINGLE | SWT.BORDER | SWT.PASSWORD);
        passwordText.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));

        sdkButton = new Button(container, SWT.CHECK);
        sdkButton.setText(Messages.getString("BugDataCollectorPreferencePage.SendSdkInformation")); //$NON-NLS-1$

        logButton = new Button(container, SWT.CHECK);
        logButton.setText(Messages.getString("BugDataCollectorPreferencePage.SendDiagnosticLogs")); //$NON-NLS-1$

        //Platform.getProduct().getDefiningBundle().getHeaders().get(org.osgi.framework.Constants.BUNDLE_VERSION);
        //String vers = Platform.getProduct().getProperty("aboutText");
        //String productBlurb = Platform.getResourceString(ProductPlugin.getDefault().getBundle(), "%productBlurb");
        bugzillaLink = new Link(container, SWT.NONE);
        String linkAddress = Platform.getResourceString(BugDataCollectorPlugin.getDefault().getBundle(),
                "%data.LinkUrl"); //$NON-NLS-1$
        String linkText = String.format(Messages.getString("BugDataCollectorPreferencePage.LinkText"), linkAddress); //$NON-NLS-1$
        bugzillaLink.setText(linkText);
        bugzillaLink.addListener(SWT.Selection, this);

        getPrefsStoreValues();

        PlatformUI.getWorkbench().getHelpSystem().setHelp(parent, HelpContextIDs.PREFERENCE_PAGE);

        return container;
    }

    /**
     * Called when "go to BugZilla main page" link is clicked.
     */
    public void handleEvent(Event event) {
        try {
            IWorkbench workbench = PlatformUI.getWorkbench();
            IWebBrowser browser = workbench.getBrowserSupport().getExternalBrowser();
            browser.openURL(new java.net.URL(event.text));
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    private void getPrefsStoreValues() {
        IPreferenceStore store = BugDataCollectorPlugin.getPrefsStore();
        String username = store.getString(BugDataCollectorPreferenceConstants.BR_USERNAME);
        emailText.setText(username);
        String password = store.getString(BugDataCollectorPreferenceConstants.BR_PASSWORD);
        DesEncrypter encrypter = new DesEncrypter();
        passwordText.setText(encrypter.decrypt(password));
        boolean sdk = store.getBoolean(BugDataCollectorPreferenceConstants.BR_SEND_SDK_INFO);
        sdkButton.setSelection(sdk);
        boolean diagnostic = store.getBoolean(BugDataCollectorPreferenceConstants.BR_SEND_DIAGNOSTIC_LOG);
        logButton.setSelection(diagnostic);
    }

    @Override
    public boolean performOk() {
        IPreferenceStore store = BugDataCollectorPlugin.getPrefsStore();

        store.setValue(BugDataCollectorPreferenceConstants.BR_USERNAME, emailText.getText().trim());
        DesEncrypter encrypter = new DesEncrypter();
        store.setValue(BugDataCollectorPreferenceConstants.BR_PASSWORD,
                encrypter.encrypt(passwordText.getText().trim()));
        store.setValue(BugDataCollectorPreferenceConstants.BR_SEND_SDK_INFO, sdkButton.getSelection());
        store.setValue(BugDataCollectorPreferenceConstants.BR_SEND_DIAGNOSTIC_LOG, logButton.getSelection());

        return super.performOk();
    }

    /**
     * Checks if username and password are set
     * @return true if username and password are set, false if not.
     */
    public static boolean hasUsernameAndPassword() {
        IPreferenceStore store = BugDataCollectorPlugin.getPrefsStore();
        String username = store.getString(BugDataCollectorPreferenceConstants.BR_USERNAME);
        String password = store.getString(BugDataCollectorPreferenceConstants.BR_PASSWORD);
        if (username != "" && password != "") //$NON-NLS-1$ //$NON-NLS-2$
            return true;
        return false;
    }

    /**
     * Shows the preference dialog with only this preference page 
     * available in the tree
     * @param shell 
     */
    public static void showYourself(Shell shell) {
        IPreferencePage page = new BugDataCollectorPreferencePage();
        PreferenceManager mgr = new PreferenceManager();
        IPreferenceNode node = new PreferenceNode("1", page); //$NON-NLS-1$
        mgr.addToRoot(node);
        PreferenceDialog dialog = new PreferenceDialog(shell, mgr);
        dialog.create();
        dialog.setMessage(page.getTitle());
        dialog.open();
    }

    /**
     * Returns the username
     * @return username
     */
    public static String getUsername() {
        IPreferenceStore store = BugDataCollectorPlugin.getPrefsStore();
        return store.getString(BugDataCollectorPreferenceConstants.BR_USERNAME);
    }

    /**
     * Returns the decrypted password.
     * @return decrypted password.
     */
    public static String getPassword() {
        IPreferenceStore store = BugDataCollectorPlugin.getPrefsStore();
        String password = store.getString(BugDataCollectorPreferenceConstants.BR_PASSWORD);
        DesEncrypter encrypter = new DesEncrypter();
        return encrypter.decrypt(password);
    }

    /**
     * Returns true if devices.xml is to be send with the report, false if not.
     * @return true if devices.xml is to be send with the report, false if not.
     */
    public static boolean sendSdkData() {
        IPreferenceStore store = BugDataCollectorPlugin.getPrefsStore();
        return store.getBoolean(BugDataCollectorPreferenceConstants.BR_SEND_SDK_INFO);
    }

    /**
     * Returns true if Carbide_Debugger_Log.xml is to be send with the report, false if not.
     * @return true if Carbide_Debugger_Log.xml is to be send with the report, false if not.
     */
    public static boolean sendDiagnostic() {
        IPreferenceStore store = BugDataCollectorPlugin.getPrefsStore();
        return store.getBoolean(BugDataCollectorPreferenceConstants.BR_SEND_DIAGNOSTIC_LOG);
    }
}