'From Squeak3.5 of ''11 April 2003'' [latest update: #5180] on 27 April 2003 at 6:13:10 pm'! "Change Set: ProjectsMenuReg-sbw Date: 20 April 2003 Author: Stephan B. Wessels SM Name: Project Menu Registry Provides a menu registry for the world project menu. For example... TheWorldMenu registerProjectCommand: { 'publish change sets'. {ChangeSorter. #publishChangeSets}. 'Scan through the repository of change sets and created published version in user specified target repository.'}. Date Update ------------- ----------------------------------------------------------------------- 20-Apr-2003 Initial change set creation. "! Object subclass: #TheWorldMenu instanceVariableNames: 'myProject myWorld myHand ' classVariableNames: 'AppearanceMenuRegistry OpenMenuRegistry ProjectMenuRegistry ' poolDictionaries: '' category: 'Morphic-Kernel'! !TheWorldMenu methodsFor: '*projectsMenuReg' stamp: 'sbw 4/20/2003 17:29'! projectMenu "Build the project menu for the world." | menu | self flag: #bob0302. menu _ self menu: 'projects...'. self fillIn: menu from: {{'save on server (also makes a local copy)'. {#myProject. #storeOnServer}}. {'save to a different server'. {#myProject. #saveAs}}. {'save project on local file only'. {#myWorld. #saveOnFile}}. {'see if server version is more recent...'. {#myProject. #loadFromServer}}. {'load project from file...'. {self. #loadProject}}. nil}. self fillIn: menu from: {{'show project hierarchy'. {Project. #showProjectHierarchyInWindow}. 'Opens a window that shows names and relationships of all the projects in your system.'}. nil}. self mvcProjectsAllowed ifTrue: [self fillIn: menu from: {{'create new mvc project'. {self. #openMVCProject}}}]. self fillIn: menu from: {{'create new morphic project'. {self. #openMorphicProject}}. nil. {'go to previous project'. {Project. #returnToPreviousProject}}. {'go to next project'. {Project. #advanceToNextProject}}. {'jump to project...'. {#myWorld. #jumpToProject}}}. Preferences simpleMenus ifFalse: [self fillIn: menu from: {nil. {'save for future revert'. {#myProject. #saveForRevert}}. {'revert to saved copy'. {#myProject. #revert}}}]. self fillIn: menu from: self class registeredProjectCommands , {nil}. ^ menu! ! !TheWorldMenu class methodsFor: '*projectsMenuReg' stamp: 'sbw 4/20/2003 17:26'! registerProjectCommand: anArray "The array received should be of form {'A Label String'. {TargetObject. #command} 'A Help String'} ; the final element is optional but if present will be used to supply balloon help for the menu item in the Project menu. If any previous registration of the same label string is already known, delete the old one." self unregisterProjectCommand: anArray first. ProjectMenuRegistry addLast: anArray! ! !TheWorldMenu class methodsFor: '*projectsMenuReg' stamp: 'sbw 4/20/2003 16:54'! registeredProjectCommands "Answer the list of dynamic project menu commands" ProjectMenuRegistry ifNil: [ProjectMenuRegistry _ OrderedCollection new]. ^ ProjectMenuRegistry! ! !TheWorldMenu class methodsFor: '*projectsMenuReg' stamp: 'sbw 4/20/2003 17:27'! unregisterProjectCommand: label "Remove the project command with the given label from the registry" self registeredProjectCommands removeAllSuchThat: [:e | e first = label]! ! !TheWorldMenu class methodsFor: '*projectsMenuReg' stamp: 'sbw 4/20/2003 17:27'! unregisterProjectCommandWithReceiver: aReceiver "Remove the project command with the given object as receiver from the registry" self registeredProjectCommands removeAllSuchThat: [:e | e second first == aReceiver]! !