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.resources.app.column;
35
36 import info.magnolia.icons.MagnoliaIcons;
37 import info.magnolia.jcr.RuntimeRepositoryException;
38 import info.magnolia.jcr.util.NodeTypes;
39 import info.magnolia.jcr.util.NodeUtil;
40 import info.magnolia.resourceloader.Resource;
41 import info.magnolia.resources.app.data.ResourceHelper;
42 import info.magnolia.ui.contentapp.configuration.column.icon.IconAndValueColumnDefinition;
43
44 import javax.inject.Inject;
45 import javax.jcr.Node;
46 import javax.jcr.RepositoryException;
47
48
49
50
51 public class ResourceNameColumnDefinition extends IconAndValueColumnDefinition {
52
53 public ResourceNameColumnDefinition() {
54 setValueProvider(ValueProvider.class);
55 }
56
57
58
59
60 public static class ValueProvider extends IconAndValueColumnDefinition.IconAndValueProvider<Resource, ResourceNameColumnDefinition> implements ResourceHelper {
61
62 @Inject
63 public ValueProvider(ResourceNameColumnDefinition definition, com.vaadin.data.ValueProvider<Resource, String> wrapped) {
64 super(definition, wrapped);
65 }
66
67 @Override
68 protected String getIcon(Resource resource) {
69 return getJcrNode(resource)
70 .filter(this::isDeleted)
71 .map(any -> MagnoliaIcons.TRASH)
72 .orElse(resource.isDirectory() ? MagnoliaIcons.FOLDER : MagnoliaIcons.FILE_TEXT).getCssClass();
73 }
74
75 private boolean isDeleted(Node node) {
76 try {
77 return NodeUtil.hasMixin(node, NodeTypes.Deleted.NAME);
78 } catch (RepositoryException e) {
79 throw new RuntimeRepositoryException(e);
80 }
81 }
82 }
83 }