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.

GridHeaderStyleNames.java 3.0KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586
  1. package com.vaadin.tests.components.grid;
  2. import com.vaadin.server.VaadinRequest;
  3. import com.vaadin.tests.util.Person;
  4. import com.vaadin.ui.Button;
  5. import com.vaadin.ui.Grid;
  6. import com.vaadin.ui.Grid.SelectionMode;
  7. import com.vaadin.ui.components.grid.FooterCell;
  8. import com.vaadin.ui.components.grid.FooterRow;
  9. import com.vaadin.ui.components.grid.HeaderCell;
  10. import com.vaadin.ui.components.grid.HeaderRow;
  11. public class GridHeaderStyleNames extends GridEditorUI {
  12. private HeaderCell nameHeaderCell;
  13. private HeaderCell mergedCityCountryCell;
  14. private FooterCell nameFooterCell;
  15. private HeaderRow headerRow;
  16. private FooterRow footerRow;
  17. private boolean stylesOn = true;
  18. @Override
  19. protected void setup(VaadinRequest request) {
  20. Grid<Person> grid = createGrid();
  21. grid.setItems(createTestData());
  22. grid.setSelectionMode(SelectionMode.MULTI);
  23. nameHeaderCell = grid.getDefaultHeaderRow().getCell("firstName");
  24. grid.getDefaultHeaderRow().setStyleName("foo");
  25. headerRow = grid.prependHeaderRow();
  26. mergedCityCountryCell = headerRow.join("city", "street");
  27. mergedCityCountryCell.setText("Merged cell");
  28. grid.setColumns("email", "firstName", "city", "street", "lastName",
  29. "zip");
  30. addComponent(grid);
  31. footerRow = grid.appendFooterRow();
  32. nameFooterCell = footerRow.getCell("firstName");
  33. getPage().getStyles().add(
  34. ".name {background-image: linear-gradient(to bottom,green 2%, #efefef 98%) !important;}");
  35. getPage().getStyles().add(
  36. ".valo .v-grid-header .v-grid-cell.city-country {background-image: linear-gradient(to bottom,yellow 2%, #efefef 98%) !important;}");
  37. getPage().getStyles().add(
  38. ".valo .v-grid-footer .v-grid-cell.name-footer {background-image: linear-gradient(to bottom,blue 2%, #efefef 98%) !important;}");
  39. getPage().getStyles().add(
  40. ".valo .v-grid .v-grid-row.custom-row > * {background-image: linear-gradient(to bottom,purple 2%, #efefef 98%);}");
  41. setCellStyles(true);
  42. setRowStyles(true);
  43. Button button = new Button("Toggle styles");
  44. button.addClickListener(event -> {
  45. setCellStyles(!stylesOn);
  46. setRowStyles(!stylesOn);
  47. stylesOn = !stylesOn;
  48. });
  49. addComponent(button);
  50. }
  51. protected void setCellStyles(boolean set) {
  52. if (set) {
  53. nameHeaderCell.setStyleName("name");
  54. nameFooterCell.setStyleName("name-footer");
  55. mergedCityCountryCell.setStyleName("city-country");
  56. } else {
  57. nameHeaderCell.setStyleName(null);
  58. nameFooterCell.setStyleName(null);
  59. mergedCityCountryCell.setStyleName(null);
  60. }
  61. }
  62. protected void setRowStyles(boolean set) {
  63. if (set) {
  64. headerRow.setStyleName("custom-row");
  65. footerRow.setStyleName("custom-row");
  66. } else {
  67. headerRow.setStyleName(null);
  68. footerRow.setStyleName(null);
  69. }
  70. }
  71. }