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.contentapp.column.jcr;
35
36 import info.magnolia.jcr.util.PropertyUtil;
37 import info.magnolia.ui.contentapp.configuration.column.ColumnType;
38 import info.magnolia.ui.contentapp.configuration.column.icon.IconColumnDefinition;
39
40 import java.util.HashMap;
41 import java.util.Map;
42
43 import javax.jcr.Item;
44 import javax.jcr.Node;
45 import javax.jcr.RepositoryException;
46
47 import org.slf4j.Logger;
48 import org.slf4j.LoggerFactory;
49
50 import com.vaadin.ui.renderers.HtmlRenderer;
51
52 import lombok.Getter;
53 import lombok.Setter;
54
55
56
57
58 @ColumnType("jcrNameColumn")
59 public class JcrNameColumnDefinition extends IconColumnDefinition {
60
61 private static final Logger log = LoggerFactory.getLogger(JcrNameColumnDefinition.class);
62
63 @Setter
64 @Getter
65 private Map<String, String> nodeTypeToIcon = new HashMap<>();
66
67 public JcrNameColumnDefinition() {
68 setRenderer(HtmlRenderer.class);
69 setValueProvider(JcrNameValueProvider.class);
70 }
71
72
73
74
75 public static class JcrNameValueProvider extends IconColumnDefinition.IconValueProvider<Item, JcrNameColumnDefinition> {
76
77 public JcrNameValueProvider(JcrNameColumnDefinition definition) {
78 super(definition);
79 }
80
81 @Override
82 public String apply(Item node) {
83 try {
84 return super.apply(node) + (node.isNode() ? PropertyUtil.getString((Node) node, "jcrName", node.getName()) : node.getName());
85 } catch (RepositoryException e) {
86 log.debug("Failed to render JCR item name in a Grid column", e);
87 return "";
88 }
89 }
90
91 @Override
92 protected String getIcon(Item node) {
93 try {
94 return node.isNode() ? getDefinition().getNodeTypeToIcon().get(((Node)node).getPrimaryNodeType().getName()) : super.getIcon(node);
95 } catch (RepositoryException e) {
96 log.debug("Failed to render JCR item icon in a Grid column", e);
97 return "";
98 }
99 }
100 }
101 }