home *** CD-ROM | disk | FTP | other *** search
/ Sky at Night 2007 June / SAN CD 6-2007 CD-ROM 25.iso / pc / Software / AstroGrav_Win / Java / jre1.6.0 / lib / rt.jar / java / util / Observable.class (.txt) < prev    next >
Encoding:
Java Class File  |  2006-11-29  |  1.2 KB  |  63 lines

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