You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@pivot.apache.org by "Bojan Vucinic (JIRA)" <ji...@apache.org> on 2011/02/01 23:02:28 UTC
[jira] Commented: (PIVOT-612) TextInput validator problem when
modifying selected text
[ https://issues.apache.org/jira/browse/PIVOT-612?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12989405#comment-12989405 ]
Bojan Vucinic commented on PIVOT-612:
-------------------------------------
I have solved the problem by checking for empty string and catching an exception.
Example (in Scala):
if (textIn.getText != "" && textIn.isValid) {
try {m.putDensity(textIn.getText.toDouble)
textOut.setText("" + m.volume)
tOut.setText("" + m.mass)}
catch {
case e:java.lang.NumberFormatException => println("Not a number!")
}
}
> TextInput validator problem when modifying selected text
> --------------------------------------------------------
>
> Key: PIVOT-612
> URL: https://issues.apache.org/jira/browse/PIVOT-612
> Project: Pivot
> Issue Type: Bug
> Affects Versions: 1.5
> Reporter: A.J.
> Fix For: 1.5.2, 2.0
>
>
> 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) {
> if (text.length() == 0)
> return true; // ok we accept empty field
> return text.length() == 1 && Character.isDigit(text.charAt(0));
> }
> });
>
> 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)
--
This message is automatically generated by JIRA.
-
For more information on JIRA, see: http://www.atlassian.com/software/jira