Search in sources :

Example 1 with DoubleValidator

use of org.apache.pivot.wtk.validation.DoubleValidator in project pivot by apache.

the class ComponentInspectorSkin method addDoubleControl.

private static Component addDoubleControl(final Dictionary<String, Object> dictionary, final String key, Form.Section section) {
    double value = (Double) dictionary.get(key);
    TextInput textInput = new TextInput();
    textInput.setTextSize(14);
    textInput.setValidator(new DoubleValidator());
    textInput.setText(String.valueOf(value));
    section.add(textInput);
    Form.setLabel(textInput, key);
    textInput.getComponentStateListeners().add(new ComponentStateListener() {

        @Override
        public void focusedChanged(Component component, Component obverseComponent) {
            if (!component.isFocused()) {
                TextInput textInputLocal = (TextInput) component;
                try {
                    dictionary.put(key, Double.parseDouble(textInputLocal.getText()));
                } catch (Exception exception) {
                    displayErrorMessage(exception, component.getWindow());
                    double valueLocal = (Double) dictionary.get(key);
                    textInputLocal.setText(String.valueOf(valueLocal));
                }
            }
        }
    });
    return textInput;
}
Also used : DoubleValidator(org.apache.pivot.wtk.validation.DoubleValidator) TextInput(org.apache.pivot.wtk.TextInput) Component(org.apache.pivot.wtk.Component) ComponentStateListener(org.apache.pivot.wtk.ComponentStateListener)

Example 2 with DoubleValidator

use of org.apache.pivot.wtk.validation.DoubleValidator in project pivot by apache.

the class TextInputValidatorTest method startup.

