net.sf.webcat.eclipse.cxxtest.preferences.CxxTestPreferencePage.java Source code

Java tutorial

Introduction

Here is the source code for net.sf.webcat.eclipse.cxxtest.preferences.CxxTestPreferencePage.java

Source

/*==========================================================================*\
 |  $Id$
 |*-------------------------------------------------------------------------*|
 |  Copyright (C) 2006-2009 Virginia Tech 
 |
 |   This file is part of Web-CAT Eclipse Plugins.
 |
 |   Web-CAT is free software; you can redistribute it and/or modify
 |   it under the terms of the GNU General Public License as published by
 |   the Free Software Foundation; either version 2 of the License, or
 |   (at your option) any later version.
 |
 |   Web-CAT is distributed in the hope that it will be useful,
 |   but WITHOUT ANY WARRANTY; without even the implied warranty of
 |   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 |   GNU General Public License for more details.
 |
 |   You should have received a copy of the GNU General Public License
 |   along with Web-CAT; if not, see <http://www.gnu.org/licenses/>.
\*==========================================================================*/

package net.sf.webcat.eclipse.cxxtest.preferences;

import net.sf.webcat.eclipse.cxxtest.CxxTestPlugin;
import net.sf.webcat.eclipse.cxxtest.i18n.Messages;
import net.sf.webcat.eclipse.cxxtest.internal.StackTraceDependencyChecker;

import org.eclipse.jface.preference.BooleanFieldEditor;
import org.eclipse.jface.preference.FieldEditorPreferencePage;
import org.eclipse.jface.preference.IPreferenceStore;
import org.eclipse.jface.preference.StringFieldEditor;
import org.eclipse.ui.IWorkbench;
import org.eclipse.ui.IWorkbenchPreferencePage;

/**
 * The preference page used to edit CxxTest settings.
 * 
 * @author  Tony Allevato (Virginia Tech Computer Science)
 * @author  latest changes by: $Author$
 * @version $Revision$ $Date$
 */
public class CxxTestPreferencePage extends FieldEditorPreferencePage implements IWorkbenchPreferencePage {
    public CxxTestPreferencePage() {
        super(FieldEditorPreferencePage.GRID);
    }

    public IPreferenceStore doGetPreferenceStore() {
        return CxxTestPlugin.getDefault().getPreferenceStore();
    }

    /**
     * Creates the field editors. Field editors are abstractions of the common
     * GUI blocks needed to manipulate various types of preferences. Each field
     * editor knows how to save and restore itself.
     */
    public void createFieldEditors() {
        addField(new StringFieldEditor(CxxTestPlugin.CXXTEST_PREF_DRIVER_FILENAME,
                Messages.CxxTestPreferencePage_GeneratedDriverFileName, getFieldEditorParent()));

        // TODO: re-enable this later by using conditional code to include
        // Dereferee in the test runner.

        //      addField(new BooleanFieldEditor(CxxTestPlugin.CXXTEST_PREF_TRACK_HEAP,
        //            Messages.CxxTestPreferencePage_EnableBasicHeapChecking, getFieldEditorParent()));

        addField(new BooleanFieldEditor(CxxTestPlugin.CXXTEST_PREF_TRAP_SIGNALS,
                Messages.CxxTestPreferencePage_TrapSignals, getFieldEditorParent()));

        final CancelableBooleanFieldEditor editor;
        editor = new CancelableBooleanFieldEditor(CxxTestPlugin.CXXTEST_PREF_TRACE_STACK,
                Messages.CxxTestPreferencePage_GenerateStackTraces, getFieldEditorParent());

        editor.setCancelableListener(new ICancelableBooleanListener() {
            public boolean shouldDenyChange(boolean newValue) {
                if (newValue == true) {
                    boolean found = checkForRequiredLibraries();
                    if (!found) {
                        return true;
                    }
                }

                return false;
            }
        });

        addField(editor);
    }

    private boolean checkForRequiredLibraries() {
        return StackTraceDependencyChecker.checkForDependencies(true);
    }

    public void init(IWorkbench workbench) {
    }
}