1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 package com.hack23.cia.web.impl.ui.application.views.common.gridfactory.impl;
20
21 import org.springframework.stereotype.Service;
22 import org.vaadin.gridutil.cell.GridCellFilter;
23
24 import com.hack23.cia.web.impl.ui.application.views.common.converters.ListPropertyConverter;
25 import com.hack23.cia.web.impl.ui.application.views.common.gridfactory.api.GridFactory;
26 import com.hack23.cia.web.impl.ui.application.views.common.sizing.ContentRatio;
27 import com.hack23.cia.web.impl.ui.application.views.pageclicklistener.AbstractPageItemRendererClickListener;
28 import com.vaadin.data.Container;
29 import com.vaadin.data.Container.Indexed;
30 import com.vaadin.data.util.BeanItemContainer;
31 import com.vaadin.event.SelectionEvent.SelectionListener;
32 import com.vaadin.ui.AbstractOrderedLayout;
33 import com.vaadin.ui.Grid;
34 import com.vaadin.ui.Grid.Column;
35 import com.vaadin.ui.Grid.SelectionMode;
36
37
38
39
40 @Service
41 public final class GridFactoryImpl implements GridFactory {
42
43
44
45
46 public GridFactoryImpl() {
47 super();
48 }
49
50 @Override
51 public void createBasicBeanItemGrid(final AbstractOrderedLayout panelContent, final Container.Indexed datasource,
52 final String caption, final Object[] columnOrder, final Object[] hideColumns,
53 final AbstractPageItemRendererClickListener<?> listener, final String actionId, final ListPropertyConverter[] collectionPropertyConverters) {
54 createBasicBeanItemNestedPropertiesGrid(panelContent,datasource, caption, null, columnOrder, hideColumns, listener, actionId, collectionPropertyConverters);
55
56
57 }
58
59 @Override
60 public void createBasicBeanItemNestedPropertiesGrid(final AbstractOrderedLayout panelContent,final Indexed datasource, final String caption, final String[] nestedProperties,
61 final Object[] columnOrder, final Object[] hideColumns, final AbstractPageItemRendererClickListener<?> listener,
62 final String actionId, final ListPropertyConverter[] collectionPropertyConverters) {
63 final Grid grid = new Grid(datasource);
64
65 grid.setCaption(caption);
66 grid.setSelectionMode(SelectionMode.SINGLE);
67
68 createNestedProperties(datasource, nestedProperties);
69
70 configureColumnOrdersAndHiddenFields(columnOrder, hideColumns, grid);
71
72 configureListeners(listener, grid);
73
74 setColumnConverters(collectionPropertyConverters, grid);
75
76 grid.setSizeFull();
77
78 grid.setStyleName("Level2Header");
79
80 grid.setImmediate(true);
81 grid.setReadOnly(true);
82
83 createGridCellFilter(columnOrder, grid);
84
85 panelContent.addComponent(grid);
86 panelContent.setExpandRatio(grid, ContentRatio.GRID);
87 }
88
89
90
91
92
93
94
95
96
97
98
99 private static void configureColumnOrdersAndHiddenFields(final Object[] columnOrder, final Object[] hideColumns,
100 final Grid grid) {
101 if (columnOrder != null) {
102 grid.setColumnOrder(columnOrder);
103 }
104
105 if (hideColumns != null) {
106 for (final Object o : hideColumns) {
107 grid.removeColumn(o);
108 }
109 }
110 }
111
112
113
114
115
116
117
118
119
120 private static void createNestedProperties(final Indexed datasource, final String[] nestedProperties) {
121 if (nestedProperties != null) {
122 for (final String nestedProperty : nestedProperties) {
123 final BeanItemContainer<?> dataContainer = (BeanItemContainer<?>) datasource;
124 dataContainer.addNestedContainerProperty(nestedProperty);
125 }
126 }
127 }
128
129
130
131
132
133
134
135
136
137 private static void configureListeners(final SelectionListener listener,
138 final Grid grid) {
139
140 if (listener != null) {
141 grid.addSelectionListener(listener);
142 }
143 }
144
145
146
147
148
149
150
151
152
153
154 private static void createGridCellFilter(final Object[] columnOrder, final Grid grid) {
155 if (columnOrder != null) {
156 final GridCellFilter gridCellFilter = new GridCellFilter(grid);
157
158 for (final Object column : columnOrder) {
159 if (grid.getColumn(column) != null) {
160 gridCellFilter.setTextFilter(column.toString(), true, true);
161 }
162 }
163
164 }
165 }
166
167
168
169
170
171
172
173
174
175
176 private static void setColumnConverters(final ListPropertyConverter[] collectionPropertyConverter, final Grid grid) {
177 if (collectionPropertyConverter != null) {
178 for (final ListPropertyConverter converter : collectionPropertyConverter) {
179 final Column column = grid.getColumn(converter.getColumn());
180 column.setConverter(converter);
181 }
182 }
183 }
184
185
186 }