com.microsoft.tfs.client.common.ui.prefs.TFSGlobalProxiesPreferencePage.java Source code

Java tutorial

Introduction

Here is the source code for com.microsoft.tfs.client.common.ui.prefs.TFSGlobalProxiesPreferencePage.java

Source

// Copyright (c) Microsoft. All rights reserved.
// Licensed under the MIT license. See License.txt in the repository root.

package com.microsoft.tfs.client.common.ui.prefs;

import org.eclipse.core.runtime.Preferences;
import org.eclipse.jface.preference.PreferencePage;
import org.eclipse.swt.SWT;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Control;
import org.eclipse.ui.IWorkbench;
import org.eclipse.ui.IWorkbenchPreferencePage;

import com.microsoft.tfs.client.common.codemarker.CodeMarkerDispatch;
import com.microsoft.tfs.client.common.ui.TFSCommonUIClientPlugin;
import com.microsoft.tfs.client.common.ui.controls.connect.TFSGlobalProxiesControl;
import com.microsoft.tfs.client.common.ui.controls.connect.TFSGlobalProxiesControl.TFSGlobalProxySettings;
import com.microsoft.tfs.client.common.ui.framework.validation.PreferencePageValidatorBinding;
import com.microsoft.tfs.client.common.ui.helpers.AutomationIDHelper;

public class TFSGlobalProxiesPreferencePage extends PreferencePage implements IWorkbenchPreferencePage {
    public static final String TFS_GLOBAL_PROXIES_CONTROL_ID = "TFSGlobalProxiesPreferencePage.proxiesControl"; //$NON-NLS-1$

    public static final String HTTP_PROXY_PREFIX = "httpProxy."; //$NON-NLS-1$
    public static final String TFS_PROXY_PREFIX = "tfsProxy."; //$NON-NLS-1$

    public static final String HTTP_PROXY_ENABLED = HTTP_PROXY_PREFIX + "enable"; //$NON-NLS-1$
    public static final String HTTP_PROXY_URL = HTTP_PROXY_PREFIX + "url"; //$NON-NLS-1$
    public static final String HTTP_PROXY_DEFAULT_CREDENTIALS = HTTP_PROXY_PREFIX + "defaultCredentials"; //$NON-NLS-1$
    public static final String HTTP_PROXY_USERNAME = HTTP_PROXY_PREFIX + "username"; //$NON-NLS-1$
    public static final String HTTP_PROXY_DOMAIN = HTTP_PROXY_PREFIX + "domain"; //$NON-NLS-1$
    public static final String HTTP_PROXY_PASSWORD = HTTP_PROXY_PREFIX + "password"; //$NON-NLS-1$
    public static final String TFS_PROXY_ENABLED = TFS_PROXY_PREFIX + "enable"; //$NON-NLS-1$
    public static final String TFS_PROXY_URL = TFS_PROXY_PREFIX + "url"; //$NON-NLS-1$

    private TFSGlobalProxiesControl control;

    @Override
    protected Control createContents(final Composite parent) {
        control = new TFSGlobalProxiesControl(parent, SWT.NONE, getContainer());
        AutomationIDHelper.setWidgetID(control, TFS_GLOBAL_PROXIES_CONTROL_ID);

        new PreferencePageValidatorBinding(this).bind(control);

        control.setSettings(getCurrentSettings());

        return control;
    }

    @Override
    protected void performDefaults() {
        control.setSettings(getDefaultSettings());
        super.performDefaults();
    }

    @Override
    public boolean performOk() {
        setSettings(control.getSettings());
        return super.performOk();
    }

