Description
I have a validator on a textinput with strict validation set to true;
The validator tries to match the text against a pattern.
Everything is fine until i try to modify text that is selected (either partially or completely).
And this because validation does not take into account that selected text should be replaced by typed characters;
instead, it is trying to validate the concatenation of the new character and the actual text instead of replacing the selected part of the text.
(lines 1059-1063 in class TerraTextInputSkin)
I don't know if I'm clear.
Consider this (pretty stupid) example that tries to accept only one digit in the text input :
TextInput textInput = new TextInput();
textInput.setMaximumLength(1);
textInput.setStrictValidation(true);
textInput.setValidator(new Validator() {
@Override
public boolean isValid(String text)
});
BoxPane boxPane = new BoxPane(Orientation.HORIZONTAL);
boxPane.add(textInput);
boxPane.add(new PushButton("Test"));
window.setContent(boxPane);
Steps:
1. start app.
2. put focus in textinput (should be empty)
3. enter a digit, ex : '5'; ok this should work
4. move focus on button then move focus back on textinput
5. text is selected in textinput
6. try to replace the selected value ('5') by another digit by simply typing it
==> doesnt work (while it should)