1 /*
2 * Licensed to the Apache Software Foundation (ASF) under one
3 * or more contributor license agreements. See the NOTICE file
4 * distributed with this work for additional information
5 * regarding copyright ownership. The ASF licenses this file
6 * to you under the Apache License, Version 2.0 (the
7 * "License"); you may not use this file except in compliance
8 * with the License. You may obtain a copy of the License at
9 *
10 * http://www.apache.org/licenses/LICENSE-2.0
11 *
12 * Unless required by applicable law or agreed to in writing,
13 * software distributed under the License is distributed on an
14 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
15 * KIND, either express or implied. See the License for the
16 * specific language governing permissions and limitations
17 * under the License.
18 */
19 package org.apache.myfaces.custom.document;
20
21 import java.io.IOException;
22
23 import javax.faces.component.UIComponent;
24 import javax.faces.component.UIViewRoot;
25 import javax.faces.context.FacesContext;
26
27 import org.apache.myfaces.component.html.util.StreamingAddResource;
28 import org.apache.myfaces.renderkit.html.util.AddResource;
29 import org.apache.myfaces.renderkit.html.util.AddResourceFactory;
30 import org.apache.myfaces.tomahawk.util.TomahawkResourceUtils;
31
32 /**
33 * Document to enclose the document head. If not otherwise possible you can use
34 * state="start|end" to demarkate the document boundaries
35 *
36 * @JSFRenderer
37 * renderKitId = "HTML_BASIC"
38 * family = "javax.faces.Data"
39 * type = "org.apache.myfaces.DocumentHead"
40 *
41 * @author Mario Ivankovits (latest modification by $Author: skitching $)
42 * @version $Revision: 673833 $ $Date: 2008-07-03 16:58:05 -0500 (jue, 03 jul 2008) $
43 */
44 public class DocumentHeadRenderer extends AbstractDocumentRenderer
45 {
46 public static final String RENDERER_TYPE = "org.apache.myfaces.DocumentHead";
47
48 protected String getHtmlTag()
49 {
50 return "head";
51 }
52
53 protected Class getDocumentClass()
54 {
55 return DocumentHead.class;
56 }
57
58 protected void writeBeforeEnd(FacesContext facesContext) throws IOException
59 {
60 super.writeBeforeEnd(facesContext);
61
62 AddResource addResource = AddResourceFactory.getInstance(facesContext);
63 if (addResource instanceof StreamingAddResource)
64 {
65 ((StreamingAddResource) addResource).addStyleLoaderHere(facesContext, DocumentHead.class);
66 }
67
68 UIViewRoot root = facesContext.getViewRoot();
69 for (UIComponent child : root.getComponentResources(facesContext,
70 TomahawkResourceUtils.HEAD_LOCATION))
71 {
72 child.encodeAll(facesContext);
73 }
74 }
75 }