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