home *** CD-ROM | disk | FTP | other *** search
/ PC Pro 1999 April / DPPCPRO0499.ISO / April / Notes / 50b2wic.exe / DATA1.CAB / NotesProgramFilesJavaSupport / rt.jar / java / util / Observable.class (.txt) < prev    next >
Encoding:
Java Class File  |  1998-04-23  |  1.5 KB  |  71 lines

  1. package java.util;
  2.  
  3. public class Observable {
  4.    private boolean changed = false;
  5.    private Vector obs = new Vector();
  6.    private Observer[] arr = new Observer[2];
  7.  
  8.    public synchronized void addObserver(Observer var1) {
  9.       if (!this.obs.contains(var1)) {
  10.          this.obs.addElement(var1);
  11.       }
  12.  
  13.    }
  14.  
  15.    public synchronized void deleteObserver(Observer var1) {
  16.       this.obs.removeElement(var1);
  17.    }
  18.  
  19.    public void notifyObservers() {
  20.       this.notifyObservers((Object)null);
  21.    }
  22.  
  23.    public void notifyObservers(Object var1) {
  24.       int var2 = 0;
  25.       synchronized(this){}
  26.  
  27.       try {
  28.          if (!this.hasChanged()) {
  29.             return;
  30.          }
  31.  
  32.          var2 = this.obs.size();
  33.          if (var2 > this.arr.length) {
  34.             this.arr = new Observer[var2];
  35.          }
  36.  
  37.          this.obs.copyInto(this.arr);
  38.          this.clearChanged();
  39.       } catch (Throwable var6) {
  40.          throw var6;
  41.       }
  42.  
  43.       for(int var3 = var2 - 1; var3 >= 0; --var3) {
  44.          if (this.arr[var3] != null) {
  45.             this.arr[var3].update(this, var1);
  46.          }
  47.       }
  48.  
  49.    }
  50.  
  51.    public synchronized void deleteObservers() {
  52.       this.obs.removeAllElements();
  53.    }
  54.  
  55.    protected synchronized void setChanged() {
  56.       this.changed = true;
  57.    }
  58.  
  59.    protected synchronized void clearChanged() {
  60.       this.changed = false;
  61.    }
  62.  
  63.    public synchronized boolean hasChanged() {
  64.       return this.changed;
  65.    }
  66.  
  67.    public synchronized int countObservers() {
  68.       return this.obs.size();
  69.    }
  70. }
  71.