org.tigris.subversion.subclipse.ui.preferences.SVNMenuIconsPreferencesPage.java Source code

Java tutorial

Introduction

Here is the source code for org.tigris.subversion.subclipse.ui.preferences.SVNMenuIconsPreferencesPage.java

Source

/*******************************************************************************
 * Copyright (c) 2003, 2006 Subclipse project and others.
 * All rights reserved. This program and the accompanying materials
 * are made available under the terms of the Eclipse Public License v1.0
 * which accompanies this distribution, and is available at
 * http://www.eclipse.org/legal/epl-v10.html
 *
 * Contributors:
 *     Subclipse project committers - initial API and implementation
 ******************************************************************************/
package org.tigris.subversion.subclipse.ui.preferences;

import org.eclipse.jface.preference.IPreferenceStore;
import org.eclipse.jface.preference.PreferencePage;
import org.eclipse.swt.SWT;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Control;
import org.eclipse.swt.widgets.Group;
import org.eclipse.swt.widgets.Label;
import org.eclipse.ui.IWorkbench;
import org.eclipse.ui.IWorkbenchPreferencePage;
import org.tigris.subversion.subclipse.ui.ISVNUIConstants;
import org.tigris.subversion.subclipse.ui.Policy;
import org.tigris.subversion.subclipse.ui.SVNUIPlugin;

/**
 * SVN Preference Page
 * 
 * Allows the configuration of SVN specific options.
 * 
 */
public class SVNMenuIconsPreferencesPage extends PreferencePage implements IWorkbenchPreferencePage {

    private Button useDefault;
    private Button useTortoiseSVN;
    private Button useSubversive;

    /**
     * Utility method that creates a label instance
     * and sets the default layout data.
     *
     * @param parent  the parent for the new label
     * @param text  the text for the new label
     * @return the new label
     */
    private Label createLabel(Composite parent, String text, int horizontalSpan) {
        Label label = new Label(parent, SWT.LEFT);
        label.setText(text);
        GridData data = new GridData();
        data.horizontalSpan = horizontalSpan;
        data.horizontalAlignment = GridData.FILL;
        label.setLayoutData(data);
        return label;
    }

    private Button createRadio(Composite group, String label, int horizontalSpan) {
        Button button = new Button(group, SWT.RADIO);
        button.setText(label);
        GridData data = new GridData();
        data.horizontalSpan = horizontalSpan;
        button.setLayoutData(data);
        return button;
    }

    /**
     * @see PreferencePage#createContents(Composite)
     */
    protected Control createContents(Composite parent) {

        // create the composite
        Composite composite = new Composite(parent, SWT.NULL);
        GridData gridData = new GridData(GridData.FILL_HORIZONTAL);
        composite.setLayoutData(gridData);
        GridLayout layout = new GridLayout();
        layout.numColumns = 2;
        composite.setLayout(layout);

        Group group = new Group(composite, SWT.NULL);
        group.setText(Policy.bind("MenuIconsPreferencePage.iconSet")); //$NON-NLS-1$
        gridData = new GridData(GridData.FILL_HORIZONTAL);
        gridData.horizontalSpan = 2;
        group.setLayoutData(gridData);
        layout = new GridLayout();
        group.setLayout(layout);

        useDefault = createRadio(group, Policy.bind("MenuIconsPreferencePage.default"), 1); //$NON-NLS-1$
        useTortoiseSVN = createRadio(group, "&TortoiseSVN", 1); //$NON-NLS-1$
        useSubversive = createRadio(group, "&Subversive", 1); //$NON-NLS-1$

        createLabel(composite, "", 2); //$NON-NLS-1$
        createLabel(composite, Policy.bind("MenuIconsPreferencePage.restart"), 2); //$NON-NLS-1$

        initializeValues();
        verifyValidation();

        //      PlatformUI.getWorkbench().getHelpSystem().setHelp(getControl(), IHelpContextIds.SVN_PREFERENCE_DIALOG);

        return composite;
    }

    /**
     * Initializes states of the controls from the preference store.
     */
    private void initializeValues() {
        IPreferenceStore store = getPreferenceStore();

        int iconSet = store.getInt(ISVNUIConstants.PREF_MENU_ICON_SET);
        useTortoiseSVN.setSelection(ISVNUIConstants.MENU_ICON_SET_TORTOISESVN == iconSet);
        useDefault.setSelection(ISVNUIConstants.MENU_ICON_SET_DEFAULT == iconSet);
        useSubversive.setSelection(ISVNUIConstants.MENU_ICON_SET_SUBVERSIVE == iconSet);
    }

    /**
    * @see IWorkbenchPreferencePage#init(IWorkbench)
    */
    public void init(IWorkbench workbench) {
    }

    /**
     * OK was clicked. Store the SVN preferences.  
     *
     * @return whether it is okay to close the preference page
     */
    public boolean performOk() {
        IPreferenceStore store = getPreferenceStore();

        if (useDefault.getSelection()) {
            store.setValue(ISVNUIConstants.PREF_MENU_ICON_SET, ISVNUIConstants.MENU_ICON_SET_DEFAULT);
        } else if (useTortoiseSVN.getSelection()) {
            store.setValue(ISVNUIConstants.PREF_MENU_ICON_SET, ISVNUIConstants.MENU_ICON_SET_TORTOISESVN);
        } else if (useSubversive.getSelection()) {
            store.setValue(ISVNUIConstants.PREF_MENU_ICON_SET, ISVNUIConstants.MENU_ICON_SET_SUBVERSIVE);
        }

        SVNUIPlugin.getPlugin().savePluginPreferences();

        return true;
    }

    /**
     * Defaults was clicked. Restore the SVN preferences to
     * their default values
     */
    protected void performDefaults() {
        super.performDefaults();

        IPreferenceStore store = getPreferenceStore();

        int iconSet = store.getDefaultInt(ISVNUIConstants.PREF_MENU_ICON_SET);
        useTortoiseSVN.setSelection(ISVNUIConstants.MENU_ICON_SET_TORTOISESVN == iconSet);
        useDefault.setSelection(ISVNUIConstants.MENU_ICON_SET_DEFAULT == iconSet);
        useDefault.setSelection(ISVNUIConstants.MENU_ICON_SET_SUBVERSIVE == iconSet);

        verifyValidation();
    }

    /*
     *  (non-Javadoc)
     * @see org.eclipse.jface.preference.PreferencePage#doGetPreferenceStore()
     */
    protected IPreferenceStore doGetPreferenceStore() {
        return SVNUIPlugin.getPlugin().getPreferenceStore();
    }

    /**
     * Verify the selection of the interface method
     */
    private void verifyValidation() {
        setErrorMessage(null);
        setValid(getErrorMessage() == null);
    }

}