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

  1. /*
  2.  * @(#)HistoryVector.java    1.10 95/05/04 Herb Jellinek
  3.  *
  4.  * Copyright (c) 1995 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 browser;
  21.  
  22. import java.util.Vector;
  23.  
  24. public class HistoryVector extends Vector {
  25.  
  26.     /**
  27.      * sizeRestriction: maximum number of elements this can have.
  28.      */
  29.     int sizeRestriction;
  30.  
  31.     /**
  32.      * timeStamp: lets observers of this object know if it's been changed
  33.      * since the last time they looked.
  34.      */
  35.     int timeStamp;
  36.  
  37.     /**
  38.      * currentElement: index of the page we're now on, for highlighting.
  39.      */
  40.     int currentElement;
  41.  
  42.     /**
  43.      * HistoryVector(maxSize): create a vector of maximum size maxSize.
  44.      */
  45.     public HistoryVector(int maxSize) {
  46.     super(maxSize);
  47.     sizeRestriction = maxSize;
  48.     timeStamp = 0;
  49.     currentElement = 0;
  50.     }
  51.  
  52.     /**
  53.      * HistoryVector(): create a HistoryVector that grows indefinitely.
  54.      */
  55.     public HistoryVector() {
  56.     super(30);
  57.     sizeRestriction = -1;    // no restriction
  58.     timeStamp = 0;
  59.     currentElement = 0;
  60.     }
  61.  
  62.     /**
  63.      * getTimeStamp: returns the current timeStamp.
  64.      */
  65.     public final synchronized int getTimeStamp() {
  66.     return timeStamp;
  67.     }
  68.  
  69.     /**
  70.      * getCurrent: returns the current element to be highlighted
  71.      */
  72.     public final synchronized int getCurrent() {
  73.     return currentElement;
  74.     }
  75.  
  76.     
  77.     /**
  78.      * selectElement: adds delta to the current element.  Callers make sure
  79.      * not to underflow or overflow.
  80.      */
  81.     public final synchronized void deltaSelect(int delta) {
  82.     currentElement += delta;
  83.     timeStamp++;
  84.     }
  85.  
  86.  
  87.     /**
  88.      * pushElement: like addElement (which I can't override, since it's final!)
  89.      * but throws out the first element when the vector reaches sizeRestriction
  90.      * elements.  If sizeRestriction set to -1, list will grow forever.
  91.      */
  92.     public synchronized void pushElement(Object info) {
  93.     if (size() == sizeRestriction) {
  94.         removeElement(firstElement());
  95.     }
  96.     addElement(info);
  97.     currentElement = size() - 1;
  98.     timeStamp++;
  99.     }
  100. }
  101.