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

  1. /*
  2.  * @(#)ProgressData.java    1.4 95/05/13 Chris Warth
  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 net;
  21.  
  22. import browser.Observer;
  23. import browser.Observable;
  24. import net.www.html.URL;
  25.  
  26. public class ProgressData extends Observable {
  27.     // We create a single instance of this class.
  28.     // the Observer/Observable stuff only works with instances.
  29.     //
  30.     public static ProgressData pdata = new ProgressData();
  31.     public static final int NEW = 0;
  32.     public static final int CONNECTED = 1;
  33.     public static final int UPDATE = 2;
  34.     public static final int DELETE = 3;
  35.  
  36.     public int lastchanged = 0;
  37.     public int what = 0;
  38.     public ProgressEntry streams[] = new ProgressEntry[20];
  39.  
  40.     /*
  41.      * Call this routine to register a new URL for the progress
  42.      * window.  until it is marked as connected this entry will have
  43.      * a busy indicator.
  44.      */
  45.     public synchronized void register(URL m) {
  46.     ProgressEntry te;
  47.     int i;
  48.  
  49.     //System.out.println("-- REGISTER: " + m.toExternalForm());
  50.     for (i = 0; i < streams.length; i++) {
  51.         if (streams[i] == null) {
  52. //        if (m != null) {
  53. //            System.out.println("register "+m.toExternalForm());
  54. //        } else {
  55. //            System.out.println("Trying to register a null url!!!");
  56. //        }
  57. //
  58.         te = new ProgressEntry(m, m.toExternalForm(), m.content_type) ;
  59.         streams[i] = te;
  60.         lastchanged = i;
  61.         what = NEW;
  62.         setChanged();
  63.         notifyObservers();
  64.         break;
  65.         }
  66.     }
  67.     }
  68.  
  69.     /*
  70.      * Call this routine to register a new URL for the progress
  71.      * window.  until it is marked as connected this entry will have
  72.      * a busy indicator.
  73.      */
  74.     public synchronized void connected(URL m) {
  75.     /* AVH: I made this a noop since it sends a CONNECT
  76.      * message when the first data arrives.
  77.     ProgressEntry te;
  78.     int i;
  79.     System.out.println("-- CONNECTED: " + m.toExternalForm());
  80.  
  81.     for (i = 0; i < streams.length; i++) {
  82.         if (streams[i] != null && streams[i].key == m) {
  83.         te = (ProgressEntry) streams[i];
  84.         if (!te.connected()) {
  85.             te.setType(m.toExternalForm(), m.content_type);
  86.             lastchanged = i;
  87.             what = CONNECTED;
  88.             setChanged();
  89.             notifyObservers();
  90.         }
  91.         break;
  92.         }
  93.     }
  94.     */
  95.     }
  96.  
  97.  
  98.     /*
  99.      * Call this routine to unregister a new URL for the progress
  100.      * window.  This will nuke the indicator from the ProgressWindow.
  101.      */
  102.     public synchronized void unregister(URL m) {
  103.     int i;
  104.  
  105.     //System.out.println("-- UNREGISTER: " + m.toExternalForm());
  106.     what = DELETE;
  107.     for (i = 0; i < streams.length; i++) {
  108.         if (streams[i] != null && streams[i].key == m) {
  109. //        ProgressEntry pe = (ProgressEntry) streams[i];
  110. //        System.out.println("unregister "+pe.label);
  111.         streams[i] = null;
  112.         lastchanged = i;
  113.         setChanged();
  114.               notifyObservers();
  115.         break;
  116.         }
  117.     }
  118.     }
  119.  
  120.     public synchronized void update(URL m, int total_read, int total_need) {
  121.     int i;
  122.  
  123.     what = UPDATE;
  124.     for (i = 0; i < streams.length; i++) {
  125.         if (streams[i] != null && streams[i].key == m) {
  126.         ProgressEntry te = streams[i];
  127.             te.update(total_read, total_need);
  128.         if (!te.connected()) {
  129.             te.setType(m.toExternalForm(), m.content_type);
  130.             lastchanged = i;
  131.             what = CONNECTED;
  132.             setChanged();
  133.             notifyObservers();
  134.         }
  135.         lastchanged = i;
  136.         setChanged();
  137.         if (te.read >= te.need && te.read != 0) {
  138.             streams[i] = null;
  139.             what = DELETE;
  140.         }
  141.               notifyObservers();
  142.         break;
  143.         }
  144.     }
  145.     }
  146. }
  147.