package qls.gui.widget.input.spinbox;
import javax.swing.SpinnerNumberModel;
import javax.swing.event.ChangeListener;
import ql.Value;
import ql.value.IntegerValue;
import qls.ast.statement.widget.styling.StyleProperties;
import qls.gui.widget.input.Spinbox;
import com.sun.corba.se.impl.io.TypeMismatchException;
public class IntegerSpinbox extends Spinbox<IntegerValue> implements ChangeListener {
public IntegerSpinbox() {
super(new SpinnerNumberModel(
0, //initial value
0, //min
Integer.MAX_VALUE, //max
1
));
}
public IntegerSpinbox(IntegerValue integerValue) {
this();
disable();
spinbox().setValue(integerValue.getPrimitive());
}
@Override
public Number convertValue(Value value) {
if(!value.isNumeric()) {
throw new TypeMismatchException();
}
// Fuck me running. Don't look here. Forcing any number into an integer.
return Math.round(Float.parseFloat(value.toString()));
}
@Override
public IntegerValue getValue() {
return new IntegerValue(model().getNumber().intValue());
}
@Override
public void setStyle(StyleProperties properties) {
stylizer.setStyle(spinbox(), properties);
}
}