home *** CD-ROM | disk | FTP | other *** search
- package sun.awt.windows;
-
- import java.awt.Button;
- import java.awt.Canvas;
- import java.awt.Checkbox;
- import java.awt.CheckboxMenuItem;
- import java.awt.Choice;
- import java.awt.Dialog;
- import java.awt.Dimension;
- import java.awt.FileDialog;
- import java.awt.Font;
- import java.awt.FontMetrics;
- import java.awt.Frame;
- import java.awt.Image;
- import java.awt.Label;
- import java.awt.List;
- import java.awt.Menu;
- import java.awt.MenuBar;
- import java.awt.MenuItem;
- import java.awt.Panel;
- import java.awt.Scrollbar;
- import java.awt.TextArea;
- import java.awt.TextField;
- import java.awt.Toolkit;
- import java.awt.Window;
- import java.awt.image.ColorModel;
- import java.awt.image.ImageObserver;
- import java.awt.image.ImageProducer;
- import java.awt.peer.ButtonPeer;
- import java.awt.peer.CanvasPeer;
- import java.awt.peer.CheckboxMenuItemPeer;
- import java.awt.peer.CheckboxPeer;
- import java.awt.peer.ChoicePeer;
- import java.awt.peer.DialogPeer;
- import java.awt.peer.FileDialogPeer;
- import java.awt.peer.FramePeer;
- import java.awt.peer.LabelPeer;
- import java.awt.peer.ListPeer;
- import java.awt.peer.MenuBarPeer;
- import java.awt.peer.MenuItemPeer;
- import java.awt.peer.MenuPeer;
- import java.awt.peer.PanelPeer;
- import java.awt.peer.ScrollbarPeer;
- import java.awt.peer.TextAreaPeer;
- import java.awt.peer.TextFieldPeer;
- import java.awt.peer.WindowPeer;
- import java.net.URL;
- import java.util.Hashtable;
- import sun.awt.image.FileImageSource;
- import sun.awt.image.ImageRepresentation;
- import sun.awt.image.URLImageSource;
-
- public class WToolkit extends Toolkit implements Runnable {
- boolean serverThread = true;
- boolean libraryLoaded = false;
- Thread callbackThread;
- static Hashtable imgHash = new Hashtable();
- static ColorModel screenmodel;
-
- Thread getCallbackThread() {
- return this.callbackThread;
- }
-
- public WToolkit() {
- (new Thread(this, "AWT-Windows")).start();
- synchronized(this){}
-
- try {
- try {
- while(this.serverThread) {
- this.wait(5000L);
- }
- } catch (InterruptedException var4) {
- System.exit(1);
- }
- } catch (Throwable var5) {
- throw var5;
- }
-
- if (this.libraryLoaded) {
- this.callbackThread = new Thread(this, "AWT-Callback");
- this.callbackThread.start();
- }
-
- }
-
- private native void init(Thread var1);
-
- public void run() {
- if (this.serverThread) {
- try {
- SecurityManager.setScopePermission();
- String nm = System.getProperty("os.name");
- if (nm.compareTo("16-bit Windows") == 0) {
- System.loadLibrary("awt1630");
- } else {
- System.loadLibrary("awt32301");
- }
-
- SecurityManager.resetScopePermission();
- this.init(Thread.currentThread());
- this.libraryLoaded = true;
- this.serverThread = false;
- this.eventLoop();
- } catch (UnsatisfiedLinkError var2) {
- this.libraryLoaded = false;
- this.serverThread = false;
- }
- } else {
- this.callbackLoop();
- }
- }
-
- native void callbackLoop();
-
- native void eventLoop();
-
- public native void notImplemented();
-
- protected ButtonPeer createButton(Button target) {
- return new WButtonPeer(target);
- }
-
- protected TextFieldPeer createTextField(TextField target) {
- return new WTextFieldPeer(target);
- }
-
- protected LabelPeer createLabel(Label target) {
- return new WLabelPeer(target);
- }
-
- protected ListPeer createList(List target) {
- return new WListPeer(target);
- }
-
- protected CheckboxPeer createCheckbox(Checkbox target) {
- return new WCheckboxPeer(target);
- }
-
- protected ScrollbarPeer createScrollbar(Scrollbar target) {
- return new WScrollbarPeer(target);
- }
-
- protected TextAreaPeer createTextArea(TextArea target) {
- return new WTextAreaPeer(target);
- }
-
- protected ChoicePeer createChoice(Choice target) {
- return new WChoicePeer(target);
- }
-
- protected FramePeer createFrame(Frame target) {
- return new WFramePeer(target);
- }
-
- protected CanvasPeer createCanvas(Canvas target) {
- return new WCanvasPeer(target);
- }
-
- protected PanelPeer createPanel(Panel target) {
- return new WPanelPeer(target);
- }
-
- protected WindowPeer createWindow(Window target) {
- return new WWindowPeer(target);
- }
-
- protected DialogPeer createDialog(Dialog target) {
- return new WDialogPeer(target);
- }
-
- protected FileDialogPeer createFileDialog(FileDialog target) {
- System.out.println("createFileDialog not implemented");
- return null;
- }
-
- protected MenuBarPeer createMenuBar(MenuBar target) {
- return new WMenuBarPeer(target);
- }
-
- protected MenuPeer createMenu(Menu target) {
- return new WMenuPeer(target);
- }
-
- protected MenuItemPeer createMenuItem(MenuItem target) {
- return new WMenuItemPeer(target);
- }
-
- protected CheckboxMenuItemPeer createCheckboxMenuItem(CheckboxMenuItem target) {
- return new WCheckboxMenuItemPeer(target);
- }
-
- static synchronized Image getImageFromHash(Toolkit tk, URL url) {
- SecurityManager security = System.getSecurityManager();
- if (security != null) {
- security.checkConnect(url.getHost(), url.getPort());
- }
-
- Image img = (Image)imgHash.get(url);
- if (img == null) {
- try {
- img = tk.createImage(new URLImageSource(url));
- imgHash.put(url, img);
- } catch (Exception var4) {
- }
- }
-
- return img;
- }
-
- static synchronized Image getImageFromHash(Toolkit tk, String filename) {
- SecurityManager security = System.getSecurityManager();
- if (security != null) {
- security.checkRead(filename);
- }
-
- Image img = (Image)imgHash.get(filename);
- if (img == null) {
- try {
- img = tk.createImage(new FileImageSource(filename));
- imgHash.put(filename, img);
- } catch (Exception var4) {
- }
- }
-
- return img;
- }
-
- public Image getImage(String filename) {
- return getImageFromHash(this, (String)filename);
- }
-
- public Image getImage(URL url) {
- return getImageFromHash(this, (URL)url);
- }
-
- static boolean prepareScrImage(Image img, int w, int h, ImageObserver o) {
- if (w != 0 && h != 0) {
- WImage ximg = (WImage)img;
- if (((sun.awt.image.Image)ximg).hasError()) {
- if (o != null) {
- o.imageUpdate(img, 192, -1, -1, -1, -1);
- }
-
- return false;
- } else {
- if (w < 0) {
- w = -1;
- }
-
- if (h < 0) {
- h = -1;
- }
-
- ImageRepresentation ir = ximg.getImageRep(w, h);
- return ir.prepare(o);
- }
- } else {
- return true;
- }
- }
-
- static int checkScrImage(Image img, int w, int h, ImageObserver o) {
- WImage ximg = (WImage)img;
- int repbits;
- if (w != 0 && h != 0) {
- if (w < 0) {
- w = -1;
- }
-
- if (h < 0) {
- h = -1;
- }
-
- repbits = ximg.getImageRep(w, h).check(o);
- } else {
- repbits = 32;
- }
-
- return ((sun.awt.image.Image)ximg).check(o) | repbits;
- }
-
- public int checkImage(Image img, int w, int h, ImageObserver o) {
- return checkScrImage(img, w, h, o);
- }
-
- public boolean prepareImage(Image img, int w, int h, ImageObserver o) {
- return prepareScrImage(img, w, h, o);
- }
-
- public Image createImage(ImageProducer producer) {
- return new WImage(producer);
- }
-
- static native ColorModel makeColorModel();
-
- static ColorModel getStaticColorModel() {
- if (screenmodel == null) {
- screenmodel = makeColorModel();
- }
-
- return screenmodel;
- }
-
- public ColorModel getColorModel() {
- return getStaticColorModel();
- }
-
- public Dimension getScreenSize() {
- return new Dimension(this.getScreenWidth(), this.getScreenHeight());
- }
-
- public native int getScreenResolution();
-
- public native void sync();
-
- native int getScreenWidth();
-
- native int getScreenHeight();
-
- public String[] getFontList() {
- String[] list = new String[]{"Dialog", "Helvetica", "TimesRoman", "Courier", "Symbol"};
- return list;
- }
-
- public FontMetrics getFontMetrics(Font font) {
- return WFontMetrics.getFontMetrics(font);
- }
- }
-