1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 package org.apache.myfaces.custom.tree.renderkit.html;
20
21 import java.io.IOException;
22
23 import javax.faces.component.UIComponent;
24 import javax.faces.context.FacesContext;
25 import javax.faces.context.ResponseWriter;
26
27 import org.apache.myfaces.custom.tree.HtmlTreeImageCommandLink;
28 import org.apache.myfaces.custom.tree.HtmlTreeNode;
29 import org.apache.myfaces.renderkit.html.jsf.ExtendedHtmlLinkRenderer;
30 import org.apache.myfaces.renderkit.html.util.DummyFormUtils;
31 import org.apache.myfaces.shared_tomahawk.renderkit.html.HTML;
32 import org.apache.myfaces.shared_tomahawk.renderkit.html.HtmlRendererUtils;
33
34
35
36
37
38
39
40
41
42
43
44 public class HtmlTreeImageCommandLinkRenderer
45 extends ExtendedHtmlLinkRenderer {
46
47 private static final Integer ZERO = new Integer(0);
48
49
50 public void decode(FacesContext facesContext, UIComponent component) {
51 super.decode(facesContext, component);
52 String clientId = component.getClientId(facesContext);
53 String reqValue = (String) facesContext
54 .getExternalContext()
55 .getRequestParameterMap().get(HtmlRendererUtils
56 .getHiddenCommandLinkFieldName(DummyFormUtils.findNestingForm(component, facesContext)));
57 if (reqValue != null && reqValue.equals(clientId)) {
58 HtmlTreeNode node = (HtmlTreeNode) component.getParent();
59
60 node.toggleExpanded();
61 }
62 }
63
64
65 protected void renderCommandLinkStart(FacesContext facesContext,
66 UIComponent component,
67 String clientId,
68 Object value,
69 String style,
70 String styleClass) throws IOException {
71
72 super.renderCommandLinkStart(facesContext, component, clientId, value, style, styleClass);
73
74 String url = ((HtmlTreeImageCommandLink) component).getImage();
75
76 if ((url != null) && (url.length() > 0)) {
77 ResponseWriter writer = facesContext.getResponseWriter();
78 writer.startElement(HTML.IMG_ELEM, component);
79 String src = facesContext.getApplication().getViewHandler().getResourceURL(facesContext, url);
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94 writer.writeAttribute(HTML.SRC_ATTR, src, null);
95 writer.writeAttribute(HTML.BORDER_ATTR, ZERO, null);
96
97 HtmlRendererUtils.renderHTMLAttributes(writer, component, HTML.IMG_PASSTHROUGH_ATTRIBUTES);
98
99 writer.endElement(HTML.IMG_ELEM);
100 }
101 }
102 }