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.

GridInTabSheet.java 3.3KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293
  1. package com.vaadin.tests.components.grid;
  2. import java.util.LinkedList;
  3. import java.util.concurrent.atomic.AtomicInteger;
  4. import java.util.stream.Collectors;
  5. import java.util.stream.IntStream;
  6. import com.vaadin.annotations.Widgetset;
  7. import com.vaadin.data.ValueProvider;
  8. import com.vaadin.data.converter.StringToIntegerConverter;
  9. import com.vaadin.data.provider.DataProvider;
  10. import com.vaadin.data.provider.ListDataProvider;
  11. import com.vaadin.server.VaadinRequest;
  12. import com.vaadin.tests.components.AbstractTestUIWithLog;
  13. import com.vaadin.ui.Button;
  14. import com.vaadin.ui.Grid.SelectionMode;
  15. import com.vaadin.ui.Label;
  16. import com.vaadin.ui.TabSheet;
  17. import com.vaadin.ui.TextField;
  18. import com.vaadin.ui.renderers.NumberRenderer;
  19. @Widgetset("com.vaadin.DefaultWidgetSet")
  20. public class GridInTabSheet extends AbstractTestUIWithLog {
  21. public class DataCommunicator<T>
  22. extends com.vaadin.data.provider.DataCommunicator<T> {
  23. @Override
  24. protected void onRequestRows(int firstRowIndex, int numberOfRows,
  25. int firstCachedRowIndex, int cacheSize) {
  26. log("RequestRows: [" + firstRowIndex + "," + numberOfRows + ","
  27. + firstCachedRowIndex + "," + cacheSize + "]");
  28. super.onRequestRows(firstRowIndex, numberOfRows,
  29. firstCachedRowIndex, cacheSize);
  30. }
  31. }
  32. public class Grid<T> extends com.vaadin.ui.Grid<T> {
  33. public Grid() {
  34. super(new DataCommunicator<>());
  35. }
  36. }
  37. private AtomicInteger index = new AtomicInteger(0);
  38. @Override
  39. protected void setup(VaadinRequest request) {
  40. TabSheet sheet = new TabSheet();
  41. final Grid<Integer> grid = new Grid<>();
  42. grid.setSelectionMode(SelectionMode.MULTI);
  43. grid.addColumn(ValueProvider.identity(), new NumberRenderer())
  44. .setId("count").setEditorBinding(
  45. grid.getEditor().getBinder().forField(new TextField())
  46. .withConverter(new StringToIntegerConverter(""))
  47. .bind(i -> i, (i, v) -> {
  48. }));
  49. grid.getEditor().setEnabled(true);
  50. LinkedList<Integer> items = IntStream.range(0, 3).boxed()
  51. .collect(Collectors.toCollection(LinkedList::new));
  52. ListDataProvider<Integer> provider = DataProvider.ofCollection(items);
  53. grid.setDataProvider(provider);
  54. sheet.addTab(grid, "Grid");
  55. sheet.addTab(new Label("Hidden"), "Label");
  56. addComponent(sheet);
  57. addComponent(new Button("Add row to Grid", event -> {
  58. items.add(100 + index.getAndIncrement());
  59. provider.refreshAll();
  60. }));
  61. Button remove = new Button("Remove row from Grid", event -> {
  62. Object firstItemId = items.get(0);
  63. if (firstItemId != null) {
  64. items.remove(0);
  65. provider.refreshAll();
  66. }
  67. });
  68. addComponent(remove);
  69. Button addGenerator = new Button("Add CellStyleGenerator", event -> {
  70. grid.setStyleGenerator(item -> {
  71. if (item % 2 == 1) {
  72. return null;
  73. }
  74. return "count";
  75. });
  76. });
  77. addComponent(addGenerator);
  78. }
  79. }