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.1KB

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