org.springsource.ide.eclipse.commons.ui.PreferencesCurator.java Source code

Java tutorial

Introduction

Here is the source code for org.springsource.ide.eclipse.commons.ui.PreferencesCurator.java

Source

/*******************************************************************************
 * Copyright (c) 2013 Pivotal Software, Inc.
 * 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:
 *     Pivotal Software, Inc. - initial API and implementation
 *******************************************************************************/
package org.springsource.ide.eclipse.commons.ui;

import org.eclipse.core.runtime.Platform;
import org.eclipse.jface.preference.PreferencePage;
import org.eclipse.jface.resource.JFaceResources;
import org.eclipse.swt.SWT;
import org.eclipse.swt.events.SelectionAdapter;
import org.eclipse.swt.events.SelectionEvent;
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.Label;
import org.eclipse.ui.IWorkbench;
import org.eclipse.ui.IWorkbenchPreferencePage;
import org.eclipse.ui.dialogs.PreferenceLinkArea;
import org.eclipse.ui.preferences.IWorkbenchPreferenceContainer;
import org.springsource.ide.eclipse.commons.core.preferences.GlobalPreferenceEnhancer;

/**
 * This preferences page provides a shortcut for setting a group of preferences
 * that we believe make Eclipse more awesome
 *
 * @author Andrew Eisenberg
 * @since 3.3.0
 */
public class PreferencesCurator extends PreferencePage implements IWorkbenchPreferencePage {

    public final static String PREF_DIALOG_ID = "org.springsource.ide.eclipse.commons.curatorPreferencesPage";

    public PreferencesCurator() {
        super("Global Preferences Curator");
    }

    public void init(IWorkbench workbench) {
        noDefaultAndApplyButton();
        setDescription("Sets/unsets a bunch of preferences that makes Eclipse more awesome");
    }

