Bug 4163 - create custom observer double step
Summary: create custom observer double step
Status: RESOLVED FIXED
Alias: None
Product: frysk
Classification: Unclassified
Component: general (show other bugs)
Version: unspecified
: P2 normal
Target Milestone: ---
Assignee: Sami Wagiaalla
URL:
Keywords:
Depends on:
Blocks: 3399 3401
  Show dependency treegraph
 
Reported: 2007-03-06 22:08 UTC by Andrew Cagney
Modified: 2007-04-05 19:56 UTC (History)
1 user (show)

See Also:
Host:
Target:
Build:
Last reconfirmed:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Andrew Cagney 2007-03-06 22:08:19 UTC
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.
Comment 1 Sami Wagiaalla 2007-03-14 18:43:47 UTC
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 ..."
Comment 2 Andrew Cagney 2007-03-16 16:36:19 UTC
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
Comment 3 Sami Wagiaalla 2007-03-16 20:46:39 UTC
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.
Comment 4 Sami Wagiaalla 2007-03-28 20:33:28 UTC
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.
Comment 5 Sami Wagiaalla 2007-04-05 20:56:12 UTC
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().