home *** CD-ROM | disk | FTP | other *** search
/ PC Plus SuperCD (UK) 2000 March / pcp161a.iso / handson / files / copyjava.exe / com / sun / java / swing / UIManager.class (.txt) < prev    next >
Encoding:
Java Class File  |  1998-02-26  |  9.2 KB  |  352 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.io.BufferedInputStream;
  9. import java.io.File;
  10. import java.io.FileInputStream;
  11. import java.io.FilterInputStream;
  12. import java.io.Serializable;
  13. import java.util.Hashtable;
  14. import java.util.Properties;
  15. import java.util.StringTokenizer;
  16. import java.util.Vector;
  17.  
  18. public class UIManager implements Serializable {
  19.    private static final Object lafStateACKey = new StringBuffer("LookAndFeel State");
  20.    private static final String defaultLAFKey = "swing.defaultlaf";
  21.    private static final String auxiliaryLAFsKey = "swing.auxiliarylaf";
  22.    private static final String multiplexingLAFKey = "swing.plaf.multiplexinglaf";
  23.    private static final String installedLAFsKey = "swing.installedlafs";
  24.    private static LookAndFeelInfo[] installedLAFs = new LookAndFeelInfo[]{new LookAndFeelInfo("Metal", "com.sun.java.swing.plaf.metal.MetalLookAndFeel"), new LookAndFeelInfo("CDE/Motif", "com.sun.java.swing.plaf.motif.MotifLookAndFeel"), new LookAndFeelInfo("Windows", "com.sun.java.swing.plaf.windows.WindowsLookAndFeel")};
  25.    // $FF: synthetic field
  26.    static Class class$com$sun$java$swing$UIManager;
  27.  
  28.    private static LAFState getLAFState() {
  29.       LAFState var0 = (LAFState)SwingUtilities.appContextGet(lafStateACKey);
  30.       if (var0 != null) {
  31.          return var0;
  32.       } else {
  33.          Class var2 = class$com$sun$java$swing$UIManager != null ? class$com$sun$java$swing$UIManager : (class$com$sun$java$swing$UIManager = class$("com.sun.java.swing.UIManager"));
  34.          synchronized(var2){}
  35.  
  36.          LAFState var1;
  37.          try {
  38.             var0 = (LAFState)SwingUtilities.appContextGet(lafStateACKey);
  39.             if (var0 == null) {
  40.                SwingUtilities.appContextPut(lafStateACKey, var0 = new LAFState());
  41.                var1 = var0;
  42.                return var1;
  43.             }
  44.  
  45.             var1 = var0;
  46.          } catch (Throwable var5) {
  47.             throw var5;
  48.          }
  49.  
  50.          return var1;
  51.       }
  52.    }
  53.  
  54.    private static String makeInstalledLAFKey(String var0, String var1) {
  55.       return "swing.installedlaf." + var0 + "." + var1;
  56.    }
  57.  
  58.    private static String makeSwingPropertiesFilename() {
  59.       String var0 = File.separator;
  60.       String var1 = System.getProperty("java.home", "<java.home undefined>");
  61.       return var1 + var0 + "lib" + var0 + "swing.properties";
  62.    }
  63.  
  64.    public static LookAndFeelInfo[] getInstalledLookAndFeels() {
  65.       maybeInitialize();
  66.       LookAndFeelInfo[] var0 = installedLAFs;
  67.       LookAndFeelInfo[] var1 = new LookAndFeelInfo[var0.length];
  68.       System.arraycopy(var0, 0, var1, 0, var0.length);
  69.       return var1;
  70.    }
  71.  
  72.    public static void setInstalledLookAndFeels(LookAndFeelInfo[] var0) throws SecurityException {
  73.       LookAndFeelInfo[] var1 = new LookAndFeelInfo[var0.length];
  74.       System.arraycopy(var0, 0, var1, 0, var0.length);
  75.       installedLAFs = var1;
  76.    }
  77.  
  78.    public static void installLookAndFeel(LookAndFeelInfo var0) {
  79.       LookAndFeelInfo[] var1 = getInstalledLookAndFeels();
  80.       LookAndFeelInfo[] var2 = new LookAndFeelInfo[var1.length + 1];
  81.       System.arraycopy(var1, 0, var2, 0, var1.length);
  82.       var2[var1.length] = var0;
  83.       setInstalledLookAndFeels(var2);
  84.    }
  85.  
  86.    public static void installLookAndFeel(String var0, String var1) {
  87.       installLookAndFeel(new LookAndFeelInfo(var0, var1));
  88.    }
  89.  
  90.    public static LookAndFeel getLookAndFeel() {
  91.       maybeInitialize();
  92.       return getLAFState().lookAndFeel;
  93.    }
  94.  
  95.    public static void setLookAndFeel(LookAndFeel var0) throws UnsupportedLookAndFeelException {
  96.       if (var0 != null && !var0.isSupportedLookAndFeel()) {
  97.          String var2 = var0.toString() + " not supported on this platform";
  98.          throw new UnsupportedLookAndFeelException(var2);
  99.       } else {
  100.          LookAndFeel var1 = getLAFState().lookAndFeel;
  101.          if (var1 != null) {
  102.             var1.uninitialize();
  103.          }
  104.  
  105.          getLAFState().lookAndFeel = var0;
  106.          if (var0 != null) {
  107.             var0.initialize();
  108.             getLAFState().setLookAndFeelDefaults(var0.getDefaults());
  109.          } else {
  110.             getLAFState().setLookAndFeelDefaults((UIDefaults)null);
  111.          }
  112.  
  113.          getLAFState().changeSupport.firePropertyChange("lookAndFeel", var1, var0);
  114.       }
  115.    }
  116.  
  117.    public static void setLookAndFeel(String var0) throws ClassNotFoundException, InstantiationException, IllegalAccessException, UnsupportedLookAndFeelException {
  118.       Class var1 = Class.forName(var0);
  119.       setLookAndFeel((LookAndFeel)var1.newInstance());
  120.    }
  121.  
  122.    public static String getSystemLookAndFeelClassName() {
  123.       String var0 = System.getProperty("os.name");
  124.       if (var0 != null) {
  125.          if (var0.indexOf("Windows") != -1) {
  126.             return "com.sun.java.swing.plaf.windows.WindowsLookAndFeel";
  127.          }
  128.  
  129.          if (var0.indexOf("Solaris") != -1) {
  130.             return "com.sun.java.swing.plaf.motif.MotifLookAndFeel";
  131.          }
  132.       }
  133.  
  134.       return getCrossPlatformLookAndFeelClassName();
  135.    }
  136.  
  137.    public static String getCrossPlatformLookAndFeelClassName() {
  138.       return "com.sun.java.swing.plaf.metal.MetalLookAndFeel";
  139.    }
  140.  
  141.    public static UIDefaults getDefaults() {
  142.       maybeInitialize();
  143.       return getLAFState().multiUIDefaults;
  144.    }
  145.  
  146.    public static Font getFont(Object var0) {
  147.       return getDefaults().getFont(var0);
  148.    }
  149.  
  150.    public static Color getColor(Object var0) {
  151.       return getDefaults().getColor(var0);
  152.    }
  153.  
  154.    public static Icon getIcon(Object var0) {
  155.       return getDefaults().getIcon(var0);
  156.    }
  157.  
  158.    public static Border getBorder(Object var0) {
  159.       return getDefaults().getBorder(var0);
  160.    }
  161.  
  162.    public static String getString(Object var0) {
  163.       return getDefaults().getString(var0);
  164.    }
  165.  
  166.    public static Object get(Object var0) {
  167.       return getDefaults().get(var0);
  168.    }
  169.  
  170.    public static Object put(Object var0, Object var1) {
  171.       return getDefaults().put(var0, var1);
  172.    }
  173.  
  174.    public static ComponentUI getUI(JComponent var0) {
  175.       maybeInitialize();
  176.       ComponentUI var1 = null;
  177.       LookAndFeel var2 = getLAFState().multiLookAndFeel;
  178.       if (var2 != null) {
  179.          var1 = var2.getDefaults().getUI(var0);
  180.       }
  181.  
  182.       if (var1 == null) {
  183.          var1 = getDefaults().getUI(var0);
  184.       }
  185.  
  186.       return var1;
  187.    }
  188.  
  189.    public static UIDefaults getLookAndFeelDefaults() {
  190.       maybeInitialize();
  191.       return getLAFState().getLookAndFeelDefaults();
  192.    }
  193.  
  194.    public static LookAndFeel[] getAuxiliaryLookAndFeels() {
  195.       maybeInitialize();
  196.       Vector var0 = getLAFState().auxLookAndFeels;
  197.       if (var0 != null && var0.size() != 0) {
  198.          LookAndFeel[] var1 = new LookAndFeel[var0.size()];
  199.  
  200.          for(int var2 = 0; var2 < var1.length; ++var2) {
  201.             var1[var2] = (LookAndFeel)var0.elementAt(var2);
  202.          }
  203.  
  204.          return var1;
  205.       } else {
  206.          return null;
  207.       }
  208.    }
  209.  
  210.    public static synchronized void addPropertyChangeListener(PropertyChangeListener var0) {
  211.       getLAFState().changeSupport.addPropertyChangeListener(var0);
  212.    }
  213.  
  214.    public static synchronized void removePropertyChangeListener(PropertyChangeListener var0) {
  215.       getLAFState().changeSupport.removePropertyChangeListener(var0);
  216.    }
  217.  
  218.    private static Properties loadSwingProperties() {
  219.       Properties var0 = new Properties();
  220.       if ((class$com$sun$java$swing$UIManager != null ? class$com$sun$java$swing$UIManager : (class$com$sun$java$swing$UIManager = class$("com.sun.java.swing.UIManager"))).getClassLoader() == null) {
  221.          try {
  222.             File var1 = new File(makeSwingPropertiesFilename());
  223.             BufferedInputStream var2 = new BufferedInputStream(new FileInputStream(var1));
  224.             var0.load(var2);
  225.             ((FilterInputStream)var2).close();
  226.          } catch (Exception var3) {
  227.             ((Hashtable)var0).clear();
  228.          }
  229.       }
  230.  
  231.       return var0;
  232.    }
  233.  
  234.    private static void initializeInstalledLAFs(Properties var0) {
  235.       String var1 = var0.getProperty("swing.installedlafs");
  236.       if (var1 != null) {
  237.          Vector var2 = new Vector();
  238.          StringTokenizer var3 = new StringTokenizer(var1, ",", false);
  239.  
  240.          while(var3.hasMoreTokens()) {
  241.             var2.addElement(var3.nextToken());
  242.          }
  243.  
  244.          Vector var4 = new Vector(var2.size());
  245.  
  246.          for(int var5 = 0; var5 < var2.size(); ++var5) {
  247.             String var6 = (String)var2.elementAt(var5);
  248.             String var7 = var0.getProperty(makeInstalledLAFKey(var6, "name"), var6);
  249.             String var8 = var0.getProperty(makeInstalledLAFKey(var6, "class"));
  250.             if (var8 != null) {
  251.                var4.addElement(new LookAndFeelInfo(var7, var8));
  252.             }
  253.          }
  254.  
  255.          installedLAFs = new LookAndFeelInfo[var4.size()];
  256.  
  257.          for(int var9 = 0; var9 < var4.size(); ++var9) {
  258.             installedLAFs[var9] = (LookAndFeelInfo)var4.elementAt(var9);
  259.          }
  260.  
  261.       }
  262.    }
  263.  
  264.    private static void initializeDefaultLAF(Properties var0) {
  265.       if (getLAFState().lookAndFeel == null) {
  266.          String var1 = getCrossPlatformLookAndFeelClassName();
  267.          String var2 = var1;
  268.          String var3 = "<undefined>";
  269.  
  270.          try {
  271.             var3 = var0.getProperty("swing.defaultlaf", var2);
  272.             Class var9 = Class.forName(var3);
  273.             setLookAndFeel((LookAndFeel)var9.newInstance());
  274.          } catch (Exception var6) {
  275.             try {
  276.                var3 = var0.getProperty("swing.defaultlaf", var1);
  277.                Class var4 = Class.forName(var3);
  278.                setLookAndFeel((LookAndFeel)var4.newInstance());
  279.             } catch (Exception var5) {
  280.                throw new Error("can't load " + var3);
  281.             }
  282.          }
  283.       }
  284.    }
  285.  
  286.    private static void initializeAuxiliaryLAFs(Properties var0) {
  287.       String var1 = var0.getProperty("swing.auxiliarylaf");
  288.       if (var1 != null) {
  289.          Vector var2 = new Vector();
  290.          StringTokenizer var3 = new StringTokenizer(var1, ",");
  291.  
  292.          while(var3.hasMoreTokens()) {
  293.             String var4 = var3.nextToken();
  294.  
  295.             try {
  296.                Class var5 = Class.forName(var4);
  297.                var2.addElement(var5.newInstance());
  298.             } catch (Exception var8) {
  299.                System.err.println("UIManager: failed loading auxiliary look and feel " + var4);
  300.             }
  301.          }
  302.  
  303.          if (var2.size() == 0) {
  304.             var2 = null;
  305.          } else {
  306.             String var9 = "com.sun.java.swing.plaf.multi.MultiLookAndFeel";
  307.             String var10 = var0.getProperty("swing.plaf.multiplexinglaf", var9);
  308.  
  309.             try {
  310.                Class var6 = Class.forName(var10);
  311.                getLAFState().multiLookAndFeel = (LookAndFeel)var6.newInstance();
  312.             } catch (Exception var7) {
  313.                System.err.println("UIManager: failed loading " + var10);
  314.                var2 = null;
  315.             }
  316.          }
  317.  
  318.          getLAFState().auxLookAndFeels = var2;
  319.       }
  320.    }
  321.  
  322.    private static void initializeSystemDefaults(Properties var0) {
  323.       Object[] var1 = new Object[]{"FocusManagerClassName", "com.sun.java.swing.DefaultFocusManager"};
  324.       getLAFState().setSystemDefaults(new UIDefaults(var1));
  325.    }
  326.  
  327.    private static void initialize() {
  328.       Properties var0 = loadSwingProperties();
  329.       initializeSystemDefaults(var0);
  330.       initializeDefaultLAF(var0);
  331.       initializeAuxiliaryLAFs(var0);
  332.       initializeInstalledLAFs(var0);
  333.    }
  334.  
  335.    private static synchronized void maybeInitialize() {
  336.       if (!getLAFState().initialized) {
  337.          initialize();
  338.          getLAFState().initialized = true;
  339.       }
  340.  
  341.    }
  342.  
  343.    // $FF: synthetic method
  344.    static Class class$(String var0) {
  345.       try {
  346.          return Class.forName(var0);
  347.       } catch (ClassNotFoundException var2) {
  348.          throw new NoClassDefFoundError(((Throwable)var2).getMessage());
  349.       }
  350.    }
  351. }
  352.