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

  1. /*
  2.  * @(#)Button.java    1.23 95/03/29 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 java.lang.*;
  23.  
  24. /**
  25.  * A class that produces a native Gui button. This button will
  26.  * respond to callbacks supplied by its subclass.
  27.  * For example, this button will print hello when pressed:
  28.  * <pre>
  29.  * class HelloButton extends Button {
  30.  *      public HelloButton(String l, String n, Window p) {
  31.  *        super(l, n, p);
  32.  *    }
  33.  *    public void selected(Component c, int pos) {
  34.  *        System.out.println("Hello");
  35.  *    }
  36.  * }
  37.  *
  38.  *  HelloButton b = new HelloButton("Press Me", "", window);
  39.  * </pre>
  40.  *
  41.  * @version 1.23 29 Mar 1995
  42.  * @author Sami Shaio
  43.  */
  44. public class Button extends Component implements ChoiceHandler {
  45.     private    WServer    wServer;
  46.  
  47.     /**
  48.      * The string label for this button.
  49.      */
  50.     public String label = null;
  51.  
  52.     /**
  53.      * The image for this button when inactive.
  54.      */
  55.     public Image normalImage = null;
  56.  
  57.     /**
  58.      * The image for this button when disabled.
  59.      */
  60.     public Image disabledImage = null;
  61.  
  62.     /**
  63.      * The image for this button when pressed.
  64.      */
  65.     public Image pressedImage = null;
  66.  
  67.     /**
  68.      * Is this button enabled?
  69.      */
  70.     public boolean enabled = true;
  71.     
  72.     /**
  73.      * Constructs a Button with a string label.
  74.      * @param pLabel the string label for the button
  75.      * @param pName the name of the button, this name may be used by
  76.      * the layout algorithm in pParent. 
  77.      * @param pParent the parent window in which to put the button.
  78.      */
  79.     public Button(String pLabel, String pName, Container pParent) {
  80.     super(pParent, pName);
  81.     label = pLabel;
  82.     Window win = Window.getWindow(parent);
  83.     wServer = win.wServer;
  84.     wServer.buttonCreate(this,
  85.                  label,
  86.                  null,
  87.                  null,
  88.                  null,
  89.                  win);
  90.     }
  91.  
  92.     /**
  93.      * Constructs a button given a Window as a parent rather than a
  94.      * container. This is here for backward-compatibility with alpha1.
  95.      */
  96.     public Button(String pLabel, String pName, Window pParent) {
  97.     this(pLabel, pName, (Container)pParent);
  98.     }
  99.  
  100.     /**
  101.      * Constructs an image Button.
  102.      * @param normalImage the image to display when the button is inactive.
  103.      * @param pressedImage the image to display when the button is
  104.      * pressed. This may be null.
  105.      * @param disabledImage the image to display when the button is disabled.
  106.      * @param pName the name of the button, this name may be used by
  107.      * the layout algorithm in pParent. 
  108.      * @param pParent the parent window in which to put the button.
  109.      * @see awt.Image
  110.      * @see awt.GifImage
  111.      */
  112.     public Button(Image normalImage, Image pressedImage, Image disabledImage,
  113.           String pName, Container pParent) {
  114.     super(pParent, pName);
  115.     label = null;
  116.     this.normalImage = normalImage;
  117.     this.pressedImage = pressedImage;
  118.     this.disabledImage = disabledImage;
  119.     Window win = Window.getWindow(parent);
  120.     wServer = win.wServer;
  121.     wServer.buttonCreate(this,
  122.                  null,
  123.                  normalImage,
  124.                  pressedImage,
  125.                  disabledImage,
  126.                  win);
  127.     }
  128.  
  129.     /**
  130.      * Constructs an image button with no disabled version.  Provided
  131.      * for backward compatibility.
  132.      */
  133.     
  134.     public Button(Image normalImage, Image pressedImage,
  135.           String pName, Container pParent) {
  136.     this(normalImage, pressedImage, null, pName, pParent);
  137.     }
  138.  
  139.    /**
  140.      * Constructs a button given a Window as a parent rather than a
  141.      * container. This is here for backward-compatibility with alpha1.
  142.      */
  143.     public Button(Image normalImage, Image pressedImage,
  144.           String pName, Window pParent) {
  145.     this(normalImage, pressedImage, pName, (Container)pParent);
  146.     }
  147.    
  148.     /**
  149.      * Unused method. It is required by the ChoiceHandler interface.
  150.      */
  151.     public void doubleClick(Component c, int pos) {
  152.     }
  153.  
  154.     /**
  155.      * This method is invoked when the button has been selected.
  156.      * Override this method in a subclass to do something useful.
  157.      * @param c is the component being selected. This is useful if
  158.      * another object handles the method for this button.
  159.      * @param pos is undefined in this context.
  160.      */
  161.     public void selected(Component c, int pos) {
  162.     }
  163.  
  164.     /**
  165.      * Moves this button to the given x and y coordinates.
  166.      */
  167.     public void move(int X, int Y) {
  168.     super.move(X,Y);
  169.     wServer.buttonMoveTo(this, X, Y);
  170.     }
  171.  
  172.     /**
  173.      * Reshapes this button.
  174.      */
  175.     public void reshape(int x, int y, int w, int h) {
  176.     super.reshape(x, y, w, h);
  177.     wServer.buttonReshape(this, x, y, w, h);
  178.     }
  179.  
  180.     /**
  181.      * Disposes of this button. The button cannot be used after being
  182.      * disposed.
  183.      */
  184.     public void dispose() {
  185.     wServer.buttonDispose(this);
  186.     }
  187.  
  188.     /**
  189.      * Shows this button.
  190.      */
  191.     public void map() {
  192.     wServer.buttonShow(this);
  193.     mapped = true;
  194.     }
  195.  
  196.     /**
  197.      * Hides this button.
  198.      */
  199.     public void unMap() {
  200.     wServer.buttonHide(this);
  201.     mapped = false;
  202.     }
  203.  
  204.     /**
  205.      * Enables this button.
  206.      */
  207.     public void enable() {
  208.     wServer.buttonEnable(this);
  209.     enabled = true;
  210.     }
  211.  
  212.     /**
  213.      * Disables this button.
  214.      */
  215.     public void disable() {
  216.     wServer.buttonDisable(this);
  217.     enabled = false;
  218.     }
  219. }
  220.