es.cv.gvcase.fefem.common.composites.EMFPropertyIntegerComposite.java Source code

Java tutorial

Introduction

Here is the source code for es.cv.gvcase.fefem.common.composites.EMFPropertyIntegerComposite.java

Source

/***************************************************************************
* Copyright (c) 2008 Conselleria de Infraestructuras y Transporte,
* Generalitat de la Comunitat Valenciana . 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: Jose Manuel Garca Valladolid (CIT) - Initial API and implementation
*
**************************************************************************/

package es.cv.gvcase.fefem.common.composites;

import org.eclipse.core.databinding.observable.value.IObservableValue;
import org.eclipse.emf.ecore.EObject;
import org.eclipse.jface.databinding.swt.SWTObservables;
import org.eclipse.jface.viewers.Viewer;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Spinner;
import org.eclipse.ui.forms.widgets.FormToolkit;

import es.cv.gvcase.fefem.common.FEFEMPage;

/**
 * Composite that binds a ecore Number feature (tipicaly an EAttribute) to a Spinner control.
 * 
 * @author Jose Manuel Garca Valladolid
 */
public abstract class EMFPropertyIntegerComposite extends EMFPropertyComposite {

    public static int DEFAULT_MAX_VALUE = 10000;
    public static int DEFAULT_MIN_VALUE = -1;
    public static int DEFAULT_INC_VALUE = 1;

    private Spinner spinner;

    /**
     * @param parent
     * @param style
     * @param toolkit
     * @param object
     * @param page
     */
    public EMFPropertyIntegerComposite(Composite parent, int style, FormToolkit toolkit, EObject object,
            FEFEMPage page) {
        super(parent, style, toolkit, object, page);
    }

    /**
     * @param parent
     * @param style
     * @param toolkit
     * @param viewer
     * @param page
     */
    public EMFPropertyIntegerComposite(Composite parent, int style, FormToolkit toolkit, Viewer viewer,
            FEFEMPage page) {
        super(parent, style, toolkit, viewer, page);
    }

    /* (non-Javadoc)
     * @see es.cv.gvcase.fefem.common.composites.EMFPropertyComposite#createWidgets(org.eclipse.ui.forms.widgets.FormToolkit)
     */
    @Override
    protected void createWidgets(FormToolkit toolkit) {
        this.setLayout(new GridLayout(2, false));
        createLabel(toolkit);

        spinner = new Spinner(this, getStyle());
        spinner.setLayoutData(new GridData(GridData.GRAB_HORIZONTAL));
        spinner.setMaximum(getMaxValue());
        spinner.setMinimum(getMinValue());
        spinner.setIncrement(getIncrementValue());
        toolkit.adapt(this);

    }

    /* (non-Javadoc)
     * @see es.cv.gvcase.fefem.common.composites.EMFPropertyComposite#getTargetObservable()
     */
    @Override
    protected IObservableValue getTargetObservable() {
        return SWTObservables.observeSelection(spinner);
    }

    public Spinner getSpinner() {
        return spinner;
    }

    /**
     * Maximun value for the spinner
     * @return
     */
    protected int getMaxValue() {
        return DEFAULT_MAX_VALUE;
    }

    /**
     * Minimun value for the spinner
     * @return
     */
    protected int getMinValue() {
        return DEFAULT_MIN_VALUE;
    }

    /**
     * Increment step value for the spinner
     * @return
     */
    protected int getIncrementValue() {
        return DEFAULT_INC_VALUE;
    }

    @Override
    public void setEnabled(boolean enabled) {
        super.setEnabled(enabled);
        spinner.setEnabled(enabled);
    }

}