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.

LayoutDuringStateUpdateConnector.java 1.6KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. package com.vaadin.tests.widgetset.client;
  2. import com.google.gwt.user.client.ui.Label;
  3. import com.vaadin.client.communication.StateChangeEvent;
  4. import com.vaadin.client.ui.AbstractComponentConnector;
  5. import com.vaadin.client.ui.PostLayoutListener;
  6. import com.vaadin.shared.ui.Connect;
  7. import com.vaadin.tests.widgetset.server.LayoutDuringStateUpdateComponent;
  8. @Connect(LayoutDuringStateUpdateComponent.class)
  9. public class LayoutDuringStateUpdateConnector extends AbstractComponentConnector
  10. implements PostLayoutListener {
  11. private int layoutCount = 0;
  12. private String changeLog = "";
  13. @Override
  14. protected void init() {
  15. super.init();
  16. updateLabelText();
  17. }
  18. @Override
  19. public Label getWidget() {
  20. return (Label) super.getWidget();
  21. }
  22. @Override
  23. public void onStateChanged(StateChangeEvent stateChangeEvent) {
  24. super.onStateChanged(stateChangeEvent);
  25. try {
  26. getLayoutManager().layoutNow();
  27. // these should never be reached
  28. if (changeLog.isEmpty()) {
  29. changeLog += " properties: ";
  30. }
  31. for (String property : stateChangeEvent.getChangedProperties()) {
  32. changeLog += property + ", ";
  33. }
  34. } catch (AssertionError e) {
  35. // Ignore
  36. }
  37. }
  38. private void updateLabelText() {
  39. getWidget().setText("Layout phase count: " + layoutCount + changeLog);
  40. changeLog = "";
  41. }
  42. @Override
  43. public void postLayout() {
  44. layoutCount++;
  45. updateLabelText();
  46. }
  47. }