View Javadoc

1   package org.apache.turbine.services.ui;
2   
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  import org.apache.turbine.services.TurbineServices;
23  import org.apache.turbine.util.ServerData;
24  
25  /*** 
26   * This is a convenience class provided to allow access to the UIService
27   * through static methods.  The UIService should ALWAYS be accessed via
28   * either this class or UITool.
29   *
30   * @author <a href="mailto:seade@backstagetech.com.au">Scott Eade</a>
31   * @version $Id$
32   * @see UIService
33   * @see UITool
34   */
35  public class TurbineUI
36  {
37      /***
38       * Refresh all skins.
39       */
40      public static void refresh()
41      {
42          ((UIService) TurbineServices.getInstance()
43                  .getService(UIService.SERVICE_NAME)).refresh();
44      }
45  
46      /***
47       * Refresh a particular skin.
48       * 
49       * @param skinName the name of the skin to clear.
50       */
51      public static void refresh(String skinName)
52      {
53          ((UIService) TurbineServices.getInstance()
54                  .getService(UIService.SERVICE_NAME)).refresh(skinName);
55      }
56  
57      /***
58       * Provide access to the list of available skin names.
59       * 
60       * @return the available skin names.
61       */
62      public static String[] getSkinNames()
63      {
64          return ((UIService) TurbineServices.getInstance()
65                  .getService(UIService.SERVICE_NAME)).getSkinNames();
66      }
67  
68      /***
69       * Get the name of the default skin name for the web application from the 
70       * TurbineResources.properties file. If the property is not present the 
71       * name of the default skin will be returned.  Note that the web application
72       * skin name may be something other than default, in which case its 
73       * properties will default to the skin with the name "default".
74       * 
75       * @return the name of the default skin for the web application.
76       */
77      public static String getWebappSkinName()
78      {
79          return ((UIService) TurbineServices.getInstance()
80                  .getService(UIService.SERVICE_NAME)).getWebappSkinName();
81      }
82  
83      /***
84       * Retrieve a skin property from the named skin.  If the property is not 
85       * defined in the named skin the value for the default skin will be 
86       * provided.  If the named skin does not exist then the skin configured for 
87       * the webapp will be used.  If the webapp skin does not exist the default
88       * skin will be used.  If the default skin does not exist then 
89       * <code>null</code> will be returned.
90       * 
91       * @param skinName the name of the skin to retrieve the property from.
92       * @param key the key to retrieve from the skin.
93       * @return the value of the property for the named skin (defaulting to the 
94       * default skin), the webapp skin, the default skin or <code>null</code>,
95       * depending on whether or not the property or skins exist.
96       */
97      public static String get(String skinName, String key)
98      {
99          return ((UIService) TurbineServices.getInstance()
100                 .getService(UIService.SERVICE_NAME)).get(skinName, key);
101     }
102 
103     /***
104      * Retrieve a skin property from the default skin for the webapp.  If the 
105      * property is not defined in the webapp skin the value for the default skin 
106      * will be provided.  If the webapp skin does not exist the default skin 
107      * will be used.  If the default skin does not exist then <code>null</code> 
108      * will be returned.
109      * 
110      * @param key the key to retrieve.
111      * @return the value of the property for the webapp skin (defaulting to the 
112      * default skin), the default skin or <code>null</code>, depending on 
113      * whether or not the property or skins exist.
114      */
115     public static String get(String key)
116     {
117         return ((UIService) TurbineServices.getInstance()
118             .getService(UIService.SERVICE_NAME)).get(key);
119     }
120 
121     /***
122      * Retrieve the URL for an image that is part of a skin. The images are 
123      * stored in the WEBAPP/resources/ui/skins/[SKIN]/images directory.
124      *
125      * <p>Use this if for some reason your server name, server scheme, or server 
126      * port change on a per request basis. I'm not sure if this would happen in 
127      * a load balanced situation. I think in most cases the image(String image)
128      * method would probably be enough, but I'm not absolutely positive.
129      * 
130      * @param skinName the name of the skin to retrieve the image from.
131      * @param imageId the id of the image whose URL will be generated.
132      * @param data the RunData to use as the source of the ServerData to use as 
133      * the basis for the URL.
134      */
135     public static String image(String skinName, String imageId, 
136             ServerData serverData)
137     {
138         return ((UIService) TurbineServices.getInstance()
139                 .getService(UIService.SERVICE_NAME))
140                         .image(skinName, imageId, serverData);
141     }
142 
143     /***
144      * Retrieve the URL for an image that is part of a skin. The images are 
145      * stored in the WEBAPP/resources/ui/skins/[SKIN]/images directory.
146      * 
147      * @param skinName the name of the skin to retrieve the image from.
148      * @param imageId the id of the image whose URL will be generated.
149      */
150     public static String image(String skinName, String imageId)
151     {
152         return ((UIService) TurbineServices.getInstance()
153                 .getService(UIService.SERVICE_NAME)).image(skinName, imageId);
154     }
155 
156     /***
157      * Retrieve the URL for the style sheet that is part of a skin. The style is 
158      * stored in the WEBAPP/resources/ui/skins/[SKIN] directory with the 
159      * filename skin.css
160      *
161      * <p>Use this if for some reason your server name, server scheme, or server 
162      * port change on a per request basis. I'm not sure if this would happen in 
163      * a load balanced situation. I think in most cases the style() method would 
164      * probably be enough, but I'm not absolutely positive.
165      * 
166      * @param skinName the name of the skin to retrieve the style sheet from.
167      * @param data the RunData to use as the source of the ServerData to use as 
168      * the basis for the URL.
169      */
170     public static String getStylecss(String skinName, ServerData serverData)
171     {
172         return ((UIService) TurbineServices.getInstance()
173                 .getService(UIService.SERVICE_NAME))
174                         .getStylecss(skinName, serverData);
175     }
176 
177     /***
178      * Retrieve the URL for the style sheet that is part of a skin. The style is 
179      * stored in the WEBAPP/resources/ui/skins/[SKIN] directory with the 
180      * filename skin.css
181      * 
182      * @param skinName the name of the skin to retrieve the style sheet from.
183      */
184     public static String getStylecss(String skinName)
185     {
186         return ((UIService) TurbineServices.getInstance()
187                 .getService(UIService.SERVICE_NAME)).getStylecss(skinName);
188     }
189 
190     /***
191      * Retrieve the URL for a given script that is part of the skin. The script
192      * is stored in the WEBAPP/resources/ui/skins/[SKIN] directory.
193      *
194      * <p>Use this if for some reason your server name, server scheme, or server 
195      * port change on a per request basis. I'm not sure if this would happen in 
196      * a load balanced situation. I think in most cases the image(String image)
197      * method would probably be enough, but I'm not absolutely positive.
198      * 
199      * @param skinName the name of the skin to retrieve the image from.
200      * @param filename the name of the script file whose URL will be generated.
201      * @param data the RunData to use as the source of the ServerData to use as 
202      * the basis for the URL.
203      */
204     public static String getScript(String skinName, String filename, 
205             ServerData serverData)
206     {
207         return ((UIService) TurbineServices.getInstance()
208                 .getService(UIService.SERVICE_NAME))
209                         .getScript(skinName, filename, serverData);
210     }
211 
212     /***
213      * Retrieve the URL for a given script that is part of the skin. The script
214      * is stored in the WEBAPP/resources/ui/skins/[SKIN] directory.
215      *
216      * @param skinName the name of the skin to retrieve the image from.
217      * @param filename the name of the script file whose URL will be generated.
218      */
219     public static String getScript(String skinName, String filename)
220     {
221         return ((UIService) TurbineServices.getInstance()
222                 .getService(UIService.SERVICE_NAME)).getScript(skinName, filename);
223     }
224 
225 }