Well I managed to get something going using a Converter and a Validator. The code below uses a Builder to construct the UI but you should be able to get the gist...
From my PeriodBeanEditor:
Code:
@Ignore
TextField hrMinField;
ConverterEditorAdapter<Long, String, TextField> hrMin;
@Override
protected Widget createWidget() {
FlowLayoutContainer c = new FlowLayoutContainerBuilder()
.add(new FieldLabelBuilder()
.text("Hr Min")
.widget(hrMinField = new TextFieldBuilder()
.allowBlank(false)
.addValidator(HrMinConverter.VALIDATOR)
.textField)
.fieldLabel)
.flowLayoutContainer;
hrMin = new ConverterEditorAdapter(hrMinField, HrMinConverter.INSTANCE);
return c;
}
From my HrMinConverter:
Code:
public class HrMinConverter implements Converter<Long, String> {
private static final String RE_STR = "^(-?)(\\d+)(:([0-5]?)(\\d))?$";
public static final RegExp RE = RegExp.compile(RE_STR);
public static final String RE_MSG = "Must be in the form '-h:m', '-' and ':m' are optional";
public static final HrMinConverter INSTANCE = new HrMinConverter();
public static final RegExValidator VALIDATOR = new RegExValidator(RE_STR, RE_MSG);
...
For what it's worth I'm trying to publish the bean builder generator tool (b-generation) so I can use it in various places.