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

  1. /*
  2.  * @(#)ProgressBusy.java    1.2 95/05/11 Chris Warth
  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. package browser;
  20.  
  21. import net.ProgressEntry;
  22. import net.ProgressData;
  23.  
  24. class ProgressBusy extends Thread {
  25.     ProgressWindow target;
  26.  
  27.     ProgressBusy(ProgressWindow w) {
  28.     target = w;
  29.     start();
  30.     }
  31.  
  32.     synchronized void wakeUp() {
  33.     notify();
  34.     }
  35.  
  36.     synchronized void waitForWork(boolean foundwork) {
  37.     // if we found work the last time around we only wait a short time, 
  38.     // otherwise we wait forever for some new work to arrive.
  39.     // This is to avoid having this thread suck up resources when there
  40.     // is nothing to draw.
  41.     //
  42.         wait((foundwork ? 100 : 0)); 
  43.     }
  44.  
  45.  
  46.  
  47.     public void run() {
  48.     ProgressEntry plist[] = ProgressData.pdata.streams;
  49.     int pos = 0;
  50.     int oldpos = 0;
  51.     int direction = +5;
  52.  
  53.     setName("Progress Busy Loop");
  54.  
  55.     while (true) {
  56.         boolean foundwork = false;
  57.         for (int i = 0 ; i < plist.length; i++) {
  58.         ProgressEntry pe = plist[i];
  59.             
  60.         if (pe != null && pe.connected == false) {
  61.             target.busyPaint(i, oldpos, pos);
  62.             foundwork = true;
  63.         }
  64.         }
  65.         waitForWork(foundwork);
  66.         oldpos = pos;
  67.         pos += direction;
  68.         if (pos > 100) {
  69.         pos = 100 - (pos - 100);
  70.         direction = -direction;
  71.         } else if (pos < 0) {
  72.         pos = -pos;
  73.         direction = -direction;
  74.         }
  75.  
  76.     }
  77.     }
  78. }
  79.