home *** CD-ROM | disk | FTP | other *** search
/ Computer Shopper 144 / DPCS0200.iso / Internet / Supanet / system / swing.jar / javax / swing / UIManager.class (.txt) < prev    next >
Encoding:
Java Class File  |  1998-11-05  |  10.3 KB  |  446 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.io.File;
  9. import java.io.Serializable;
  10. import java.util.Hashtable;
  11. import java.util.Properties;
  12. import java.util.StringTokenizer;
  13. import java.util.Vector;
  14. import javax.swing.border.Border;
  15. import javax.swing.plaf.ComponentUI;
  16.  
  17. public class UIManager implements Serializable {
  18.    private static final Object lafStateACKey = new StringBuffer("LookAndFeel State");
  19.    private static final String defaultLAFKey = "swing.defaultlaf";
  20.    private static final String auxiliaryLAFsKey = "swing.auxiliarylaf";
  21.    private static final String multiplexingLAFKey = "swing.plaf.multiplexinglaf";
  22.    private static final String installedLAFsKey = "swing.installedlafs";
  23.    private static LookAndFeelInfo[] installedLAFs = new LookAndFeelInfo[]{new LookAndFeelInfo("Metal", "javax.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")};
  24.    // $FF: synthetic field
  25.    static Class class$javax$swing$UIManager;
  26.  
  27.    // $FF: synthetic method
  28.    static String access$0() {
  29.       return makeSwingPropertiesFilename();
  30.    }
  31.  
  32.    // $FF: synthetic method
  33.    static void access$1(Properties var0, String var1) {
  34.       checkProperty(var0, var1);
  35.    }
  36.  
  37.    public static void addAuxiliaryLookAndFeel(LookAndFeel var0) {
  38.       maybeInitialize();
  39.       Vector var1 = getLAFState().auxLookAndFeels;
  40.       if (var1 == null) {
  41.          var1 = new Vector();
  42.       }
  43.  
  44.       if (!var1.contains(var0)) {
  45.          var1.addElement(var0);
  46.          getLAFState().auxLookAndFeels = var1;
  47.          if (getLAFState().multiLookAndFeel == null) {
  48.             getLAFState().multiLookAndFeel = getMultiLookAndFeel();
  49.          }
  50.       }
  51.  
  52.    }
  53.  
  54.    public static synchronized void addPropertyChangeListener(PropertyChangeListener var0) {
  55.       getLAFState().changeSupport.addPropertyChangeListener(var0);
  56.    }
  57.  
  58.    private static void checkProperty(Properties var0, String var1) {
  59.       try {
  60.          String var2 = System.getProperty(var1);
  61.          if (var2 != null) {
  62.             ((Hashtable)var0).put(var1, var2);
  63.          }
  64.       } catch (SecurityException var3) {
  65.       }
  66.  
  67.    }
  68.  
  69.    // $FF: synthetic method
  70.    static Class class$(String var0) {
  71.       try {
  72.          return Class.forName(var0);
  73.       } catch (ClassNotFoundException var2) {
  74.          throw new NoClassDefFoundError(((Throwable)var2).getMessage());
  75.       }
  76.    }
  77.  
  78.    public static Object get(Object var0) {
  79.       return getDefaults().get(var0);
  80.    }
  81.  
  82.    public static LookAndFeel[] getAuxiliaryLookAndFeels() {
  83.       maybeInitialize();
  84.       Vector var0 = getLAFState().auxLookAndFeels;
  85.       if (var0 != null && var0.size() != 0) {
  86.          LookAndFeel[] var1 = new LookAndFeel[var0.size()];
  87.  
  88.          for(int var2 = 0; var2 < var1.length; ++var2) {
  89.             var1[var2] = (LookAndFeel)var0.elementAt(var2);
  90.          }
  91.  
  92.          return var1;
  93.       } else {
  94.          return null;
  95.       }
  96.    }
  97.  
  98.    public static Border getBorder(Object var0) {
  99.       return getDefaults().getBorder(var0);
  100.    }
  101.  
  102.    public static Color getColor(Object var0) {
  103.       return getDefaults().getColor(var0);
  104.    }
  105.  
  106.    public static String getCrossPlatformLookAndFeelClassName() {
  107.       return "javax.swing.plaf.metal.MetalLookAndFeel";
  108.    }
  109.  
  110.    public static UIDefaults getDefaults() {
  111.       maybeInitialize();
  112.       return getLAFState().multiUIDefaults;
  113.    }
  114.  
  115.    public static Dimension getDimension(Object var0) {
  116.       return getDefaults().getDimension(var0);
  117.    }
  118.  
  119.    public static Font getFont(Object var0) {
  120.       return getDefaults().getFont(var0);
  121.    }
  122.  
  123.    public static Icon getIcon(Object var0) {
  124.       return getDefaults().getIcon(var0);
  125.    }
  126.  
  127.    public static Insets getInsets(Object var0) {
  128.       return getDefaults().getInsets(var0);
  129.    }
  130.  
  131.    public static LookAndFeelInfo[] getInstalledLookAndFeels() {
  132.       maybeInitialize();
  133.       LookAndFeelInfo[] var0 = installedLAFs;
  134.       LookAndFeelInfo[] var1 = new LookAndFeelInfo[var0.length];
  135.       System.arraycopy(var0, 0, var1, 0, var0.length);
  136.       return var1;
  137.    }
  138.  
  139.    public static int getInt(Object var0) {
  140.       return getDefaults().getInt(var0);
  141.    }
  142.  
  143.    private static LAFState getLAFState() {
  144.       LAFState var0 = (LAFState)SwingUtilities.appContextGet(lafStateACKey);
  145.       if (var0 != null) {
  146.          return var0;
  147.       } else {
  148.          Class var2 = class$javax$swing$UIManager != null ? class$javax$swing$UIManager : (class$javax$swing$UIManager = class$("javax.swing.UIManager"));
  149.          synchronized(var2){}
  150.  
  151.          LAFState var1;
  152.          try {
  153.             var0 = (LAFState)SwingUtilities.appContextGet(lafStateACKey);
  154.             if (var0 == null) {
  155.                SwingUtilities.appContextPut(lafStateACKey, var0 = new LAFState());
  156.                var1 = var0;
  157.                return var1;
  158.             }
  159.  
  160.             var1 = var0;
  161.          } catch (Throwable var5) {
  162.             throw var5;
  163.          }
  164.  
  165.          return var1;
  166.       }
  167.    }
  168.  
  169.    public static LookAndFeel getLookAndFeel() {
  170.       maybeInitialize();
  171.       return getLAFState().lookAndFeel;
  172.    }
  173.  
  174.    public static UIDefaults getLookAndFeelDefaults() {
  175.       maybeInitialize();
  176.       return getLAFState().getLookAndFeelDefaults();
  177.    }
  178.  
  179.    private static LookAndFeel getMultiLookAndFeel() {
  180.       LookAndFeel var0 = getLAFState().multiLookAndFeel;
  181.       if (var0 == null) {
  182.          String var1 = "javax.swing.plaf.multi.MultiLookAndFeel";
  183.          String var2 = getLAFState().swingProps.getProperty("swing.plaf.multiplexinglaf", var1);
  184.  
  185.          try {
  186.             Class var3 = Class.forName(var2);
  187.             var0 = (LookAndFeel)var3.newInstance();
  188.          } catch (Exception var4) {
  189.             System.err.println("UIManager: failed loading " + var2);
  190.          }
  191.       }
  192.  
  193.       return var0;
  194.    }
  195.  
  196.    public static String getString(Object var0) {
  197.       return getDefaults().getString(var0);
  198.    }
  199.  
  200.    public static String getSystemLookAndFeelClassName() {
  201.       String[] var0 = new String[]{""};
  202.       SwingUtilities.doPrivileged(new 2(var0));
  203.       if (var0[0] != null) {
  204.          if (var0[0].indexOf("Windows") != -1) {
  205.             return "com.sun.java.swing.plaf.windows.WindowsLookAndFeel";
  206.          }
  207.  
  208.          if (var0[0].indexOf("Solaris") != -1 || var0[0].indexOf("SunOS") != -1) {
  209.             return "com.sun.java.swing.plaf.motif.MotifLookAndFeel";
  210.          }
  211.  
  212.          if (var0[0].indexOf("Mac") != -1) {
  213.             return "com.sun.java.swing.plaf.mac.MacLookAndFeel";
  214.          }
  215.       }
  216.  
  217.       return getCrossPlatformLookAndFeelClassName();
  218.    }
  219.  
  220.    public static ComponentUI getUI(JComponent var0) {
  221.       maybeInitialize();
  222.       ComponentUI var1 = null;
  223.       LookAndFeel var2 = getLAFState().multiLookAndFeel;
  224.       if (var2 != null) {
  225.          var1 = var2.getDefaults().getUI(var0);
  226.       }
  227.  
  228.       if (var1 == null) {
  229.          var1 = getDefaults().getUI(var0);
  230.       }
  231.  
  232.       return var1;
  233.    }
  234.  
  235.    private static void initialize() {
  236.       Properties var0 = loadSwingProperties();
  237.  
  238.       try {
  239.          Compiler.disable();
  240.          initializeSystemDefaults(var0);
  241.          initializeDefaultLAF(var0);
  242.          initializeAuxiliaryLAFs(var0);
  243.          initializeInstalledLAFs(var0);
  244.       } finally {
  245.          Compiler.enable();
  246.       }
  247.  
  248.    }
  249.  
  250.    private static void initializeAuxiliaryLAFs(Properties var0) {
  251.       String var1 = var0.getProperty("swing.auxiliarylaf");
  252.       if (var1 != null) {
  253.          Vector var2 = new Vector();
  254.          StringTokenizer var3 = new StringTokenizer(var1, ",");
  255.  
  256.          while(var3.hasMoreTokens()) {
  257.             String var5 = var3.nextToken();
  258.  
  259.             try {
  260.                Class var6 = Class.forName(var5);
  261.                var2.addElement(var6.newInstance());
  262.             } catch (Exception var7) {
  263.                System.err.println("UIManager: failed loading auxiliary look and feel " + var5);
  264.             }
  265.          }
  266.  
  267.          if (var2.size() == 0) {
  268.             var2 = null;
  269.          } else {
  270.             getLAFState().multiLookAndFeel = getMultiLookAndFeel();
  271.             if (getLAFState().multiLookAndFeel == null) {
  272.                var2 = null;
  273.             }
  274.          }
  275.  
  276.          getLAFState().auxLookAndFeels = var2;
  277.       }
  278.    }
  279.  
  280.    private static void initializeDefaultLAF(Properties var0) {
  281.       if (getLAFState().lookAndFeel == null) {
  282.          String var1 = getCrossPlatformLookAndFeelClassName();
  283.          String var2 = var1;
  284.          String var3 = "<undefined>";
  285.  
  286.          try {
  287.             var3 = var0.getProperty("swing.defaultlaf", var2);
  288.             setLookAndFeel(var3);
  289.          } catch (Exception var5) {
  290.             try {
  291.                var3 = var0.getProperty("swing.defaultlaf", var1);
  292.                setLookAndFeel(var3);
  293.             } catch (Exception var4) {
  294.                throw new Error("can't load " + var3);
  295.             }
  296.          }
  297.  
  298.       }
  299.    }
  300.  
  301.    private static void initializeInstalledLAFs(Properties var0) {
  302.       String var1 = var0.getProperty("swing.installedlafs");
  303.       if (var1 != null) {
  304.          Vector var2 = new Vector();
  305.          StringTokenizer var3 = new StringTokenizer(var1, ",", false);
  306.  
  307.          while(var3.hasMoreTokens()) {
  308.             var2.addElement(var3.nextToken());
  309.          }
  310.  
  311.          Vector var4 = new Vector(var2.size());
  312.  
  313.          for(int var5 = 0; var5 < var2.size(); ++var5) {
  314.             String var6 = (String)var2.elementAt(var5);
  315.             String var7 = var0.getProperty(makeInstalledLAFKey(var6, "name"), var6);
  316.             String var8 = var0.getProperty(makeInstalledLAFKey(var6, "class"));
  317.             if (var8 != null) {
  318.                var4.addElement(new LookAndFeelInfo(var7, var8));
  319.             }
  320.          }
  321.  
  322.          installedLAFs = new LookAndFeelInfo[var4.size()];
  323.  
  324.          for(int var9 = 0; var9 < var4.size(); ++var9) {
  325.             installedLAFs[var9] = (LookAndFeelInfo)var4.elementAt(var9);
  326.          }
  327.  
  328.       }
  329.    }
  330.  
  331.    private static void initializeSystemDefaults(Properties var0) {
  332.       Object[] var1 = new Object[]{"FocusManagerClassName", "javax.swing.DefaultFocusManager"};
  333.       getLAFState().setSystemDefaults(new UIDefaults(var1));
  334.       getLAFState().swingProps = var0;
  335.    }
  336.  
  337.    public static void installLookAndFeel(String var0, String var1) {
  338.       installLookAndFeel(new LookAndFeelInfo(var0, var1));
  339.    }
  340.  
  341.    public static void installLookAndFeel(LookAndFeelInfo var0) {
  342.       LookAndFeelInfo[] var1 = getInstalledLookAndFeels();
  343.       LookAndFeelInfo[] var2 = new LookAndFeelInfo[var1.length + 1];
  344.       System.arraycopy(var1, 0, var2, 0, var1.length);
  345.       var2[var1.length] = var0;
  346.       setInstalledLookAndFeels(var2);
  347.    }
  348.  
  349.    private static Properties loadSwingProperties() {
  350.       if ((class$javax$swing$UIManager != null ? class$javax$swing$UIManager : (class$javax$swing$UIManager = class$("javax.swing.UIManager"))).getClassLoader() != null) {
  351.          return new Properties();
  352.       } else {
  353.          Properties var0 = new Properties();
  354.          SwingUtilities.doPrivileged(new 3(var0));
  355.          return var0;
  356.       }
  357.    }
  358.  
  359.    private static String makeInstalledLAFKey(String var0, String var1) {
  360.       return "swing.installedlaf." + var0 + "." + var1;
  361.    }
  362.  
  363.    private static String makeSwingPropertiesFilename() {
  364.       String[] var0 = new String[]{"<java.home undefined>"};
  365.       SwingUtilities.doPrivileged(new 1(var0));
  366.       String var1 = File.separator;
  367.       return var0[0] + var1 + "lib" + var1 + "swing.properties";
  368.    }
  369.  
  370.    private static synchronized void maybeInitialize() {
  371.       if (!getLAFState().initialized) {
  372.          Class var0 = class$javax$swing$UIManager != null ? class$javax$swing$UIManager : (class$javax$swing$UIManager = class$("javax.swing.UIManager"));
  373.          synchronized(var0){}
  374.  
  375.          try {
  376.             getLAFState().initialized = true;
  377.             initialize();
  378.          } catch (Throwable var2) {
  379.             throw var2;
  380.          }
  381.       }
  382.  
  383.    }
  384.  
  385.    public static Object put(Object var0, Object var1) {
  386.       return getDefaults().put(var0, var1);
  387.    }
  388.  
  389.    public static boolean removeAuxiliaryLookAndFeel(LookAndFeel var0) {
  390.       maybeInitialize();
  391.       Vector var2 = getLAFState().auxLookAndFeels;
  392.       if (var2 != null && var2.size() != 0) {
  393.          boolean var1 = var2.removeElement(var0);
  394.          if (var1) {
  395.             if (var2.size() == 0) {
  396.                getLAFState().auxLookAndFeels = null;
  397.                getLAFState().multiLookAndFeel = null;
  398.             } else {
  399.                getLAFState().auxLookAndFeels = var2;
  400.             }
  401.          }
  402.  
  403.          return var1;
  404.       } else {
  405.          return false;
  406.       }
  407.    }
  408.  
  409.    public static synchronized void removePropertyChangeListener(PropertyChangeListener var0) {
  410.       getLAFState().changeSupport.removePropertyChangeListener(var0);
  411.    }
  412.  
  413.    public static void setInstalledLookAndFeels(LookAndFeelInfo[] var0) throws SecurityException {
  414.       LookAndFeelInfo[] var1 = new LookAndFeelInfo[var0.length];
  415.       System.arraycopy(var0, 0, var1, 0, var0.length);
  416.       installedLAFs = var1;
  417.    }
  418.  
  419.    public static void setLookAndFeel(String var0) throws ClassNotFoundException, InstantiationException, IllegalAccessException, UnsupportedLookAndFeelException {
  420.       Class var1 = Class.forName(var0);
  421.       setLookAndFeel((LookAndFeel)var1.newInstance());
  422.    }
  423.  
  424.    public static void setLookAndFeel(LookAndFeel var0) throws UnsupportedLookAndFeelException {
  425.       if (var0 != null && !var0.isSupportedLookAndFeel()) {
  426.          String var2 = var0.toString() + " not supported on this platform";
  427.          throw new UnsupportedLookAndFeelException(var2);
  428.       } else {
  429.          LookAndFeel var1 = getLAFState().lookAndFeel;
  430.          if (var1 != null) {
  431.             var1.uninitialize();
  432.          }
  433.  
  434.          getLAFState().lookAndFeel = var0;
  435.          if (var0 != null) {
  436.             var0.initialize();
  437.             getLAFState().setLookAndFeelDefaults(var0.getDefaults());
  438.          } else {
  439.             getLAFState().setLookAndFeelDefaults((UIDefaults)null);
  440.          }
  441.  
  442.          getLAFState().changeSupport.firePropertyChange("lookAndFeel", var1, var0);
  443.       }
  444.    }
  445. }
  446.