package org.nlamah.QL.View.Widgets;
import java.awt.Dimension;
import javax.swing.JSpinner;
import javax.swing.SpinnerNumberModel;
import javax.swing.event.ChangeEvent;
import javax.swing.event.ChangeListener;
import org.nlamah.QBase.Constants.QBaseQuestionType;
import org.nlamah.QBase.Constants.UIConstants;
import org.nlamah.QL.Model.Expression.Abstract.ValueExpression;
import org.nlamah.QL.Model.Expression.Literal.NumberLiteral;
import org.nlamah.QL.View.Form.Abstract.WidgetView;
@SuppressWarnings("serial")
public class SpinnerWidgetView extends WidgetView implements ChangeListener
{
private JSpinner spinner;
public SpinnerWidgetView(QBaseQuestionType returnType)
{
super(returnType);
initializeComponents();
addComponentsToView();
layoutView();
}
@Override
public void layoutView()
{
spinner.setPreferredSize(new Dimension(UIConstants.widgetWidth(), UIConstants.maximumTextFieldHeight()));
spinner.setMaximumSize(new Dimension(UIConstants.widgetWidth(), UIConstants.maximumTextFieldHeight()));
}
@Override
public void initializeComponents()
{
ValueExpression value = UIConstants.defaultValueForQuestionType(returnType());
int number = Integer.parseInt(value.toString());
SpinnerNumberModel model = new SpinnerNumberModel(number, 0, 1000, 1);
spinner = new JSpinner(model);
spinner.addChangeListener(this);
}
@Override
public void addComponentsToView()
{
add(spinner);
}
@Override
public void stateChanged(ChangeEvent e)
{
SpinnerNumberModel numberModel = (SpinnerNumberModel) spinner.getModel();
Number numberObject = numberModel.getNumber();
widgetViewDelegate.valueChanged(new NumberLiteral(numberObject.intValue()));
}
}