com.jidesoft.utils.SecurityUtils Maven / Gradle / Ivy
/*
* @(#)SecurityUtils.java
*
* Copyright 2002 - 2004 JIDE Software Inc. All rights reserved.
*/
package com.jidesoft.utils;
import javax.swing.plaf.FontUIResource;
import java.awt.*;
import java.io.IOException;
import java.security.AccessControlException;
import java.util.Locale;
import java.util.MissingResourceException;
/**
* A class that keeps all the security stuff so that an application can safely run in applet or webstart environment.
* Please refer to JIDE_Developer_Guide_for_Webstart_Applet.pdf in doc folder for more information.
*/
public class SecurityUtils {
public static FontUIResource createFontUIResource(String name, int style, int size) {
Font font = createFont(name, style, size);
if (font != null) {
return new FontUIResource(font);
}
else {
return null;
}
}
static class FontStruct {
String font;
int style;
}
public static final String BOLD = "Bold";
public static final String ITALIC = "Italic";
public static final String BOLD_ITALIC = "Bold Italic";
private static String createFontStrings(String font, int style) {
String fontString;
switch (style) {
case Font.BOLD:
fontString = font + " " + BOLD;
break;
case Font.ITALIC:
fontString = font + " " + ITALIC;
break;
case Font.BOLD | Font.ITALIC:
fontString = font + " " + BOLD_ITALIC;
break;
case Font.PLAIN:
default:
fontString = font;
break;
}
return fontString.replace(' ', '_');
}
/**
* Creates font. If there is no permission to access font file, it will try to create the font directly from font
* file that is bundled as part of jar.
*
* @param name the font name.
* @param style the font style.
* @param size the font size.
* @return the font.
*/
public static Font createFont(String name, int style, int size) {
try {
// System.out.println("new Font");
return new Font(name, style, size);
}
catch (AccessControlException e) {
// System.out.println("new Font failed " + createFontStrings(name, style));
ClassLoader cl = SecurityUtils.class.getClassLoader();
try {
String value = null;
try {
value = FontFilesResource.getResourceBundle(Locale.getDefault()).getString(createFontStrings(name, style));
}
catch (MissingResourceException me1) {
try {
value = FontFilesResource.getResourceBundle(Locale.getDefault()).getString(name);
}
catch (MissingResourceException me2) {
// ignore
}
}
if (value == null) {
return null;
}
else {
// System.out.print("createFont " + value);
Font font = Font.createFont(Font.TRUETYPE_FONT, cl.getResourceAsStream(value));
// System.out.println("successful " + font);
if (font != null) {
return font.deriveFont(style, size);
}
}
}
catch (FontFormatException e1) {
e1.printStackTrace();
throw e;
}
catch (IOException e1) {
e1.printStackTrace();
throw e;
}
}
return null;
}
/**
* Gets the system property.
*
* @param key the property key
* @param defaultValue the default value for the property.
* @return the system property.
*/
public static String getProperty(String key, String defaultValue) {
try {
return System.getProperty(key, defaultValue);
}
catch (AccessControlException e) {
return defaultValue;
}
}
private static boolean _AWTEventListenerDisabled = false;
/**
* Checks if AWTEventListener is disabled. This flag can be set by user. If false, JIDE code will read the value and
* not use AWTEventListener. The reason we need this flag is because AWTEventListener needs a special security
* permission. If applet, it will throw security if the user policy doesn't have the correct permission.
*
* @return true if AWTEventListener is disabled.
*/
public static boolean isAWTEventListenerDisabled() {
return _AWTEventListenerDisabled;
}
/**
* Enables or disables the usage of AWTEventListener. If you want to change it, you should change the value at the
* beginning of your main method.
*
* @param AWTEventListenerDisabled true or false.
*/
public static void setAWTEventListenerDisabled(boolean AWTEventListenerDisabled) {
_AWTEventListenerDisabled = AWTEventListenerDisabled;
}
private static boolean _translucentWindowFeatureDisabled = !SystemInfo.isJdk6u10Above() || !SystemInfo.isWindows();
/**
* Checks if the translucent window feature is disabled. It is disabled by default if the JDK version is less than
* JDK6 u10 or theOS is not Windows.
*
* @return true or false.
*/
public static boolean isTranslucentWindowFeatureDisabled() {
return _translucentWindowFeatureDisabled;
}
/**
* Disables or enables the usage of the translucent window feature available since JDK6u10. This feature is used in
* Alert for fading animation.
*
* @param translucentWindowFeatureDisabled
* true or false.
*/
public static void setTranslucentWindowFeatureDisabled(boolean translucentWindowFeatureDisabled) {
_translucentWindowFeatureDisabled = translucentWindowFeatureDisabled;
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy