Remove the need for ProcAttachedObserver, ProcBlockObserver, and potentially ProcBlockCounter and all local implementations of said observers.
frysk-core/frysk/rt: 2006-11-20 Mike Cvet <mcvet@redhat.com> * StateModel.java: Refactored to RunState.java. * RunState.java: Refactored from StateModel.java. (pbo): Removed. ProcBlockObserver is no longer used. (stateProc): Added. The Proc this RunState is responsible for. (tasks): Added. LinkedList of Tasks belonging to stateProc. (numRunningTasks): Number of Tasks belonging to stateProc in the unblocked state. (RunState): Removed reference to ProcBlockObserver. This class now extends Observable and implements TaskObserver.Instruction directly. Fixes #3538. (getNumRunningTasks): Added. (setNumRunningTasks): Added. (getNumObservers): Added. Returns the number of Observers in this Observable's Observer list. (removeObserver): Added. Calls deleteObserver() with the additional stipulation of releasing all Tasks if there are no more Observers watching them. (setProc): Added. Sets stateProc and tasks, and blocks all tasks from the incoming Proc. (updateExecuted): Added. Callback for TaskObserver.Instruction. Notify all watching observers that a task has been re-blocked. (addedTo): Added. Callback for TaskObserver.Instruction. (deletedFrom): Ditto. (addFailed): Ditto. (requestAdd): Schedules this Observer to be added to all Tasks. (requestAddObservers): Adds this InstructionObserver to the incoming Task. (blockTask): Schedules this InstructionObserver to be added to all incoming Tasks. (getNumTasks): Added. * tests/TestStateModel: Refactored to TestRunState. * tests/TestRunState: Refactored from TestStateModel. Updated to use RunState. frysk-gui/frysk/gui/srcwin: 2006-11-20 Mike Cvet <mcvet@redhat.com> * SourceWindowFactory.java (createSourceWindow): Updated to make better use of RunState and figure out when a new Window is needed. (SourceWinListener.lifeCycleQuery): Figure out when to remove HashTable reference to this Proc. (SourceWinListener): Remove unnecessary field. (unblockProc): Remove HashTable reference if needed. (stateTable): Added. Global static table for referencing RunStates to processes for all windows. (map): Added. HashMap for mapping Procs to SourceWindows. * SourceWindow.java (LockObserver.update): Callback for Observer. (getLockObserver): Added. Pokes the SourceWindow when threads have been reblocked for whatever reason, prompting some sort of information re-generation depending on the window state. (SourceWinBlocker): Removed. Obsoleted by RunState + LockObserver. (lock): Added. The LockObserver for this window. frysk-gui/frysk/gui/common: 2006-11-20 Mike Cvet <mcvet@redhat.com> * ProcBlockCounter.java: Removed. Obsoleted by RunState. frysk-gui/frysk/gui: 2006-11-20 Mike Cvet <mcvet@redhat.com> * memory/MemoryWindow.java (desensitize): Added. Sets TreeView and other widgets to insensitive. (LockObserver): Added. Determines when this window can become in/sensitive and re-draw. (LockObserver.update): Callback for Observer. (getLockObserver): Added. (finishMemWin): Moved over from MemoryWindowFactory. Sets up preferences and sets the Proc for this MemoryWindow. (.buttonEvent): Removes the LockObserver for this window from the RunState's list of Observers. (MemoryWindow): Initialize a new LockObserver. (setObservable): Sets this class' observable - representation of RunState. (resensitize): Added. Sets TreeView and other widgets to sensitive. * memory/MemoryWindowFactory.java (setPaths): Removed deprecated Hashtables and their initializations. (setMemWin): Updated to use new HashMap. (createMemoryWindow): Moved glade initializations in here from finishDisWin(). Updated to use RunState objects and centralized list of running Windows and Procs from SourceWindowFactory. (MemWinListener.lifeCycleQuery): Updated to use RunState and handle Proc unmapping cases properly. (unblockProc): Use RunState to determine when to remove map reference to the Proc. (gladePaths): Updated to use new HashMap. (MemWinBlocker): Removed. * disassembler/DisassemblyWindow.java (finishDisWin): Moved over from DisassemblyWindowFactory. Sets up preferences and sets the Proc for this DisassemblyWindow. (desensitize): Added. Sets TreeView and other widgets to insensitive. (LockObserver.update): Callback for Observer. (getLockObserver): Added. (LockObserver): Added. Determines when this window can become in/sensitive and re-draw. (.buttonEvent): Removes the LockObserver for this window from the RunState's list of Observers. (setObservable): Sets this class' observable - representation of RunState. (DisassemblyWindow): Initialize a new LockObserver. (resensitize): Added. Sets TreeView and other widgets to sensitive. * disassembler/DisassemblyWindowFactory.java (setPaths): Updated to use new HashMap. (createDisassemblyWindow): Moved glade initializations in here from finishDisWin(). Updated to use RunState objects and centralized list of running Windows and Procs from SourceWindowFactory. (setDisWin): Updated to use new HashMap. (DisWinListener.lifeCycleQuery): Updated to use RunState and handle Proc unmapping cases properly. (unblockProc): Use RunState to determine when to remove map reference to the Proc. (DisWinBlocker): Removed. * register/RegisterWindowFactory.java (setPaths): Updated to use a new HashMap. (setRegWin): Updated to use new HashMap. (RegWinListener.lifeCycleQuery): Updated to use the RunState of the RegisterWindow to determine when to remove map references. (unblockProc): Use RunState to determine when to remove map reference to the Proc. (createRegisterWindow): Moved glade initializations in here from finishDisWin(). Updated to use RunState objects and centralized list of running Windows and Procs from SourceWindowFactory. (RegWinBlocker): Removed. * register/RegisterWindow.java (desensitize): Added. Sets TreeView and other widgets to insensitive. (LockObserver.update): Callback for Observer. (RegisterWindow): Initialize new LockObserver. (getLockObserver): Added. (finishRegWin): Moved over from RegisterWindowFactory. Sets up preferences and sets the Proc for this RegisterWindow. (LockObserver): Added. Determines when this window can become in/sensitive and re-draw. (.buttonEvent): Removes the LockObserver for this window from the RunState's list of Observers. (setObservable): Added. Sets the Observable for this window. (resensitize): Added. Sets TreeView and other widgets to sensitive. frysk-gui/frysk/gui/monitor: 2006-11-20 Mike Cvet <mcvet@redhat.com> * actions/ShowMemWin.java (execute): Remove call to setMonitor(). * actions/ShowRegWin.java (execute): Ditto.