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.

AutomaticImmediate.java 2.8KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293
  1. package com.vaadin.tests.components.textfield;
  2. import com.vaadin.server.VaadinRequest;
  3. import com.vaadin.tests.components.AbstractTestUIWithLog;
  4. import com.vaadin.ui.Button;
  5. import com.vaadin.ui.CheckBox;
  6. import com.vaadin.v7.data.Property.ValueChangeListener;
  7. import com.vaadin.v7.ui.TextField;
  8. /**
  9. * Test to verify fields become implicitly "immediate" when adding value change
  10. * listener to them.
  11. *
  12. * @since 7.2
  13. * @author Vaadin Ltd
  14. */
  15. public class AutomaticImmediate extends AbstractTestUIWithLog { static final String BUTTON = "button"; static final String EXPLICIT_FALSE = "explicit-false"; static final String FIELD = "field"; static final String LISTENER_TOGGLE = "listener-toggle";
  16. /*
  17. * (non-Javadoc)
  18. *
  19. * @see com.vaadin.tests.components.AbstractTestUI#setup(com.vaadin.server.
  20. * VaadinRequest)
  21. */
  22. @Override
  23. protected void setup(VaadinRequest request) {
  24. final TextField textField = new TextField() {
  25. /*
  26. * (non-Javadoc)
  27. *
  28. * @see com.vaadin.ui.AbstractField#fireValueChange(boolean)
  29. */
  30. @Override
  31. protected void fireValueChange(boolean repaintIsNotNeeded) {
  32. log("fireValueChange");
  33. super.fireValueChange(repaintIsNotNeeded);
  34. }
  35. };
  36. textField.setId(FIELD);
  37. final ValueChangeListener listener = event -> log(
  38. "Value changed: " + event.getProperty().getValue());
  39. final CheckBox checkBox = new CheckBox("Toggle listener");
  40. checkBox.addValueChangeListener(valueChange -> {
  41. if (checkBox.getValue()) {
  42. textField.addValueChangeListener(listener);
  43. } else {
  44. textField.removeValueChangeListener(listener);
  45. }
  46. });
  47. checkBox.setId(LISTENER_TOGGLE);
  48. Button b = new Button(
  49. "setImmediate(false), sets explicitly false and causes server roundtrip",
  50. event -> textField.setImmediate(false));
  51. b.setId(EXPLICIT_FALSE);
  52. Button b2 = new Button("Hit server, causes server roundtrip",
  53. event -> {
  54. });
  55. b2.setId(BUTTON);
  56. addComponent(textField);
  57. addComponent(checkBox);
  58. addComponent(b);
  59. addComponent(b2);
  60. }
  61. /*
  62. * (non-Javadoc)
  63. *
  64. * @see com.vaadin.tests.components.AbstractTestUI#getTestDescription()
  65. */
  66. @Override
  67. protected String getTestDescription() {
  68. return "Field should be immediate automatically if it has value change listener";
  69. }
  70. /*
  71. * (non-Javadoc)
  72. *
  73. * @see com.vaadin.tests.components.AbstractTestUI#getTicketNumber()
  74. */
  75. @Override
  76. protected Integer getTicketNumber() {
  77. return 8029;
  78. }
  79. }