View Javadoc

1   /*
2    * $Id: StylesheetComponent.java 471754 2006-11-06 14:55:09Z husted $
3    *
4    * Licensed to the Apache Software Foundation (ASF) under one
5    * or more contributor license agreements.  See the NOTICE file
6    * distributed with this work for additional information
7    * regarding copyright ownership.  The ASF licenses this file
8    * to you under the Apache License, Version 2.0 (the
9    * "License"); you may not use this file except in compliance
10   * with the License.  You may obtain a copy of the License at
11   *
12   *  http://www.apache.org/licenses/LICENSE-2.0
13   *
14   * Unless required by applicable law or agreed to in writing,
15   * software distributed under the License is distributed on an
16   * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
17   * KIND, either express or implied.  See the License for the
18   * specific language governing permissions and limitations
19   * under the License.
20   */
21  
22  package org.apache.struts.faces.component;
23  
24  
25  import javax.faces.component.UIOutput;
26  import javax.faces.context.FacesContext;
27  import javax.faces.el.ValueBinding;
28  
29  
30  /**
31   * <p>Custom component that replaces the Struts
32   * <code>&lt;html:stylesheet&gt;</code> tag.</p>
33   */
34  
35  public class StylesheetComponent extends UIOutput {
36  
37  
38      // ------------------------------------------------------------ Constructors
39  
40  
41      /**
42       * <p>Create a new {@link StylesheetComponent} with default properties.</p>
43       */
44      public StylesheetComponent() {
45  
46          super();
47          setRendererType("org.apache.struts.faces.Stylesheet");
48  
49      }
50  
51  
52      // ------------------------------------------------------ Instance Variables
53  
54  
55      /**
56       * <p>Context-relative path of the stylesheet resource.</p>
57       */
58      private String path = null;
59  
60  
61      // ---------------------------------------------------- Component Properties
62  
63  
64      /**
65       * <p>Return the component family to which this component belongs.</p>
66       */
67      public String getFamily() {
68  
69          return "org.apache.struts.faces.Stylesheet";
70  
71      }
72  
73  
74      /**
75       * <p>Return the context-relative stylesheet path.</p>
76       */
77      public String getPath() {
78  
79          ValueBinding vb = getValueBinding("path");
80          if (vb != null) {
81              return (String) vb.getValue(getFacesContext());
82          } else {
83              return path;
84          }
85  
86      }
87  
88  
89      /**
90       * <p>Set the context-relative stylesheet path.</p>
91       *
92       * @param path The new path
93       */
94      public void setPath(String path) {
95  
96          this.path = path;
97  
98      }
99  
100 
101     // ---------------------------------------------------- StateManager Methods
102 
103 
104     /**
105      * <p>Restore the state of this component.</p>
106      *
107      * @param context <code>FacesContext</code> for the current request
108      * @param state State object from which to restore our state
109      */
110     public void restoreState(FacesContext context, Object state) {
111 
112         Object values[] = (Object[]) state;
113         super.restoreState(context, values[0]);
114         path = (String) values[1];
115 
116     }
117 
118 
119     /**
120      * <p>Save the state of this component.</p>
121      *
122      * @param context <code>FacesContext</code> for the current request
123      */
124     public Object saveState(FacesContext context) {
125 
126         Object values[] = new Object[2];
127         values[0] = super.saveState(context);
128         values[1] = path;
129         return values;
130 
131     }
132 
133 
134 }