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.

WindowOrder.java 4.3KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138
  1. package com.vaadin.tests.components.window;
  2. import com.vaadin.server.VaadinRequest;
  3. import com.vaadin.tests.components.AbstractTestUI;
  4. import com.vaadin.ui.Alignment;
  5. import com.vaadin.ui.Button;
  6. import com.vaadin.ui.Label;
  7. import com.vaadin.ui.Window;
  8. import com.vaadin.ui.Window.WindowOrderChangeEvent;
  9. import com.vaadin.ui.Window.WindowOrderChangeListener;
  10. /**
  11. * Test UI for accessing to window order position.
  12. *
  13. * @author Vaadin Ltd
  14. */
  15. public class WindowOrder extends AbstractTestUI {
  16. @Override
  17. protected void setup(VaadinRequest request) {
  18. w1 = new Window();
  19. w1.setCaption("Window1");
  20. w1.addStyleName("window1");
  21. w2 = new Window();
  22. w2.setCaption("Window2");
  23. w2.addStyleName("window2");
  24. w3 = new Window();
  25. w3.setCaption("Window3");
  26. w3.addStyleName("window3");
  27. getUI().addWindow(w1);
  28. getUI().addWindow(w2);
  29. getUI().addWindow(w3);
  30. OrderListener listener = new OrderListener();
  31. for (Window window : getUI().getWindows()) {
  32. window.addWindowOrderChangeListener(listener);
  33. }
  34. w4 = new Window();
  35. w4.setCaption("Window4");
  36. w4.addStyleName("window4");
  37. w4.addWindowOrderChangeListener(listener);
  38. infoLabel = createLabel("info-label");
  39. uiLabel = createLabel("ui-label");
  40. getUI().addWindowOrderUpdateListener(new WindowOrderListener());
  41. addComponent(infoLabel);
  42. addComponent(uiLabel);
  43. Button first = new Button("Bring first to front",
  44. event -> w1.bringToFront());
  45. first.addStyleName("bring-to-front-first");
  46. addComponent(first);
  47. getLayout().setComponentAlignment(first, Alignment.MIDDLE_RIGHT);
  48. Button all = new Button("Bring to front all windows", event -> {
  49. w3.bringToFront();
  50. w1.bringToFront();
  51. w2.bringToFront();
  52. });
  53. all.addStyleName("bring-to-front-all");
  54. addComponent(all);
  55. getLayout().setComponentAlignment(all, Alignment.MIDDLE_RIGHT);
  56. Button detach = new Button("Detach last window",
  57. event -> getUI().removeWindow(w3));
  58. detach.addStyleName("detach-window");
  59. addComponent(detach);
  60. getLayout().setComponentAlignment(detach, Alignment.MIDDLE_RIGHT);
  61. Button add = new Button("Add new window",
  62. event -> getUI().addWindow(w4));
  63. add.addStyleName("add-window");
  64. addComponent(add);
  65. getLayout().setComponentAlignment(add, Alignment.MIDDLE_RIGHT);
  66. }
  67. @Override
  68. protected String getTestDescription() {
  69. return "Window order position access and listeners for order change events.";
  70. }
  71. @Override
  72. protected Integer getTicketNumber() {
  73. return 14325;
  74. }
  75. private Label createLabel(String style) {
  76. Label label = new Label();
  77. label.addStyleName(style);
  78. return label;
  79. }
  80. private class OrderListener implements WindowOrderChangeListener {
  81. @Override
  82. public void windowOrderChanged(WindowOrderChangeEvent event) {
  83. infoLabel.removeStyleName("w4--1");
  84. infoLabel.addStyleName("w4-" + w4.getOrderPosition());
  85. if (event.getWindow() == w3 && event.getOrder() == -1) {
  86. Label detached = new Label("Window 3 is detached");
  87. detached.addStyleName("w3-detached");
  88. detached.addStyleName("w3-" + w3.getOrderPosition());
  89. addComponent(detached);
  90. }
  91. Window window = event.getWindow();
  92. Label label = new Label(String.valueOf(window.getOrderPosition()));
  93. label.addStyleName("event-order" + event.getOrder());
  94. window.setContent(label);
  95. }
  96. }
  97. private class WindowOrderListener implements WindowOrderUpdateListener {
  98. @Override
  99. public void windowOrderUpdated(WindowOrderUpdateEvent event) {
  100. uiLabel.removeStyleName(infoLabel.getStyleName());
  101. for (Window window : event.getWindows()) {
  102. uiLabel.addStyleName(window.getStyleName() + "-"
  103. + window.getOrderPosition());
  104. }
  105. }
  106. }
  107. private Window w1;
  108. private Window w2;
  109. private Window w3;
  110. private Window w4;
  111. private Label infoLabel;
  112. private Label uiLabel;
  113. }