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.ui.vaadin.grid;
35
36 import java.util.Collection;
37 import java.util.Map;
38
39 import org.apache.commons.lang3.StringEscapeUtils;
40
41 import com.vaadin.v7.data.Container;
42 import com.vaadin.v7.data.Property;
43 import com.vaadin.v7.data.util.IndexedContainer;
44 import com.vaadin.v7.ui.Table;
45
46
47
48
49 public class MagnoliaTable extends Table {
50
51 public MagnoliaTable(Container dataSource) {
52 super(null, dataSource);
53 addStyleName("v-magnolia-table");
54 }
55
56 public MagnoliaTable() {
57 this(new IndexedContainer());
58 }
59
60 @Override
61 protected String formatPropertyValue(Object rowId, Object colId, Property<?> property) {
62 String result = super.formatPropertyValue(rowId, colId, property);
63 return StringEscapeUtils.escapeHtml4(result);
64 }
65
66 @Override
67 public void changeVariables(Object source, Map<String, Object> variables) {
68 super.changeVariables(source, variables);
69 if (variables.containsKey("selectAll")) {
70 boolean selectAll = (Boolean) variables.get("selectAll");
71 if (selectAll) {
72 Collection<?> ids = getItemIds();
73 for (final Object id : ids) {
74 select(id);
75 }
76 } else {
77 setValue(null);
78 }
79 }
80
81 if (variables.containsKey("toggleSelection")) {
82 boolean selected = (Boolean) variables.get("toggleSelection");
83 String key = String.valueOf(variables.get("toggledRowId"));
84 final Object id = itemIdMapper.get(key);
85 if (selected) {
86 select(id);
87 } else {
88 unselect(id);
89 }
90 }
91 }
92 }