home *** CD-ROM | disk | FTP | other *** search
/ Sky at Night 2007 June / SAN CD 6-2007 CD-ROM 25.iso / pc / Software / AstroGrav_Win / Java / jre1.6.0 / lib / rt.jar / javax / swing / UIDefaults.class (.txt) < prev    next >
Encoding:
Java Class File  |  2006-11-29  |  8.3 KB  |  395 lines

  1. package javax.swing;
  2.  
  3. import java.awt.Color;
  4. import java.awt.Dimension;
  5. import java.awt.Font;
  6. import java.awt.Insets;
  7. import java.beans.PropertyChangeListener;
  8. import java.lang.reflect.Method;
  9. import java.util.Enumeration;
  10. import java.util.HashMap;
  11. import java.util.Hashtable;
  12. import java.util.Locale;
  13. import java.util.Map;
  14. import java.util.MissingResourceException;
  15. import java.util.ResourceBundle;
  16. import java.util.Vector;
  17. import javax.swing.border.Border;
  18. import javax.swing.event.SwingPropertyChangeSupport;
  19. import javax.swing.plaf.ComponentUI;
  20. import sun.reflect.misc.MethodUtil;
  21. import sun.util.CoreResourceBundleControl;
  22.  
  23. public class UIDefaults extends Hashtable<Object, Object> {
  24.    private static final Object PENDING = new String("Pending");
  25.    private SwingPropertyChangeSupport changeSupport;
  26.    private Vector resourceBundles;
  27.    private Locale defaultLocale;
  28.    private Map resourceCache;
  29.  
  30.    public UIDefaults() {
  31.       this(700, 0.75F);
  32.    }
  33.  
  34.    public UIDefaults(int var1, float var2) {
  35.       super(var1, var2);
  36.       this.defaultLocale = Locale.getDefault();
  37.       this.resourceCache = new HashMap();
  38.    }
  39.  
  40.    public UIDefaults(Object[] var1) {
  41.       super(var1.length / 2);
  42.       this.defaultLocale = Locale.getDefault();
  43.  
  44.       for(int var2 = 0; var2 < var1.length; var2 += 2) {
  45.          super.put(var1[var2], var1[var2 + 1]);
  46.       }
  47.  
  48.    }
  49.  
  50.    public Object get(Object var1) {
  51.       Object var2 = this.getFromHashtable(var1);
  52.       return var2 != null ? var2 : this.getFromResourceBundle(var1, (Locale)null);
  53.    }
  54.  
  55.    private Object getFromHashtable(Object var1) {
  56.       Object var2 = super.get(var1);
  57.       if (var2 != PENDING && !(var2 instanceof ActiveValue) && !(var2 instanceof LazyValue)) {
  58.          return var2;
  59.       } else {
  60.          synchronized(this) {
  61.             var2 = super.get(var1);
  62.             if (var2 == PENDING) {
  63.                do {
  64.                   try {
  65.                      this.wait();
  66.                   } catch (InterruptedException var16) {
  67.                   }
  68.  
  69.                   var2 = super.get(var1);
  70.                } while(var2 == PENDING);
  71.  
  72.                return var2;
  73.             }
  74.  
  75.             if (var2 instanceof LazyValue) {
  76.                super.put(var1, PENDING);
  77.             } else if (!(var2 instanceof ActiveValue)) {
  78.                return var2;
  79.             }
  80.          }
  81.  
  82.          if (var2 instanceof LazyValue) {
  83.             try {
  84.                var2 = ((LazyValue)var2).createValue(this);
  85.             } finally {
  86.                synchronized(this) {
  87.                   if (var2 == null) {
  88.                      super.remove(var1);
  89.                   } else {
  90.                      super.put(var1, var2);
  91.                   }
  92.  
  93.                   this.notifyAll();
  94.                }
  95.             }
  96.          } else {
  97.             var2 = ((ActiveValue)var2).createValue(this);
  98.          }
  99.  
  100.          return var2;
  101.       }
  102.    }
  103.  
  104.    public Object get(Object var1, Locale var2) {
  105.       Object var3 = this.getFromHashtable(var1);
  106.       return var3 != null ? var3 : this.getFromResourceBundle(var1, var2);
  107.    }
  108.  
  109.    private Object getFromResourceBundle(Object var1, Locale var2) {
  110.       if (this.resourceBundles != null && !this.resourceBundles.isEmpty() && var1 instanceof String) {
  111.          if (var2 == null) {
  112.             if (this.defaultLocale == null) {
  113.                return null;
  114.             }
  115.  
  116.             var2 = this.defaultLocale;
  117.          }
  118.  
  119.          synchronized(this) {
  120.             return this.getResourceCache(var2).get((String)var1);
  121.          }
  122.       } else {
  123.          return null;
  124.       }
  125.    }
  126.  
  127.    private Map getResourceCache(Locale var1) {
  128.       Object var2 = (Map)this.resourceCache.get(var1);
  129.       if (var2 == null) {
  130.          var2 = new HashMap();
  131.  
  132.          for(int var3 = this.resourceBundles.size() - 1; var3 >= 0; --var3) {
  133.             String var4 = (String)this.resourceBundles.get(var3);
  134.  
  135.             try {
  136.                ResourceBundle var5 = ResourceBundle.getBundle(var4, var1, CoreResourceBundleControl.getRBControlInstance());
  137.                Enumeration var6 = var5.getKeys();
  138.  
  139.                while(var6.hasMoreElements()) {
  140.                   String var7 = (String)var6.nextElement();
  141.                   if (((Map)var2).get(var7) == null) {
  142.                      Object var8 = var5.getObject(var7);
  143.                      ((Map)var2).put(var7, var8);
  144.                   }
  145.                }
  146.             } catch (MissingResourceException var9) {
  147.             }
  148.          }
  149.  
  150.          this.resourceCache.put(var1, var2);
  151.       }
  152.  
  153.       return (Map)var2;
  154.    }
  155.  
  156.    public Object put(Object var1, Object var2) {
  157.       Object var3 = var2 == null ? super.remove(var1) : super.put(var1, var2);
  158.       if (var1 instanceof String) {
  159.          this.firePropertyChange((String)var1, var3, var2);
  160.       }
  161.  
  162.       return var3;
  163.    }
  164.  
  165.    public void putDefaults(Object[] var1) {
  166.       int var2 = 0;
  167.  
  168.       for(int var3 = var1.length; var2 < var3; var2 += 2) {
  169.          Object var4 = var1[var2 + 1];
  170.          if (var4 == null) {
  171.             super.remove(var1[var2]);
  172.          } else {
  173.             super.put(var1[var2], var4);
  174.          }
  175.       }
  176.  
  177.       this.firePropertyChange("UIDefaults", (Object)null, (Object)null);
  178.    }
  179.  
  180.    public Font getFont(Object var1) {
  181.       Object var2 = this.get(var1);
  182.       return var2 instanceof Font ? (Font)var2 : null;
  183.    }
  184.  
  185.    public Font getFont(Object var1, Locale var2) {
  186.       Object var3 = this.get(var1, var2);
  187.       return var3 instanceof Font ? (Font)var3 : null;
  188.    }
  189.  
  190.    public Color getColor(Object var1) {
  191.       Object var2 = this.get(var1);
  192.       return var2 instanceof Color ? (Color)var2 : null;
  193.    }
  194.  
  195.    public Color getColor(Object var1, Locale var2) {
  196.       Object var3 = this.get(var1, var2);
  197.       return var3 instanceof Color ? (Color)var3 : null;
  198.    }
  199.  
  200.    public Icon getIcon(Object var1) {
  201.       Object var2 = this.get(var1);
  202.       return var2 instanceof Icon ? (Icon)var2 : null;
  203.    }
  204.  
  205.    public Icon getIcon(Object var1, Locale var2) {
  206.       Object var3 = this.get(var1, var2);
  207.       return var3 instanceof Icon ? (Icon)var3 : null;
  208.    }
  209.  
  210.    public Border getBorder(Object var1) {
  211.       Object var2 = this.get(var1);
  212.       return var2 instanceof Border ? (Border)var2 : null;
  213.    }
  214.  
  215.    public Border getBorder(Object var1, Locale var2) {
  216.       Object var3 = this.get(var1, var2);
  217.       return var3 instanceof Border ? (Border)var3 : null;
  218.    }
  219.  
  220.    public String getString(Object var1) {
  221.       Object var2 = this.get(var1);
  222.       return var2 instanceof String ? (String)var2 : null;
  223.    }
  224.  
  225.    public String getString(Object var1, Locale var2) {
  226.       Object var3 = this.get(var1, var2);
  227.       return var3 instanceof String ? (String)var3 : null;
  228.    }
  229.  
  230.    public int getInt(Object var1) {
  231.       Object var2 = this.get(var1);
  232.       return var2 instanceof Integer ? (Integer)var2 : 0;
  233.    }
  234.  
  235.    public int getInt(Object var1, Locale var2) {
  236.       Object var3 = this.get(var1, var2);
  237.       return var3 instanceof Integer ? (Integer)var3 : 0;
  238.    }
  239.  
  240.    public boolean getBoolean(Object var1) {
  241.       Object var2 = this.get(var1);
  242.       return var2 instanceof Boolean ? (Boolean)var2 : false;
  243.    }
  244.  
  245.    public boolean getBoolean(Object var1, Locale var2) {
  246.       Object var3 = this.get(var1, var2);
  247.       return var3 instanceof Boolean ? (Boolean)var3 : false;
  248.    }
  249.  
  250.    public Insets getInsets(Object var1) {
  251.       Object var2 = this.get(var1);
  252.       return var2 instanceof Insets ? (Insets)var2 : null;
  253.    }
  254.  
  255.    public Insets getInsets(Object var1, Locale var2) {
  256.       Object var3 = this.get(var1, var2);
  257.       return var3 instanceof Insets ? (Insets)var3 : null;
  258.    }
  259.  
  260.    public Dimension getDimension(Object var1) {
  261.       Object var2 = this.get(var1);
  262.       return var2 instanceof Dimension ? (Dimension)var2 : null;
  263.    }
  264.  
  265.    public Dimension getDimension(Object var1, Locale var2) {
  266.       Object var3 = this.get(var1, var2);
  267.       return var3 instanceof Dimension ? (Dimension)var3 : null;
  268.    }
  269.  
  270.    public Class<? extends ComponentUI> getUIClass(String var1, ClassLoader var2) {
  271.       try {
  272.          String var3 = (String)this.get(var1);
  273.          if (var3 != null) {
  274.             Class var4 = (Class)this.get(var3);
  275.             if (var4 == null) {
  276.                if (var2 == null) {
  277.                   var4 = SwingUtilities.loadSystemClass(var3);
  278.                } else {
  279.                   var4 = var2.loadClass(var3);
  280.                }
  281.  
  282.                if (var4 != null) {
  283.                   this.put(var3, var4);
  284.                }
  285.             }
  286.  
  287.             return var4;
  288.          } else {
  289.             return null;
  290.          }
  291.       } catch (ClassNotFoundException var5) {
  292.          return null;
  293.       } catch (ClassCastException var6) {
  294.          return null;
  295.       }
  296.    }
  297.  
  298.    public Class<? extends ComponentUI> getUIClass(String var1) {
  299.       return this.getUIClass(var1, (ClassLoader)null);
  300.    }
  301.  
  302.    protected void getUIError(String var1) {
  303.       System.err.println("UIDefaults.getUI() failed: " + var1);
  304.  
  305.       try {
  306.          throw new Error();
  307.       } catch (Throwable var3) {
  308.          var3.printStackTrace();
  309.       }
  310.    }
  311.  
  312.    public ComponentUI getUI(JComponent var1) {
  313.       Object var2 = this.get("ClassLoader");
  314.       ClassLoader var3 = var2 != null ? (ClassLoader)var2 : var1.getClass().getClassLoader();
  315.       Class var4 = this.getUIClass(var1.getUIClassID(), var3);
  316.       Object var5 = null;
  317.       if (var4 == null) {
  318.          this.getUIError("no ComponentUI class for: " + var1);
  319.       } else {
  320.          try {
  321.             Method var6 = (Method)this.get(var4);
  322.             if (var6 == null) {
  323.                Class var7 = JComponent.class;
  324.                var6 = var4.getMethod("createUI", var7);
  325.                this.put(var4, var6);
  326.             }
  327.  
  328.             var5 = MethodUtil.invoke(var6, (Object)null, new Object[]{var1});
  329.          } catch (NoSuchMethodException var8) {
  330.             this.getUIError("static createUI() method not found in " + var4);
  331.          } catch (Exception var9) {
  332.             this.getUIError("createUI() failed for " + var1 + " " + var9);
  333.          }
  334.       }
  335.  
  336.       return (ComponentUI)var5;
  337.    }
  338.  
  339.    public synchronized void addPropertyChangeListener(PropertyChangeListener var1) {
  340.       if (this.changeSupport == null) {
  341.          this.changeSupport = new SwingPropertyChangeSupport(this);
  342.       }
  343.  
  344.       this.changeSupport.addPropertyChangeListener(var1);
  345.    }
  346.  
  347.    public synchronized void removePropertyChangeListener(PropertyChangeListener var1) {
  348.       if (this.changeSupport != null) {
  349.          this.changeSupport.removePropertyChangeListener(var1);
  350.       }
  351.  
  352.    }
  353.  
  354.    public synchronized PropertyChangeListener[] getPropertyChangeListeners() {
  355.       return this.changeSupport == null ? new PropertyChangeListener[0] : this.changeSupport.getPropertyChangeListeners();
  356.    }
  357.  
  358.    protected void firePropertyChange(String var1, Object var2, Object var3) {
  359.       if (this.changeSupport != null) {
  360.          this.changeSupport.firePropertyChange(var1, var2, var3);
  361.       }
  362.  
  363.    }
  364.  
  365.    public synchronized void addResourceBundle(String var1) {
  366.       if (var1 != null) {
  367.          if (this.resourceBundles == null) {
  368.             this.resourceBundles = new Vector(5);
  369.          }
  370.  
  371.          if (!this.resourceBundles.contains(var1)) {
  372.             this.resourceBundles.add(var1);
  373.             this.resourceCache.clear();
  374.          }
  375.  
  376.       }
  377.    }
  378.  
  379.    public synchronized void removeResourceBundle(String var1) {
  380.       if (this.resourceBundles != null) {
  381.          this.resourceBundles.remove(var1);
  382.       }
  383.  
  384.       this.resourceCache.clear();
  385.    }
  386.  
  387.    public void setDefaultLocale(Locale var1) {
  388.       this.defaultLocale = var1;
  389.    }
  390.  
  391.    public Locale getDefaultLocale() {
  392.       return this.defaultLocale;
  393.    }
  394. }
  395.