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  
20  package org.apache.myfaces.custom.dojo;
21  
22  import org.apache.myfaces.shared_tomahawk.renderkit.JSFAttr;
23  import org.apache.myfaces.shared_tomahawk.renderkit.html.HtmlRenderer;
24  
25  import java.io.IOException;
26  
27  import javax.faces.component.UIComponent;
28  import javax.faces.context.FacesContext;
29  
30  
31  /**
32   * Dojointializerrenderer
33   * 
34   * @JSFRenderer
35   *   renderKitId = "HTML_BASIC" 
36   *   family = "javax.faces.Output"
37   *   type = "org.apache.myfaces.DojoInitializerRenderer"
38   *
39   * @author Werner Punz (latest modification by $Author: lu4242 $)
40   * @version $Revision: 659874 $ $Date: 2008-05-24 15:59:15 -0500 (Sat, 24 May 2008) $
41   */
42  public class DojoInitializerRenderer extends HtmlRenderer {
43  
44      public static final String RENDERER_TYPE = "org.apache.myfaces.DojoInitializerRenderer";
45  
46      public void decode(FacesContext context, UIComponent component) {
47          super.decode(context, component);
48  
49      }
50  
51      public void encodeBegin(FacesContext context, UIComponent component) throws IOException {
52  
53          if ((context == null) || (component == null)) {
54              throw new NullPointerException();
55          }
56  
57          Boolean rendered = (Boolean) component.getAttributes().get("rendered");
58  
59          if ((rendered != null) && (!rendered.booleanValue()))
60              return;
61  
62          super.encodeBegin(context, component);
63  
64      }
65  
66      /**
67       * Standard encode end
68       *
69       */
70      public void encodeEnd(FacesContext facesContext, UIComponent component) throws IOException {
71          super.encodeEnd(facesContext, component);
72  
73          encodeJavascript(facesContext, component);
74  
75          if ((((DojoInitializer) component).getDebugConsole() != null) && ((DojoInitializer) component).getDebugConsole().booleanValue()) {
76              DojoUtils.addDebugConsole(facesContext, component);
77          }
78      }
79  
80      public boolean getRendersChildren() {
81          return false;
82      }
83  
84      /**
85       * Encodes any stand-alone javascript functions that are needed. Uses either
86       * the extension filter, or a user-supplied location for the javascript
87       * files.
88       *
89       * @param context
90       *            FacesContext
91       * @param component
92       *            UIComponent
93       */
94      private void encodeJavascript(FacesContext context, UIComponent component) throws IOException {
95          String javascriptLocation = (String) component.getAttributes().get(JSFAttr.JAVASCRIPT_LOCATION);
96          DojoUtils.addMainInclude(context, component, javascriptLocation, DojoUtils.getDjConfigInstance(context));
97  
98          String require = (String) component.getAttributes().get("require");
99          String provide = (String) component.getAttributes().get("provide");
100 
101         if (provide != null)
102             DojoUtils.addProvide(context, component, provide);
103 
104         if (require != null)
105             DojoUtils.addRequire(context, component, require);
106 
107     }
108 
109 }