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

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596
  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 {
  16. static final String BUTTON = "button";
  17. static final String EXPLICIT_FALSE = "explicit-false";
  18. static final String FIELD = "field";
  19. static final String LISTENER_TOGGLE = "listener-toggle";
  20. /*
  21. * (non-Javadoc)
  22. *
  23. * @see com.vaadin.tests.components.AbstractTestUI#setup(com.vaadin.server.
  24. * VaadinRequest)
  25. */
  26. @Override
  27. protected void setup(VaadinRequest request) {
  28. final TextField textField = new TextField() {
  29. /*
  30. * (non-Javadoc)
  31. *
  32. * @see com.vaadin.ui.AbstractField#fireValueChange(boolean)
  33. */
  34. @Override
  35. protected void fireValueChange(boolean repaintIsNotNeeded) {
  36. log("fireValueChange");
  37. super.fireValueChange(repaintIsNotNeeded);
  38. }
  39. };
  40. textField.setId(FIELD);
  41. final ValueChangeListener listener = event -> log(
  42. "Value changed: " + event.getProperty().getValue());
  43. final CheckBox checkBox = new CheckBox("Toggle listener");
  44. checkBox.addValueChangeListener(valueChange -> {
  45. if (checkBox.getValue()) {
  46. textField.addValueChangeListener(listener);
  47. } else {
  48. textField.removeValueChangeListener(listener);
  49. }
  50. });
  51. checkBox.setId(LISTENER_TOGGLE);
  52. Button b = new Button(
  53. "setImmediate(false), sets explicitly false and causes server roundtrip",
  54. event -> textField.setImmediate(false));
  55. b.setId(EXPLICIT_FALSE);
  56. Button b2 = new Button("Hit server, causes server roundtrip", event -> {
  57. });
  58. b2.setId(BUTTON);
  59. addComponent(textField);
  60. addComponent(checkBox);
  61. addComponent(b);
  62. addComponent(b2);
  63. }
  64. /*
  65. * (non-Javadoc)
  66. *
  67. * @see com.vaadin.tests.components.AbstractTestUI#getTestDescription()
  68. */
  69. @Override
  70. protected String getTestDescription() {
  71. return "Field should be immediate automatically if it has value change listener";
  72. }
  73. /*
  74. * (non-Javadoc)
  75. *
  76. * @see com.vaadin.tests.components.AbstractTestUI#getTicketNumber()
  77. */
  78. @Override
  79. protected Integer getTicketNumber() {
  80. return 8029;
  81. }
  82. }