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