    private void setSettings(final TFSGlobalProxySettings settings) {
        final Preferences preferences = TFSCommonUIClientPlugin.getDefault().getPluginPreferences();

        final boolean useHttpProxy = settings.isUseHTTPProxy();
        String httpProxyUrl = settings.getHTTPProxyURL();
        final boolean useHttpProxyDefaultCredentials = settings.isUseHTTPProxyDefaultCredentials();
        String httpProxyUsername = settings.getHTTPProxyUsername();
        String httpProxyPassword = settings.getHTTPProxyPassword();
        final boolean useTfProxy = settings.isUseTFProxy();
        String tfProxyUrl = settings.getTFProxyURL();

        httpProxyUrl = normalizeStringForPreferences(httpProxyUrl);
        httpProxyUsername = normalizeStringForPreferences(httpProxyUsername);
        httpProxyPassword = normalizeStringForPreferences(httpProxyPassword);
        tfProxyUrl = normalizeStringForPreferences(tfProxyUrl);

        preferences.setValue(HTTP_PROXY_ENABLED, useHttpProxy);
        preferences.setValue(HTTP_PROXY_URL, httpProxyUrl);
        preferences.setValue(HTTP_PROXY_DEFAULT_CREDENTIALS, useHttpProxyDefaultCredentials);
        preferences.setValue(HTTP_PROXY_USERNAME, httpProxyUsername);
        preferences.setValue(HTTP_PROXY_PASSWORD, httpProxyPassword);
        preferences.setValue(TFS_PROXY_ENABLED, useTfProxy);
        preferences.setValue(TFS_PROXY_URL, tfProxyUrl);
    }

    private String normalizeStringForPreferences(final String input) {
        return input == null ? "" : input; //$NON-NLS-1$
    }

    private TFSGlobalProxySettings getCurrentSettings() {
        final Preferences preferences = TFSCommonUIClientPlugin.getDefault().getPluginPreferences();

        final boolean useHttpProxy = preferences.getBoolean(HTTP_PROXY_ENABLED);
        final String httpProxyUrl = preferences.getString(HTTP_PROXY_URL);
        final boolean useHttpProxyDefaultCredentials = preferences.getBoolean(HTTP_PROXY_DEFAULT_CREDENTIALS);
        final String httpProxyUsername = preferences.getString(HTTP_PROXY_USERNAME);
        final String httpProxyDomain = preferences.getString(HTTP_PROXY_DOMAIN);
        final String httpProxyPassword = preferences.getString(HTTP_PROXY_PASSWORD);
        final boolean useTfProxy = preferences.getBoolean(TFS_PROXY_ENABLED);
        final String tfProxyUrl = preferences.getString(TFS_PROXY_URL);

        return new TFSGlobalProxySettings(useHttpProxy, httpProxyUrl, useHttpProxyDefaultCredentials,
                httpProxyUsername, httpProxyDomain, httpProxyPassword, useTfProxy, tfProxyUrl);
    }

    private TFSGlobalProxySettings getDefaultSettings() {
        final Preferences preferences = TFSCommonUIClientPlugin.getDefault().getPluginPreferences();

        final boolean useHttpProxy = preferences.getDefaultBoolean(HTTP_PROXY_ENABLED);
        final String httpProxyUrl = preferences.getDefaultString(HTTP_PROXY_URL);
        final boolean useHttpProxyDefaultCredentials = preferences
                .getDefaultBoolean(HTTP_PROXY_DEFAULT_CREDENTIALS);
        final String httpProxyUsername = preferences.getDefaultString(HTTP_PROXY_USERNAME);
        final String httpProxyDomain = preferences.getDefaultString(HTTP_PROXY_DOMAIN);
        final String httpProxyPassword = preferences.getDefaultString(HTTP_PROXY_PASSWORD);
        final boolean useTfProxy = preferences.getDefaultBoolean(TFS_PROXY_ENABLED);
        final String tfProxyUrl = preferences.getDefaultString(TFS_PROXY_URL);

        return new TFSGlobalProxySettings(useHttpProxy, httpProxyUrl, useHttpProxyDefaultCredentials,
                httpProxyUsername, httpProxyDomain, httpProxyPassword, useTfProxy, tfProxyUrl);
    }

    @Override
    public void init(final IWorkbench workbench) {

    }

    /**
     * {@inheritDoc}
     */
    @Override
    public void setVisible(final boolean visible) {
        super.setVisible(visible);

        CodeMarkerDispatch.dispatch(
                visible ? BasePreferencePage.CODEMARKER_VISIBLE_TRUE : BasePreferencePage.CODEMARKER_VISIBLE_FALSE);
    }
}