Main Page   Namespace List   Class Hierarchy   Compound List   File List   Namespace Members   Compound Members  

TMutableObservable.java

00001 /*
00002 *  Name:      TMutableObservable.java
00003 *  Author:    Rafael Jesus Alcantara Perez
00004 *  Summary:   Mutable observable class
00005 *  Date:      $Date: 2003/08/16 11:33:18 $
00006 *  Revision:  $Revision: 1.1 $
00007 *
00008 *  Copyright (C) 2003  Rafael Jesus Alcantara Perez <rafa@dedalo-ing.com>
00009 *
00010 *  This program is free software; you can redistribute it and/or modify
00011 *  it under the terms of the GNU General Public License as published by
00012 *  the Free Software Foundation; either version 2 of the License, or
00013 *  (at your option) any later version.
00014 *
00015 *  This program is distributed in the hope that it will be useful,
00016 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
00017 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
00018 *  GNU General Public License for more details.
00019 *
00020 *  You should have received a copy of the GNU General Public License
00021 *  along with this program; if not, write to the Free Software
00022 *  Foundation, Inc., 59 Temple Place, Suite 330, Boston,
00023 *  MA 02111-1307, USA.
00024 */
00025 
00027 package org.mpcl.designpatterns.behavioral;
00028 
00029 import java.util.Iterator;
00030 import java.util.Observable;
00031 import java.util.Vector;
00032 
00033 
00054 public class TMutableObservable extends Observable implements IMutable
00055 {
00056 
00058   private boolean   gNeedMutation;
00059 
00061   protected Vector   tMutatorVector;
00062 
00063 
00064   //
00065   //  C O N S T R U C T O R S
00066   //
00067 
00073   protected void clearNeedMutation()
00074   {
00075     gNeedMutation = false;
00076   }
00077 
00078 
00079   //
00080   //  C O N S T R U C T O R S
00081   //
00082 
00087   public TMutableObservable()
00088   {
00089     gNeedMutation  = false;
00090     tMutatorVector = new Vector();
00091   }
00092 
00098   public void addMutator (IMutator tMUTATOR)
00099   {
00100     tMutatorVector.add (tMUTATOR);
00101   }
00102 
00107   public void deleteMutator (IMutator tMUTATOR)
00108   {
00109     tMutatorVector.remove (tMUTATOR);
00110   }
00111 
00113   public void deleteMutators()
00114   {
00115     tMutatorVector.removeAllElements();
00116   }
00117 
00122   public void setNeedMutation()
00123   {
00124     gNeedMutation = true;
00125   }
00126 
00127 
00128   //
00129   //  S E L E C T O R S
00130   //
00131 
00136   public int countMutators()
00137   {
00138     return tMutatorVector.size();
00139   }
00140 
00145   public boolean needMutation()
00146   {
00147     return gNeedMutation;
00148   }
00149 
00159   public void notifyMutators()
00160   {
00161     notifyMutators (null);
00162   }
00163 
00174   public void notifyMutators (Object tARGUMENT)
00175   {
00176 
00177     if ( needMutation() )
00178     {
00179       IMutator   tMutator;
00180       Iterator   I = tMutatorVector.iterator();
00181       
00182       while ( I.hasNext() )
00183       {
00184         tMutator = (IMutator) I.next();
00185         tMutator.update (this, tARGUMENT);
00186       }
00187       clearNeedMutation();
00188       setChanged();
00189     }
00190 
00191   }  // notifyMutators()
00192 
00193 }  // class TMutableObservable

Generated on Mon Oct 13 02:35:24 2003 for MPCL by doxygen1.2.18