To customize an observer a two step process is needed: -> from observer picker, click on create custom observer -> from custom observer, click on new or edit or ... and the the reverse: -> close customize observer window -> close (apply? why?) customize list window Both step's shouldn't be necessary.
the intermiedate dialog ("Frysk Custom Observers") allows the user to manage custom observers (created, edited, delete and duplicate). That functinality cannot be added to the druid without risking overcomplicating it or using too much real estate. One thing that could be done is the rename the "Create Custom Observer" button to "Manage or Edit Custom Observers" or "Custom Observers ..."
Yes, concept of "create a custom observer" has morphed into "customize observer". For instance, for syscall-observer, customizing it to just record specific system calls. This in turn, though, leads to further questions: -> what happens if I click on "Syscall Observer" and then click "customize"; is it customizing just the local systemcall observer, or globally. I'm guessing that a customization would apply locally. Perhaps edit, copy buttons are the way to go? Perhaps the interface could better suggest that the observers are being added to a local copy of the pool; for instance (but don't follow :-) the proc-picker makes it clear which processes are of interest by copying them into a separate window
Some suggestions as a result of discussion between me and Andrew: Gobalizing Observers over the entire session. This means having a global list of observers which watch all procs/threads in the current session, and allowing the user to choose which ones are on/off. Changes would then be a customization of the observers. This means eleminating the metaphore that observers are added to procs/threads of course. It also has some performace implications. Anyways its a good topic for the next meeting.
2007-03-28 Sami Wagiaalla <swagiaal@redhat.com> * observers/TaskCloneObserver.java: Made constructors protected. Made getCopy protected. * observers/TaskSyscallObserver.java: Ditto. * observers/TaskSignaledObserver.java: Ditto. * observers/TaskForkedObserver.java: Ditto. * observers/TaskExecObserver.java: Ditto. * observers/TaskTerminatingObserver.java: Ditto. * observers/ProgramObserver.java: Made constructor protected. * observers/ObserverRoot.java: Removed old unused code. Made constructors protected. Made getCopy protected. * observers/ObserverManager.java: Added and initialized a list of default observers. Added getDefaultObservers(). Removed old commented out code. * WindowManager.java: Renamed sessionManager to sessionManagerDialog. * SessionProcTreeView.java: Removed setCurrentSession(). * SessionProcDataModel.java: Added listiner to listen to change of currentSesion in SessionManager. * eventviewer/EventViewer2.java: Ditto. * ObserversMenu.java: Replaced use of GuiProc.addObserver with ObserverRoot.apply(). * MainWindow.java: Removed setCurrentSession(). * GuiProc.java: Removed add(TaskObserverRoot). * GuiObservable.java: Removed fastDeleteObserver(). * EditObserverDialog.java: uses ObserverMananger.getBlankObserver instead of creating a new ObserverRoot object. * CheckedListView.java: Added the ability to watch a second ObservableLinkedList which represents ticked objects, and is updated when objects are toggled. * GuiObject.java: Removed inheretence from Observable. Added an observable propertiesChanged object. * CompletingEntry.java: Changed event watches to match Refactoring of GuiObject. * ListView.java: Ditto. * DetailedObserverTreeView.java: Ditto. * SimpleComboBox.java: Ditto. 2007-03-28 Sami Wagiaalla <swagiaal@redhat.com> * test/TestSessionSaveLoad.java: Added testing for adding/removing saving/loading of obserers to/from Sessions. * test/TestPrototypeCopying.java: Uses ObserverManager.getCopy() instead of getCopy() directly to the object. * sessions/SessionManager.java: Added support for keeping track and notifiying interested parties of the currently active session. * sessions/Session.java: Added support for add/removing saving and loading Observers at the sesion level. * sessions/ProcessPicker.java: Removed use of DebugProcess.addRemoveObservers(), and DebugProcess.addProcsMinusObserver(); * sessions/DebugProcess.java: removed addObservers(). (initListObservers): New function. (addObserver): Made method protected. (addObservers); Removed. (addAllObservers): New method. (removeAllObservers): New method. (addObserverToAllProcs): New method. (removeObserverFromAllProcs): New method. (addProcsMinusObservers): Removed (addRemoveObservers): Removed (getObservers): Changed from public to Protected. (removeObserver): Ditto. (loadObservers): New method. (saveObservers): New method. * druid/CreateFryskSessionDruid.java: Repaced use of DebugProcess.getObservers() with Session.getObservers(). Replaced DebugProcess.addObserver() with Session.addObserver(). Replaced WindowManager.setCurrentSession() with SessionManager.setCurrentSession(). * SessionManagerGui.java: Renamed this... * SessionManagerDialog.java: ... to this. * Gui.java: Renamed GuiSessionManager to SessionManagerDialog. * TestGlade.java: Ditto. 2007-03-28 Sami Wagiaalla <swagiaal@redhat.com> * SourceWindowFactory.java: Refactored name of sessionManager to sessionManagerDialog.
This commit completes the changes requested in this bug. 2007-04-05 Sami Wagiaalla <swagiaal@redhat.com> * .settings/org.eclipse.jdt.ui.prefs: Renamed the formatter to FryskFormatting. * .settings/org.eclipse.jdt.core.prefs: Changed indentation to 2, and tab size to 8. 2007-04-05 Sami Wagiaalla <swagiaal@redhat.com> * sessions/Session.java: Deleted initDefaultObservers; now done by CreateFryskSessionDruid. Added addGuiProc(). Renamed add/removeProcess to add/removeDebugProcess. Removed previousSession reference and getter. * sessions/DebugProcess.java: Added setter and getter for executablePath. Removed {save/load}Observers(); now down by session. * gladedir/frysk_create_session_druid.glade: Added a constant width to all the dialog buttons. Added close button to be used for instant apply versions. Removed the observers page and replaced it with the content of ObserversDialog. * druid/CreateFryskSessionDruid.java: Delete currentSession reference in favor of using SessionManager.theManager.getCurrentSession(). Removed booleans loadSession, and editSession. Added class DruidMode setter and getter for druidMode, and used that instead of booleans. Removed all code wich added/remove observers from Session. 2007-04-05 Sami Wagiaalla <swagiaal@redhat.com> * eventviewer/EventViewer2.java: Added unnountSession(). Added handling for removing/adding DebugProcesses. * WindowManager.java: Changed call to ObserversDialog constructor to use druid glade file instead. * UniqueHashMap.java: Added a keyHash map. Added handling to keep the list up to date when the name of an object which belongs to it changes. * ObserversDialog.java: Changed it to extend widget instead of Dialog. redirected okButton, and cancelButton to get ok and cancel buttons from the druid glade file. Added a present call which brings up the druid in EditObserver mode. * ObservableLinkedList.java: Refactored copy constructor to take a boolean telling it wether to copy the content or copy the only the references. Added a check for removing objects which do not belong to the list. Removed commented out code. * LiaisonPoint.java: Changed call to ObservabledLinkedList constructor to match refactoring. * actions/TaskActionPoint.java: Ditto. * observers/ObserverRoot.java: Ditto. * GuiObservable.java: Corrected an error message. * CheckedListView.java: Added unwatchCheckedList().