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