"Filed out from GNU Smalltalk version 2.0k on 2-Mar-2003 0:52:43"! !BLOX.BLOXBrowser.NamespaceBrowser methodsFor: 'class list blue button menu'! renameNamespace: listView "Rename currently selected namespace" | classes oldName newName prompter oldAssoc newNamespace | curNamespace isNil ifTrue: [^listView beep]. oldName := self namespaceString trimSeparators. "Prompt user for new name" prompter := Prompter message: 'Rename namespace: ' , curNamespace name in: listView. prompter response = '' ifTrue: [^self]. self byCategory ifTrue: [shownClasses do: [:each | each category: prompter response]. self updateNamespaceList. ^self]. oldName := oldName asSymbol. newName := prompter response asSymbol. (newName at: 1) isUppercase ifFalse: [^self error: 'Namespace name must begin with an uppercase letter']. (curNamespace includesKey: newName) ifTrue: [^self error: newName , ' already exists']. "Save old Association" oldAssoc := curNamespace superspace isNil ifTrue: [Smalltalk associationAt: oldName] ifFalse: [curNamespace superspace associationAt: oldName]. "Rename the namespace now" newNamespace := curNamespace superspace isNil ifTrue: [RootNamespace new: newName asSymbol] ifFalse: [curNamespace superspace addSubspace: newName asSymbol]. curNamespace definedKeys do: [:each | newNamespace add: (curNamespace associationAt: each)]. curNamespace superspace isNil ifTrue: [Smalltalk removeKey: oldName] ifFalse: [curNamespace superspace removeKey: oldName]. "Notify programmer of all references to renamed subspace" classes := SortedCollection new. CompiledMethod allInstancesDo: [:method | ((method refersTo: oldAssoc) or: [method refersTo: oldAssoc key]) ifTrue: [classes add: method printString]]. classes isEmpty ifFalse: [ModalDialog new alertMessage: 'Rename all references to namespace ' , oldName , Character nl asSymbol , 'to the new name: ' , newName in: listView. MethodSetBrowser new openOn: classes title: 'References to ' , oldName selection: oldName]. "Update class list" self updateNamespaceList! !