pivot-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Chris Bartlett <cbartlet...@gmail.com>
Subject Re: TextInput and Validator issues
Date Sun, 06 Mar 2011 10:44:04 GMT

I was just searching to find a similar mailing list post that came up a
while ago, and realised that it was also by you, but I didn't end up sending
my draft reply on Feb 1st.  Sorry about that.

Anyway, this is something that I will also need in the near future, so I
promise to get back to you as soon as I have looked at it.


On 6 March 2011 16:11, anton dos santos <adsantos@free.fr> wrote:

> Hi
> I am trying to use a TexInput with an IntValidator in a TableViewRowEditor
> but I can't get it to do what I want. I'd like to have an input field where
> user can enter only digits and the input field can be empty (in that case
> background can become red if input is mandatory or stay white).
> When I set StrictValidation="true", then it is impossible to have an empty
> InputField; user can't do following : erase current value in input and enter
> a new value. User has to enter the new value and then remove the old, which
> is not intuitive (at least to me).
> Then I tried StrictValidation="false"; it seems to work, but user can also
> enter characters (which is not what I want) and when he hits return key to
> end editing, an exception is thrown:
> java.lang.NumberFormatException: For input string: "145jhk"
>        at
> java.lang.NumberFormatException.forInputString(NumberFormatException.java:48)
>        at java.lang.Long.parseLong(Long.java:419)
>        at java.lang.Long.parseLong(Long.java:468)
>        at org.apache.pivot.beans.BeanAdapter.coerce(BeanAdapter.java:897)
>        at org.apache.pivot.beans.BeanAdapter.put(BeanAdapter.java:286)
>        at org.apache.pivot.json.JSON.put(JSON.java:152)
>        at org.apache.pivot.wtk.TextInput.store(TextInput.java:841)
>        at org.apache.pivot.wtk.Container.store(Container.java:613)
>        at
> org.apache.pivot.wtk.content.TableViewRowEditor.endEdit(TableViewRowEditor.java:254)
> Here, maybe TextInput#store() shoudn't be invoked when
> TextInput#isTextValid() == false ?
> I also tried StrictValidation="true" and an intValidator that accepts empty
> input by overriding isValid():
>    public boolean isValid(String text) {
>        final ParsePosition pos = new ParsePosition(0);
>        Object obj = format.parseObject(text, pos);
>        if( obj == null || text.length() == 0) {
>          return true;
>        }
>        // the text is only valid is we successfully parsed ALL of it. Don't
> want trailing bits of
>        // not-valid text.
>        return obj != null && pos.getErrorIndex() == -1 && pos.getIndex()
> text.length();
>    }
> this works fine until user erases everything in the TextInput, from then on
> use can enter any character, he is no longer limited to digits.
> What else could I try ?
> Regards
> Anton

View raw message