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 }