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.

CloseModalSubWindow.java 3.2KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107
  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.Button.ClickListener;
  6. import com.vaadin.ui.HorizontalLayout;
  7. import com.vaadin.ui.UI;
  8. import com.vaadin.ui.Window;
  9. import com.vaadin.v7.data.Item;
  10. import com.vaadin.v7.ui.TreeTable;
  11. @SuppressWarnings("serial")
  12. public class CloseModalSubWindow extends AbstractTestUIWithLog {
  13. public static final String SUB_WINDOW = "sub-win";
  14. public static final String TREE_TABLE = "treetable";
  15. public static final String DELETE_BUTTON = "del-btn";
  16. public static final String CONFIRM_BUTTON = "confirm-btn";
  17. private ConfirmWindow win;
  18. private TreeTable table;
  19. @Override
  20. protected String getTestDescription() {
  21. return "Lists a dozen items in a TreeTable with a Delete Button in each row. "
  22. + "Delete button will open an sub-window allowing user to either confirm delete operation or cancel. "
  23. + "Confirming should close the sub-window at the same time as the item is removed from the TreeTable.";
  24. }
  25. @Override
  26. protected Integer getTicketNumber() {
  27. return 13188;
  28. }
  29. @SuppressWarnings("unchecked")
  30. @Override
  31. protected void setup(VaadinRequest request) {
  32. table = new TreeTable();
  33. table.setId(TREE_TABLE);
  34. table.addContainerProperty("column", String.class, null);
  35. table.addContainerProperty("delete", Button.class, null);
  36. for (int i = 0; i < 10; i++) {
  37. Item item = table.addItem(i);
  38. item.getItemProperty("column").setValue("" + i);
  39. Button b = new Button("Delete", deleteClickListener);
  40. b.setId(DELETE_BUTTON + i);
  41. b.setData(i);
  42. item.getItemProperty("delete").setValue(b);
  43. }
  44. table.setSortEnabled(false);
  45. table.setColumnReorderingAllowed(false);
  46. table.setEditable(true);
  47. table.setPageLength(0);
  48. addComponent(table);
  49. }
  50. private void deleteItem(Object itemId) {
  51. table.removeItem(itemId);
  52. }
  53. private ClickListener deleteClickListener = event -> {
  54. win = new ConfirmWindow(event.getButton().getData());
  55. log("Modal sub-window opened");
  56. };
  57. private ClickListener confirmClickListener = event -> {
  58. deleteItem(event.getButton().getData());
  59. win.close();
  60. log("Modal sub-window closed");
  61. };
  62. private ClickListener cancelClickListener = event -> {
  63. win.close();
  64. log("Modal sub-window closed");
  65. };
  66. /** Modal confirmation sub-window. */
  67. class ConfirmWindow extends Window {
  68. public ConfirmWindow(Object itemId) {
  69. setModal(true);
  70. setWidth("300px");
  71. setHeight("200px");
  72. setId(SUB_WINDOW);
  73. Button ok = new Button("Confirm Delete", confirmClickListener);
  74. ok.setId(CONFIRM_BUTTON);
  75. ok.setData(itemId);
  76. Button cancel = new Button("Cancel", cancelClickListener);
  77. HorizontalLayout l = new HorizontalLayout();
  78. l.addComponent(ok);
  79. l.addComponent(cancel);
  80. setContent(l);
  81. UI.getCurrent().addWindow(this);
  82. }
  83. }
  84. }