home *** CD-ROM | disk | FTP | other *** search
/ PC Plus SuperCD (UK) 2000 March / pcp161a.iso / handson / files / copyjava.exe / com / sun / java / swing / UIDefaults.class (.txt) < prev    next >
Encoding:
Java Class File  |  1998-02-26  |  4.8 KB  |  207 lines

  1. package com.sun.java.swing;
  2.  
  3. import com.sun.java.swing.border.Border;
  4. import com.sun.java.swing.plaf.ComponentUI;
  5. import java.awt.Color;
  6. import java.awt.Font;
  7. import java.beans.PropertyChangeListener;
  8. import java.beans.PropertyChangeSupport;
  9. import java.lang.reflect.Method;
  10. import java.util.Hashtable;
  11.  
  12. public class UIDefaults extends Hashtable {
  13.    private static final Object PENDING = new String("Pending");
  14.    private PropertyChangeSupport changeSupport;
  15.    // $FF: synthetic field
  16.    static Class class$com$sun$java$swing$JComponent;
  17.  
  18.    public UIDefaults() {
  19.    }
  20.  
  21.    public UIDefaults(Object[] var1) {
  22.       super(var1.length / 2);
  23.  
  24.       for(int var2 = 0; var2 < var1.length; var2 += 2) {
  25.          super.put(var1[var2], var1[var2 + 1]);
  26.       }
  27.  
  28.    }
  29.  
  30.    public Object get(Object var1) {
  31.       Object var2 = super.get(var1);
  32.       if (var2 != PENDING && !(var2 instanceof ActiveValue) && !(var2 instanceof LazyValue)) {
  33.          return var2;
  34.       } else {
  35.          synchronized(this){}
  36.  
  37.          try {
  38.             var2 = super.get(var1);
  39.             if (var2 == PENDING) {
  40.                do {
  41.                   try {
  42.                      this.wait();
  43.                   } catch (InterruptedException var26) {
  44.                   }
  45.  
  46.                   var2 = super.get(var1);
  47.                } while(var2 == PENDING);
  48.  
  49.                Object var31 = var2;
  50.                return var31;
  51.             }
  52.  
  53.             if (var2 instanceof LazyValue) {
  54.                super.put(var1, PENDING);
  55.             } else if (!(var2 instanceof ActiveValue)) {
  56.                Object var3 = var2;
  57.                return var3;
  58.             }
  59.          } catch (Throwable var28) {
  60.             throw var28;
  61.          }
  62.  
  63.          if (var2 instanceof LazyValue) {
  64.             try {
  65.                var2 = ((LazyValue)var2).createValue(this);
  66.             } finally {
  67.                synchronized(this){}
  68.  
  69.                try {
  70.                   if (var2 == null) {
  71.                      super.remove(var1);
  72.                   } else {
  73.                      super.put(var1, var2);
  74.                   }
  75.  
  76.                   this.notify();
  77.                } catch (Throwable var25) {
  78.                   throw var25;
  79.                }
  80.  
  81.             }
  82.          } else {
  83.             var2 = ((ActiveValue)var2).createValue(this);
  84.          }
  85.  
  86.          return var2;
  87.       }
  88.    }
  89.  
  90.    public Object put(Object var1, Object var2) {
  91.       Object var3 = var2 == null ? super.remove(var1) : super.put(var1, var2);
  92.       if (var1 instanceof String) {
  93.          this.firePropertyChange((String)var1, var3, var2);
  94.       }
  95.  
  96.       return var3;
  97.    }
  98.  
  99.    public void putDefaults(Object[] var1) {
  100.       for(int var2 = 0; var2 < var1.length; var2 += 2) {
  101.          Object var3 = var1[var2 + 1];
  102.          if (var3 == null) {
  103.             super.remove(var1[var2]);
  104.          } else {
  105.             super.put(var1[var2], var3);
  106.          }
  107.       }
  108.  
  109.       this.firePropertyChange("UIDefaults", (Object)null, (Object)null);
  110.    }
  111.  
  112.    public Font getFont(Object var1) {
  113.       Object var2 = this.get(var1);
  114.       return var2 instanceof Font ? (Font)var2 : null;
  115.    }
  116.  
  117.    public Color getColor(Object var1) {
  118.       Object var2 = this.get(var1);
  119.       return var2 instanceof Color ? (Color)var2 : null;
  120.    }
  121.  
  122.    public Icon getIcon(Object var1) {
  123.       Object var2 = this.get(var1);
  124.       return var2 instanceof Icon ? (Icon)var2 : null;
  125.    }
  126.  
  127.    public Border getBorder(Object var1) {
  128.       Object var2 = this.get(var1);
  129.       return var2 instanceof Border ? (Border)var2 : null;
  130.    }
  131.  
  132.    public String getString(Object var1) {
  133.       Object var2 = this.get(var1);
  134.       return var2 instanceof String ? (String)var2 : null;
  135.    }
  136.  
  137.    public Class getUIClass(String var1) {
  138.       Object var2 = this.get(var1);
  139.  
  140.       try {
  141.          return var2 instanceof String ? Class.forName((String)var2) : null;
  142.       } catch (ClassNotFoundException var3) {
  143.          return null;
  144.       }
  145.    }
  146.  
  147.    protected void getUIError(String var1) {
  148.       try {
  149.          throw new Error();
  150.       } catch (Throwable var3) {
  151.          var3.printStackTrace();
  152.          System.err.println("UIDefaults.getUI() failed: " + var1);
  153.       }
  154.    }
  155.  
  156.    public ComponentUI getUI(JComponent var1) {
  157.       Class var2 = this.getUIClass(var1.getUIClassID());
  158.       Object var3 = null;
  159.       if (var2 == null) {
  160.          this.getUIError("no ComponentUI class for: " + var1);
  161.       } else {
  162.          try {
  163.             Class var4 = class$com$sun$java$swing$JComponent != null ? class$com$sun$java$swing$JComponent : (class$com$sun$java$swing$JComponent = class$("com.sun.java.swing.JComponent"));
  164.             Method var5 = var2.getMethod("createUI", var4);
  165.             var3 = var5.invoke((Object)null, var1);
  166.          } catch (NoSuchMethodException var6) {
  167.             this.getUIError("static createUI() method not found in " + var2);
  168.          } catch (Exception var7) {
  169.             this.getUIError("createUI() failed for " + var1 + " " + var7);
  170.          }
  171.       }
  172.  
  173.       return (ComponentUI)var3;
  174.    }
  175.  
  176.    public synchronized void addPropertyChangeListener(PropertyChangeListener var1) {
  177.       if (this.changeSupport == null) {
  178.          this.changeSupport = new PropertyChangeSupport(this);
  179.       }
  180.  
  181.       this.changeSupport.addPropertyChangeListener(var1);
  182.    }
  183.  
  184.    public synchronized void removePropertyChangeListener(PropertyChangeListener var1) {
  185.       if (this.changeSupport != null) {
  186.          this.changeSupport.removePropertyChangeListener(var1);
  187.       }
  188.  
  189.    }
  190.  
  191.    protected void firePropertyChange(String var1, Object var2, Object var3) {
  192.       if (this.changeSupport != null) {
  193.          this.changeSupport.firePropertyChange(var1, var2, var3);
  194.       }
  195.  
  196.    }
  197.  
  198.    // $FF: synthetic method
  199.    static Class class$(String var0) {
  200.       try {
  201.          return Class.forName(var0);
  202.       } catch (ClassNotFoundException var2) {
  203.          throw new NoClassDefFoundError(((Throwable)var2).getMessage());
  204.       }
  205.    }
  206. }
  207.