1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 package org.primefaces.extensions.component.timeago;
23
24 import java.io.IOException;
25
26 import javax.faces.component.UIComponent;
27 import javax.faces.context.FacesContext;
28 import javax.faces.context.ResponseWriter;
29
30 import org.primefaces.extensions.util.Attrs;
31 import org.primefaces.renderkit.CoreRenderer;
32 import org.primefaces.util.WidgetBuilder;
33
34
35
36
37
38
39
40 public class TimeAgoRenderer extends CoreRenderer {
41
42 @Override
43 public void encodeEnd(final FacesContext context, final UIComponent component) throws IOException {
44 final TimeAgo timeAgo = (TimeAgo) component;
45 final Object value = timeAgo.getValue();
46 if (value == null) {
47 return;
48 }
49 encodeMarkup(context, timeAgo);
50 encodeScript(context, timeAgo);
51 }
52
53 protected void encodeMarkup(final FacesContext context, final TimeAgo timeAgo) throws IOException {
54 final ResponseWriter writer = context.getResponseWriter();
55 final String clientId = timeAgo.getClientId(context);
56 final String styleClass = getStyleClassBuilder(context)
57 .add(TimeAgo.STYLE_CLASS)
58 .add(timeAgo.getStyleClass())
59 .build();
60
61 writer.startElement("span", timeAgo);
62 writer.writeAttribute("id", clientId, null);
63 writer.writeAttribute(Attrs.CLASS, styleClass, "styleClass");
64
65 if (timeAgo.getStyle() != null) {
66 writer.writeAttribute(Attrs.STYLE, timeAgo.getStyle(), Attrs.STYLE);
67 }
68
69 encodeTime(context, timeAgo);
70
71 writer.endElement("span");
72 }
73
74 protected void encodeTime(final FacesContext context, final TimeAgo timeAgo) throws IOException {
75 final ResponseWriter writer = context.getResponseWriter();
76 final String formattedForJs = timeAgo.formattedForJs();
77
78 writer.startElement("time", null);
79 writer.writeAttribute("datetime", formattedForJs, null);
80 writer.writeText(timeAgo.getTitlePattern() == null ? formattedForJs : timeAgo.formattedForTitle(), null);
81 writer.endElement("time");
82 }
83
84 protected void encodeScript(final FacesContext context, final TimeAgo timeAgo) throws IOException {
85 final String locale = timeAgo.calculateLocale().getLanguage();
86 final WidgetBuilder wb = getWidgetBuilder(context);
87 wb.init("ExtTimeAgo", timeAgo);
88 if (locale != null) {
89 wb.attr("locale", locale);
90 }
91 wb.finish();
92 }
93
94 }