00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
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
00066
00067
00073 protected void clearNeedMutation()
00074 {
00075 gNeedMutation = false;
00076 }
00077
00078
00079
00080
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
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 }
00192
00193 }