    @Override
    protected Control createContents(Composite parent) {
        Composite contents = new Composite(parent, SWT.NONE);
        contents.setLayout(new GridLayout(1, true));

        Label desc = new Label(contents, SWT.WRAP);
        desc.setLayoutData(new GridData(SWT.BEGINNING, SWT.CENTER, false, false));
        desc.setText("We have scoured the Eclipse preferences pages and determined a handful of preferences\n"
                + "that are not set in an optimal way.  Do you trust us?");

        Composite allComposite = new Composite(contents, SWT.BORDER);
        allComposite.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
        allComposite.setLayout(new GridLayout(1, false));
        Label label = new Label(allComposite, SWT.NONE);
        label.setLayoutData(new GridData(SWT.BEGINNING, SWT.CENTER, false, false));
        label.setText("Set/Reset all curated preferences.");
        label.setFont(JFaceResources.getFontRegistry().getBold(JFaceResources.DIALOG_FONT));
        Button allSetButton = new Button(allComposite, SWT.PUSH);
        allSetButton.setLayoutData(new GridData(SWT.BEGINNING, SWT.CENTER, false, false));
        allSetButton.setText("Set all preferences");
        allSetButton.addSelectionListener(new SelectionAdapter() {
            @Override
            public void widgetSelected(SelectionEvent e) {
                new GlobalPreferenceEnhancer().enhanceAllPreferences();
            }
        });
        Button allUnsetButton = new Button(allComposite, SWT.PUSH);
        allUnsetButton.setLayoutData(new GridData(SWT.BEGINNING, SWT.CENTER, false, false));
        allUnsetButton.setText("Reset all preferences");
        allUnsetButton.addSelectionListener(new SelectionAdapter() {
            @Override
            public void widgetSelected(SelectionEvent e) {
                new GlobalPreferenceEnhancer().undoAll();
            }
        });

        Composite jdtComposite = new Composite(contents, SWT.BORDER);
        jdtComposite.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
        jdtComposite.setLayout(new GridLayout(1, false));
        Label jdtLabel = new Label(jdtComposite, SWT.NONE);
        jdtLabel.setLayoutData(new GridData(SWT.BEGINNING, SWT.CENTER, false, false));
        jdtLabel.setText("JDT preferences");
        jdtLabel.setFont(JFaceResources.getFontRegistry().getBold(JFaceResources.DIALOG_FONT));
        Label jdtLabelExplanation = new Label(jdtComposite, SWT.NONE);
        jdtLabelExplanation.setLayoutData(new GridData(SWT.BEGINNING, SWT.LEFT, false, false));
        jdtLabelExplanation.setText("We set the following JDT preferences:\n" + "* Editor smart paste (true)\n"
                + "* Editor smart semicolon placement (true)\n" + "* Editor smart opening brace placement (true)\n"
                + "* Editor smart backspace (true)\n" + "* Editor smart tab (true)\n"
                + "* Escape text when pasting into a string literal (true)\n"
                + "* Auto activation delay (40 ms)\n");
        //            + "* Auto activation triggers for Java (._abcdefghijklmnopqrstuvwxyz)\n");
        Button jdtSetButton = new Button(jdtComposite, SWT.PUSH);
        jdtSetButton.setLayoutData(new GridData(SWT.BEGINNING, SWT.CENTER, false, false));
        jdtSetButton.setText("Set JDT preferences only");
        jdtSetButton.addSelectionListener(new SelectionAdapter() {
            @Override
            public void widgetSelected(SelectionEvent e) {
                new GlobalPreferenceEnhancer().enhanceJDTPreferences();
            }
        });
        Button jdtUnsetButton = new Button(jdtComposite, SWT.PUSH);
        jdtUnsetButton.setLayoutData(new GridData(SWT.BEGINNING, SWT.CENTER, false, false));
        jdtUnsetButton.setText("Reset JDT preferences only");
        jdtUnsetButton.addSelectionListener(new SelectionAdapter() {
            @Override
            public void widgetSelected(SelectionEvent e) {
                new GlobalPreferenceEnhancer().undoJDTEnhance();
            }
        });
        PreferenceLinkArea jdtEditorArea = new PreferenceLinkArea(jdtComposite, SWT.WRAP,
                "org.eclipse.jdt.ui.preferences.SmartTypingPreferencePage",
                "Go to the <a>JDT smart typing preferences page</a>",
                (IWorkbenchPreferenceContainer) getContainer(), null);
        GridData data = new GridData(SWT.FILL, SWT.CENTER, false, false);
        jdtEditorArea.getControl().setLayoutData(data);
        PreferenceLinkArea jdtContentAssistArea = new PreferenceLinkArea(jdtComposite, SWT.WRAP,
                "org.eclipse.jdt.ui.preferences.CodeAssistPreferencePage",
                "Go to the <a>JDT content assist preferences page</a>",
                (IWorkbenchPreferenceContainer) getContainer(), null);
        data = new GridData(SWT.FILL, SWT.CENTER, false, false);
        jdtContentAssistArea.getControl().setLayoutData(data);

        Composite m2eComposite = new Composite(contents, SWT.BORDER);
        m2eComposite.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
        m2eComposite.setLayout(new GridLayout(1, false));
        Label m2eLabel = new Label(m2eComposite, SWT.NONE);
        m2eLabel.setLayoutData(new GridData(SWT.BEGINNING, SWT.CENTER, false, false));
        m2eLabel.setText("M2E preferences");
        m2eLabel.setFont(JFaceResources.getFontRegistry().getBold(JFaceResources.DIALOG_FONT));
        Label m2eLabelExplanation = new Label(m2eComposite, SWT.NONE);
        m2eLabelExplanation.setLayoutData(new GridData(SWT.BEGINNING, SWT.LEFT, false, false));
        m2eLabelExplanation.setText(
                "We set the following M2E preferences:\n" + "* Hide folders of physically nested projects (true)\n"
                        + "* Download repository updates on startup (false)\n"
                        + "* Open XML page in pom editor by default (true)");
        Button m2eSetButton = new Button(m2eComposite, SWT.PUSH);
        m2eSetButton.setLayoutData(new GridData(SWT.BEGINNING, SWT.CENTER, false, false));
        m2eSetButton.setText("Set M2E preferences only");
        m2eSetButton.addSelectionListener(new SelectionAdapter() {
            @Override
            public void widgetSelected(SelectionEvent e) {
                new GlobalPreferenceEnhancer().enhanceM2EPreferences();
            }
        });
        Button m2eUnsetButton = new Button(m2eComposite, SWT.PUSH);
        m2eUnsetButton.setLayoutData(new GridData(SWT.BEGINNING, SWT.CENTER, false, false));
        m2eUnsetButton.setText("Reset M2E preferences only");
        m2eUnsetButton.addSelectionListener(new SelectionAdapter() {
            @Override
            public void widgetSelected(SelectionEvent e) {
                new GlobalPreferenceEnhancer().undoJDTEnhance();
            }
        });
        PreferenceLinkArea m2eArea = new PreferenceLinkArea(m2eComposite, SWT.WRAP,
                "org.eclipse.m2e.core.preferences.Maven2PreferencePage", "Go to the <a>M2E preferences page</a>",
                (IWorkbenchPreferenceContainer) getContainer(), null);
        data = new GridData(SWT.FILL, SWT.CENTER, false, false);
        m2eArea.getControl().setLayoutData(data);
        PreferenceLinkArea m2eUIArea = new PreferenceLinkArea(m2eComposite, SWT.WRAP,
                "org.eclipse.m2e.core.ui.preferences.UserInterfacePreferencePage",
                "Go to the <a>M2E UI preferences page</a>", (IWorkbenchPreferenceContainer) getContainer(), null);
        data = new GridData(SWT.FILL, SWT.CENTER, false, false);
        m2eUIArea.getControl().setLayoutData(data);

        // disable m2e components if it is not installed
        if (Platform.getBundle("org.eclipse.m2e.core") == null) {
            m2eComposite.setEnabled(false);
            m2eLabel.setText(m2eLabel.getText() + " (not installed)");
            m2eSetButton.setEnabled(false);
            m2eUnsetButton.setEnabled(false);
            m2eUIArea.getControl().setEnabled(false);
            m2eArea.getControl().setEnabled(false);
        }

        return contents;
    }
}