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

  1. /*
  2.  * @(#)Component.java    1.15 95/02/03 Arthur van Hoff
  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. /**
  23.  * The parent class of all native GUI components.
  24.  *
  25.  * @version 1.15 03 Feb 1995
  26.  * @author Arthur van Hoff, Sami Shaio
  27.  */
  28. public class Component implements EventHandler, Layoutable {
  29.     /**
  30.      * Really a pointer to platform-specific data.
  31.      */
  32.     int        pData;
  33.  
  34.     /**
  35.      * The parent of the object, this may be 0 for windows.
  36.      */
  37.     public Container parent;
  38.  
  39.  
  40.     /**
  41.      * The symbolic name of the object. Often used for layout.
  42.      */
  43.     public String    name;
  44.  
  45.     /**
  46.      * The dimensions of the object.
  47.      */
  48.     public int x;
  49.     public int y;
  50.     public int width;
  51.     public int height;
  52.     public int marginHeight;
  53.     public int marginWidth;
  54.  
  55.     /**
  56.      * True when the object is mapped.
  57.      */
  58.     public boolean mapped;
  59.  
  60.     /**
  61.      * True when the object is tidy (layed out).
  62.      */
  63.     protected boolean tidy;
  64.  
  65.  
  66.     /**
  67.      * If not 0, then this is the minimum dimension.
  68.      */
  69.     protected Dimension dim;
  70.  
  71.     /**
  72.      * Constructor
  73.      */
  74.     Component(Container pParent, String pName, boolean addToContainer) {
  75.     parent = pParent;
  76.     name = pName;
  77.     marginWidth = 0;
  78.     marginHeight = 0;
  79.     if (parent != null && addToContainer) {
  80.         if (name == null || name.length() == 0) {
  81.         parent.addChild(this);
  82.         } else {
  83.         parent.addChild(this, name);
  84.         }
  85.     }
  86.     }
  87.  
  88.     /**
  89.      * Constructor
  90.      */
  91.     Component(Container pParent, String pName) {
  92.     this(pParent, pName, true);
  93.     }
  94.  
  95.     /**
  96.      * Destructor (must be called to release resources).
  97.      */
  98.     void dispose() {
  99.     }
  100.  
  101.     /**
  102.      * Maps the object (called automatically when the
  103.      * parent is mapped). This has no effect if the parent
  104.      * is not mapped.
  105.      */
  106.     public void map() {
  107.     if (!tidy) {
  108.         layout();
  109.     }
  110.     mapped = true;
  111.     }
  112.  
  113.     /**
  114.      * UnMaps the object (called automatically when the
  115.      * parent is unmapped).
  116.      */
  117.     public void unMap() {
  118.     mapped = false;
  119.     }
  120.  
  121.     /**
  122.      * Reshapes the component. Leaves the object untidy. This
  123.      * means that Layout must be called to tidy it up.
  124.      */
  125.     public void reshape(int pX, int pY, int pW, int pH) {
  126.     x = pX;
  127.     y = pY;
  128.     width = pW;
  129.     height = pH;
  130.     tidy = false;
  131.     if (parent != null) {
  132.         parent.tidy = false;
  133.     }
  134.     }
  135.  
  136.     /**
  137.      * Moves the component to a new location.
  138.      */
  139.     public void move(int pX, int pY) {
  140.     x = pX;
  141.     y = pY;
  142.     }
  143.  
  144.     /**
  145.      * Changes the size of the component.
  146.      */
  147.     public void resize(int pW, int pH) {
  148.     width = pW;
  149.     height = pH;
  150.     reshape(x, y, width, height);
  151.     }
  152.  
  153.     /**
  154.      * Calls layout() on the component (most commonly used by
  155.      * container objects).
  156.      */
  157.     public void layout() {
  158.     tidy = true;
  159.     }
  160.  
  161.     /**
  162.      * Returns the natural size of the object.
  163.      */
  164.     public Dimension getPreferredSize() {
  165.     dim = new Dimension(width, height);
  166.     
  167.     return dim;
  168.     }
  169.  
  170.     /**
  171.      * Returns child by name, only valid for containers. Override if
  172.      * needed. 
  173.      */
  174.     public Layoutable getChild(String name) {
  175.     return null;
  176.     }
  177.     
  178.     /**
  179.      * Returns the minimum size of the object.
  180.      */
  181.     public Dimension minDimension() {
  182.     return getPreferredSize();
  183.     }
  184.  
  185.     /**
  186.      * Sets the dimension of the component.
  187.      */
  188.     public void setDimension(Dimension d) {
  189.     dim = d;
  190.     }
  191.  
  192.     /**
  193.      * Sets the foreground color of this component (if applicable).
  194.      */ 
  195.     public void setForeground(Color c) {
  196.     }
  197.  
  198.     /**
  199.      * Sets the dimension of the component.
  200.      */
  201.     public void setDimension(int pW, int pH) {
  202.     setDimension(new Dimension(pW, pH));
  203.     }
  204.  
  205.     /**
  206.      * Posting Events
  207.      */
  208.  
  209.     public boolean postEvent(Event e) {
  210.     if (handleEvent(e)) {
  211.         return true;
  212.     }
  213.     if (parent != null) {
  214.         if (parent.postEvent(e)) {
  215.         return true;
  216.         }
  217.     }
  218.     return false;
  219.     }
  220.  
  221.     /**
  222.      * Handle Events
  223.      */
  224.     public boolean handleEvent(Event e) {
  225.     return false;
  226.     }
  227. }
  228.