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.pages.app.column;
35
36 import info.magnolia.config.registry.DefinitionProvider;
37 import info.magnolia.config.registry.Registry.InvalidDefinitionException;
38 import info.magnolia.config.registry.Registry.NoSuchDefinitionException;
39 import info.magnolia.i18nsystem.I18nizer;
40 import info.magnolia.i18nsystem.SimpleTranslator;
41 import info.magnolia.rendering.template.TemplateDefinition;
42 import info.magnolia.rendering.template.assignment.TemplateDefinitionAssignment;
43 import info.magnolia.rendering.template.registry.TemplateDefinitionRegistry;
44 import info.magnolia.ui.contentapp.configuration.column.ConfiguredColumnDefinition;
45
46 import java.util.Optional;
47
48 import javax.inject.Inject;
49 import javax.jcr.Node;
50 import javax.jcr.RepositoryException;
51
52 import com.vaadin.data.ValueProvider;
53
54
55
56
57 public class TemplateNameColumnDefinition extends ConfiguredColumnDefinition<Node> {
58 public TemplateNameColumnDefinition() {
59 setValueProvider(TemplateNameValueProvider.class);
60 }
61
62
63
64
65 public static class TemplateNameValueProvider implements ValueProvider<Node, String> {
66 private final I18nizer i18n;
67 private final SimpleTranslator translator;
68 private final TemplateDefinitionRegistry registry;
69 private final TemplateDefinitionAssignment templateDefinitionAssignment;
70
71 @Inject
72 public TemplateNameValueProvider(I18nizer i18n, SimpleTranslator translator,
73 TemplateDefinitionRegistry registry,
74 TemplateDefinitionAssignment templateDefinitionAssignment) {
75 this.i18n = i18n;
76 this.translator = translator;
77 this.registry = registry;
78 this.templateDefinitionAssignment = templateDefinitionAssignment;
79 }
80
81 @Override
82 public String apply(Node node) {
83 try {
84
85 return Optional.ofNullable(templateDefinitionAssignment.getAssignedTemplate(node))
86 .map(registry::getProvider)
87 .map(DefinitionProvider::get)
88 .map(i18n::decorate)
89 .map(TemplateDefinition::getTitle)
90 .orElse(null);
91 } catch (InvalidDefinitionException | NoSuchDefinitionException | RepositoryException e) {
92 return translator.translate("pages-app.browser.views.template.unknownTemplate");
93 }
94 }
95 }
96 }