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.admincentral.apps.notifications.view.column;
35
36 import info.magnolia.ui.api.message.Message;
37 import info.magnolia.ui.contentapp.configuration.column.ConfiguredColumnDefinition;
38
39 import org.jsoup.Jsoup;
40 import org.jsoup.safety.Whitelist;
41
42 import com.vaadin.data.ValueProvider;
43 import com.vaadin.ui.renderers.AbstractRenderer;
44 import com.vaadin.ui.renderers.HtmlRenderer;
45
46 import lombok.Getter;
47 import lombok.Setter;
48
49
50
51
52 @Getter
53 @Setter
54 public class NotificationTextColumnDefinition extends ConfiguredColumnDefinition {
55
56 public static final double MAX_NOTI_TEXT_WIDTH = 300.0;
57
58 @Override
59 public Class<? extends AbstractRenderer> getRenderer() {
60 return HtmlRenderer.class;
61 }
62
63 @Override
64 public Class<? extends ValueProvider> getValueProvider() {
65 return MessageTextValueProvider.class;
66 }
67
68 @Override
69 public boolean isMinimumWidthFromContent() {
70 return false;
71 }
72
73 @Override
74 public double getMinimumWidth() {
75 return MAX_NOTI_TEXT_WIDTH;
76 }
77
78
79
80
81 public class MessageTextValueProvider implements ValueProvider<Message, String> {
82
83 public MessageTextValueProvider() {}
84
85 @Override
86 public String apply(Message message) {
87 final String notificationText =
88 "<div class='notification-text'>" +
89 "<div class='notification-text-header'>"
90 + Jsoup.clean(message.getSubject(), Whitelist.simpleText())
91 + "</div>"
92 + "<div class='notification-text-content'>"
93 + Jsoup.clean(message.getMessage(), Whitelist.simpleText())
94 + "</div>"
95 + "</div>";
96 return notificationText;
97 }
98 }
99
100 }