You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

Ticket20.java 3.0KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485
  1. package com.vaadin.tests.tickets;
  2. import com.vaadin.data.util.MethodProperty;
  3. import com.vaadin.legacy.data.Validator;
  4. import com.vaadin.legacy.data.validator.LegacyCompositeValidator;
  5. import com.vaadin.legacy.data.validator.LegacyCompositeValidator.CombinationMode;
  6. import com.vaadin.legacy.data.validator.LegacyIntegerValidator;
  7. import com.vaadin.server.LegacyApplication;
  8. import com.vaadin.ui.Button;
  9. import com.vaadin.ui.CheckBox;
  10. import com.vaadin.ui.LegacyWindow;
  11. import com.vaadin.ui.TextField;
  12. public class Ticket20 extends LegacyApplication {
  13. @Override
  14. public void init() {
  15. final LegacyWindow mainWin = new LegacyWindow("Test app for #20");
  16. setMainWindow(mainWin);
  17. final TextField tx = new TextField("Integer");
  18. mainWin.addComponent(tx);
  19. tx.setImmediate(true);
  20. LegacyCompositeValidator v = new LegacyCompositeValidator();
  21. v.addValidator(new LegacyIntegerValidator("{0} is not a number"));
  22. v.addValidator(new Validator() {
  23. private boolean isValid(Object value) {
  24. try {
  25. int i = Integer.parseInt("" + value);
  26. if (i < 0) {
  27. return false;
  28. }
  29. return true;
  30. } catch (NumberFormatException e) {
  31. return false;
  32. }
  33. }
  34. @Override
  35. public void validate(Object value) throws InvalidValueException {
  36. if (!isValid(value)) {
  37. throw new InvalidValueException(
  38. value + " is not a non-negative number");
  39. }
  40. }
  41. });
  42. LegacyCompositeValidator v2 = new LegacyCompositeValidator(
  43. CombinationMode.OR, null);
  44. v2.addValidator(v);
  45. v2.addValidator(new Validator() {
  46. @Override
  47. public void validate(Object value) throws InvalidValueException {
  48. if (!"".equals("" + value)) {
  49. throw new InvalidValueException(
  50. "Value is not empty string");
  51. }
  52. }
  53. });
  54. tx.addValidator(v2);
  55. final String[] visibleProps = { "required", "invalidAllowed",
  56. "readOnly", "readThrough", "invalidCommitted",
  57. "validationVisible" };
  58. for (int i = 0; i < visibleProps.length; i++) {
  59. CheckBox b = new CheckBox(visibleProps[i],
  60. new MethodProperty<Boolean>(tx, visibleProps[i]));
  61. b.setImmediate(true);
  62. mainWin.addComponent(b);
  63. }
  64. mainWin.addComponent(
  65. new Button("Validate integer", new Button.ClickListener() {
  66. @Override
  67. public void buttonClick(
  68. com.vaadin.ui.Button.ClickEvent event) {
  69. mainWin.showNotification("The field is "
  70. + (tx.isValid() ? "" : "not ") + "valid");
  71. }
  72. }));
  73. }
  74. }