1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34 package info.magnolia.about.app.licenses;
35
36 import info.magnolia.i18nsystem.SimpleTranslator;
37
38 import java.util.ArrayList;
39 import java.util.Collections;
40
41 import com.vaadin.data.ValueProvider;
42 import com.vaadin.ui.Grid;
43 import com.vaadin.ui.TextField;
44 import com.vaadin.ui.components.grid.HeaderCell;
45 import com.vaadin.ui.components.grid.HeaderRow;
46 import com.vaadin.ui.renderers.HtmlRenderer;
47
48
49
50
51 public class LicensesSystemDataGrid extends Grid<LicensesInfoBean> {
52 public static final String DEVELOPER = "developer";
53 public static final String LIBRARY = "library";
54 public static final String LICENSE = "license";
55
56
57 private final SimpleTranslator i18n;
58 LicensesDataProvider licenseListDataProvider;
59
60 public LicensesSystemDataGrid(LicensesDataProvider licenseListDataProvider, SimpleTranslator i18n) {
61 this.licenseListDataProvider = licenseListDataProvider;
62 this.i18n = i18n;
63 }
64
65 public Grid<LicensesInfoBean> setUpSystemDataGrid() {
66 Grid<LicensesInfoBean> licenseGrid = new Grid<>(licenseListDataProvider);
67
68 licenseGrid.getDefaultHeaderRow().setStyleName("about-app-header");
69 createColumn(licenseGrid, LicensesInfoBean::getLibrary, "about.app.licenses.licenseinfo.libraryColumn", LIBRARY);
70 createColumn(licenseGrid, LicensesInfoBean::getDeveloper, "about.app.licenses.licenseinfo.developerColumn", DEVELOPER);
71 createColumn(licenseGrid, LicensesInfoBean::getLicense, "about.app.licenses.licenseinfo.licenseColumn", LICENSE);
72
73 licenseGrid.setSelectionMode(Grid.SelectionMode.NONE);
74 licenseGrid.setSizeFull();
75 setGridFilter(licenseGrid);
76
77 return licenseGrid;
78 }
79
80 private void createColumn(Grid<LicensesInfoBean> licenseGrid, ValueProvider<LicensesInfoBean, String> valueProvider, String caption, String id) {
81 licenseGrid.addColumn(valueProvider).setCaption(i18n.translate(caption)).setId(id).setSortable(true).setRenderer(new HtmlRenderer());
82 }
83
84 private void setGridFilter(final Grid<LicensesInfoBean> grid) {
85 HeaderRow filterRow = grid.appendHeaderRow();
86 LicensesInfoBean filterBean = licenseListDataProvider.getLicensesInfoBeanFilter();
87 for (final Grid.Column<LicensesInfoBean, ?> column : grid.getColumns()) {
88 HeaderCell cell = filterRow.getCell(column.getId());
89
90 TextField filterField = new TextField();
91 filterField.setWidth(100, Unit.PERCENTAGE);
92 filterField.addValueChangeListener(event -> {
93 switch (column.getId()) {
94 case DEVELOPER:
95 filterBean.setDeveloper(event.getValue());
96 break;
97 case LIBRARY:
98 filterBean.setLibrary(event.getValue());
99 break;
100 case LICENSE:
101 filterBean.setLicensesList(new ArrayList<>(Collections.singletonList(event.getValue())));
102 break;
103 }
104 licenseListDataProvider.refreshAll();
105 });
106 cell.setComponent(filterField);
107 }
108 }
109 }