home *** CD-ROM | disk | FTP | other *** search
/ Programming Languages Suite / JBuilder8.iso / Solaris / resource / jre / demo / plugin / applets / ImageMap / ClickArea.java < prev    next >
Encoding:
Java Source  |  2002-09-06  |  3.7 KB  |  111 lines

  1. /*
  2.  * Copyright (c) 2002 Sun Microsystems, Inc. All  Rights Reserved.
  3.  * 
  4.  * Redistribution and use in source and binary forms, with or without
  5.  * modification, are permitted provided that the following conditions
  6.  * are met:
  7.  * 
  8.  * -Redistributions of source code must retain the above copyright
  9.  *  notice, this list of conditions and the following disclaimer.
  10.  * 
  11.  * -Redistribution in binary form must reproduct the above copyright
  12.  *  notice, this list of conditions and the following disclaimer in
  13.  *  the documentation and/or other materials provided with the distribution.
  14.  * 
  15.  * Neither the name of Sun Microsystems, Inc. or the names of contributors
  16.  * may be used to endorse or promote products derived from this software
  17.  * without specific prior written permission.
  18.  * 
  19.  * This software is provided "AS IS," without a warranty of any kind. ALL
  20.  * EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND WARRANTIES, INCLUDING
  21.  * ANY IMPLIED WARRANTY OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE
  22.  * OR NON-INFRINGEMENT, ARE HEREBY EXCLUDED. SUN AND ITS LICENSORS SHALL NOT
  23.  * BE LIABLE FOR ANY DAMAGES OR LIABILITIES SUFFERED BY LICENSEE AS A RESULT
  24.  * OF OR RELATING TO USE, MODIFICATION OR DISTRIBUTION OF THE SOFTWARE OR ITS
  25.  * DERIVATIVES. IN NO EVENT WILL SUN OR ITS LICENSORS BE LIABLE FOR ANY LOST
  26.  * REVENUE, PROFIT OR DATA, OR FOR DIRECT, INDIRECT, SPECIAL, CONSEQUENTIAL,
  27.  * INCIDENTAL OR PUNITIVE DAMAGES, HOWEVER CAUSED AND REGARDLESS OF THE THEORY
  28.  * OF LIABILITY, ARISING OUT OF THE USE OF OR INABILITY TO USE SOFTWARE, EVEN
  29.  * IF SUN HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
  30.  * 
  31.  * You acknowledge that Software is not designed, licensed or intended for
  32.  * use in the design, construction, operation or maintenance of any nuclear
  33.  * facility.
  34.  */
  35.  
  36. /*
  37.  * @(#)ClickArea.java    1.11 02/06/13
  38.  */
  39.  
  40. import java.awt.Graphics;
  41.  
  42. /**
  43.  * An click feedback ImageArea class.
  44.  * This class extends the basic ImageArea Class to show the locations
  45.  * of clicks in the image in the status message area.  This utility
  46.  * ImageArea class is useful when setting up ImageMaps.
  47.  *
  48.  * @author     Jim Graham
  49.  * @version     1.11, 06/13/02
  50.  */
  51. class ClickArea extends ImageMapArea {
  52.     /** The X location of the last mouse press. */
  53.     int startx;
  54.     /** The Y location of the last mouse press. */
  55.     int starty;
  56.     /** A boolean to indicate whether we are currently being dragged. */
  57.     boolean dragging;
  58.  
  59.     static String ptstr(int x, int y) {
  60.     return "("+x+", "+y+")";
  61.     }
  62.  
  63.     /**
  64.      * When the user presses the mouse button, start showing coordinate
  65.      * feedback in the status message line.
  66.      */
  67.     public boolean press(int x, int y) {
  68.     showStatus("Clicked at "+ptstr(x, y));
  69.     startx = x;
  70.     starty = y;
  71.     dragging = true;
  72.     return false;
  73.     }
  74.  
  75.     /**
  76.      * Update the coordinate feedback every time the user moves the mouse
  77.      * while he has the button pressed.
  78.      */
  79.     public boolean drag(int x, int y) {
  80.     showStatus("Rectangle from "+ptstr(startx, starty)
  81.            +" to "+ptstr(x, y)
  82.            +" is "+(x-startx)+"x"+(y-starty));
  83.     return false;
  84.     }
  85.  
  86.     /**
  87.      * Update the coordinate feedback one last time when the user releases
  88.      * the mouse button.
  89.      */
  90.     public boolean lift(int x, int y) {
  91.     dragging = false;
  92.     return drag(x, y);
  93.     }
  94.  
  95.     /**
  96.      * This utility method returns the status string this area wants to
  97.      * put into the status bar.  If this area is currently animating
  98.      * a message, then that message takes precedence over any other area
  99.      * that a higher stacked area may want to display, otherwise the
  100.      * message from the higher stacked area takes precedence.
  101.      */
  102.     public String getStatus(String prevmsg) {
  103.     if (dragging) {
  104.         return (status != null) ? status : prevmsg;
  105.     } else {
  106.         return (prevmsg == null) ? status : prevmsg;
  107.     }
  108.     }
  109. }
  110.  
  111.