com.nextep.designer.sqlclient.ui.preferences.SQLClientPreferencePage.java Source code

Java tutorial

Introduction

Here is the source code for com.nextep.designer.sqlclient.ui.preferences.SQLClientPreferencePage.java

Source

/*******************************************************************************
 * Copyright (c) 2011 neXtep Software and contributors.
 * All rights reserved.
 *
 * This file is part of neXtep designer.
 *
 * NeXtep designer 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 3 of the License, or any later version.
 *
 * NeXtep designer 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 Foobar.  If not, see <http://www.gnu.org/licenses/>.
 *
 * Contributors:
 *     neXtep Softwares - initial API and implementation
 *******************************************************************************/
package com.nextep.designer.sqlclient.ui.preferences;

import java.text.SimpleDateFormat;
import org.eclipse.jface.preference.FieldEditorPreferencePage;
import org.eclipse.jface.preference.StringFieldEditor;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.ui.IWorkbench;
import org.eclipse.ui.IWorkbenchPreferencePage;
import com.nextep.designer.sqlclient.ui.SQLClientPlugin;

/**
 * This class represents a preference page that is contributed to the Preferences dialog. By
 * subclassing <samp>FieldEditorPreferencePage</samp>, we can use the field support built into JFace
 * that allows us to create a page that is small and knows how to save, restore and apply itself.
 * <p>
 * This page is used to modify preferences only. They are stored in the preference store that
 * belongs to the main plug-in class. That way, preferences can be accessed directly via the
 * preference store.
 */

public class SQLClientPreferencePage extends FieldEditorPreferencePage implements IWorkbenchPreferencePage {

    public SQLClientPreferencePage() {
        super(GRID);
        setPreferenceStore(SQLClientPlugin.getDefault().getPreferenceStore());
        setDescription("SQL Client preference customization");
    }

    private class DateFormatFieldEditor extends StringFieldEditor {

        public DateFormatFieldEditor(String pref, String label, Composite parent) {
            super(pref, label, parent);
            setValidateStrategy(VALIDATE_ON_KEY_STROKE);
        }

        @Override
        protected boolean doCheckState() {
            final String pattern = getTextControl().getText();
            try {
                new SimpleDateFormat(pattern);
                return true;
            } catch (IllegalArgumentException e) {
                setErrorMessage("Date format pattern is not valid: " + e.getMessage());
                return false;
            }
        }
    }

    /**
     * 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 DirectoryFieldEditor(PreferenceConstants.P_PATH, "&Directory preference:",
        // getFieldEditorParent()));
        // addField(new BooleanFieldEditor(PreferenceConstants.P_BOOLEAN,
        // "&An example of a boolean preference", getFieldEditorParent()));
        //
        // addField(new RadioGroupFieldEditor(PreferenceConstants.P_CHOICE,
        // "An example of a multiple-choice preference", 1, new String[][] {
        // { "&Choice 1", "choice1" }, { "C&hoice 2", "choice2" } },
        // getFieldEditorParent()));
        // addField(new StringFieldEditor(PreferenceConstants.P_STRING, "A &text preference:",
        // getFieldEditorParent()));
        addField(new DateFormatFieldEditor(PreferenceConstants.EXPORT_DATE_FORMAT, "Date format : ",
                getFieldEditorParent()));
        final StringFieldEditor decimalEditor = new StringFieldEditor(PreferenceConstants.EXPORT_DECIMAL_SEPARATOR,
                "Decimal separator : ", getFieldEditorParent());
        decimalEditor.setTextLimit(1);
        addField(decimalEditor);
        final StringFieldEditor enclosedEditor = new StringFieldEditor(PreferenceConstants.EXPORT_ENCLOSER,
                "Field enclosed by : ", getFieldEditorParent());
        enclosedEditor.setTextLimit(1);
        addField(enclosedEditor);
        final StringFieldEditor escapeEditor = new StringFieldEditor(PreferenceConstants.EXPORT_ESCAPER,
                "Escape character:", getFieldEditorParent());
        escapeEditor.setTextLimit(1);
        addField(escapeEditor);

        addField(new StringFieldEditor(PreferenceConstants.EXPORT_NULL_VALUE, "Null value : ",
                getFieldEditorParent()));
        addField(new StringFieldEditor(PreferenceConstants.EXPORT_SEPARATOR, "Field separator : ",
                getFieldEditorParent()));

    }

    /*
     * (non-Javadoc)
     * @see org.eclipse.ui.IWorkbenchPreferencePage#init(org.eclipse.ui.IWorkbench)
     */
    public void init(IWorkbench workbench) {
    }

}