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.

CloseSubWindow.java 1.8KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. package com.vaadin.tests.components.window;
  2. import com.vaadin.server.VaadinRequest;
  3. import com.vaadin.tests.components.AbstractTestUIWithLog;
  4. import com.vaadin.ui.Button;
  5. import com.vaadin.ui.VerticalLayout;
  6. import com.vaadin.ui.Window;
  7. public class CloseSubWindow extends AbstractTestUIWithLog {
  8. @Override
  9. protected void setup(VaadinRequest request) {
  10. Button openWindowButton = new Button("Open sub-window");
  11. openWindowButton.setId("opensub");
  12. openWindowButton.addClickListener(event -> {
  13. Window sub = createClosableSubWindow("Sub-window");
  14. getUI().addWindow(sub);
  15. });
  16. addComponent(openWindowButton);
  17. }
  18. private Window createClosableSubWindow(final String title) {
  19. VerticalLayout layout = new VerticalLayout();
  20. layout.setMargin(true);
  21. layout.setSizeUndefined();
  22. final Window window = new Window(title, layout);
  23. window.setSizeUndefined();
  24. window.setClosable(true);
  25. Button closeButton = new Button("Close");
  26. closeButton.addClickListener(
  27. event -> event.getButton().findAncestor(Window.class).close());
  28. layout.addComponent(closeButton);
  29. Button removeButton = new Button("Remove from UI");
  30. removeButton.addClickListener(event -> getUI().removeWindow(window));
  31. layout.addComponent(removeButton);
  32. window.addCloseListener(event -> log("Window '" + title + "' closed"));
  33. return window;
  34. }
  35. @Override
  36. protected String getTestDescription() {
  37. return "Close sub-windows both from code and with the close button in the window title bar, and check for close events. Contains an ugly workaround for the Opera bug (Opera does not send close events)";
  38. }
  39. @Override
  40. protected Integer getTicketNumber() {
  41. return 3865;
  42. }
  43. }