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.

LazyWindowResize.java 4.0KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120
  1. package com.vaadin.tests.components.window;
  2. import com.vaadin.data.Property.ValueChangeEvent;
  3. import com.vaadin.data.Property.ValueChangeListener;
  4. import com.vaadin.server.Page.BrowserWindowResizeEvent;
  5. import com.vaadin.server.Page.BrowserWindowResizeListener;
  6. import com.vaadin.shared.ui.label.ContentMode;
  7. import com.vaadin.tests.components.AbstractTestCase;
  8. import com.vaadin.tests.util.Log;
  9. import com.vaadin.tests.util.LoremIpsum;
  10. import com.vaadin.ui.CheckBox;
  11. import com.vaadin.ui.Label;
  12. import com.vaadin.ui.LegacyWindow;
  13. import com.vaadin.ui.VerticalLayout;
  14. import com.vaadin.ui.Window;
  15. import com.vaadin.ui.Window.ResizeEvent;
  16. import com.vaadin.ui.Window.ResizeListener;
  17. public class LazyWindowResize extends AbstractTestCase {
  18. private LegacyWindow mainWindow;
  19. private Window subWindow;
  20. private CheckBox lazyMode;
  21. private Log log = new Log(5);
  22. private CheckBox resizeListenerCheckBox;
  23. protected ResizeListener resizeListener = new ResizeListener() {
  24. @Override
  25. public void windowResized(ResizeEvent e) {
  26. log.log("Sub window resized");
  27. }
  28. };
  29. protected BrowserWindowResizeListener browserWindowResizeListener = new BrowserWindowResizeListener() {
  30. @Override
  31. public void browserWindowResized(BrowserWindowResizeEvent event) {
  32. log.log("Main window resized");
  33. }
  34. };
  35. private CheckBox immediateCheckBox;
  36. @Override
  37. protected String getDescription() {
  38. return "Check or uncheck the checkbox to use lazy or eager resize events. Lazy mode uses a small delay before recalculating layout sizes and can be used to speed up resizes in slow UIs.";
  39. }
  40. @Override
  41. protected Integer getTicketNumber() {
  42. return 6715;
  43. }
  44. @Override
  45. public void init() {
  46. mainWindow = new LegacyWindow("Resize test");
  47. setMainWindow(mainWindow);
  48. VerticalLayout layout = new VerticalLayout();
  49. layout.setMargin(true);
  50. subWindow = new Window("Sub window", layout);
  51. subWindow.setHeight("50%");
  52. subWindow.setWidth("50%");
  53. subWindow.center();
  54. layout.addComponent(new Label(LoremIpsum.get(1000)));
  55. getMainWindow().addWindow(subWindow);
  56. lazyMode = new CheckBox("Lazy resize");
  57. lazyMode.setImmediate(true);
  58. lazyMode.addListener(new ValueChangeListener() {
  59. @Override
  60. public void valueChange(ValueChangeEvent event) {
  61. setLazy(lazyMode.getValue());
  62. }
  63. });
  64. resizeListenerCheckBox = new CheckBox("Resize listener");
  65. resizeListenerCheckBox.setImmediate(true);
  66. resizeListenerCheckBox.addListener(new ValueChangeListener() {
  67. @Override
  68. public void valueChange(ValueChangeEvent event) {
  69. if (resizeListenerCheckBox.getValue()) {
  70. subWindow.addListener(resizeListener);
  71. mainWindow.addListener(browserWindowResizeListener);
  72. } else {
  73. subWindow.removeListener(resizeListener);
  74. mainWindow.removeListener(browserWindowResizeListener);
  75. }
  76. }
  77. });
  78. immediateCheckBox = new CheckBox("Windows immediate");
  79. immediateCheckBox.setImmediate(true);
  80. immediateCheckBox.addListener(new ValueChangeListener() {
  81. @Override
  82. public void valueChange(ValueChangeEvent event) {
  83. mainWindow.setImmediate(immediateCheckBox.getValue());
  84. subWindow.setImmediate(immediateCheckBox.getValue());
  85. }
  86. });
  87. mainWindow.addComponent(lazyMode);
  88. mainWindow.addComponent(resizeListenerCheckBox);
  89. mainWindow.addComponent(immediateCheckBox);
  90. mainWindow.addComponent(log);
  91. mainWindow.addComponent(new Label("<br/><br/>", ContentMode.HTML));
  92. mainWindow.addComponent(new Label(LoremIpsum.get(10000)));
  93. setLazy(false);
  94. }
  95. private void setLazy(boolean b) {
  96. mainWindow.setResizeLazy(b);
  97. subWindow.setResizeLazy(b);
  98. }
  99. }