1 package net.sourceforge.rpgee.utility; 2 3 public interface Observable<E> { 4 5 /** 6 * Adds an observer to the set of observers for this object, provided that it is not the same as some observer already in the 7 * set. The order in which notifications will be delivered to multiple observers is not specified. See the class comment. 8 * 9 * @param o an observer to be added. 10 * @throws NullPointerException if the parameter o is null. 11 */ 12 public abstract void addObserver(Observer o); 13 14 /** 15 * Deletes an observer from the set of observers of this object. Passing <CODE>null</CODE> to this method will have no effect. 16 * 17 * @param o the observer to be deleted. 18 */ 19 public abstract void deleteObserver(Observer o); 20 21 /** 22 * If this object has changed, as indicated by the <code>hasChanged</code> method, then notify all of its observers and then 23 * call the <code>clearChanged</code> method to indicate that this object has no longer changed. 24 * <p> 25 * Each observer has its <code>update</code> method called with two arguments: this observable object and <code>null</code>. 26 * In other words, this method is equivalent to: <blockquote><tt> 27 * notifyObservers(null)</tt></blockquote> 28 * @throws Exception 29 * 30 * @see java.util.Observable#clearChanged() 31 * @see java.util.Observable#hasChanged() 32 * @see java.util.Observer#update(java.util.Observable, java.lang.Object) 33 */ 34 public abstract void notifyObservers() throws Exception; 35 36 /** 37 * If this object has changed, as indicated by the <code>hasChanged</code> method, then notify all of its observers and then 38 * call the <code>clearChanged</code> method to indicate that this object has no longer changed. 39 * <p> 40 * Each observer has its <code>update</code> method called with two arguments: this observable object and the <code>arg</code> 41 * argument. 42 * 43 * @param arg any object. 44 * @throws Exception 45 * @see java.util.Observable#clearChanged() 46 * @see java.util.Observable#hasChanged() 47 * @see java.util.Observer#update(java.util.Observable, java.lang.Object) 48 */ 49 public abstract void notifyObservers(E arg) throws Exception; 50 51 /** 52 * Clears the observer list so that this object no longer has any observers. 53 */ 54 public abstract void deleteObservers(); 55 56 /** 57 * Tests if this object has changed. 58 * 59 * @return <code>true</code> if and only if the <code>setChanged</code> method has been called more recently than the 60 * <code>clearChanged</code> method on this object; <code>false</code> otherwise. 61 * @see java.util.Observable#clearChanged() 62 * @see java.util.Observable#setChanged() 63 */ 64 public abstract boolean hasChanged(); 65 66 /** 67 * Returns the number of observers of this <tt>BaseObservable</tt> object. 68 * 69 * @return the number of observers of this object. 70 */ 71 public abstract int countObservers(); 72 73 }