/**
* $RCSfile: ,v $
* $Revision: $
* $Date: $
*
* Copyright (C) 2004-2011 Jive Software. All rights reserved.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.jivesoftware.resource;
import org.jivesoftware.spark.PluginRes;
import org.jivesoftware.spark.util.log.Log;
import javax.swing.ImageIcon;
import java.net.URL;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Enumeration;
import java.util.HashMap;
import java.util.Map;
import java.util.PropertyResourceBundle;
import java.util.ResourceBundle;
import java.util.StringTokenizer;
public class Default {
private static PropertyResourceBundle prb;
private static Map<String,Object> customMap = new HashMap<String,Object>();
private static Map<String,ImageIcon> cache = new HashMap<String,ImageIcon>();
public static final String MAIN_IMAGE = "MAIN_IMAGE";
public static final String APPLICATION_NAME = "APPLICATION_NAME";
public static final String SHORT_NAME = "SHORT_NAME";
public static final String APPLICATION_VERSION = "APPLICATION_VERSION";
public static final String LOGIN_DIALOG_BACKGROUND_IMAGE = "LOGIN_DIALOG_BACKGROUND_IMAGE";
public static final String HOST_NAME = "HOST_NAME";
public static final String HOST_NAME_CHANGE_DISABLED = "HOST_NAME_CHANGE_DISABLED";
public static final String SHOW_POWERED_BY = "SHOW_POWERED_BY";
public static final String TOP_BOTTOM_BACKGROUND_IMAGE = "TOP_BOTTOM_BACKGROUND_IMAGE";
public static final String BRANDED_IMAGE = "BRANDED_IMAGE";
public static final String DISABLE_UPDATES = "DISABLE_UPDATES";
public static final String SECONDARY_BACKGROUND_IMAGE = "SECONDARY_BACKGROUND_IMAGE";
public static final String HOVER_TEXT_COLOR = "HOVER_TEXT_COLOR";
public static final String TEXT_COLOR = "TEXT_COLOR";
public static final String TAB_START_COLOR = "TAB_START_COLOR";
public static final String TAB_END_COLOR = "TAB_END_COLOR";
public static final String CONTACT_GROUP_START_COLOR = "CONTACT_GROUP_START_COLOR";
public static final String CONTACT_GROUP_END_COLOR = "CONTACT_GROUP_END_COLOR";
public static final String PROXY_HOST = "PROXY_HOST";
public static final String PROXY_PORT = "PROXY_PORT";
public static final String ACCOUNT_DISABLED = "ACCOUNT_DISABLED";
public static final String PASSWORD_RESET_ENABLED = "PASSWORD_RESET_ENABLED";
public static final String PASSWORD_RESET_URL = "PASSWORD_RESET_URL";
public static final String ADD_CONTACT_DISABLED = "ADD_CONTACT_DISABLED";
public static final String CHANGE_PASSWORD_DISABLED = "CHANGE_PASSWORD_DISABLED";
public static final String TRAY_IMAGE = "TRAY_IMAGE";
public static final String FRAME_IMAGE = "FRAME_IMAGE";
public static final String LOOK_AND_FEEL_DISABLED = "LOOK_AND_FEEL_DISABLED";
public static final String DEFAULT_LOOK_AND_FEEL = "DEFAULT_LOOK_AND_FEEL";
public static final String DEFAULT_LOOK_AND_FEEL_MAC = "DEFAULT_LOOK_AND_FEEL_MAC";
public static final String INSTALL_PLUGINS_DISABLED = "INSTALL_PLUGINS_DISABLED";
public static final String DEINSTALL_PLUGINS_DISABLED = "DEINSTALL_PLUGINS_DISABLED";
public static final String ADVANCED_DISABLED = "ADVANCED_DISABLED";
public static final String SSO_DISABLED = "SSO_DISABLED";
public static final String PROXY_DISABLED = "PROXY_DISABLED";
public static final String PKI_DISABLED = "PKI_DISABLED";
public static final String HELP_USER_GUIDE = "HELP_USER_GUIDE";
public static final String BROADCAST_IN_CHATWINDOW = "BROADCAST_IN_CHATWINDOW";
public static final String MENUBAR_TEXT = "MENUBAR_TEXT";
public static final String FILE_TRANSFER_WARNING_SIZE = "FILE_TRANSFER_WARNING_SIZE";
public static final String FILE_TRANSFER_MAXIMUM_SIZE = "FILE_TRANSFER_MAXIMUM_SIZE";
public static final String TABS_PLACEMENT_TOP = "TABS_PLACEMENT_TOP";
public static final String HIDE_PERSON_SEARCH_FIELD = "HIDE_PERSON_SEARCH_FIELD";
public static final String USER_DIRECTORY_WINDOWS = "USER_DIRECTORY_WINDOWS";
public static final String USER_DIRECTORY_LINUX = "USER_DIRECTORY_LINUX";
public static final String USER_DIRECTORY_MAC = "USER_DIRECTORY_MAC";
static ClassLoader cl = SparkRes.class.getClassLoader();
static {
prb = (PropertyResourceBundle)ResourceBundle.getBundle("org/jivesoftware/resource/default");
}
public static void putCustomValue(String value, Object object) {
customMap.put(value, object);
}
public static void removeCustomValue(String value) {
customMap.remove(value);
}
public static void clearCustomValues() {
customMap.clear();
}
public static String getString(String propertyName) {
String pluginString = PluginRes.getDefaultRes(propertyName);
return pluginString != null ? pluginString : prb.getString(propertyName);
}
public static boolean getBoolean(String propertyName) {
return getString(propertyName).replace(" ","").equals("true");
}
public static ImageIcon getImageIcon(String imageName) {
// Check custom map
Object o = customMap.get(imageName);
if (o != null && o instanceof ImageIcon) {
return (ImageIcon)o;
}
// Otherwise check cache
o = cache.get(imageName);
if (o != null && o instanceof ImageIcon) {
return (ImageIcon)o;
}
// Otherwise, load and add to cache.
try {
final URL imageURL = getURL(imageName);
final ImageIcon icon = new ImageIcon(imageURL);
cache.put(imageName, icon);
return icon;
}
catch (Exception ex) {
Log.debug(imageName + " not found.");
}
return null;
}
public static URL getURL(String propertyName) {
URL pluginUrl = PluginRes.getDefaultURL(propertyName);
return pluginUrl != null ? pluginUrl : cl.getResource(getString(propertyName));
}
public static URL getURLWithoutException(String propertyName) {
// Otherwise, load and add to cache.
try {
return getURL(propertyName);
}
catch (Exception ex) {
Log.debug(propertyName + " not found.");
}
return null;
}
/**
* Returns a Collection of Plugins on the Blacklist<br>
* Containing the Name and also if specified the entrypoint-class
* @return Collection
*/
public static Collection<String> getPluginBlacklist() {
String pluginlist = getString("PLUGIN_BLACKLIST").replace(" ", "")
.toLowerCase();
StringTokenizer tokenizer = new StringTokenizer(pluginlist, ",");
ArrayList<String> list = new ArrayList<String>();
while (tokenizer.hasMoreTokens()) {
list.add(tokenizer.nextToken());
}
StringTokenizer clazztokenz = new StringTokenizer(
getString("PLUGIN_BLACKLIST_CLASS").replace(" ", ""), ",");
while (clazztokenz.hasMoreTokens()) {
list.add(clazztokenz.nextToken());
}
return list;
}
/**
* Returns all Keys stored in the default.properties file
* @return {@link Enumeration}<{@link String}>
*/
public static Enumeration<String> getAllKeys()
{
return prb.getKeys();
}
}