@Override
public void startup(final Display display, final Map<String, String> properties) throws Exception {
    System.out.println("Starting TextInputValidatorTest ...");
    System.out.println("current Locale is " + locale);
    // sample different ways to format numbers in i18n compatible way
    NumberFormat nf = NumberFormat.getInstance();
    // 
    // String customDecimalPattern = ""###,###.###"";
    // DecimalFormat df = new DecimalFormat(customDecimalPattern);
    // 
    // StringBuffer sb = new StringBuffer();
    // Formatter formatter = new Formatter(sb, locale);
    // String customDecimalFormat = "%,.3f";
    // 
    BXMLSerializer bxmlSerializer = new BXMLSerializer();
    window = new Window((Component) bxmlSerializer.readObject(getClass().getResource("text_input_validator_test.bxml")));
    Map<String, Object> namespace = bxmlSerializer.getNamespace();
    textinputLocale = (TextInput) namespace.get("textinputLocale");
    textinputComparableBigDecimal = (TextInput) namespace.get("textinputComparableBigDecimal");
    textinputComparableRange = (TextInput) namespace.get("textinputComparableRange");
    textinputDouble = (TextInput) namespace.get("textinputDouble");
    textinputFloat = (TextInput) namespace.get("textinputFloat");
    textinputFloatRange = (TextInput) namespace.get("textinputFloatRange");
    textinputIntRange = (TextInput) namespace.get("textinputIntRange");
    textinputDateRegex = (TextInput) namespace.get("textinputDateRegex");
    textinputCustomBoolean = (TextInput) namespace.get("textinputCustomBoolean");
    textinputNotEmptyText = (TextInput) namespace.get("textinputNotEmptyText");
    textinputEmptyText = (TextInput) namespace.get("textinputEmptyText");
    textinputLocale.setText(locale.toString());
    String testValue = "123456789.0";
    // new, validate a value but using BigDecimalValidator (subclass of ComparableValidator)
    // huge value, and outside double range ...
    textinputComparableBigDecimal.setText("1e300");
    BigDecimalValidator bdComp = new BigDecimalValidator();
    System.out.println("BigDecimalValidator: created instance with value: " + bdComp);
    // enable auto-trim of input string, before validating
    bdComp.setAutoTrim(true);
    System.out.println("BigDecimalValidator: enable auto-trim of input string, before validating");
    textinputComparableBigDecimal.setValidator(bdComp);
    // new, validate in a range but using ComparableRangeValidator
    textinputComparableRange.setText(nf.format(new BigDecimal(testValue)));
    ComparableRangeValidator<BigDecimal> bdCompRange = new ComparableRangeValidator<>(new BigDecimal("2.0"), new BigDecimal("123456789"));
    System.out.println("ComparableRangeValidator: created instance with value: " + bdCompRange);
    // enable auto-trim of input string, before validating
    bdCompRange.setAutoTrim(true);
    System.out.println("ComparableRangeValidator: enable auto-trim of input string, before validating");
    textinputComparableRange.setValidator(bdCompRange);
    textinputComparableRange.getTextInputListeners().add(new TextInputListener() {

        @Override
        public void textValidChanged(final TextInput textInput) {
            invalidComparableRangeLabel.setText(validText(textInput));
        }
    });
    invalidComparableRangeLabel = (Label) namespace.get("invalidComparableRangeLabel");
    // positive infinity text
    textinputDouble.setText("+\u221E");
    textinputDouble.setValidator(new DoubleValidator());
    // textinputFloat.setText("123456.789");
    // new, show different ways to format decimal values in i18n format
    Double value = new Double(testValue);
    // textinputFloat.setText(value.toString());
    // textinputFloat.setText(String.format(customDecimalFormat, value)); // sample using String.format
    // formatter.format(customDecimalFormat, value); // sample using Formatter
    // textinputFloat.setText(sb.toString()); // sample using Formatter
    // textinputFloat.setText(nf.format(value)); // sample using NumberFormat
    // textinputFloat.setText(df.format(value)); // sample using DecimalFormat
    // using this as a sample
    textinputFloat.setText(nf.format(value));
    textinputFloat.setValidator(new FloatValidator());
    // standard float range model
    // note that float approximations could give errors,
    // try to increment/decrement the initial value near a range end, to see problems ...
    textinputFloatRange.setText(nf.format(new Float(testValue)));
    textinputFloatRange.setValidator(new FloatRangeValidator(2.0f, 123456789f));
    // test the listener by updating a label
    textinputFloatRange.getTextInputListeners().add(new TextInputListener() {

        @Override
        public void textValidChanged(final TextInput textInput) {
            invalidLabel.setText(validText(textInput));
        }
    });
    invalidLabel = (Label) namespace.get("invalidLabel");
    // standard int range model
    textinputIntRange.setText("0");
    textinputIntRange.setValidator(new IntRangeValidator(0, 100));
    // validate using a date regex.
    textinputDateRegex.setText("2009-09-01");
    textinputDateRegex.setValidator(new RegexTextValidator("(19|20)\\d\\d[- /.](0[1-9]|1[012])[-/.](0[1-9]|[12][0-9]|3[01])"));
    // creating a custom model that only accepts "true" or "false"
    textinputCustomBoolean.setText("true");
    textinputCustomBoolean.setValidator(new Validator() {

        @Override
        public boolean isValid(final String s) {
            return "true".equals(s) || "false".equals(s);
        }
    });
    // validate any not-empty text
    textinputNotEmptyText.setText("  Not Empty, and with spaces  ");
    textinputNotEmptyText.setValidator(new NotEmptyTextValidator());
    // validate any empty text, edge case
    textinputEmptyText.setText("    ");
    textinputEmptyText.setValidator(new EmptyTextValidator());
    window.setTitle("Text Input Validator Test");
    window.setMaximized(true);
    window.open(display);
}
Also used : Window(org.apache.pivot.wtk.Window) BigDecimalValidator(org.apache.pivot.wtk.validation.BigDecimalValidator) ComparableRangeValidator(org.apache.pivot.wtk.validation.ComparableRangeValidator) NotEmptyTextValidator(org.apache.pivot.wtk.validation.NotEmptyTextValidator) EmptyTextValidator(org.apache.pivot.wtk.validation.EmptyTextValidator) NotEmptyTextValidator(org.apache.pivot.wtk.validation.NotEmptyTextValidator) RegexTextValidator(org.apache.pivot.wtk.validation.RegexTextValidator) BigDecimal(java.math.BigDecimal) DoubleValidator(org.apache.pivot.wtk.validation.DoubleValidator) FloatRangeValidator(org.apache.pivot.wtk.validation.FloatRangeValidator) FloatValidator(org.apache.pivot.wtk.validation.FloatValidator) Component(org.apache.pivot.wtk.Component) TextInput(org.apache.pivot.wtk.TextInput) IntRangeValidator(org.apache.pivot.wtk.validation.IntRangeValidator) TextInputListener(org.apache.pivot.wtk.TextInputListener) BXMLSerializer(org.apache.pivot.beans.BXMLSerializer) Validator(org.apache.pivot.wtk.validation.Validator) ComparableRangeValidator(org.apache.pivot.wtk.validation.ComparableRangeValidator) EmptyTextValidator(org.apache.pivot.wtk.validation.EmptyTextValidator) FloatValidator(org.apache.pivot.wtk.validation.FloatValidator) BigDecimalValidator(org.apache.pivot.wtk.validation.BigDecimalValidator) NotEmptyTextValidator(org.apache.pivot.wtk.validation.NotEmptyTextValidator) FloatRangeValidator(org.apache.pivot.wtk.validation.FloatRangeValidator) DoubleValidator(org.apache.pivot.wtk.validation.DoubleValidator) IntRangeValidator(org.apache.pivot.wtk.validation.IntRangeValidator) RegexTextValidator(org.apache.pivot.wtk.validation.RegexTextValidator) NumberFormat(java.text.NumberFormat)

Aggregations

Component (org.apache.pivot.wtk.Component)2 TextInput (org.apache.pivot.wtk.TextInput)2 DoubleValidator (org.apache.pivot.wtk.validation.DoubleValidator)2 BigDecimal (java.math.BigDecimal)1 NumberFormat (java.text.NumberFormat)1 BXMLSerializer (org.apache.pivot.beans.BXMLSerializer)1 ComponentStateListener (org.apache.pivot.wtk.ComponentStateListener)1 TextInputListener (org.apache.pivot.wtk.TextInputListener)1 Window (org.apache.pivot.wtk.Window)1 BigDecimalValidator (org.apache.pivot.wtk.validation.BigDecimalValidator)1 ComparableRangeValidator (org.apache.pivot.wtk.validation.ComparableRangeValidator)1 EmptyTextValidator (org.apache.pivot.wtk.validation.EmptyTextValidator)1 FloatRangeValidator (org.apache.pivot.wtk.validation.FloatRangeValidator)1 FloatValidator (org.apache.pivot.wtk.validation.FloatValidator)1 IntRangeValidator (org.apache.pivot.wtk.validation.IntRangeValidator)1 NotEmptyTextValidator (org.apache.pivot.wtk.validation.NotEmptyTextValidator)1 RegexTextValidator (org.apache.pivot.wtk.validation.RegexTextValidator)1 Validator (org.apache.pivot.wtk.validation.Validator)1