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.application.Resource;
24 import javax.faces.application.ResourceHandler;
25 import javax.faces.component.UIComponent;
26 import javax.faces.context.FacesContext;
27 import javax.faces.context.ResponseWriter;
28
29 import org.apache.myfaces.buildtools.maven2.plugin.builder.annotation.JSFRenderer;
30 import org.apache.myfaces.custom.tree.HtmlTreeImageCommandLink;
31 import org.apache.myfaces.custom.tree.HtmlTreeNode;
32 import org.apache.myfaces.renderkit.html.jsf.ExtendedHtmlLinkRenderer;
33 import org.apache.myfaces.renderkit.html.util.DummyFormUtils;
34 import org.apache.myfaces.shared_tomahawk.renderkit.JSFAttr;
35 import org.apache.myfaces.shared_tomahawk.renderkit.html.HTML;
36 import org.apache.myfaces.shared_tomahawk.renderkit.html.HtmlRendererUtils;
37
38
39
40
41
42
43
44 @JSFRenderer(
45 renderKitId = "HTML_BASIC",
46 family = "org.apache.myfaces.HtmlTree",
47 type = "org.apache.myfaces.HtmlTreeImageCommandLink")
48 public class HtmlTreeImageCommandLinkRenderer
49 extends ExtendedHtmlLinkRenderer {
50
51 private static final Integer ZERO = new Integer(0);
52
53
54 public void decode(FacesContext facesContext, UIComponent component) {
55 super.decode(facesContext, component);
56 String clientId = component.getClientId(facesContext);
57 String reqValue = (String) facesContext
58 .getExternalContext()
59 .getRequestParameterMap().get(HtmlRendererUtils
60 .getHiddenCommandLinkFieldName(DummyFormUtils.findNestingForm(component, facesContext)));
61 if (reqValue != null && reqValue.equals(clientId)) {
62 HtmlTreeNode node = (HtmlTreeNode) component.getParent();
63
64 node.toggleExpanded();
65 }
66 }
67
68
69 protected void renderCommandLinkStart(FacesContext facesContext,
70 UIComponent component,
71 String clientId,
72 Object value,
73 String style,
74 String styleClass) throws IOException {
75
76 super.renderCommandLinkStart(facesContext, component, clientId, value, style, styleClass);
77
78 String url = ((HtmlTreeImageCommandLink) component).getImage();
79 String libraryName = (String) component.getAttributes().get(JSFAttr.LIBRARY_ATTR);
80 String resourceName = (String) component.getAttributes().get(JSFAttr.NAME_ATTR);
81
82 if ((url != null) && (url.length() > 0)) {
83 ResponseWriter writer = facesContext.getResponseWriter();
84 writer.startElement(HTML.IMG_ELEM, component);
85 String src = facesContext.getApplication().getViewHandler().getResourceURL(facesContext, url);
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100 writer.writeAttribute(HTML.SRC_ATTR, src, null);
101 writer.writeAttribute(HTML.BORDER_ATTR, ZERO, null);
102
103 HtmlRendererUtils.renderHTMLAttributes(writer, component, HTML.IMG_PASSTHROUGH_ATTRIBUTES);
104
105 writer.endElement(HTML.IMG_ELEM);
106 }
107 else if ((resourceName != null) && (resourceName.length() > 0))
108 {
109 ResponseWriter writer = facesContext.getResponseWriter();
110 writer.startElement(HTML.IMG_ELEM, component);
111 ResourceHandler resourceHandler = facesContext.getApplication().getResourceHandler();
112 Resource resource = null;
113 if ((libraryName != null) && (libraryName.length() > 0))
114 {
115 resource = resourceHandler.createResource(resourceName, libraryName);
116 }
117 else
118 {
119 resource = resourceHandler.createResource(resourceName);
120 }
121 writer.writeAttribute(HTML.SRC_ATTR, resource.getRequestPath(), null);
122 writer.writeAttribute(HTML.BORDER_ATTR, ZERO, null);
123
124 HtmlRendererUtils.renderHTMLAttributes(writer, component, HTML.IMG_PASSTHROUGH_ATTRIBUTES);
125
126 writer.endElement(HTML.IMG_ELEM);
127 }
128 }
129 }