package cnp.ew.spin;

import cnp.ew.converter.*;
import cnp.ew.text.*;
import cnp.ew.util.*;
import java.util.*;
import java.awt.*;

public class CpEditableNumericSpinFieldLc extends CpEditableSpinFieldLc
{
    public CpEditableNumericSpinFieldLc()
    {
        super();
        CpNumberToStringConverter converter = new CpNumberToStringConverter();
        converter.setFormatString("0;-0;0");
        setHorizontalAlignment(ALIGN_RIGHT);
        setInputConverter(converter);
        setOutputConverter(new CpIntegerFromStringConverter());
        addObserver(this);
    }


    public void update(CpObservable o, int facet, Object arg)
    {
        if (o == this && facet == OBJECT_CHANGING) {
            getModel().setValue((Integer)getObject());
            return;
        }

        if (!getObject().equals(getModel().getValue())) {
            setObject(getModel().getValue());
        }
        repaint();
    }

    public void increment()
    {
        getModel().increment();
        selectAll();
    }

    public void decrement()
    {
        getModel().decrement();
        selectAll();
    }


    CpIntegerModel getModel()
    {
        return (CpIntegerModel)getSpinEditor().getModel();
    }

    public boolean canIncrementAndDecrement()
    {
        return true;
    }
}

