home *** CD-ROM | disk | FTP | other *** search
/ PC World Komputer 1995 November / PCWK1195.iso / inne / win95 / sieciowe / hotja32.lzh / hotjava / classsrc / awt / wserver.java < prev    next >
Text File  |  1995-08-11  |  18KB  |  530 lines

  1. /*
  2.  * @(#)WServer.java    1.78 95/05/13 Sami Shaio
  3.  *
  4.  * Copyright (c) 1994 Sun Microsystems, Inc. All Rights Reserved.
  5.  *
  6.  * Permission to use, copy, modify, and distribute this software
  7.  * and its documentation for NON-COMMERCIAL purposes and without
  8.  * fee is hereby granted provided that this copyright notice
  9.  * appears in all copies. Please refer to the file "copyright.html"
  10.  * for further important copyright and licensing information.
  11.  *
  12.  * SUN MAKES NO REPRESENTATIONS OR WARRANTIES ABOUT THE SUITABILITY OF
  13.  * THE SOFTWARE, EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED
  14.  * TO THE IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
  15.  * PARTICULAR PURPOSE, OR NON-INFRINGEMENT. SUN SHALL NOT BE LIABLE FOR
  16.  * ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING OR
  17.  * DISTRIBUTING THIS SOFTWARE OR ITS DERIVATIVES.
  18.  */
  19.  
  20. package awt;
  21.  
  22. import awt.*;
  23. import java.lang.*;
  24. import java.util.Linker;
  25. import java.util.Hashtable;
  26.  
  27. /**
  28.  * WServer is the class that interacts directly with the native GUI
  29.  * system. The set of native methods it contains defines the
  30.  * platform-independent api that must be implemented for all the
  31.  * platforms it is to run on. Because the platform may necessitate
  32.  * a different division between what is native or not (and what is
  33.  * synchronized or not), this file is platform-dependent. However, all
  34.  * of the public awt classes are always the same and implemented only in
  35.  * Java.
  36.  *
  37.  * @version 1.78 13 May 1995
  38.  * @author Sami Shaio
  39.  */
  40. public class WServer extends Thread {
  41.     public static WServer  theServer;
  42.  
  43.     /**
  44.      * Use this field to create new fonts.
  45.      * @see FontTable
  46.      */
  47.     public FontTable    fonts;
  48.  
  49.     /** Constructs a new WServer. */
  50.     public WServer() {
  51.     super("AWT WServer Thread");
  52.     theServer = this;
  53.     }
  54.  
  55.     /** Starts the thread but waits until it's done initializing */
  56.     synchronized public void start() {
  57.         super.start();
  58.         wait();
  59.     fonts = new FontTable();
  60.     }
  61.  
  62.     public void run() {
  63.     Linker.loadLibrary("awt");
  64.     pInit();
  65.     Color.initColors(this);
  66.         eventLoop();
  67.     }
  68.  
  69.     /* Initializes server data in the C-level code. */
  70.     native void pInit();
  71.  
  72.     /** 
  73.      * First notifies the thread that starts the server
  74.      * that initialization is complete.
  75.      * Then enters an infinite loop that retrieves and processes events.  
  76.      */
  77.     native void eventLoop();
  78.  
  79. /*  <<replaced the following code that also works on Chicago -chan>>
  80.     public WServer() {
  81.     super("AWT WServer Thread");
  82.     pInit();
  83.     Color.initColors(this);
  84.     fonts = new FontTable();
  85.     }
  86.  
  87.     public native void run();
  88.     
  89.     native synchronized void pInit();
  90. */
  91.  
  92.     public native synchronized void sync();
  93.  
  94.     /* Button methods */
  95.     native synchronized void buttonMoveTo(Button b,
  96.                       int x,
  97.                       int y);
  98.  
  99.     native synchronized void buttonReshape(Button b,
  100.                        int x,
  101.                        int y,
  102.                        int w,
  103.                        int h);
  104.  
  105.  
  106.     native synchronized void buttonCreate(Button b,
  107.                       String label,
  108.                       Image normalImage,
  109.                       Image pressedImage,
  110.                       Image disabledImage,
  111.                       Window parent);
  112.  
  113.     native synchronized void buttonShow(Button b);    
  114.     native synchronized void buttonHide(Button b);    
  115.     native synchronized void buttonDispose(Button b);
  116.     native synchronized void buttonEnable(Button b);
  117.     native synchronized void buttonDisable(Button b);
  118.  
  119.     /* Color methods */
  120.     native synchronized void colorCreate(Color c);
  121.     
  122.     /* File Dialog methods */
  123.     native synchronized String fileDialogChooseFile(FileDialog f,
  124.                             String initialValue);
  125.  
  126.     native synchronized void fileDialogCreate(FileDialog f,
  127.                           String title,
  128.                           Frame parent);
  129.  
  130.     native synchronized void fileDialogDispose(FileDialog f);    
  131.  
  132.     /* Font methods */
  133.     native synchronized void fontDispose(Font f);
  134.  
  135.     native synchronized int fontStringWidth(WSFontMetrics fm, String s);
  136.  
  137.     native synchronized int fontCharsWidth(WSFontMetrics fm,
  138.                        char data[],
  139.                        int off,
  140.                        int len);
  141.     native synchronized int fontBytesWidth(WSFontMetrics fm,
  142.                        byte data[],
  143.                        int off,
  144.                        int len);
  145.     native synchronized void loadFontMetrics(Window w, WSFontMetrics fm);
  146.  
  147.     private Hashtable fontmetrics = new Hashtable();
  148.  
  149.     public FontMetrics getFontMetrics(Window w, Font f) {
  150.     if (f == null) {
  151.         return null;
  152.     }
  153.  
  154.     // REMIND: Hashing should include some component of the window.
  155.     // Font Metrics may depend on the "class" of the window (printer
  156.     // or screen, for instance).
  157.     String fName = fonts.compoundName(f.family, f.style, f.size);
  158.     FontMetrics fm = (FontMetrics) fontmetrics.get(fName);
  159.  
  160.     if (fm == null) {
  161.         fm = new WSFontMetrics(w, f);
  162.         fontmetrics.put(fName, fm);
  163.     }
  164.  
  165.     return fm;
  166.     }
  167.  
  168.     /* Frame methods */
  169.     native synchronized void frameShow(Frame f);
  170.     native synchronized void frameHide(Frame f);
  171.     native synchronized void frameSetDefaultFont(Frame f, Font font);
  172.     native synchronized void frameSetTitle(Frame f, String title);
  173.     native synchronized void frameSetIconImage(Frame f, Image image);
  174.     native synchronized void frameCreate(Frame f,
  175.                      boolean hasTitleBar,
  176.                      boolean isModal,
  177.                      Frame parentFrame,
  178.                      int width,
  179.                      int height,
  180.                      Color bg);
  181.     native synchronized void frameDispose(Frame f);
  182.     native synchronized void frameReshape(Frame f, int x, int y, int w, int h);
  183.     native synchronized void frameSetMinSize(Frame f, int width, int height);
  184.     native synchronized boolean frameHasStatusBar(Frame f);
  185.     native synchronized void frameShowStatusBar(Frame f, boolean show);
  186.     native synchronized boolean frameShowingStatusBar(Frame f);
  187.     native synchronized void frameSetStatusMessage(Frame f, String message);
  188.  
  189.     /* Graphics methods */
  190.     native synchronized void graphicsCreate(Graphics g, Window w);
  191.     native synchronized void imageGraphicsCreate(Graphics g, Image im);
  192.     native synchronized void graphicsDispose(Graphics g);
  193.     native synchronized void graphicsSetFont(Graphics g, Font f);
  194.     native synchronized void graphicsSetForeground(Graphics g, Color c);
  195.     native synchronized void graphicsSetBackground(Graphics g, Color c);
  196.     native synchronized void graphicsClearRect(Graphics g,
  197.                            int X, int Y, int W, int H);
  198.     native synchronized void graphicsFillRect(Graphics g,
  199.                           int X, int Y, int W, int H);
  200.     native synchronized void graphicsDrawRect(Graphics g,
  201.                           int X, int Y, int W, int H);
  202.     native synchronized void graphicsDrawString(Graphics g,
  203.                         String str, int x, int y);
  204.     native synchronized void graphicsDrawChars(Graphics g, char chars[],
  205.                            int offset, int length,
  206.                            int x, int y);
  207.     native synchronized void graphicsDrawBytes(Graphics g, byte bytes[],
  208.                            int offset, int length,
  209.                            int x, int y);
  210.     native synchronized int graphicsDrawStringWidth(Graphics g,
  211.                             String str, int x, int y);
  212.     native synchronized int graphicsDrawCharsWidth(Graphics g, char chars[],
  213.                            int offset, int length,
  214.                            int x, int y);
  215.     native synchronized int graphicsDrawBytesWidth(Graphics g, byte bytes[],
  216.                            int offset, int length,
  217.                            int x, int y);
  218.     native synchronized void graphicsDrawLine(Graphics g,
  219.                           int x1, int y1, int x2, int y2);
  220.  
  221.     native synchronized void graphicsClipRect(Graphics g,
  222.                           int x, int y, int w, int h);
  223.     native synchronized void graphicsClearClip(Graphics g);
  224.     native synchronized void graphicsSetOrigin(Graphics g, int x, int y);
  225.     native synchronized void graphicsSetScaling(Graphics g,
  226.                         float sx, float sy);
  227.     native synchronized void graphicsCopyArea(Graphics g,
  228.                           int x,
  229.                           int y,
  230.                           int width,
  231.                           int height,
  232.                           int dx,
  233.                           int dy);
  234.  
  235.     native synchronized void graphicsDrawImage(Graphics g,
  236.                            Image I,
  237.                            int X, int Y);
  238.  
  239.     /* Image methods */
  240.     native synchronized void imageCreate(Image I, DIBitmap dib);
  241.     native synchronized void offscreenImageCreate(Image I, int w, int h);
  242.     native synchronized void scaledImageCreate(Image I, DIBitmap dib,
  243.                            int srcx, int srcy,
  244.                            int srcw, int srch,
  245.                            int dstw, int dsth);
  246.     native synchronized void bitmapRetrieve(Image I, DIBitmap dib);
  247.     native synchronized void imageDispose(Image i);
  248.  
  249.     /* Label methods */
  250.     native synchronized void labelMoveTo(Label b,
  251.                      int x,
  252.                      int y);
  253.  
  254.     native synchronized void labelSetText(Label b,
  255.                       String label);
  256.  
  257.     native synchronized void labelCreate(Label b,
  258.                      String label,
  259.                      Window parent,
  260.                      Font font);
  261.  
  262.     native synchronized void labelDispose(Label b);    
  263.     native synchronized void labelSetColor(Label b, Color c);    
  264.     native synchronized void labelSetFont(Label b, Font f);    
  265.  
  266.     native synchronized void labelReshape(Label b,
  267.                       int x,
  268.                       int y,
  269.                       int w,
  270.                       int h);
  271.  
  272.     native synchronized void labelDimensions(Label s);
  273.  
  274.     native synchronized void labelShow(Label s);
  275.     native synchronized void labelHide(Label s);
  276.  
  277.     /* MessageDialog methods */
  278.     native synchronized void messageDialogCreate(MessageDialog m,
  279.                          Frame f,
  280.                          String title,
  281.                          String message,
  282.                          int dialogType,
  283.                          int nButtons,
  284.                          boolean isModal,
  285.                          String okLabel,
  286.                          String cancelLabel,
  287.                          String helpLabel);
  288.  
  289.     native synchronized void messageDialogSetMessage(MessageDialog m,
  290.                              String message);
  291.     native synchronized int mesageDialogShow(MessageDialog m);
  292.     native synchronized void mesageDialogHide(MessageDialog m);
  293.     native synchronized void messageDialogDispose(MessageDialog m);
  294.  
  295.     /* Menu methods */
  296.     native synchronized void menuCreate(Menu m,
  297.                     String title,
  298.                     MenuBar mb,
  299.                     boolean tearOff);
  300.     native synchronized void menuDispose(Menu m);
  301.     native synchronized void menuShow(Menu m);
  302.     native synchronized void menuHide(Menu m);
  303.     native synchronized void menuAddSeparator(Menu m);
  304.  
  305.     /* MenuBar methods */
  306.     native synchronized void menuBarCreate(MenuBar mb, Frame f);
  307.     native synchronized void menuBarDispose(MenuBar mb);
  308.  
  309.     /* MenuItem methods */
  310.     native synchronized void menuItemEnable(MenuItem m);
  311.     native synchronized void menuItemDisable(MenuItem m);
  312.     native synchronized void menuItemSetMark(MenuItem m, boolean t);
  313.     native synchronized boolean menuItemGetMark(MenuItem m);
  314.     native synchronized void menuItemCreate(MenuItem m,
  315.                         String label,
  316.                         Menu menu,
  317.                         boolean isToggle);
  318.     native synchronized void menuItemDispose(MenuItem m);
  319.  
  320.     /* OptionMenu methods */
  321.     native synchronized void optionMenuCreate(OptionMenu s,
  322.                           Window p,
  323.                           String l);
  324.     
  325.     native synchronized void optionMenuDispose(OptionMenu s);
  326.     native synchronized void optionMenuMoveTo(OptionMenu s,
  327.                           int x,
  328.                           int y);
  329.     native synchronized void optionMenuShow(OptionMenu s);
  330.     native synchronized void optionMenuHide(OptionMenu s);
  331.     native synchronized void optionMenuAddItem(OptionMenu s,
  332.                            String item,
  333.                            int index);
  334.     native synchronized void optionMenuAddSeparator(OptionMenu s,
  335.                             int sIndex);
  336.     native synchronized void optionMenuSelect(OptionMenu s,
  337.                           int index);
  338.     native synchronized void optionMenuReshape(OptionMenu s,
  339.                            int x,
  340.                            int y,
  341.                            int w,
  342.                            int h);
  343.     native synchronized void optionMenuDimensions(OptionMenu s);
  344.  
  345.     /* Scrollbar methods */
  346.     native synchronized int scrollbarMinimum(Scrollbar s);
  347.     native synchronized int scrollbarMaximum(Scrollbar s);
  348.     native synchronized int scrollbarValue(Scrollbar s);
  349.     native synchronized void scrollbarCreate(Scrollbar s,
  350.                          Window parent,
  351.                          int orientation,
  352.                          boolean manageScrollbar);
  353.     native synchronized void scrollbarDispose(Scrollbar s);
  354.     native synchronized void scrollbarShow(Scrollbar s);
  355.     native synchronized void scrollbarHide(Scrollbar s);
  356.     native synchronized void scrollbarMoveTo(Scrollbar s, int x, int y);
  357.  
  358.     native synchronized void scrollbarSetValues(Scrollbar s,
  359.                         int newValue,
  360.                         int visible,
  361.                         int minimum,
  362.                         int maximum);
  363.  
  364.     native synchronized void scrollbarReshape(Scrollbar s, int x, int y,
  365.                           int w, int h);
  366.     
  367.  
  368.     /* TextArea methods */
  369.     native synchronized void textAreaCreate(TextArea t,
  370.                         Window p,
  371.                         Font font,
  372.                         int columns,
  373.                         int rows);
  374.  
  375.     native synchronized void textAreaSetEditable(TextArea t,
  376.                          boolean e);
  377.  
  378.     native synchronized void textAreaSetColor(TextArea t, Color c);
  379.  
  380.     native synchronized void textAreaSetBackColor(TextArea t, Color c);
  381.     
  382.     native synchronized int textAreaCursorPos(TextArea t);
  383.  
  384.     native synchronized void textAreaSetCursorPos(TextArea t,
  385.                           int pos);
  386.  
  387.     native synchronized int textAreaEndPos(TextArea t);
  388.  
  389.     native synchronized void textAreaSetText(TextArea t,
  390.                          String txt);
  391.  
  392.     native synchronized String textAreaGetText(TextArea t);
  393.  
  394.     native synchronized void textAreaInsertText(TextArea t,
  395.                         String txt,
  396.                         int pos);
  397.     
  398.     native synchronized void textAreaReplaceText(TextArea t,
  399.                          String txt,
  400.                          int start,
  401.                          int end);
  402.  
  403.     native synchronized void textAreaDispose(TextArea t);
  404.  
  405.     native synchronized void textAreaMoveTo(TextArea t,
  406.                         int x,
  407.                         int y);
  408.  
  409.     native synchronized void textAreaReshape(TextArea t,
  410.                          int x,
  411.                          int y,
  412.                          int w,
  413.                          int h);
  414.  
  415.     native synchronized void textAreaShow(TextArea t);
  416.  
  417.     native synchronized void textAreaHide(TextArea t);
  418.     
  419.     /* List methods */
  420.     native synchronized void listCreate(List l,
  421.                     Window parent,
  422.                     ChoiceHandler handler,
  423.                     int visibleLines,
  424.                     boolean multipleSelections,
  425.                     boolean resizable);
  426.  
  427.     native synchronized boolean listIsSelected(List l,int pos);
  428.     native synchronized void listAddItem(List l, String item);
  429.     
  430.     native synchronized void listSetNVisible(List l, int nLines);
  431.  
  432.     native synchronized void listDelItems(List l, int start, int end);
  433.     
  434.     native synchronized void listSelect(List l, int pos);
  435.  
  436.     native synchronized void listDeselect(List l, int pos);
  437.  
  438.     native synchronized void listMakeVisible(List l,int pos);
  439.  
  440.     native synchronized void listMoveTo(List l, int x, int y);
  441.  
  442.     native synchronized void listReshape(List l,
  443.                      int x,
  444.                      int y,
  445.                      int w,
  446.                      int h);
  447.     native synchronized void listDispose(List l);
  448.     native synchronized void listShow(List l);
  449.     native synchronized void listHide(List l);
  450.     native synchronized void listDimensions(List l);
  451.  
  452.     /* TextField methods */
  453.     native synchronized void textFieldCreate(TextField t,
  454.                          String initValue,
  455.                          Window parent,
  456.                          boolean editable);
  457.  
  458.     native synchronized void textFieldSetEditable(TextField t,
  459.                           boolean editable);
  460.  
  461.     native synchronized void textFieldDispose(TextField t);
  462.     native synchronized void textFieldSetText(TextField t, String l);
  463.     native synchronized void textFieldMoveTo(TextField t,
  464.                 int x,
  465.                 int y);
  466.     native synchronized String textFieldGetText(TextField t);
  467.     native synchronized void textFieldSetColor(TextField t, Color c);
  468.     native synchronized void textFieldSetBackColor(TextField t, Color c);
  469.     native synchronized void textFieldShow(TextField t);
  470.     native synchronized void textFieldHide(TextField t);
  471.     native synchronized void textFieldSetFont(TextField t, Font f);
  472.     native synchronized void textFieldSetEchoCharacter(TextField t,
  473.                                char c);
  474.     native synchronized void textFieldReshape(TextField b,
  475.                           int x,
  476.                           int y,
  477.                           int w,
  478.                           int h);
  479.  
  480.     /* Toggle methods */
  481.     public native synchronized void toggleSetState(Toggle t, boolean state);
  482.     public native synchronized boolean toggleGetState(Toggle t); 
  483.     public native synchronized void toggleMoveTo(Toggle t, int x, int y);
  484.     native synchronized void toggleCreate(Toggle t,
  485.                       String label,
  486.                       Window parent,
  487.                       RadioGroup group,
  488.                       boolean initialState);
  489.     native synchronized void toggleDispose(Toggle t);
  490.     native synchronized void toggleShow(Toggle t);
  491.     native synchronized void toggleHide(Toggle t);
  492.     native synchronized void toggleReshape(Toggle b,
  493.                        int x,
  494.                        int y,
  495.                        int w,
  496.                        int h);
  497.  
  498.     /* Window methods */
  499.     native synchronized void windowSetMargin(Window w, int margin);
  500.     native synchronized int windowWidth(Window w);
  501.     native synchronized int windowHeight(Window w);
  502.     native synchronized void windowMoveTo(Window w, int x, int y);
  503.     native synchronized void windowReshape(Window w, int x, int y,int wd, int ht);
  504.     native synchronized void windowEnablePointerMotionEvents(Window w);
  505.     native synchronized void windowDisablePointerMotionEvents(Window w);
  506.     native synchronized void windowDimensions(Window s);
  507.  
  508.     native synchronized void windowCreate(Window w,
  509.                       Window parent,
  510.                       boolean trackMotion,
  511.                       Color bg,
  512.                       int width, int height);
  513.     native synchronized void windowCreateInFrame(Window w,
  514.                          Frame parent,
  515.                          boolean trackMotion,
  516.                          Color bg,
  517.                          int width, int height);
  518.     native synchronized void windowDispose(Window w);
  519.     native synchronized void windowShow(Window w);
  520.     native synchronized void windowHide(Window w);
  521.     native synchronized void windowScrollWindow(Window w, int dx, int dy);
  522.     
  523.     static {
  524.     /* <<moved code to run method -chan>>
  525.              Linker.loadLibrary("awt"); */
  526.     }
  527.  
  528.     int pData;
  529. }
  530.