com.piece_framework.makegood.ui.preferences.MakeGoodPreferencePage.java Source code

Java tutorial

Introduction

Here is the source code for com.piece_framework.makegood.ui.preferences.MakeGoodPreferencePage.java

Source

/**
 * Copyright (c) 2010 MATSUFUJI Hideharu <matsufuji2008@gmail.com>,
 *               2011-2013 KUBO Atsuhiro <kubo@iteman.jp>,
 * All rights reserved.
 *
 * This file is part of MakeGood.
 *
 * 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
 */

package com.piece_framework.makegood.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.ui.IWorkbench;
import org.eclipse.ui.IWorkbenchPreferencePage;

import com.piece_framework.makegood.core.Activator;
import com.piece_framework.makegood.core.DefaultConfiguration;
import com.piece_framework.makegood.core.TestResultsLayout;
import com.piece_framework.makegood.core.continuoustesting.Scope;
import com.piece_framework.makegood.core.preference.MakeGoodPreference;
import com.piece_framework.makegood.ui.Messages;

public class MakeGoodPreferencePage extends PreferencePage implements IWorkbenchPreferencePage {
    /**
     * @since 2.3.0
     */
    private Button continuousTestingEnabledButton;

    /**
     * @since 2.3.0
     */
    private Button continuousTestingScopeAllTestsButton;

    /**
     * @since 2.3.0
     */
    private Button continuousTestingScopeLastTestButton;

    /**
     * @since 2.3.0
     */
    private Button continuousTestingFailedTestsButton;

    /**
     * @since 2.5.0
     */
    private Button testResultsLayoutTabButton;

    /**
     * @since 2.3.0
     */
    private Button testResultsLayoutHorizontalButton;

    @Override
    public void init(IWorkbench workbench) {
    }

    /**
     * @since 2.3.0
     */
    @Override
    protected Control createContents(Composite parent) {
        Composite contents = createComposite(parent);
        createContinuousTestingGroup(contents);
        createTestResultsLayoutGroup(contents);

        return contents;
    }

    /**
     * @since 2.3.0
     */
    @Override
    protected IPreferenceStore doGetPreferenceStore() {
        return Activator.getDefault().getPreferenceStore();
    }

    /**
     * @since 2.3.0
     */
    @Override
    protected void performDefaults() {
        DefaultConfiguration defaultConfiguration = new DefaultConfiguration();

        continuousTestingEnabledButton.setSelection(defaultConfiguration.getContinuousTesting().isEnabled());

        continuousTestingScopeAllTestsButton
                .setSelection(defaultConfiguration.getContinuousTesting().getScope() == Scope.ALL_TESTS);
        continuousTestingScopeLastTestButton
                .setSelection(defaultConfiguration.getContinuousTesting().getScope() == Scope.LAST_TEST);
        continuousTestingFailedTestsButton
                .setSelection(defaultConfiguration.getContinuousTesting().getScope() == Scope.FAILED_TESTS);

        testResultsLayoutTabButton
                .setSelection(defaultConfiguration.getTestResultsLayout() == TestResultsLayout.TAB);
        testResultsLayoutHorizontalButton
                .setSelection(defaultConfiguration.getTestResultsLayout() == TestResultsLayout.HORIZONTAL);

        super.performDefaults();
    }

    /**
     * @since 2.3.0
     */
    @Override
    public boolean performOk() {
        MakeGoodPreference preference = new MakeGoodPreference();

        preference.setContinuousTestingEnabled(continuousTestingEnabledButton.getSelection());

        if (continuousTestingScopeAllTestsButton.getSelection()) {
            preference.setContinuousTestingScope(Scope.ALL_TESTS);
        } else if (continuousTestingScopeLastTestButton.getSelection()) {
            preference.setContinuousTestingScope(Scope.LAST_TEST);
        } else if (continuousTestingFailedTestsButton.getSelection()) {
            preference.setContinuousTestingScope(Scope.FAILED_TESTS);
        }

        if (testResultsLayoutTabButton.getSelection()) {
            preference.setTestResultsLayout(TestResultsLayout.TAB);
        } else if (testResultsLayoutHorizontalButton.getSelection()) {
            preference.setTestResultsLayout(TestResultsLayout.HORIZONTAL);
        }

        return true;
    }

    /**
     * @since 2.3.0
     */
    private Composite createComposite(Composite parent) {
        Composite composite = new Composite(parent, SWT.NONE);
        GridLayout layout = new GridLayout();
        layout.marginWidth = 0;
        layout.marginHeight = 0;
        composite.setLayout(layout);
        composite.setLayoutData(new GridData(GridData.VERTICAL_ALIGN_FILL | GridData.HORIZONTAL_ALIGN_FILL));

        return composite;
    }

