Ви не можете вибрати більше 25 тем Теми мають розпочинатися з літери або цифри, можуть містити дефіси (-) і не повинні перевищувати 35 символів.

DateFieldHeaderScrollWithFrozen.java 3.1KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105
  1. package com.vaadin.tests.components.grid;
  2. import java.time.LocalDate;
  3. import com.vaadin.data.Binder.Binding;
  4. import com.vaadin.server.VaadinRequest;
  5. import com.vaadin.tests.components.AbstractTestUI;
  6. import com.vaadin.ui.CssLayout;
  7. import com.vaadin.ui.DateField;
  8. import com.vaadin.ui.Grid;
  9. import com.vaadin.ui.Grid.Column;
  10. import com.vaadin.ui.Label;
  11. import com.vaadin.ui.TextField;
  12. import com.vaadin.ui.components.grid.HeaderRow;
  13. import com.vaadin.ui.renderers.ComponentRenderer;
  14. import com.vaadin.ui.themes.ValoTheme;
  15. public class DateFieldHeaderScrollWithFrozen extends AbstractTestUI {
  16. @Override
  17. protected void setup(VaadinRequest request) {
  18. Grid<Pojo> grid = new Grid<>();
  19. Column<Pojo, String> col0 = grid.addColumn(s -> {
  20. return "col0";
  21. }).setWidth(100).setCaption("col0").setResizable(true)
  22. .setEditorComponent(new TextField("h0"), Pojo::setCol0);
  23. Column<Pojo, String> col1 = grid.addColumn(s -> {
  24. return "col1";
  25. }).setWidth(100).setCaption("col1")
  26. .setEditorComponent(new TextField("h1"), Pojo::setCol1);
  27. Column<Pojo, CssLayout> col2 = grid.addColumn(s -> {
  28. CssLayout group = new CssLayout(new DateField());
  29. group.addStyleName(ValoTheme.LAYOUT_COMPONENT_GROUP);
  30. return group;
  31. }).setWidth(200).setCaption("col2")
  32. .setRenderer(new ComponentRenderer());
  33. Column<Pojo, String> col3 = grid.addColumn(s -> {
  34. return "col3";
  35. }).setWidth(999).setCaption("col3")
  36. .setEditorComponent(new TextField("h3"), Pojo::setCol3);
  37. Binding<Pojo, LocalDate> dateFieldBinding = grid.getEditor().getBinder()
  38. .forField(new DateField()).bind(Pojo::getCol2, Pojo::setCol2);
  39. col2.setEditorBinding(dateFieldBinding);
  40. HeaderRow headerRow = grid.addHeaderRowAt(1);
  41. headerRow.getCell(col0).setComponent(new Label("h0"));
  42. headerRow.getCell(col1).setComponent(new Label("h1"));
  43. headerRow.getCell(col2).setComponent(new DateField());
  44. headerRow.getCell(col3).setComponent(new Label("h3"));
  45. grid.setItems(new Pojo(), new Pojo(), new Pojo());
  46. grid.setFrozenColumnCount(2);
  47. grid.getEditor().setEnabled(true);
  48. grid.addItemClickListener(e -> {
  49. grid.getEditor().editRow(e.getRowIndex());
  50. });
  51. getLayout().addComponents(grid);
  52. }
  53. class Pojo {
  54. String col0, col1, col3;
  55. LocalDate col2;
  56. public String getCol0() {
  57. return col0;
  58. }
  59. public void setCol0(String col0) {
  60. this.col0 = col0;
  61. }
  62. public String getCol1() {
  63. return col1;
  64. }
  65. public void setCol1(String col1) {
  66. this.col1 = col1;
  67. }
  68. public LocalDate getCol2() {
  69. return col2;
  70. }
  71. public void setCol2(LocalDate col2) {
  72. this.col2 = col2;
  73. }
  74. public String getCol3() {
  75. return col3;
  76. }
  77. public void setCol3(String col3) {
  78. this.col3 = col3;
  79. }
  80. }
  81. }