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.qrcode;
23
24 import java.io.*;
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 QRCodeRenderer extends CoreRenderer {
41
42 @Override
43 public void encodeEnd(final FacesContext context, final UIComponent component) throws IOException {
44 final QRCode qrCode = (QRCode) component;
45 encodeMarkup(context, qrCode);
46 encodeScript(context, qrCode);
47 }
48
49 protected void encodeScript(final FacesContext context, final QRCode qrCode) throws IOException {
50 final WidgetBuilder wb = getWidgetBuilder(context);
51 wb.init("ExtQRCode", qrCode);
52 wb.attr("render", qrCode.getRenderMethod())
53 .attr("mode", qrCode.getRenderMode())
54 .attr("minVersion", qrCode.getMinVersion())
55 .attr("maxVersion", qrCode.getMaxVersion())
56 .attr("left", qrCode.getLeftOffset())
57 .attr("top", qrCode.getTopOffset())
58 .attr("size", qrCode.getSize())
59 .attr("fill", qrCode.getFillColor())
60 .attr("ecLevel", qrCode.getEcLevel())
61 .attr("background", qrCode.getBackground())
62 .attr("text", qrCode.getText())
63 .attr("radius", qrCode.getRadius())
64 .attr("quiet", qrCode.getQuiet())
65 .attr("mSize", qrCode.getLabelSize())
66 .attr("mPosX", qrCode.getLabelPosX())
67 .attr("mPosY", qrCode.getLabelPosY())
68 .attr(Attrs.LABEL, qrCode.getLabel())
69 .attr("fontname", qrCode.getFontName())
70 .attr("fontcolor", qrCode.getFontColor());
71
72 wb.finish();
73 }
74
75 private void encodeMarkup(final FacesContext context, final QRCode qrCode) throws IOException {
76 final ResponseWriter writer = context.getResponseWriter();
77 final String clientId = qrCode.getClientId(context);
78 final String styleClass = getStyleClassBuilder(context)
79 .add(QRCode.STYLE_CLASS)
80 .add(qrCode.getStyleClass())
81 .build();
82 writer.startElement("span", null);
83 writer.writeAttribute("id", clientId, null);
84 writer.writeAttribute(Attrs.CLASS, styleClass, "styleClass");
85 if (qrCode.getStyle() != null) {
86 writer.writeAttribute(Attrs.STYLE, qrCode.getStyle(), Attrs.STYLE);
87 }
88 writer.endElement("span");
89 }
90
91 @Override
92 public void encodeChildren(final FacesContext context, final UIComponent component) {
93
94 }
95
96 @Override
97 public boolean getRendersChildren() {
98 return true;
99 }
100 }