home *** CD-ROM | disk | FTP | other *** search
/ PC Online 1998 January / PCO0198.ISO / 1&1 / java.z / java_301 / sun / awt / windows / WToolkit.class (.txt) < prev    next >
Encoding:
Java Class File  |  1996-10-20  |  9.9 KB  |  330 lines

  1. package sun.awt.windows;
  2.  
  3. import java.awt.Button;
  4. import java.awt.Canvas;
  5. import java.awt.Checkbox;
  6. import java.awt.CheckboxMenuItem;
  7. import java.awt.Choice;
  8. import java.awt.Dialog;
  9. import java.awt.Dimension;
  10. import java.awt.FileDialog;
  11. import java.awt.Font;
  12. import java.awt.FontMetrics;
  13. import java.awt.Frame;
  14. import java.awt.Image;
  15. import java.awt.Label;
  16. import java.awt.List;
  17. import java.awt.Menu;
  18. import java.awt.MenuBar;
  19. import java.awt.MenuItem;
  20. import java.awt.Panel;
  21. import java.awt.Scrollbar;
  22. import java.awt.TextArea;
  23. import java.awt.TextField;
  24. import java.awt.Toolkit;
  25. import java.awt.Window;
  26. import java.awt.image.ColorModel;
  27. import java.awt.image.ImageObserver;
  28. import java.awt.image.ImageProducer;
  29. import java.awt.peer.ButtonPeer;
  30. import java.awt.peer.CanvasPeer;
  31. import java.awt.peer.CheckboxMenuItemPeer;
  32. import java.awt.peer.CheckboxPeer;
  33. import java.awt.peer.ChoicePeer;
  34. import java.awt.peer.DialogPeer;
  35. import java.awt.peer.FileDialogPeer;
  36. import java.awt.peer.FramePeer;
  37. import java.awt.peer.LabelPeer;
  38. import java.awt.peer.ListPeer;
  39. import java.awt.peer.MenuBarPeer;
  40. import java.awt.peer.MenuItemPeer;
  41. import java.awt.peer.MenuPeer;
  42. import java.awt.peer.PanelPeer;
  43. import java.awt.peer.ScrollbarPeer;
  44. import java.awt.peer.TextAreaPeer;
  45. import java.awt.peer.TextFieldPeer;
  46. import java.awt.peer.WindowPeer;
  47. import java.net.URL;
  48. import java.util.Hashtable;
  49. import sun.awt.image.FileImageSource;
  50. import sun.awt.image.ImageRepresentation;
  51. import sun.awt.image.URLImageSource;
  52.  
  53. public class WToolkit extends Toolkit implements Runnable {
  54.    boolean serverThread = true;
  55.    boolean libraryLoaded = false;
  56.    Thread callbackThread;
  57.    static Hashtable imgHash = new Hashtable();
  58.    static ColorModel screenmodel;
  59.  
  60.    Thread getCallbackThread() {
  61.       return this.callbackThread;
  62.    }
  63.  
  64.    public WToolkit() {
  65.       (new Thread(this, "AWT-Windows")).start();
  66.       synchronized(this){}
  67.  
  68.       try {
  69.          try {
  70.             while(this.serverThread) {
  71.                this.wait(5000L);
  72.             }
  73.          } catch (InterruptedException var4) {
  74.             System.exit(1);
  75.          }
  76.       } catch (Throwable var5) {
  77.          throw var5;
  78.       }
  79.  
  80.       if (this.libraryLoaded) {
  81.          this.callbackThread = new Thread(this, "AWT-Callback");
  82.          this.callbackThread.start();
  83.       }
  84.  
  85.    }
  86.  
  87.    private native void init(Thread var1);
  88.  
  89.    public void run() {
  90.       if (this.serverThread) {
  91.          try {
  92.             SecurityManager.setScopePermission();
  93.             String nm = System.getProperty("os.name");
  94.             if (nm.compareTo("16-bit Windows") == 0) {
  95.                System.loadLibrary("awt1630");
  96.             } else {
  97.                System.loadLibrary("awt32301");
  98.             }
  99.  
  100.             SecurityManager.resetScopePermission();
  101.             this.init(Thread.currentThread());
  102.             this.libraryLoaded = true;
  103.             this.serverThread = false;
  104.             this.eventLoop();
  105.          } catch (UnsatisfiedLinkError var2) {
  106.             this.libraryLoaded = false;
  107.             this.serverThread = false;
  108.          }
  109.       } else {
  110.          this.callbackLoop();
  111.       }
  112.    }
  113.  
  114.    native void callbackLoop();
  115.  
  116.    native void eventLoop();
  117.  
  118.    public native void notImplemented();
  119.  
  120.    protected ButtonPeer createButton(Button target) {
  121.       return new WButtonPeer(target);
  122.    }
  123.  
  124.    protected TextFieldPeer createTextField(TextField target) {
  125.       return new WTextFieldPeer(target);
  126.    }
  127.  
  128.    protected LabelPeer createLabel(Label target) {
  129.       return new WLabelPeer(target);
  130.    }
  131.  
  132.    protected ListPeer createList(List target) {
  133.       return new WListPeer(target);
  134.    }
  135.  
  136.    protected CheckboxPeer createCheckbox(Checkbox target) {
  137.       return new WCheckboxPeer(target);
  138.    }
  139.  
  140.    protected ScrollbarPeer createScrollbar(Scrollbar target) {
  141.       return new WScrollbarPeer(target);
  142.    }
  143.  
  144.    protected TextAreaPeer createTextArea(TextArea target) {
  145.       return new WTextAreaPeer(target);
  146.    }
  147.  
  148.    protected ChoicePeer createChoice(Choice target) {
  149.       return new WChoicePeer(target);
  150.    }
  151.  
  152.    protected FramePeer createFrame(Frame target) {
  153.       return new WFramePeer(target);
  154.    }
  155.  
  156.    protected CanvasPeer createCanvas(Canvas target) {
  157.       return new WCanvasPeer(target);
  158.    }
  159.  
  160.    protected PanelPeer createPanel(Panel target) {
  161.       return new WPanelPeer(target);
  162.    }
  163.  
  164.    protected WindowPeer createWindow(Window target) {
  165.       return new WWindowPeer(target);
  166.    }
  167.  
  168.    protected DialogPeer createDialog(Dialog target) {
  169.       return new WDialogPeer(target);
  170.    }
  171.  
  172.    protected FileDialogPeer createFileDialog(FileDialog target) {
  173.       System.out.println("createFileDialog not implemented");
  174.       return null;
  175.    }
  176.  
  177.    protected MenuBarPeer createMenuBar(MenuBar target) {
  178.       return new WMenuBarPeer(target);
  179.    }
  180.  
  181.    protected MenuPeer createMenu(Menu target) {
  182.       return new WMenuPeer(target);
  183.    }
  184.  
  185.    protected MenuItemPeer createMenuItem(MenuItem target) {
  186.       return new WMenuItemPeer(target);
  187.    }
  188.  
  189.    protected CheckboxMenuItemPeer createCheckboxMenuItem(CheckboxMenuItem target) {
  190.       return new WCheckboxMenuItemPeer(target);
  191.    }
  192.  
  193.    static synchronized Image getImageFromHash(Toolkit tk, URL url) {
  194.       SecurityManager security = System.getSecurityManager();
  195.       if (security != null) {
  196.          security.checkConnect(url.getHost(), url.getPort());
  197.       }
  198.  
  199.       Image img = (Image)imgHash.get(url);
  200.       if (img == null) {
  201.          try {
  202.             img = tk.createImage(new URLImageSource(url));
  203.             imgHash.put(url, img);
  204.          } catch (Exception var4) {
  205.          }
  206.       }
  207.  
  208.       return img;
  209.    }
  210.  
  211.    static synchronized Image getImageFromHash(Toolkit tk, String filename) {
  212.       SecurityManager security = System.getSecurityManager();
  213.       if (security != null) {
  214.          security.checkRead(filename);
  215.       }
  216.  
  217.       Image img = (Image)imgHash.get(filename);
  218.       if (img == null) {
  219.          try {
  220.             img = tk.createImage(new FileImageSource(filename));
  221.             imgHash.put(filename, img);
  222.          } catch (Exception var4) {
  223.          }
  224.       }
  225.  
  226.       return img;
  227.    }
  228.  
  229.    public Image getImage(String filename) {
  230.       return getImageFromHash(this, (String)filename);
  231.    }
  232.  
  233.    public Image getImage(URL url) {
  234.       return getImageFromHash(this, (URL)url);
  235.    }
  236.  
  237.    static boolean prepareScrImage(Image img, int w, int h, ImageObserver o) {
  238.       if (w != 0 && h != 0) {
  239.          WImage ximg = (WImage)img;
  240.          if (((sun.awt.image.Image)ximg).hasError()) {
  241.             if (o != null) {
  242.                o.imageUpdate(img, 192, -1, -1, -1, -1);
  243.             }
  244.  
  245.             return false;
  246.          } else {
  247.             if (w < 0) {
  248.                w = -1;
  249.             }
  250.  
  251.             if (h < 0) {
  252.                h = -1;
  253.             }
  254.  
  255.             ImageRepresentation ir = ximg.getImageRep(w, h);
  256.             return ir.prepare(o);
  257.          }
  258.       } else {
  259.          return true;
  260.       }
  261.    }
  262.  
  263.    static int checkScrImage(Image img, int w, int h, ImageObserver o) {
  264.       WImage ximg = (WImage)img;
  265.       int repbits;
  266.       if (w != 0 && h != 0) {
  267.          if (w < 0) {
  268.             w = -1;
  269.          }
  270.  
  271.          if (h < 0) {
  272.             h = -1;
  273.          }
  274.  
  275.          repbits = ximg.getImageRep(w, h).check(o);
  276.       } else {
  277.          repbits = 32;
  278.       }
  279.  
  280.       return ((sun.awt.image.Image)ximg).check(o) | repbits;
  281.    }
  282.  
  283.    public int checkImage(Image img, int w, int h, ImageObserver o) {
  284.       return checkScrImage(img, w, h, o);
  285.    }
  286.  
  287.    public boolean prepareImage(Image img, int w, int h, ImageObserver o) {
  288.       return prepareScrImage(img, w, h, o);
  289.    }
  290.  
  291.    public Image createImage(ImageProducer producer) {
  292.       return new WImage(producer);
  293.    }
  294.  
  295.    static native ColorModel makeColorModel();
  296.  
  297.    static ColorModel getStaticColorModel() {
  298.       if (screenmodel == null) {
  299.          screenmodel = makeColorModel();
  300.       }
  301.  
  302.       return screenmodel;
  303.    }
  304.  
  305.    public ColorModel getColorModel() {
  306.       return getStaticColorModel();
  307.    }
  308.  
  309.    public Dimension getScreenSize() {
  310.       return new Dimension(this.getScreenWidth(), this.getScreenHeight());
  311.    }
  312.  
  313.    public native int getScreenResolution();
  314.  
  315.    public native void sync();
  316.  
  317.    native int getScreenWidth();
  318.  
  319.    native int getScreenHeight();
  320.  
  321.    public String[] getFontList() {
  322.       String[] list = new String[]{"Dialog", "Helvetica", "TimesRoman", "Courier", "Symbol"};
  323.       return list;
  324.    }
  325.  
  326.    public FontMetrics getFontMetrics(Font font) {
  327.       return WFontMetrics.getFontMetrics(font);
  328.    }
  329. }
  330.