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

  1. /*
  2.  * @(#)ProgressEntry.java    1.3 95/05/12 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. package net;
  20.  
  21. import net.www.html.URL;
  22.  
  23. public class ProgressEntry {
  24.     public static final int HTML  = 0;
  25.     public static final int IMAGE = 1;
  26.     public static final int CLASS = 2;
  27.     public static final int AUDIO = 3;
  28.     public static final int OTHER = 4;
  29.  
  30.     public int need = 0;
  31.     public int read = 0;
  32.     public boolean connected = false;
  33.  
  34.     // Label for this entry.
  35.     public String label;
  36.  
  37.     public int type;
  38.  
  39.     public Object key;
  40.  
  41.     ProgressEntry(Object o, String l, String ctype) {
  42.     key = o;
  43.     label = l;
  44.     type = IMAGE;
  45.     
  46.     setType(l, ctype);
  47.     }
  48.  
  49.  
  50.     /*
  51.      * Usually called when a URL is finally connected after the
  52.      * content type is known.
  53.      */
  54.     public void setType(String l, String ctype) {
  55.     if (ctype == null) {
  56.         if (l.endsWith(".gif")) {
  57.         type = IMAGE;
  58.         } else if (l.endsWith(".au")) {
  59.         type = AUDIO;
  60.         } else if (l.endsWith(".class")) {
  61.         type = CLASS;
  62.         } else if (l.endsWith(".html") || l.endsWith("/")) {
  63.         type = HTML;
  64.         } else {
  65.         type = OTHER;
  66.         }
  67.     } else if (ctype.startsWith("image")) {
  68.         type = IMAGE;
  69.     } else if (ctype.startsWith("audio")) {
  70.         type = AUDIO;
  71.     } else if (ctype == URL.content_octet) {
  72.         type = CLASS;
  73.     } else if (ctype.startsWith("text/html")) {
  74.         type = HTML;
  75.     } else {
  76.         type = OTHER;
  77.     }
  78.     }
  79.  
  80.     public void update(int total_read, int total_need) {
  81.     if (need == 0) {
  82.         need = total_need;
  83.     }
  84.     read = total_read;
  85.     }
  86.  
  87. /*
  88.     this returns the previous value of the connected boolean.
  89.     typical usage as found in Progressdata is something like
  90.         if (te.connected() == false) {
  91.             lastchanged = i;
  92.             setChanged();
  93.             notifyObservers();
  94.         }
  95.  
  96. */
  97.     public synchronized boolean connected() {
  98.     if (!connected) {
  99.         connected = true;    
  100.         return false;
  101.     } 
  102.     return true;
  103.     }
  104. }
  105.