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.

GridSizeChange.java 3.2KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109
  1. package com.vaadin.tests.components.grid;
  2. import java.util.ArrayList;
  3. import java.util.List;
  4. import com.vaadin.annotations.Widgetset;
  5. import com.vaadin.data.provider.DataProvider;
  6. import com.vaadin.data.provider.ListDataProvider;
  7. import com.vaadin.server.VaadinRequest;
  8. import com.vaadin.shared.ui.grid.HeightMode;
  9. import com.vaadin.tests.components.AbstractReindeerTestUI;
  10. import com.vaadin.ui.Alignment;
  11. import com.vaadin.ui.Button;
  12. import com.vaadin.ui.Grid;
  13. import com.vaadin.ui.GridLayout;
  14. import com.vaadin.ui.TabSheet;
  15. import com.vaadin.ui.VerticalLayout;
  16. @Widgetset("com.vaadin.DefaultWidgetSet")
  17. public class GridSizeChange extends AbstractReindeerTestUI {
  18. private Grid<Integer> grid;
  19. private List<Integer> data;
  20. private ListDataProvider<Integer> dataProvider;
  21. private int counter = 0;
  22. @Override
  23. protected void setup(VaadinRequest request) {
  24. grid = new Grid<>();
  25. data = new ArrayList<>();
  26. for (int i = 0; i < 10; ++i) {
  27. data.add(i);
  28. ++counter;
  29. }
  30. dataProvider = DataProvider.ofCollection(data);
  31. grid.setDataProvider(dataProvider);
  32. // create column and fill rows
  33. grid.addColumn(item -> "row_" + item).setCaption("Item");
  34. // set height mode and height
  35. grid.setHeightMode(HeightMode.ROW);
  36. grid.setHeightByRows(10);
  37. grid.setWidth(90, Unit.PIXELS);
  38. // create a tabsheet with one tab and place grid inside
  39. VerticalLayout tab = new VerticalLayout();
  40. tab.setSpacing(false);
  41. tab.setMargin(false);
  42. TabSheet tabSheet = new TabSheet();
  43. tabSheet.setWidthUndefined();
  44. tabSheet.addTab(tab, "Tab");
  45. tab.addComponent(grid);
  46. GridLayout layout = new GridLayout(3, 2);
  47. layout.setDefaultComponentAlignment(Alignment.TOP_CENTER);
  48. layout.addComponent(new Button("Reduce height", e -> {
  49. double newHeight = grid.getHeightByRows() - 1;
  50. grid.setHeightByRows(newHeight);
  51. }));
  52. layout.addComponent(new Button("Remove row", e -> {
  53. removeRow();
  54. dataProvider.refreshAll();
  55. }));
  56. layout.addComponent(new Button("Reduce width", e -> {
  57. grid.setWidth(grid.getWidth() - 30, Unit.PIXELS);
  58. }));
  59. layout.addComponent(new Button("Increase height", e -> {
  60. double newHeight = grid.getHeightByRows() + 1;
  61. grid.setHeightByRows(newHeight);
  62. }));
  63. layout.addComponent(new Button("Add row", e -> {
  64. addRow();
  65. dataProvider.refreshAll();
  66. }));
  67. layout.addComponent(new Button("Increase width", e -> {
  68. grid.setWidth(grid.getWidth() + 30, Unit.PIXELS);
  69. }));
  70. addComponent(tabSheet);
  71. addComponent(layout);
  72. getLayout().setSpacing(true);
  73. }
  74. private void removeRow() {
  75. data.remove(0);
  76. dataProvider.refreshAll();
  77. }
  78. private void addRow() {
  79. ++counter;
  80. data.add(counter);
  81. dataProvider.refreshAll();
  82. }
  83. @Override
  84. protected String getTestDescription() {
  85. return "Changing Grid size should resize the TabSheet accordingly "
  86. + "even if scrollbar(s) appear or disappear.";
  87. }
  88. }