home *** CD-ROM | disk | FTP | other *** search
- package javax.swing;
-
- import java.awt.Color;
- import java.awt.Dimension;
- import java.awt.Font;
- import java.awt.Insets;
- import java.beans.PropertyChangeListener;
- import java.lang.reflect.Method;
- import java.util.Enumeration;
- import java.util.HashMap;
- import java.util.Hashtable;
- import java.util.Locale;
- import java.util.Map;
- import java.util.MissingResourceException;
- import java.util.ResourceBundle;
- import java.util.Vector;
- import javax.swing.border.Border;
- import javax.swing.event.SwingPropertyChangeSupport;
- import javax.swing.plaf.ComponentUI;
- import sun.reflect.misc.MethodUtil;
- import sun.util.CoreResourceBundleControl;
-
- public class UIDefaults extends Hashtable<Object, Object> {
- private static final Object PENDING = new String("Pending");
- private SwingPropertyChangeSupport changeSupport;
- private Vector resourceBundles;
- private Locale defaultLocale;
- private Map resourceCache;
-
- public UIDefaults() {
- this(700, 0.75F);
- }
-
- public UIDefaults(int var1, float var2) {
- super(var1, var2);
- this.defaultLocale = Locale.getDefault();
- this.resourceCache = new HashMap();
- }
-
- public UIDefaults(Object[] var1) {
- super(var1.length / 2);
- this.defaultLocale = Locale.getDefault();
-
- for(int var2 = 0; var2 < var1.length; var2 += 2) {
- super.put(var1[var2], var1[var2 + 1]);
- }
-
- }
-
- public Object get(Object var1) {
- Object var2 = this.getFromHashtable(var1);
- return var2 != null ? var2 : this.getFromResourceBundle(var1, (Locale)null);
- }
-
- private Object getFromHashtable(Object var1) {
- Object var2 = super.get(var1);
- if (var2 != PENDING && !(var2 instanceof ActiveValue) && !(var2 instanceof LazyValue)) {
- return var2;
- } else {
- synchronized(this) {
- var2 = super.get(var1);
- if (var2 == PENDING) {
- do {
- try {
- this.wait();
- } catch (InterruptedException var16) {
- }
-
- var2 = super.get(var1);
- } while(var2 == PENDING);
-
- return var2;
- }
-
- if (var2 instanceof LazyValue) {
- super.put(var1, PENDING);
- } else if (!(var2 instanceof ActiveValue)) {
- return var2;
- }
- }
-
- if (var2 instanceof LazyValue) {
- try {
- var2 = ((LazyValue)var2).createValue(this);
- } finally {
- synchronized(this) {
- if (var2 == null) {
- super.remove(var1);
- } else {
- super.put(var1, var2);
- }
-
- this.notifyAll();
- }
- }
- } else {
- var2 = ((ActiveValue)var2).createValue(this);
- }
-
- return var2;
- }
- }
-
- public Object get(Object var1, Locale var2) {
- Object var3 = this.getFromHashtable(var1);
- return var3 != null ? var3 : this.getFromResourceBundle(var1, var2);
- }
-
- private Object getFromResourceBundle(Object var1, Locale var2) {
- if (this.resourceBundles != null && !this.resourceBundles.isEmpty() && var1 instanceof String) {
- if (var2 == null) {
- if (this.defaultLocale == null) {
- return null;
- }
-
- var2 = this.defaultLocale;
- }
-
- synchronized(this) {
- return this.getResourceCache(var2).get((String)var1);
- }
- } else {
- return null;
- }
- }
-
- private Map getResourceCache(Locale var1) {
- Object var2 = (Map)this.resourceCache.get(var1);
- if (var2 == null) {
- var2 = new HashMap();
-
- for(int var3 = this.resourceBundles.size() - 1; var3 >= 0; --var3) {
- String var4 = (String)this.resourceBundles.get(var3);
-
- try {
- ResourceBundle var5 = ResourceBundle.getBundle(var4, var1, CoreResourceBundleControl.getRBControlInstance());
- Enumeration var6 = var5.getKeys();
-
- while(var6.hasMoreElements()) {
- String var7 = (String)var6.nextElement();
- if (((Map)var2).get(var7) == null) {
- Object var8 = var5.getObject(var7);
- ((Map)var2).put(var7, var8);
- }
- }
- } catch (MissingResourceException var9) {
- }
- }
-
- this.resourceCache.put(var1, var2);
- }
-
- return (Map)var2;
- }
-
- public Object put(Object var1, Object var2) {
- Object var3 = var2 == null ? super.remove(var1) : super.put(var1, var2);
- if (var1 instanceof String) {
- this.firePropertyChange((String)var1, var3, var2);
- }
-
- return var3;
- }
-
- public void putDefaults(Object[] var1) {
- int var2 = 0;
-
- for(int var3 = var1.length; var2 < var3; var2 += 2) {
- Object var4 = var1[var2 + 1];
- if (var4 == null) {
- super.remove(var1[var2]);
- } else {
- super.put(var1[var2], var4);
- }
- }
-
- this.firePropertyChange("UIDefaults", (Object)null, (Object)null);
- }
-
- public Font getFont(Object var1) {
- Object var2 = this.get(var1);
- return var2 instanceof Font ? (Font)var2 : null;
- }
-
- public Font getFont(Object var1, Locale var2) {
- Object var3 = this.get(var1, var2);
- return var3 instanceof Font ? (Font)var3 : null;
- }
-
- public Color getColor(Object var1) {
- Object var2 = this.get(var1);
- return var2 instanceof Color ? (Color)var2 : null;
- }
-
- public Color getColor(Object var1, Locale var2) {
- Object var3 = this.get(var1, var2);
- return var3 instanceof Color ? (Color)var3 : null;
- }
-
- public Icon getIcon(Object var1) {
- Object var2 = this.get(var1);
- return var2 instanceof Icon ? (Icon)var2 : null;
- }
-
- public Icon getIcon(Object var1, Locale var2) {
- Object var3 = this.get(var1, var2);
- return var3 instanceof Icon ? (Icon)var3 : null;
- }
-
- public Border getBorder(Object var1) {
- Object var2 = this.get(var1);
- return var2 instanceof Border ? (Border)var2 : null;
- }
-
- public Border getBorder(Object var1, Locale var2) {
- Object var3 = this.get(var1, var2);
- return var3 instanceof Border ? (Border)var3 : null;
- }
-
- public String getString(Object var1) {
- Object var2 = this.get(var1);
- return var2 instanceof String ? (String)var2 : null;
- }
-
- public String getString(Object var1, Locale var2) {
- Object var3 = this.get(var1, var2);
- return var3 instanceof String ? (String)var3 : null;
- }
-
- public int getInt(Object var1) {
- Object var2 = this.get(var1);
- return var2 instanceof Integer ? (Integer)var2 : 0;
- }
-
- public int getInt(Object var1, Locale var2) {
- Object var3 = this.get(var1, var2);
- return var3 instanceof Integer ? (Integer)var3 : 0;
- }
-
- public boolean getBoolean(Object var1) {
- Object var2 = this.get(var1);
- return var2 instanceof Boolean ? (Boolean)var2 : false;
- }
-
- public boolean getBoolean(Object var1, Locale var2) {
- Object var3 = this.get(var1, var2);
- return var3 instanceof Boolean ? (Boolean)var3 : false;
- }
-
- public Insets getInsets(Object var1) {
- Object var2 = this.get(var1);
- return var2 instanceof Insets ? (Insets)var2 : null;
- }
-
- public Insets getInsets(Object var1, Locale var2) {
- Object var3 = this.get(var1, var2);
- return var3 instanceof Insets ? (Insets)var3 : null;
- }
-
- public Dimension getDimension(Object var1) {
- Object var2 = this.get(var1);
- return var2 instanceof Dimension ? (Dimension)var2 : null;
- }
-
- public Dimension getDimension(Object var1, Locale var2) {
- Object var3 = this.get(var1, var2);
- return var3 instanceof Dimension ? (Dimension)var3 : null;
- }
-
- public Class<? extends ComponentUI> getUIClass(String var1, ClassLoader var2) {
- try {
- String var3 = (String)this.get(var1);
- if (var3 != null) {
- Class var4 = (Class)this.get(var3);
- if (var4 == null) {
- if (var2 == null) {
- var4 = SwingUtilities.loadSystemClass(var3);
- } else {
- var4 = var2.loadClass(var3);
- }
-
- if (var4 != null) {
- this.put(var3, var4);
- }
- }
-
- return var4;
- } else {
- return null;
- }
- } catch (ClassNotFoundException var5) {
- return null;
- } catch (ClassCastException var6) {
- return null;
- }
- }
-
- public Class<? extends ComponentUI> getUIClass(String var1) {
- return this.getUIClass(var1, (ClassLoader)null);
- }
-
- protected void getUIError(String var1) {
- System.err.println("UIDefaults.getUI() failed: " + var1);
-
- try {
- throw new Error();
- } catch (Throwable var3) {
- var3.printStackTrace();
- }
- }
-
- public ComponentUI getUI(JComponent var1) {
- Object var2 = this.get("ClassLoader");
- ClassLoader var3 = var2 != null ? (ClassLoader)var2 : var1.getClass().getClassLoader();
- Class var4 = this.getUIClass(var1.getUIClassID(), var3);
- Object var5 = null;
- if (var4 == null) {
- this.getUIError("no ComponentUI class for: " + var1);
- } else {
- try {
- Method var6 = (Method)this.get(var4);
- if (var6 == null) {
- Class var7 = JComponent.class;
- var6 = var4.getMethod("createUI", var7);
- this.put(var4, var6);
- }
-
- var5 = MethodUtil.invoke(var6, (Object)null, new Object[]{var1});
- } catch (NoSuchMethodException var8) {
- this.getUIError("static createUI() method not found in " + var4);
- } catch (Exception var9) {
- this.getUIError("createUI() failed for " + var1 + " " + var9);
- }
- }
-
- return (ComponentUI)var5;
- }
-
- public synchronized void addPropertyChangeListener(PropertyChangeListener var1) {
- if (this.changeSupport == null) {
- this.changeSupport = new SwingPropertyChangeSupport(this);
- }
-
- this.changeSupport.addPropertyChangeListener(var1);
- }
-
- public synchronized void removePropertyChangeListener(PropertyChangeListener var1) {
- if (this.changeSupport != null) {
- this.changeSupport.removePropertyChangeListener(var1);
- }
-
- }
-
- public synchronized PropertyChangeListener[] getPropertyChangeListeners() {
- return this.changeSupport == null ? new PropertyChangeListener[0] : this.changeSupport.getPropertyChangeListeners();
- }
-
- protected void firePropertyChange(String var1, Object var2, Object var3) {
- if (this.changeSupport != null) {
- this.changeSupport.firePropertyChange(var1, var2, var3);
- }
-
- }
-
- public synchronized void addResourceBundle(String var1) {
- if (var1 != null) {
- if (this.resourceBundles == null) {
- this.resourceBundles = new Vector(5);
- }
-
- if (!this.resourceBundles.contains(var1)) {
- this.resourceBundles.add(var1);
- this.resourceCache.clear();
- }
-
- }
- }
-
- public synchronized void removeResourceBundle(String var1) {
- if (this.resourceBundles != null) {
- this.resourceBundles.remove(var1);
- }
-
- this.resourceCache.clear();
- }
-
- public void setDefaultLocale(Locale var1) {
- this.defaultLocale = var1;
- }
-
- public Locale getDefaultLocale() {
- return this.defaultLocale;
- }
- }
-