package qls.gui.widget.input.field;
import javax.swing.event.CaretEvent;
import javax.swing.event.CaretListener;
import ql.Value;
import ql.value.IntegerValue;
import qls.ast.statement.widget.styling.StyleProperties;
import qls.gui.widget.input.Field;
import com.sun.corba.se.impl.io.TypeMismatchException;
public class IntegerField extends Field<IntegerValue> implements CaretListener {
public IntegerField () {
super(new IntegerValue(0));
}
public IntegerField (IntegerValue value) {
super(value);
}
@Override
public void caretUpdate(CaretEvent e) {
try {
IntegerValue newValue = getFieldValue();
handleChange(newValue, this);
removeError();
}
catch (NumberFormatException nfe) {
setError("Not a valid integer");
}
}
@Override
public String 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
protected IntegerValue getFieldValue() {
return new IntegerValue(Integer.parseInt(textField().getText()));
}
@Override
public void setStyle(StyleProperties properties) {
stylizer.setStyle(textField(), properties);
}
}