View Javadoc

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  }