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

  1. /*
  2.  * @(#)DisplayItem.java    1.13 95/03/14 Jonathan Payne
  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 browser.Observable;
  23.  
  24. /**
  25.  * DisplayItem is an object that can be embedded inside a
  26.  * DisplayItemWindow. It is essentially a virtual window inside another
  27.  * window that allows painting and input handling.
  28.  *
  29.  * @see awt.DisplayItemWindow
  30.  * @version 1.13 14 Mar 1995
  31.  * @author Jonathan Payne
  32.  */
  33. public class DisplayItem extends Observable implements Layoutable {
  34.     public DisplayItemWindow    parent;
  35.     public int        x;
  36.     public int        y;
  37.     public int        width;
  38.     public int        height;
  39.     protected Color        fgColor;
  40.     /** Item is not valid if it has been resized. */
  41.     protected boolean valid = false;
  42.  
  43.     public DisplayItem() {}
  44.  
  45.     public DisplayItem(int x, int y, int width, int height) {
  46.     reshape(x, y, width, height);
  47.     }
  48.  
  49.     public void setParent(DisplayItemWindow p) {
  50.     parent = p;
  51.     }
  52.  
  53.     public Dimension getPreferredSize() {
  54.     return new Dimension(width, height);
  55.     }
  56.  
  57.     public Dimension minDimension() {
  58.     return getPreferredSize();
  59.     }
  60.  
  61.     public void layout() {
  62.     }
  63.  
  64.     public Color getFGColor() {
  65.     return fgColor;
  66.     }
  67.  
  68.     public String toString() {
  69.     return getClass().getName() + "[" + x + ", " + y + ", " + width + ", " + height + "]";
  70.     }
  71.  
  72.     public void move(int x, int y) {
  73.     this.x = x;
  74.     this.y = y;
  75. //    if (parent != null)
  76. //        parent.childChanged(this);
  77.     }
  78.  
  79.     public void reshape(int x, int y, int width, int height) {
  80.     this.x = x;
  81.     this.y = y;
  82.     this.width = width;
  83.     this.height = height;
  84. //    if (parent != null)
  85. //        parent.childChanged(this);
  86.     invalidate();
  87.     }
  88.  
  89.     public Layoutable getChild(String name) {
  90.     return null;
  91.     }
  92.  
  93.     public void resize(int w, int h) {
  94.     width = w;
  95.     height = h;
  96.     invalidate();
  97. //    if (parent != null)
  98. //        parent.childChanged(this);
  99.     }
  100.  
  101.     public void setColor(Color c) {
  102.     fgColor = c;
  103.     invalidate();
  104.     }
  105.  
  106.     public void refresh() {
  107.     if (parent != null)
  108.         parent.paint();
  109.     }
  110.  
  111.  
  112.     /** Return true if x,y are contained inside this DisplayItem. By
  113.      * default, this method will test x,y against the bounding box
  114.      * for this item.
  115.      */
  116.     public boolean containsPoint(int x, int y) {
  117.     boolean in =  !(x < this.x || x > this.x + width ||
  118.             y < this.y || y > this.y + height);
  119.     return in;
  120.     }
  121.  
  122.     /** Called when this item is no longer needed.  This is used,
  123.     for example, to cancel backgroud tasks associated with
  124.     animations */
  125.     public void deactivate() {
  126.     setParent(null);
  127.     }
  128.  
  129.     public void invalidate() {
  130.     valid = false;
  131.     }
  132.  
  133.     public void validate() {
  134.     valid = true;
  135.     }
  136.  
  137.     public void paint(Window window, int x, int y) {
  138.     if (!valid)
  139.         validate();
  140.     }
  141.  
  142.     /** This is called when the display item needs updating.  The
  143.     background is not cleared, so it is possible for the display
  144.     item to do incremental updating with no flashing.  By default,
  145.     this clears the background and calls paint. */
  146.     public void update(Window window, int x, int y) {
  147.     window.clearRect(x, y, width + 1, height + 1);
  148.     paint(window, x, y);
  149.     }
  150.  
  151.     public void requestUpdate() {
  152.     if (parent != null) {
  153.         parent.paintChild(this, false);
  154.     }
  155.     }
  156.  
  157.     public void trackStart(Event e) {
  158.     }
  159.  
  160.     public void trackMotion(Event e) {
  161.     }
  162.  
  163.     public void trackStop(Event e) {
  164.     }
  165.  
  166.     /** Enter with mouse button already down.  Only possible
  167.     if sticky tracking is turned off. */
  168.     public void trackEnter(Event e) {
  169.     }
  170.  
  171.     /** Exit with mouse button already down.  Only possible
  172.     if sticky tracking is turned off. */
  173.     public void trackExit(Event e) {
  174.     }
  175.  
  176.     // Keyboard input handling.  You have to register with
  177.     //   your DisplayItemWindow's FocusManager before you'll
  178.     //   ever see focus or keypress events!
  179.     
  180.     public void gotFocus() {
  181.     }
  182.  
  183.     public void lostFocus() {
  184.     }
  185.  
  186.     public void keyPressed(int key) {
  187.     }
  188. }
  189.