Generalized Object Modules Design

Richard A. O'Keefe ok at cs.otago.ac.nz
Mon Mar 4 22:49:25 UTC 2002


Following up on what someone else wrote, I suggested:
	> (a) Making the change-set browser-specific,

to which Hannes Hirzel replied:
	I think this would interfer considerably with the way we are working
	today.

Why should it?  The idea is that each new browser would start up with
the containing Project's changeset, but you could tell it to use a different
changeset.  If you don't tell a browser to change its changeset, it CAN'T
"intefere with the way we are working today" because it would BE "the way
we are working today".

	What we need is a simple way to define to which module our changes
	go to (this implies the place where changes for the DeltaModules go to).
	
And you don't think "tell the browser" is a simple way?

	> (b) Having the browser display the change-set in its title-bar.

	In the current image (Squeak 3.3a-4730)

that may be the current image, but despite asking a couple of weeks ago,
no-one has yet told me were I can get a 3.2 VM-and-image for UNIX.

	the changeSet is associated with the Project is
	Project current changeSet 
	(and)	
	Project current changeSet name
	gives the name of the changeSet which is the same as the project name.
	
This is so in 3.0.  But what of it?  That's not the issue.

	I consider it a good idea to display the name of the project/changeSet
	somewhere _within_ the project.

Funny, I thought a Browser _was_ within a Project.

	This will enhance the awareness in which
	context one is working and motivate to change projects if necessary.

The point is that "what ChangeSet will *this* change go to" is a question
about the change one is working on in some Browser.  The Browser is where
you are looking when you ask it.  That's why the Browser is a good place to
display the answer.

Whether a Browser can alter the current ChangeSet or not,
Browsers are still an extremely good place to _display_ the name of the
current ChangeSet.

	You find the note about 'Project current changeSet' as well as some 
	other at [deleted]

The issue was not and is not "is there some, possibly lengthy, expression
I can type into a Workspace to find out what the current ChangeSet is?"
It's "How can I find out QUICKLY AND EASILY where the change I'm working on
right now will go?"   The answer _has_ to involve something that the Browser
does or something the programmer does to the Browser, because that's the
focus of attention at the time the question is interesting.

As an experiment, I added a method

    Browser>>	
    showChangeSet
        (SelectionMenu
	    selections: (Array with: Project current changeSet name)
	) startUp
	^self

and changed Browser>>systemCategoryMenu: to
    '......
     cs name'
	lines: #(2 4 6 8 11)
	selections: #( ... showChangeSet)

Yup.  Three clicks and I've seen the information I want and dismissed it.
Without leaving the context of the browser.

I also added

    Browser>>
    openChangeSet
	|cs|
	cs := ChangeSorter new.
	cs morphicWindow openInWorld.
	cs showChangeSet: Project current changeSet.
	^self

and added 'open cs' ... openChangeSet to systemCategoryMenu:.
The more I play with this, the more I like it.

These two menu items are arguably in the wrong pane's menu, which is
why this message doesn't have an [ENH] tag.  Ideally, the menu one
would put them in would be obtained by Option-click in the Browser's
title-bar, but there is no such menu.




More information about the Squeak-dev mailing list