home *** CD-ROM | disk | FTP | other *** search
/ S283 Planetary Science &… the Search for Life CD 3 / 0_CD-ROM.iso / install / jre1_3 / lib / rt.jar / sun / awt / SunToolkit.class (.txt) < prev    next >
Encoding:
Java Class File  |  1979-12-31  |  7.4 KB  |  321 lines

  1. package sun.awt;
  2.  
  3. import java.awt.AWTEvent;
  4. import java.awt.AWTException;
  5. import java.awt.Component;
  6. import java.awt.Container;
  7. import java.awt.Dimension;
  8. import java.awt.EventQueue;
  9. import java.awt.Font;
  10. import java.awt.FontMetrics;
  11. import java.awt.GraphicsDevice;
  12. import java.awt.Image;
  13. import java.awt.Robot;
  14. import java.awt.Toolkit;
  15. import java.awt.Window;
  16. import java.awt.event.WindowEvent;
  17. import java.awt.im.spi.InputMethodDescriptor;
  18. import java.awt.peer.RobotPeer;
  19. import java.io.FilePermission;
  20. import java.io.IOException;
  21. import java.net.SocketPermission;
  22. import java.net.URL;
  23. import java.security.Permission;
  24. import java.util.Collections;
  25. import java.util.EventObject;
  26. import java.util.Hashtable;
  27. import java.util.Map;
  28. import java.util.WeakHashMap;
  29. import sun.awt.font.FontDesignMetrics;
  30. import sun.awt.im.InputContext;
  31. import sun.awt.im.SimpleInputMethodWindow;
  32. import sun.awt.image.ByteArrayImageSource;
  33. import sun.awt.image.FileImageSource;
  34. import sun.awt.image.URLImageSource;
  35. import sun.misc.SoftCache;
  36.  
  37. public abstract class SunToolkit extends Toolkit implements WindowClosingSupport, WindowClosingListener {
  38.    private static boolean hotjavaUrlCache = false;
  39.    private static final String POST_EVENT_QUEUE_KEY = "PostEventQueue";
  40.    protected static final Hashtable peerMap = new Hashtable();
  41.    private static final Map appContextMap = Collections.synchronizedMap(new WeakHashMap());
  42.    public static FontMetrics[] lastMetrics = new FontMetrics[5];
  43.    static SoftCache imgCache = new SoftCache();
  44.    private transient WindowClosingListener windowClosingListener;
  45.  
  46.    public SunToolkit() {
  47.       DebugHelper.init();
  48.       this.windowClosingListener = null;
  49.       String var2 = Toolkit.getProperty("AWT.EventQueueClass", "java.awt.EventQueue");
  50.  
  51.       EventQueue var1;
  52.       try {
  53.          var1 = (EventQueue)Class.forName(var2).newInstance();
  54.       } catch (Exception var5) {
  55.          System.err.println("Failed loading " + var2 + ": " + var5);
  56.          var1 = new EventQueue();
  57.       }
  58.  
  59.       AppContext var3 = AppContext.getAppContext();
  60.       var3.put(AppContext.EVENT_QUEUE_KEY, var1);
  61.       PostEventQueue var4 = new PostEventQueue(var1);
  62.       var3.put("PostEventQueue", var4);
  63.    }
  64.  
  65.    public static AppContext createNewAppContext() {
  66.       ThreadGroup var0 = Thread.currentThread().getThreadGroup();
  67.       String var2 = Toolkit.getProperty("AWT.EventQueueClass", "java.awt.EventQueue");
  68.  
  69.       EventQueue var1;
  70.       try {
  71.          var1 = (EventQueue)Class.forName(var2).newInstance();
  72.       } catch (Exception var5) {
  73.          System.err.println("Failed loading " + var2 + ": " + var5);
  74.          var1 = new EventQueue();
  75.       }
  76.  
  77.       AppContext var3 = new AppContext(var0);
  78.       var3.put(AppContext.EVENT_QUEUE_KEY, var1);
  79.       PostEventQueue var4 = new PostEventQueue(var1);
  80.       var3.put("PostEventQueue", var4);
  81.       return var3;
  82.    }
  83.  
  84.    private static native Object getPrivateKey(Object var0);
  85.  
  86.    protected static Object targetToPeer(Object var0) {
  87.       return var0 != null ? peerMap.get(getPrivateKey(var0)) : null;
  88.    }
  89.  
  90.    protected static void targetCreatedPeer(Object var0, Object var1) {
  91.       if (var0 != null && var1 != null) {
  92.          peerMap.put(getPrivateKey(var0), var1);
  93.       }
  94.  
  95.    }
  96.  
  97.    protected static void targetDisposedPeer(Object var0, Object var1) {
  98.       if (var0 != null && var1 != null) {
  99.          Object var2 = getPrivateKey(var0);
  100.          if (peerMap.get(var2) == var1) {
  101.             peerMap.remove(var2);
  102.          }
  103.       }
  104.  
  105.    }
  106.  
  107.    public static AppContext targetToAppContext(Object var0) {
  108.       return var0 != null ? (AppContext)appContextMap.get(getPrivateKey(var0)) : null;
  109.    }
  110.  
  111.    public static void insertTargetMapping(Object var0, AppContext var1) {
  112.       appContextMap.put(getPrivateKey(var0), var1);
  113.    }
  114.  
  115.    public static void postEvent(AppContext var0, AWTEvent var1) {
  116.       PostEventQueue var2 = (PostEventQueue)var0.get("PostEventQueue");
  117.       var2.postEvent(var1);
  118.    }
  119.  
  120.    public void flushPendingEvents() {
  121.       AppContext var1 = AppContext.getAppContext();
  122.       PostEventQueue var2 = (PostEventQueue)var1.get("PostEventQueue");
  123.       var2.flush();
  124.    }
  125.  
  126.    public static void executeOnEventHandlerThread(Object var0, Runnable var1) {
  127.       executeOnEventHandlerThread(new PeerEvent(var0, var1, 1L));
  128.    }
  129.  
  130.    public static void executeOnEventHandlerThread(PeerEvent var0) {
  131.       postEvent(targetToAppContext(((EventObject)var0).getSource()), var0);
  132.    }
  133.  
  134.    public Dimension getScreenSize() {
  135.       return new Dimension(this.getScreenWidth(), this.getScreenHeight());
  136.    }
  137.  
  138.    protected abstract int getScreenWidth();
  139.  
  140.    protected abstract int getScreenHeight();
  141.  
  142.    public FontMetrics getFontMetrics(Font var1) {
  143.       for(int var2 = 0; var2 < lastMetrics.length; ++var2) {
  144.          FontMetrics var3 = lastMetrics[var2];
  145.          if (var3 == null) {
  146.             break;
  147.          }
  148.  
  149.          if (var3.getFont() == var1) {
  150.             return var3;
  151.          }
  152.       }
  153.  
  154.       FontDesignMetrics var4 = new FontDesignMetrics(var1);
  155.       System.arraycopy(lastMetrics, 0, lastMetrics, 1, lastMetrics.length - 1);
  156.       lastMetrics[0] = var4;
  157.       return var4;
  158.    }
  159.  
  160.    public String[] getFontList() {
  161.       String[] var1 = new String[]{"Dialog", "SansSerif", "Serif", "Monospaced", "DialogInput"};
  162.       return var1;
  163.    }
  164.  
  165.    static synchronized Image getImageFromHash(Toolkit var0, URL var1) {
  166.       SecurityManager var2 = System.getSecurityManager();
  167.       if (var2 != null) {
  168.          try {
  169.             Permission var3 = var1.openConnection().getPermission();
  170.             if (var3 != null) {
  171.                try {
  172.                   var2.checkPermission(var3);
  173.                } catch (SecurityException var6) {
  174.                   if (var3 instanceof FilePermission && var3.getActions().indexOf("read") != -1) {
  175.                      var2.checkRead(var3.getName());
  176.                   } else {
  177.                      if (!(var3 instanceof SocketPermission) || var3.getActions().indexOf("connect") == -1) {
  178.                         throw var6;
  179.                      }
  180.  
  181.                      var2.checkConnect(var1.getHost(), var1.getPort());
  182.                   }
  183.                }
  184.             }
  185.          } catch (IOException var7) {
  186.             var2.checkConnect(var1.getHost(), var1.getPort());
  187.          }
  188.       }
  189.  
  190.       Image var8 = (Image)imgCache.get(var1);
  191.       if (var8 == null) {
  192.          try {
  193.             var8 = var0.createImage(new URLImageSource(var1));
  194.             imgCache.put(var1, var8);
  195.          } catch (Exception var5) {
  196.          }
  197.       }
  198.  
  199.       return var8;
  200.    }
  201.  
  202.    static synchronized Image getImageFromHash(Toolkit var0, String var1) {
  203.       SecurityManager var2 = System.getSecurityManager();
  204.       if (var2 != null) {
  205.          var2.checkRead(var1);
  206.       }
  207.  
  208.       Image var3 = (Image)imgCache.get(var1);
  209.       if (var3 == null) {
  210.          try {
  211.             var3 = var0.createImage(new FileImageSource(var1));
  212.             imgCache.put(var1, var3);
  213.          } catch (Exception var5) {
  214.          }
  215.       }
  216.  
  217.       return var3;
  218.    }
  219.  
  220.    public Image getImage(String var1) {
  221.       return getImageFromHash(this, (String)var1);
  222.    }
  223.  
  224.    public Image getImage(URL var1) {
  225.       return getImageFromHash(this, (URL)var1);
  226.    }
  227.  
  228.    public Image createImage(String var1) {
  229.       SecurityManager var2 = System.getSecurityManager();
  230.       if (var2 != null) {
  231.          var2.checkRead(var1);
  232.       }
  233.  
  234.       return ((Toolkit)this).createImage(new FileImageSource(var1));
  235.    }
  236.  
  237.    public Image createImage(URL var1) {
  238.       SecurityManager var2 = System.getSecurityManager();
  239.       if (var2 != null) {
  240.          try {
  241.             Permission var3 = var1.openConnection().getPermission();
  242.             if (var3 != null) {
  243.                try {
  244.                   var2.checkPermission(var3);
  245.                } catch (SecurityException var5) {
  246.                   if (var3 instanceof FilePermission && var3.getActions().indexOf("read") != -1) {
  247.                      var2.checkRead(var3.getName());
  248.                   } else {
  249.                      if (!(var3 instanceof SocketPermission) || var3.getActions().indexOf("connect") == -1) {
  250.                         throw var5;
  251.                      }
  252.  
  253.                      var2.checkConnect(var1.getHost(), var1.getPort());
  254.                   }
  255.                }
  256.             }
  257.          } catch (IOException var6) {
  258.             var2.checkConnect(var1.getHost(), var1.getPort());
  259.          }
  260.       }
  261.  
  262.       return ((Toolkit)this).createImage(new URLImageSource(var1));
  263.    }
  264.  
  265.    public Image createImage(byte[] var1, int var2, int var3) {
  266.       return ((Toolkit)this).createImage(new ByteArrayImageSource(var1, var2, var3));
  267.    }
  268.  
  269.    protected EventQueue getSystemEventQueueImpl() {
  270.       AppContext var1 = AppContext.getAppContext();
  271.       EventQueue var2 = (EventQueue)var1.get(AppContext.EVENT_QUEUE_KEY);
  272.       return var2;
  273.    }
  274.  
  275.    public abstract RobotPeer createRobot(Robot var1, GraphicsDevice var2) throws AWTException;
  276.  
  277.    public static Container getNativeContainer(Component var0) {
  278.       return Toolkit.getNativeContainer(var0);
  279.    }
  280.  
  281.    public abstract InputMethodDescriptor getInputMethodAdapterDescriptor() throws AWTException;
  282.  
  283.    public Window createInputMethodWindow(String var1, InputContext var2) {
  284.       return new SimpleInputMethodWindow(var1, var2, false);
  285.    }
  286.  
  287.    public boolean enableInputMethodsForTextComponent() {
  288.       return false;
  289.    }
  290.  
  291.    public Component getComponentFromNativeWindowHandle(int var1) {
  292.       return null;
  293.    }
  294.  
  295.    public int getNativeWindowHandleFromComponent(Component var1) {
  296.       return 0;
  297.    }
  298.  
  299.    public abstract String getDefaultCharacterEncoding();
  300.  
  301.    public abstract String getDefaultUnicodeEncoding();
  302.  
  303.    public WindowClosingListener getWindowClosingListener() {
  304.       return this.windowClosingListener;
  305.    }
  306.  
  307.    public void setWindowClosingListener(WindowClosingListener var1) {
  308.       this.windowClosingListener = var1;
  309.    }
  310.  
  311.    public RuntimeException windowClosingNotify(WindowEvent var1) {
  312.       return this.windowClosingListener != null ? this.windowClosingListener.windowClosingNotify(var1) : null;
  313.    }
  314.  
  315.    public RuntimeException windowClosingDelivered(WindowEvent var1) {
  316.       return this.windowClosingListener != null ? this.windowClosingListener.windowClosingDelivered(var1) : null;
  317.    }
  318.  
  319.    public abstract GlobalCursorManager getGlobalCursorManager();
  320. }
  321.