eu.hydrologis.jgrass.gpsnmea.preferences.pages.GpsCorrectionPreferencePage.java Source code

Java tutorial

Introduction

Here is the source code for eu.hydrologis.jgrass.gpsnmea.preferences.pages.GpsCorrectionPreferencePage.java

Source

/*
 * JGrass - Free Open Source Java GIS http://www.jgrass.org 
 * (C) HydroloGIS - www.hydrologis.com 
 * (C) Universita' di Urbino
 *
 * This program is free software: you can redistribute it and/or modify
 * it under the terms of the GNU Lesser General Public License as published by
 * the Free Software Foundation, either version 3 of the License, or
 * (at your option) any later version.
 *
 * This program 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 Lesser General Public License
 * along with this program.  If not, see <http://www.gnu.org/licenses/>.
 */
package eu.hydrologis.jgrass.gpsnmea.preferences.pages;

import java.io.IOException;
import static eu.hydrologis.jgrass.gpsnmea.preferences.pages.PreferenceConstants.*;

import org.eclipse.jface.preference.FieldEditorPreferencePage;
import org.eclipse.jface.preference.StringFieldEditor;
import org.eclipse.jface.util.PropertyChangeEvent;
import org.eclipse.ui.IWorkbench;
import org.eclipse.ui.IWorkbenchPreferencePage;
import org.eclipse.ui.preferences.ScopedPreferenceStore;

import eu.hydrologis.jgrass.gpsnmea.GpsActivator;
import eu.hydrologis.jgrass.gpsnmea.gps.GpsProperties;

/**
 * Preferences page for gps advances settings.
 * 
 * @author Andrea Antonello (www.hydrologis.com)
 */
public class GpsCorrectionPreferencePage extends FieldEditorPreferencePage implements IWorkbenchPreferencePage {

    private ScopedPreferenceStore preferences;
    private StringFieldEditor deltaXEditor;
    private StringFieldEditor deltaYEditor;

    public GpsCorrectionPreferencePage() {
        super(GRID);
        preferences = (ScopedPreferenceStore) GpsActivator.getDefault().getPreferenceStore();
        setPreferenceStore(preferences);
        setDescription("GPS Corrections Page (the dirty tweak page)");

    }

    protected void createFieldEditors() {

        deltaXEditor = new StringFieldEditor(DELTAX, DELTAX, getFieldEditorParent());
        addField(deltaXEditor);
        deltaYEditor = new StringFieldEditor(DELTAY, DELTAY, getFieldEditorParent());
        addField(deltaYEditor);
    }

    @Override
    protected void checkState() {
        super.checkState();
        if (!isValid()) {
            return;
        }

        String deltaXStr = deltaXEditor.getStringValue();
        try {
            Double.parseDouble(deltaXStr);
        } catch (NumberFormatException e) {
            setErrorMessage("The delta X has to be a decimal value.");
            setValid(false);
            return;
        }
        String deltaYStr = deltaYEditor.getStringValue();
        try {
            Double.parseDouble(deltaYStr);
        } catch (NumberFormatException e) {
            setErrorMessage("The delta Y has to be a decimal value.");
            setValid(false);
            return;
        }
        setErrorMessage(null);
        setValid(true);
    }

    @Override
    public void propertyChange(PropertyChangeEvent event) {
        super.propertyChange(event);

        checkState();
    }

    public boolean performOk() {
        String deltaXStr = deltaXEditor.getStringValue();
        GpsProperties.deltaX = Double.parseDouble(deltaXStr);
        String deltaYStr = deltaYEditor.getStringValue();
        GpsProperties.deltaY = Double.parseDouble(deltaYStr);
        try {
            preferences.save();
        } catch (IOException e) {
            e.printStackTrace();
        }
        return super.performOk();
    }

    public void init(IWorkbench workbench) {
    }

}