    /**
     * @since 2.3.0
     */
    private Group createContinuousTestingGroup(Composite parent) {
        Group continuousTestingGroup = new Group(parent, SWT.LEFT);
        continuousTestingGroup.setLayout(new GridLayout());
        continuousTestingGroup
                .setLayoutData(new GridData(GridData.HORIZONTAL_ALIGN_FILL | GridData.GRAB_HORIZONTAL));
        continuousTestingGroup.setText(Messages.MakeGoodPreferencePage_continuousTestingGroupLabel);

        continuousTestingEnabledButton = createContinuousTestingEnabledButton(continuousTestingGroup);

        continuousTestingScopeAllTestsButton = createContinuousTestingScopeAlltestsButton(continuousTestingGroup);
        continuousTestingScopeAllTestsButton.setLayoutData(createIndentedLayoutData());
        continuousTestingScopeLastTestButton = createContinuousTestingScopeLastTestButton(continuousTestingGroup);
        continuousTestingScopeLastTestButton.setLayoutData(createIndentedLayoutData());
        continuousTestingFailedTestsButton = createContinuousTestingScopeFailedTestsButton(continuousTestingGroup);
        continuousTestingFailedTestsButton.setLayoutData(createIndentedLayoutData());

        return continuousTestingGroup;
    }

    /**
     * @since 2.3.0
     */
    private Button createContinuousTestingEnabledButton(Composite parent) {
        Button button = new Button(parent, SWT.CHECK);
        button.setText(Messages.MakeGoodPreferencePage_continuousTestingEnabledLabel);
        button.setSelection(new MakeGoodPreference().getContinuousTestingEnabled());

        return button;
    }

    /**
     * @since 2.3.0
     */
    private Button createContinuousTestingScopeAlltestsButton(Composite parent) {
        Button button = new Button(parent, SWT.RADIO);
        button.setText(Messages.MakeGoodPreferencePage_continuousTestingScopeAllTestsLabel);
        button.setSelection(new MakeGoodPreference().getContinuousTestingScope() == Scope.ALL_TESTS);

        return button;
    }

    /**
     * @since 2.3.0
     */
    private Button createContinuousTestingScopeLastTestButton(Composite parent) {
        Button button = new Button(parent, SWT.RADIO);
        button.setText(Messages.MakeGoodPreferencePage_continuousTestingScopeLastTestLabel);
        button.setSelection(new MakeGoodPreference().getContinuousTestingScope() == Scope.LAST_TEST);

        return button;
    }

    /**
     * @since 2.3.0
     */
    private Button createContinuousTestingScopeFailedTestsButton(Composite parent) {
        Button button = new Button(parent, SWT.RADIO);
        button.setText(Messages.MakeGoodPreferencePage_continuousTestingScopeFailedTestsLabel);
        button.setSelection(new MakeGoodPreference().getContinuousTestingScope() == Scope.FAILED_TESTS);

        return button;
    }

    /**
     * @since 2.3.0
     */
    private GridData createIndentedLayoutData() {
        GridData layoutData = new GridData();
        layoutData.horizontalIndent = 20;

        return layoutData;
    }

    /**
     * @since 2.5.0
     */
    private Group createTestResultsLayoutGroup(Composite parent) {
        Group testResultsLayoutGroup = new Group(parent, SWT.LEFT);
        testResultsLayoutGroup.setLayout(new GridLayout());
        testResultsLayoutGroup
                .setLayoutData(new GridData(GridData.HORIZONTAL_ALIGN_FILL | GridData.GRAB_HORIZONTAL));
        testResultsLayoutGroup.setText(Messages.MakeGoodPreferencePage_testResultsLayoutGroupLabel);

        testResultsLayoutTabButton = createTestResultsLayoutTabButton(testResultsLayoutGroup);
        testResultsLayoutHorizontalButton = createTestResultsLayoutHorizontalButton(testResultsLayoutGroup);

        return testResultsLayoutGroup;
    }

    /**
     * @since 2.5.0
     */
    private Button createTestResultsLayoutTabButton(Composite parent) {
        Button button = new Button(parent, SWT.RADIO);
        button.setText(Messages.MakeGoodPreferencePage_testResultsLayoutTabLabel);
        button.setSelection(new MakeGoodPreference().getTestResultsLayout() == TestResultsLayout.TAB);

        return button;
    }

    /**
     * @since 2.5.0
     */
    private Button createTestResultsLayoutHorizontalButton(Composite parent) {
        Button button = new Button(parent, SWT.RADIO);
        button.setText(Messages.MakeGoodPreferencePage_testResultsLayoutHorizontalLabel);
        button.setSelection(new MakeGoodPreference().getTestResultsLayout() == TestResultsLayout.HORIZONTAL);

        return button;
    }
}