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.workbench.column.definition;
35
36 import info.magnolia.jcr.util.PropertyUtil;
37 import info.magnolia.objectfactory.ComponentProvider;
38 import info.magnolia.ui.contentapp.configuration.column.ConfiguredColumnDefinition;
39 import info.magnolia.ui.vaadin.integration.jcr.JcrItemUtil;
40 import info.magnolia.ui.vaadin.integration.jcr.JcrNodeAdapter;
41
42 import javax.jcr.Node;
43 import javax.jcr.RepositoryException;
44
45 import com.vaadin.data.ValueProvider;
46 import com.vaadin.ui.renderers.HtmlRenderer;
47 import com.vaadin.v7.data.Item;
48 import com.vaadin.v7.data.util.ObjectProperty;
49
50
51
52
53
54
55 @Deprecated
56 public class CompatibilityColumnDefinition extends ConfiguredColumnDefinition {
57
58 private AbstractColumnDefinition deprecatedColumnDefinition;
59
60 public CompatibilityColumnDefinition() {
61 setRenderer(HtmlRenderer.class);
62 setValueProvider(CompatibilityValueProvider.class);
63 }
64
65 public void init() {
66 if (getDeprecatedColumnDefinition() != null) {
67 getDeprecatedColumnDefinition().setName(getName());
68 getDeprecatedColumnDefinition().setPropertyName(getName());
69 setCaption(getName());
70 }
71 }
72
73 public AbstractColumnDefinition getDeprecatedColumnDefinition() {
74 return deprecatedColumnDefinition;
75 }
76
77 public void setDeprecatedColumnDefinition(AbstractColumnDefinition deprecatedColumnDefinition) {
78 this.deprecatedColumnDefinition = deprecatedColumnDefinition;
79 }
80
81
82
83
84
85
86 @Deprecated
87 public static class CompatibilityValueProvider implements ValueProvider<javax.jcr.Item, Object> {
88
89 private final CompatibilityColumnDefinition compatibilityColumnDefinition;
90 private final ColumnFormatter columnFormatter;
91
92 public CompatibilityValueProvider(CompatibilityColumnDefinition compatibilityColumnDefinition, ComponentProvider componentProvider) {
93 this.compatibilityColumnDefinition = compatibilityColumnDefinition;
94
95 ColumnDefinition columnDefinition = compatibilityColumnDefinition.getDeprecatedColumnDefinition();
96 if (columnDefinition != null && columnDefinition.getFormatterClass() != null) {
97 columnFormatter = componentProvider.newInstance(columnDefinition.getFormatterClass(), columnDefinition);
98 } else {
99 columnFormatter = null;
100 }
101 }
102
103 @Override
104 public Object apply(javax.jcr.Item item) {
105 if (!item.isNode()) {
106 return null;
107 }
108
109 final Node node = (Node) item;
110 if (compatibilityColumnDefinition.getDeprecatedColumnDefinition() != null) {
111 Object propertyValueObject = PropertyUtil.getPropertyValueObject(node, compatibilityColumnDefinition.getDeprecatedColumnDefinition().getPropertyName());
112 if (columnFormatter != null) {
113 try {
114 return columnFormatter.generateCell(new com.vaadin.v7.ui.Table() {
115 @Override
116 public Item getItem(Object itemId) {
117 return new JcrNodeAdapter(node);
118 }
119
120 @Override
121 public com.vaadin.v7.data.Property getContainerProperty(Object itemId, Object propertyId) {
122 return propertyValueObject == null ? null : new ObjectProperty<>(propertyValueObject);
123 }
124 }, JcrItemUtil.getItemId(node), compatibilityColumnDefinition.getName());
125 } catch (RepositoryException e) {
126 throw new RuntimeException(e);
127 }
128 } else {
129 return propertyValueObject;
130 }
131 } else {
132 return null;
133 }
134 }
135 }
136 }