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.creditcard;
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.HTML;
33 import org.primefaces.util.LangUtils;
34 import org.primefaces.util.WidgetBuilder;
35
36
37
38
39
40
41
42 public class CreditCardRenderer extends CoreRenderer {
43
44 @Override
45 public void encodeEnd(final FacesContext context, final UIComponent component) throws IOException {
46 final CreditCard creditCard = (CreditCard) component;
47 encodeMarkup(context, creditCard);
48 encodeScript(context, creditCard);
49 }
50
51 protected void encodeMarkup(final FacesContext context, final CreditCard creditCard) throws IOException {
52 final ResponseWriter writer = context.getResponseWriter();
53 final String clientId = creditCard.getClientId(context);
54 final String widgetVar = creditCard.resolveWidgetVar();
55 final String styleClass = CreditCard.STYLE_CLASS;
56
57 writer.startElement("div", creditCard);
58 writer.writeAttribute("id", clientId, "id");
59 writer.writeAttribute(HTML.WIDGET_VAR, widgetVar, null);
60 writer.writeAttribute(Attrs.CLASS, styleClass, "styleClass");
61 writer.endElement("div");
62 }
63
64 protected void encodeScript(final FacesContext context, final CreditCard creditCard) throws IOException {
65 final WidgetBuilder wb = getWidgetBuilder(context);
66 wb.init("ExtCreditCard", creditCard);
67 wb.attr("width", creditCard.getWidth(), 350);
68 wb.attr("formatting", creditCard.isFormatting(), true);
69
70 wb.nativeAttr("messages", "{validDate:'" + creditCard.getLabelValidDate() + "',"
71 + "monthYear:'" + creditCard.getLabelMonthYear() + "'}");
72
73 final StringBuilder placeholder = new StringBuilder(1024);
74 placeholder.append("{name:'").append(creditCard.getPlaceholderName()).append("'");
75 if (!LangUtils.isBlank(creditCard.getPlaceholderNumber())) {
76 placeholder.append(",number:'").append(creditCard.getPlaceholderNumber()).append("'");
77 }
78 if (!LangUtils.isBlank(creditCard.getPlaceholderExpiry())) {
79 placeholder.append(",expiry:'").append(creditCard.getPlaceholderExpiry()).append("'");
80 }
81 if (!LangUtils.isBlank(creditCard.getPlaceholderCvc())) {
82 placeholder.append(",cvc:'").append(creditCard.getPlaceholderCvc()).append("'");
83 }
84 placeholder.append("}");
85 wb.nativeAttr("placeholders", placeholder.toString());
86
87 wb.finish();
88 }
89
90 }