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.

TableMoveFocusWithSelection.java 2.8KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293
  1. package com.vaadin.tests.components.table;
  2. import java.util.Arrays;
  3. import java.util.HashSet;
  4. import java.util.Set;
  5. import com.vaadin.server.VaadinRequest;
  6. import com.vaadin.tests.components.AbstractReindeerTestUI;
  7. import com.vaadin.ui.Button;
  8. import com.vaadin.ui.VerticalLayout;
  9. import com.vaadin.v7.ui.Table;
  10. public class TableMoveFocusWithSelection extends AbstractReindeerTestUI {
  11. /*
  12. * (non-Javadoc)
  13. *
  14. * @see com.vaadin.tests.components.AbstractTestUI#setup(com.vaadin.server.
  15. * VaadinRequest)
  16. */
  17. @Override
  18. protected void setup(VaadinRequest request) {
  19. final Table t = new Table();
  20. t.setImmediate(true);
  21. t.setId("test-table");
  22. t.setSizeFull();
  23. t.setSelectable(true);
  24. t.addContainerProperty("layout", VerticalLayout.class, null);
  25. t.addContainerProperty("string", String.class, null);
  26. for (int i = 0; i < 100; i++) {
  27. t.addItem(i);
  28. final VerticalLayout l = new VerticalLayout();
  29. l.setId("row-" + i);
  30. l.setHeight(20, Unit.PIXELS);
  31. l.setData(i);
  32. l.addLayoutClickListener(event -> {
  33. if (t.isMultiSelect()) {
  34. Set<Object> values = new HashSet<>(
  35. (Set<Object>) t.getValue());
  36. values.add(l.getData());
  37. t.setValue(values);
  38. } else {
  39. t.setValue(l.getData());
  40. }
  41. });
  42. t.getContainerProperty(i, "layout").setValue(l);
  43. t.getContainerProperty(i, "string").setValue("Item #" + i);
  44. }
  45. addComponent(t);
  46. // Select mode
  47. Button toggleSelectMode = new Button(
  48. t.isMultiSelect() ? "Press to use single select"
  49. : "Press to use multi select");
  50. toggleSelectMode.setId("toggle-mode");
  51. toggleSelectMode.addClickListener(event -> {
  52. t.setMultiSelect(!t.isMultiSelect());
  53. event.getButton()
  54. .setCaption(t.isMultiSelect() ? "Press to use single select"
  55. : "Press to use multi select");
  56. });
  57. addComponent(toggleSelectMode);
  58. Button select5210 = new Button("Select row 5-10",
  59. event -> t.setValue(Arrays.asList(5, 6, 7, 8, 9, 10)));
  60. select5210.setId("select-510");
  61. addComponent(select5210);
  62. }
  63. /*
  64. * (non-Javadoc)
  65. *
  66. * @see com.vaadin.tests.components.AbstractTestUI#getTestDescription()
  67. */
  68. @Override
  69. protected String getTestDescription() {
  70. return "Changing selection in single select mode should move focus";
  71. }
  72. /*
  73. * (non-Javadoc)
  74. *
  75. * @see com.vaadin.tests.components.AbstractTestUI#getTicketNumber()
  76. */
  77. @Override
  78. protected Integer getTicketNumber() {
  79. return 12540;
  80. }
  81. }