packages/PackageManager.st
changeset 1673 bbbac9705c4b
parent 1443 6dfdf336b472
child 3011 1997ff6e7e55
--- a/packages/PackageManager.st	Thu Aug 24 10:38:35 2006 +0200
+++ b/packages/PackageManager.st	Thu Aug 24 10:38:42 2006 +0200
@@ -1,6 +1,6 @@
 "
  COPYRIGHT (c) 2003 by eXept Software AG
-              All Rights Reserved
+	      All Rights Reserved
 
  This software is furnished under a license and may be used
  only in accordance with the terms of that license and with the
@@ -33,7 +33,7 @@
 copyright
 "
  COPYRIGHT (c) 2003 by eXept Software AG
-              All Rights Reserved
+	      All Rights Reserved
 
  This software is furnished under a license and may be used
  only in accordance with the terms of that license and with the
@@ -49,7 +49,7 @@
     PackageManager smalltalkPackageManager
 
     [author:]
-         (james@miraculix)
+	 (james@miraculix)
 
     [instance variables:]
 
@@ -63,12 +63,12 @@
 documentation_exceptions
 "
 
-    ClassDescription fileOutErrorSignal 
-            can occur when a class within a package is autoloaded. Handle in application
+    ClassDescription fileOutErrorSignal
+	    can occur when a class within a package is autoloaded. Handle in application
 
     [author:]
-         (james@miraculix)
-    
+	 (james@miraculix)
+
 "
 !
 
@@ -76,10 +76,10 @@
 "
 
   more examples to be added:
-                                                                [exBegin]
-    ... add code fragment for 
+								[exBegin]
+    ... add code fragment for
     ... executable example here ...
-                                                                [exEnd]
+								[exEnd]
 "
 !
 
@@ -92,9 +92,9 @@
 initialize
     "Uninitialize Singleton"
     currentManager ifNotNil:[
-        currentManager uninitialize.
-        currentManager := nil.
-        currentPackage := nil.
+	currentManager uninitialize.
+	currentManager := nil.
+	currentPackage := nil.
     ]
 
 "
@@ -107,8 +107,8 @@
     anInstance := self new.
 
     self basicPackagesInImage do:[:aPackage |
-        package isInstalled:true.
-        anInstance addPackage:aPackage
+	package isInstalled:true.
+	anInstance addPackage:aPackage
     ].
     ^ anInstance
 
@@ -120,92 +120,92 @@
 !PackageManager class methodsFor:'* As yet uncategorized *'!
 
 basePackageNames
-    ^ #(
-            #'__NoProject__'
-            #'stx:clients/AddrBook'
-            #'stx:clients/Animation'
-            #'stx:clients/Clock'
-            #'stx:clients/Demos'
-            #'stx:clients/DirView'
-            #'stx:clients/DocTool'
-            #'stx:clients/DrawTool'
-            #'stx:clients/GLdemos'
-            #'stx:clients/GuessingGame'
-            #'stx:clients/LogicTool'
-            #'stx:clients/MailTool'
-            #'stx:clients/NewsTool'
-            #'stx:clients/PingPong'
-            #'stx:clients/Tetris'
-            #'stx:clients/TicTacToe'
-            #'stx:clients/TicTacToe3D'
-            #'stx:clients/Tools'
-            #'stx:goodies'
-            #'stx:goodies/benchmarks'
-            #'stx:goodies/benchmarks/deltaBlue'
-            #'stx:goodies/benchmarks/dhrystones'
-            #'stx:goodies/benchmarks/misc'
-            #'stx:goodies/benchmarks/richards'
-            #'stx:goodies/benchmarks/self'
-            #'stx:goodies/communication'
-            #'stx:goodies/dhbNumeric'
-            #'stx:goodies/distributions'
-            #'stx:goodies/glorp'
-            #'stx:goodies/lisp'
-            #'stx:goodies/math/fibonacci'
-            #'stx:goodies/measurement'
-            #'stx:goodies/minneStore'
-            #'stx:goodies/obsolete'
-            #'stx:goodies/persistency'
-            #'stx:goodies/postscript'
-            #'stx:goodies/prolog'
-            #'stx:goodies/rdoit'
-            #'stx:goodies/refactoryBrowser'
-            #'stx:goodies/regex'
-            #'stx:goodies/remoteObjects'
-            #'stx:goodies/screenSavers'
-            #'stx:goodies/sif'
-            #'stx:goodies/smaCC'
-            #'stx:goodies/soap'
-            #'stx:goodies/soap/examples'
-            #'stx:goodies/soap/opera'
-            #'stx:goodies/soap/splash'
-            #'stx:goodies/soap/spray'
-            #'stx:goodies/soap/wsdl'
-            #'stx:goodies/soap/xe'
-            #'stx:goodies/soap/xmlsig'
-            #'stx:goodies/sound'
-            #'stx:goodies/stmath'
-            #'stx:goodies/stxInExternalWindow'
-            #'stx:goodies/sunit'
-            #'stx:goodies/swazoo'
-            #'stx:goodies/tgen'
-            #'stx:goodies/webServer'
-            #'stx:goodies/webServer/pwsSwiki'
-            #'stx:goodies/xml-indelv'
-            #'stx:goodies/xml-vw'
-            #'stx:goodies/xml-yaxo'
-            #'stx:libbasic'
-            #'stx:libbasic2'
-            #'stx:libbasic3'
-            #'stx:libboss'
-            #'stx:libcomp'
-            #'stx:libcompat'
-            #'stx:libhtml'
-            #'stx:libjava'
-            #'stx:libjava/examples'
-            #'stx:libjavascript'
-            #'stx:libodbc'
-            #'stx:libopengl'
-            #'stx:libsnmp'
-            #'stx:libtable'
-            #'stx:libtool'
-            #'stx:libtool2'
-            #'stx:libui'
-            #'stx:libview'
-            #'stx:libview2'
-            #'stx:libwidg'
-            #'stx:libwidg2'
-            #'stx:libwidg3'
+    ^ (Array with:(Project noProjectID)) ,
+	#(
+	    #'stx:clients/AddrBook'
+	    #'stx:clients/Animation'
+	    #'stx:clients/Clock'
+	    #'stx:clients/Demos'
+	    #'stx:clients/DirView'
+	    #'stx:clients/DocTool'
+	    #'stx:clients/DrawTool'
+	    #'stx:clients/GLdemos'
+	    #'stx:clients/GuessingGame'
+	    #'stx:clients/LogicTool'
+	    #'stx:clients/MailTool'
+	    #'stx:clients/NewsTool'
+	    #'stx:clients/PingPong'
+	    #'stx:clients/Tetris'
+	    #'stx:clients/TicTacToe'
+	    #'stx:clients/TicTacToe3D'
+	    #'stx:clients/Tools'
+	    #'stx:goodies'
+	    #'stx:goodies/benchmarks'
+	    #'stx:goodies/benchmarks/deltaBlue'
+	    #'stx:goodies/benchmarks/dhrystones'
+	    #'stx:goodies/benchmarks/misc'
+	    #'stx:goodies/benchmarks/richards'
+	    #'stx:goodies/benchmarks/self'
+	    #'stx:goodies/communication'
+	    #'stx:goodies/dhbNumeric'
+	    #'stx:goodies/distributions'
+	    #'stx:goodies/glorp'
+	    #'stx:goodies/lisp'
+	    #'stx:goodies/math/fibonacci'
+	    #'stx:goodies/measurement'
+	    #'stx:goodies/minneStore'
+	    #'stx:goodies/obsolete'
+	    #'stx:goodies/persistency'
+	    #'stx:goodies/postscript'
+	    #'stx:goodies/prolog'
+	    #'stx:goodies/rdoit'
+	    #'stx:goodies/refactoryBrowser'
+	    #'stx:goodies/regex'
+	    #'stx:goodies/remoteObjects'
+	    #'stx:goodies/screenSavers'
+	    #'stx:goodies/sif'
+	    #'stx:goodies/smaCC'
+	    #'stx:goodies/soap'
+	    #'stx:goodies/soap/examples'
+	    #'stx:goodies/soap/opera'
+	    #'stx:goodies/soap/splash'
+	    #'stx:goodies/soap/spray'
+	    #'stx:goodies/soap/wsdl'
+	    #'stx:goodies/soap/xe'
+	    #'stx:goodies/soap/xmlsig'
+	    #'stx:goodies/sound'
+	    #'stx:goodies/stmath'
+	    #'stx:goodies/stxInExternalWindow'
+	    #'stx:goodies/sunit'
+	    #'stx:goodies/swazoo'
+	    #'stx:goodies/tgen'
+	    #'stx:goodies/webServer'
+	    #'stx:goodies/webServer/pwsSwiki'
+	    #'stx:goodies/xml-indelv'
+	    #'stx:goodies/xml-vw'
+	    #'stx:goodies/xml-yaxo'
+	    #'stx:libbasic'
+	    #'stx:libbasic2'
+	    #'stx:libbasic3'
+	    #'stx:libboss'
+	    #'stx:libcomp'
+	    #'stx:libcompat'
+	    #'stx:libhtml'
+	    #'stx:libjava'
+	    #'stx:libjava/examples'
+	    #'stx:libjavascript'
+	    #'stx:libodbc'
+	    #'stx:libopengl'
+	    #'stx:libsnmp'
+	    #'stx:libtable'
+	    #'stx:libtool'
+	    #'stx:libtool2'
+	    #'stx:libui'
+	    #'stx:libview'
+	    #'stx:libview2'
+	    #'stx:libwidg'
+	    #'stx:libwidg2'
+	    #'stx:libwidg3'
     )
 ! !
 
@@ -213,7 +213,7 @@
 
 changes
     imageChanges ifNil:[
-        imageChanges := OrderedCollection new.
+	imageChanges := OrderedCollection new.
     ].
     ^ imageChanges
 !
@@ -223,16 +223,16 @@
      | workingPackage packagesInImage|
 
     "/    self initialize.
-    currentManager 
-        ifNil:[ 
-            currentManager := self new.
+    currentManager
+	ifNil:[
+	    currentManager := self new.
 
-            packagesInImage := self basicPackagesInImage.
-            workingPackage := packagesInImage removeKey:#'__NoProject__'. 
+	    packagesInImage := self basicPackagesInImage.
+	    workingPackage := packagesInImage removeKey:(Project noProjectID).
 
-            currentManager addPackages:(packagesInImage). 
-            currentManager defaultPackage:workingPackage.
-        ].
+	    currentManager addPackages:(packagesInImage).
+	    currentManager defaultPackage:workingPackage.
+	].
     ^ currentManager
 ! !
 
@@ -265,39 +265,39 @@
 
     "collect the classes and mark where the extentions are"
     Smalltalk allClasses do:[:aClass |
-            aClass isNameSpace ifFalse:[
-                clsPkg := aClass package.
-                ((packagesInImage at: clsPkg 
-                                 ifAbsentPut:[clsPkg == #'__NoProject__' ifTrue:[
-                                    (Package named:clsPkg)
-                                 ] ifFalse:[(Package named:clsPkg)
-                                 ].         ])
-                    addedClass:aClass).
+	    aClass isNameSpace ifFalse:[
+		clsPkg := aClass package.
+		((packagesInImage at: clsPkg
+				 ifAbsentPut:[clsPkg == #'__NoProject__' ifTrue:[
+				    (Package named:clsPkg)
+				 ] ifFalse:[(Package named:clsPkg)
+				 ].         ])
+		    addedClass:aClass).
 
 "/                aClass hasExtensions ifTrue:[
-                    aClass instAndClassSelectorsAndMethodsDo:[:sel :mthd |
-                        |mthdPkg|
-                        mthdPkg := mthd package.
-                        mthdPkg ~= clsPkg ifTrue:[| methodPackage |
-                            "this is found out when you add a class!!"
+		    aClass instAndClassSelectorsAndMethodsDo:[:sel :mthd |
+			|mthdPkg|
+			mthdPkg := mthd package.
+			mthdPkg ~= clsPkg ifTrue:[| methodPackage |
+			    "this is found out when you add a class!!"
 "/                            (packagesInImage at: clsPkg) removeMethod:mthd. "does not belong to the package"
-                            methodPackage := 
-                                    (packagesInImage at: mthdPkg ifAbsentPut:[
-                                        mthdPkg == #'__NoProject__' ifTrue:[
-                                            (Package named:mthdPkg)
-                                         ] ifFalse:[(Package named:mthdPkg)
-                                         ].         
-                                     ]).
-                             methodPackage  addedMethod:mthd
+			    methodPackage :=
+				    (packagesInImage at: mthdPkg ifAbsentPut:[
+					mthdPkg == #'__NoProject__' ifTrue:[
+					    (Package named:mthdPkg)
+					 ] ifFalse:[(Package named:mthdPkg)
+					 ].
+				     ]).
+			     methodPackage  addedMethod:mthd
 
-                        ].
+			].
 "/                    ].
-                ] 
-            ]
+		]
+	    ]
     ].
 "/    packagesInImage removeKey:#''.    "remove namespaces"
     packagesInImage do:[:aPackage |
-        aPackage initializeInstalled.
+	aPackage initializeInstalled.
     ].
     "the following is needed in a fresh image!!"
     packagesInImage at:#'__NoProject__' ifAbsentPut:[(Package named:#'__NoProject__')].
@@ -307,11 +307,11 @@
 !PackageManager methodsFor:'accessing'!
 
 allClassCategories
-    | allClassCategories |  
+    | allClassCategories |
     allClassCategories := SortedCollection new.
 
     self packagesDo:[:aPackage |
-        allClassCategories addAll:aPackage classCategories
+	allClassCategories addAll:aPackage classCategories
     ].
 
     ^ allClassCategories
@@ -336,7 +336,7 @@
     is also the working package. Change the working package "
 
     workingPackage == defaultPackage ifTrue:[
-        workingPackage := something.
+	workingPackage := something.
     ].
 
     defaultPackage := something.
@@ -348,24 +348,24 @@
 
 packageNamed:anIdentifier ifAbsent:aBlock
     anIdentifier ifNil:[
-        ^ aBlock value
+	^ aBlock value
     ].
     defaultPackage name == anIdentifier ifTrue:[
-        ^ defaultPackage
+	^ defaultPackage
     ].
     ^ packages atKey:anIdentifier ifAbsent:aBlock
 !
 
-packagesAtCategoryName:aCategoryName 
+packagesAtCategoryName:aCategoryName
     ^ self packages select:[:aPackage |
-        (aPackage isInCategoryNamed:aCategoryName)
+	(aPackage isInCategoryNamed:aCategoryName)
     ].
 !
 
-packagesNamed:aCollectionOfPackageNames 
+packagesNamed:aCollectionOfPackageNames
 
     ^ (aCollectionOfPackageNames collect:[:aName |
-        self packageNamed:aName
+	self packageNamed:aName
     ]).
 !
 
@@ -381,7 +381,7 @@
 
 workingPackage:aPackage
     ((aPackage == defaultPackage) or:[self includesPackage:aPackage]) ifFalse:[
-        self error:'Trying to make a package that i do not know about the workingPackage!!'
+	self error:'Trying to make a package that i do not know about the workingPackage!!'
     ].
 
     workingPackage removeDependent:self.
@@ -405,7 +405,7 @@
 addPackages:aPackages
     "the reciever needs to be dependent on the packages just in case they change"
     aPackages do:[:aPackage |
-        self basicAddPackage:aPackage.
+	self basicAddPackage:aPackage.
     ].
     self changed:#addPackages: with:aPackages
 !
@@ -444,23 +444,23 @@
     | oldPackageName oldPackage |
 
     (self includesPackage:newPackage) ifFalse:[
-        self error:'The package manager does not know of the package ', newPackage name.
+	self error:'The package manager does not know of the package ', newPackage name.
     ].
     oldPackageName := aClass package.
     oldPackage := self packageNamed:oldPackageName.
 
     (oldPackageName == newPackage name) ifTrue:["error??"
-        newPackage addedClass:aClass.
-        ^ self  
+	newPackage addedClass:aClass.
+	^ self
     ].
 
-    self setClass:aClass toPackage:newPackage. 
+    self setClass:aClass toPackage:newPackage.
     PackageError handle:[:ex |
-        self setClass:aClass toPackage:oldPackage. 
-        ex raise.
-    ] do:[   
-        newPackage addedClass:aClass.
-        oldPackage overrideClassNamed:aClass name byPackageNamed:newPackage name.
+	self setClass:aClass toPackage:oldPackage.
+	ex raise.
+    ] do:[
+	newPackage addedClass:aClass.
+	oldPackage overrideClassNamed:aClass name byPackageNamed:newPackage name.
     ].
 !
 
@@ -468,33 +468,33 @@
     | oldPackageName oldPackage|
 
     (self includesPackage:newPackage) ifFalse:[
-        self error:'The package manager does not know of the package ', newPackage name.
+	self error:'The package manager does not know of the package ', newPackage name.
     ].
 "/    self moveClass:aClass toPackage:newPackage.
     oldPackageName := aMethod package.
     oldPackage := self packageNamed:oldPackageName.
 
     (oldPackageName == newPackage name) ifTrue:[
-        newPackage addedMethod:aMethod.            
-        ^ self  "error??"
+	newPackage addedMethod:aMethod.
+	^ self  "error??"
     ].
 
-    aMethod setPackage:newPackage name. 
+    aMethod setPackage:newPackage name.
 
-    newPackage addedMethod:aMethod.            
+    newPackage addedMethod:aMethod.
     oldPackage overrideMethod:aMethod byPackageNamed:newPackage name.
 !
 
-installPackage:aPackage 
+installPackage:aPackage
     "installs a package that the receiver is aware of into the image if not raise an error
     for the sender to catch so it is able to handle it"
     (self includesPackage:aPackage) ifFalse:[
-        self error:'The package manager does not know of the package ', aPackage name,' so it cannot be installed!!'
+	self error:'The package manager does not know of the package ', aPackage name,' so it cannot be installed!!'
     ].
     ^ (self getPackageHandlerForPackage:aPackage) installPackageIn:self
 !
 
-loadPackageFromFile:aFilename 
+loadPackageFromFile:aFilename
     "install a starter package which comes from a file. This is the
     a state where the package has not yet entered the image but it
     is a package that the receiver is aware of and has some initial
@@ -503,7 +503,7 @@
     ^ (self getPackageReaderForFile:aFilename) loadPackageIn:self .
 !
 
-moveClass:aClass toPackage:newOwnerPackage 
+moveClass:aClass toPackage:newOwnerPackage
     "i have the responsibilty to set aClasses new variable (newOwnerPackage name) and
     all the methods in aClass with the same package name!!
     "
@@ -512,33 +512,33 @@
     oldOwnerPackage := self packageNamed:aClass package.
 
     oldOwnerPackage ifNil:[
-        "error handling - if a package has accidentially been removed
-        and i do not know about it. Fake it and put it in the default package"
+	"error handling - if a package has accidentially been removed
+	and i do not know about it. Fake it and put it in the default package"
        oldOwnerPackage := defaultPackage.
        self setClass:aClass toPackage:defaultPackage.
        (defaultPackage includesPackagedClassNamed:aClass name) ifTrue:[
-           defaultPackage removedClassNamed:aClass name.
+	   defaultPackage removedClassNamed:aClass name.
        ].
        defaultPackage addedClass:aClass.
     ].
 
     oldOwnerPackage == newOwnerPackage ifTrue:[
-        (oldOwnerPackage includesPackagedClassNamed:aClass name) ifFalse:[
-            self setClass:aClass toPackage:newOwnerPackage.
-            oldOwnerPackage addedClass:aClass.
-        ].
-        ^ self.
+	(oldOwnerPackage includesPackagedClassNamed:aClass name) ifFalse:[
+	    self setClass:aClass toPackage:newOwnerPackage.
+	    oldOwnerPackage addedClass:aClass.
+	].
+	^ self.
     ].
     "change the value of package to the new name... not sure if this is the correct place for this"
     (oldOwnerPackage notNil
-        and:[aClass package == oldOwnerPackage name]) ifTrue:[
-            self setClass:aClass toPackage:newOwnerPackage.
+	and:[aClass package == oldOwnerPackage name]) ifTrue:[
+	    self setClass:aClass toPackage:newOwnerPackage.
     ].
 
     self moveClassNamed:aClass name fromPackage:oldOwnerPackage toPackage:newOwnerPackage.
 !
 
-moveClassNamed:aClassName fromPackage:fromPackage toPackage:newOwnerPackage 
+moveClassNamed:aClassName fromPackage:fromPackage toPackage:newOwnerPackage
     "i have the responsibilty to set aClasses new variable (newOwnerPackage name) and
     all the methods in aClass with the same package name!!
     "
@@ -549,34 +549,34 @@
     oldOwnerPackageIncludesMovingClass := oldPackageMovingClass notNil.
 
     oldOwnerPackageIncludesMovingClass ifFalse:[
-        self error:'Error ', fromPackage name, ' does not know this class!!'.
-        ^ self.
+	self error:'Error ', fromPackage name, ' does not know this class!!'.
+	^ self.
     ].
 
     (oldOwnerPackage == newOwnerPackage) ifTrue:[
-        "Mmm interesting. There is not much to do here. oldOwnerPackage knows the class already"
-        ^ self
+	"Mmm interesting. There is not much to do here. oldOwnerPackage knows the class already"
+	^ self
     ].
     (newPackagedClass := newOwnerPackage packagedClassNamed:aClassName) ifNotNil:[
-        PackageError raiseErrorString:newOwnerPackage name,  ' already knows a class with this name. Remove this class from here first!!'.
-        ^ self.
+	PackageError raiseErrorString:newOwnerPackage name,  ' already knows a class with this name. Remove this class from here first!!'.
+	^ self.
     ].
     oldOwnerPackage movedClassNamed:aClassName toPackage:newOwnerPackage
 !
 
-moveMethod:aMethod toPackage:newOwnerPackage 
+moveMethod:aMethod toPackage:newOwnerPackage
     |oldOwnerPackage|
 
     aMethod mclass ifNil:[
-        self error:'Cannot move a method without an owning class!!'
+	self error:'Cannot move a method without an owning class!!'
     ].
 
     oldOwnerPackage := self packageNamed:aMethod package ifAbsent:[defaultPackage].
 
-    self setMethod:aMethod toPackage:newOwnerPackage. 
+    self setMethod:aMethod toPackage:newOwnerPackage.
     (oldOwnerPackage definesSelector:aMethod name forClassNamed:(aMethod mclass name asSymbol)) ifFalse:[
-        newOwnerPackage addedMethod:aMethod.
-        ^ self
+	newOwnerPackage addedMethod:aMethod.
+	^ self
     ].
     oldOwnerPackage movedMethod:aMethod toPackage:newOwnerPackage
 !
@@ -596,48 +596,48 @@
     | overriddingPackage overriddingPackageName removingPackagedClass |
     removingPackagedClass :=  (fromPackage packagedClassNamed:removeClassName).
     (self includesPackage:fromPackage) ifFalse:[
-        self error:'The package manager does not know of the package ', fromPackage name.
+	self error:'The package manager does not know of the package ', fromPackage name.
     ].
 
     fromPackage == defaultPackage ifTrue:[
-        "when the packaged class is in the defaultClass it is removed from the system!!!!"
-        ^ removingPackagedClass removeFromSystem.
+	"when the packaged class is in the defaultClass it is removed from the system!!!!"
+	^ removingPackagedClass removeFromSystem.
     ].
     "if the fromPackage has been overridden all that needs to be done is that the
     packages that the fromPackage has overridden needs to be swapped to the package that
     the fromPackage has been overridden by. Then it can be removed from the fromPackage"
     removingPackagedClass isInSmalltalk ifFalse:[
-        overriddingPackageName := (fromPackage overriddingPackageNameAtClassName:removeClassName).
-        overriddingPackage := self packageNamed:overriddingPackageName.
-        overriddingPackage ifNotNil:[
-            self packagesDo:[:aPackage |
-                (fromPackage ~= aPackage and:[aPackage ~= defaultPackage]) ifTrue:[
-                    ((aPackage overriddenClassNamesByPackage:fromPackage) includes:removeClassName) ifTrue:[
-                        "to keep class in smalltalk"
+	overriddingPackageName := (fromPackage overriddingPackageNameAtClassName:removeClassName).
+	overriddingPackage := self packageNamed:overriddingPackageName.
+	overriddingPackage ifNotNil:[
+	    self packagesDo:[:aPackage |
+		(fromPackage ~= aPackage and:[aPackage ~= defaultPackage]) ifTrue:[
+		    ((aPackage overriddenClassNamesByPackage:fromPackage) includes:removeClassName) ifTrue:[
+			"to keep class in smalltalk"
 
-                        aPackage changePackageOverrideFromPackage:fromPackage toPackage:overriddingPackage
-                            forClassNamed:removeClassName.
-                    ].
-                ].
-            ].
-            ^ removingPackagedClass removeFromPackage.
-        ].
+			aPackage changePackageOverrideFromPackage:fromPackage toPackage:overriddingPackage
+			    forClassNamed:removeClassName.
+		    ].
+		].
+	    ].
+	    ^ removingPackagedClass removeFromPackage.
+	].
     ].
 
     "when we are here the fromPackage holds the currentRepresentation of the class in Smalltalk"
     moveToDefaultPackage ifTrue:[ | return |
-        self setClass:removingPackagedClass classInSmalltalk toPackage:defaultPackage.
-        self packagesDo:[:aPackage |  
-            ((aPackage overriddenClassNamesByPackage:fromPackage) includes:removeClassName) ifTrue:[
-                "to keep class in smalltalk"  
-                aPackage changePackageOverrideFromPackage:fromPackage toPackage:defaultPackage
-                    forClassNamed:removeClassName.
-            ].
-        ].
-        return := removingPackagedClass removeFromPackage.
-        removingPackagedClass package:defaultPackage.
-        defaultPackage addedPackagedClass:removingPackagedClass.
-        ^ return
+	self setClass:removingPackagedClass classInSmalltalk toPackage:defaultPackage.
+	self packagesDo:[:aPackage |
+	    ((aPackage overriddenClassNamesByPackage:fromPackage) includes:removeClassName) ifTrue:[
+		"to keep class in smalltalk"
+		aPackage changePackageOverrideFromPackage:fromPackage toPackage:defaultPackage
+		    forClassNamed:removeClassName.
+	    ].
+	].
+	return := removingPackagedClass removeFromPackage.
+	removingPackagedClass package:defaultPackage.
+	defaultPackage addedPackagedClass:removingPackagedClass.
+	^ return
     ].
 
     ^ removingPackagedClass removeFromSystem.
@@ -646,12 +646,12 @@
 removeMethod:aMethod fromPackage:aPackage
     "add method to a package. At this point it is determined to be a loose method or not"
     (self includesPackage:aPackage) ifFalse:[
-        self error:'The package manager does not know of the package ', aPackage name.
+	self error:'The package manager does not know of the package ', aPackage name.
     ].
     aPackage removedMethod:aMethod
 !
 
-savePackage:aPackage 
+savePackage:aPackage
     self savePackage:aPackage as:aPackage filename.
 !
 
@@ -659,40 +659,40 @@
     "saves a package that the receiver is aware of if not raise an error
     for the sender to catch so it is able to handle it"
     (self includesPackage:aPackage) ifFalse:[
-        self error:'This package manager is not responsible of the package ', aPackage name,' so it cannot be saved!!'
+	self error:'This package manager is not responsible of the package ', aPackage name,' so it cannot be saved!!'
     ].
 
     (self getPackageHandlerForPackage:aPackage) savePackageAs:aFilename.
     ^ aPackage.
 !
 
-uninstallPackage:aPackage 
+uninstallPackage:aPackage
     "need to include the restoration of packages aPackage has overridden!!!!!!!!"
     (self includesPackage:aPackage) ifFalse:[
-        self error:'The package manager does not know of the package ', aPackage name,' so it cannot be uninstalled!!'
+	self error:'The package manager does not know of the package ', aPackage name,' so it cannot be uninstalled!!'
     ].
 
     (self isBasePackage:aPackage) ifTrue:[
-        self error:aPackage name asString, ' is a base package and cannot be uninstalled!!'.
+	self error:aPackage name asString, ' is a base package and cannot be uninstalled!!'.
     ].
 
     aPackage uninstallFromManager:self.
 !
 
-unloadPackage:aPackage 
+unloadPackage:aPackage
     "unloads the package from the receiver.Does not need to
      make any checks here as it is not installed."
 
     (self includesPackage:aPackage) ifFalse:[
-        self error:'The package manager does not know of the package ', aPackage name.
+	self error:'The package manager does not know of the package ', aPackage name.
     ].
 
     (self isBasePackage:aPackage) ifTrue:[
-        self error:aPackage name asString, ' is a base package and cannot be unloaded!!'.
+	self error:aPackage name asString, ' is a base package and cannot be unloaded!!'.
     ].
 
     aPackage isInstalled ifTrue:[
-        self uninstallPackage:aPackage.
+	self uninstallPackage:aPackage.
     ].
     self removePackage:aPackage.
     aPackage removeFromSystem.
@@ -700,17 +700,17 @@
     ^ aPackage.
 !
 
-unloadPackageNamed:aPackageName 
+unloadPackageNamed:aPackageName
     "unloads the package from the receiver.Does not need to
      make any checks here as it is not installed."
     | aPackage |
     (self includesPackageNamed:aPackageName) ifFalse:[
-        self error:'The package manager does not know of the package ', aPackageName.
+	self error:'The package manager does not know of the package ', aPackageName.
     ].
     aPackage := self packageNamed:aPackageName.
     aPackage == workingPackage ifTrue:[
-        PackageNotification raiseUnloadingWorkingPackage:aPackageName.
-        workingPackage := defaultPackage.
+	PackageNotification raiseUnloadingWorkingPackage:aPackageName.
+	workingPackage := defaultPackage.
     ].
 
     self unloadPackage:aPackage.
@@ -718,29 +718,29 @@
 
 !PackageManager methodsFor:'basic admin'!
 
-setClass:aClass toPackage:newOwnerPackage 
+setClass:aClass toPackage:newOwnerPackage
     "sets the variable package in both class and methods belonging to the class
      but only with the same name as the classes old package"
     |oldOwnerPackageName newOwnerPackageName|
     newOwnerPackageName := newOwnerPackage name.
     oldOwnerPackageName := aClass package.
-    aClass setPackage:newOwnerPackageName. 
+    aClass setPackage:newOwnerPackageName.
     aClass methodDictionary copy keysAndValuesDo:[:aMethodName :aMethod |
-        aMethod package == oldOwnerPackageName ifTrue:[
-            aMethod setPackage:newOwnerPackageName    
-        ].
+	aMethod package == oldOwnerPackageName ifTrue:[
+	    aMethod setPackage:newOwnerPackageName
+	].
     ].
 
     aClass class methodDictionary copy keysAndValuesDo:[:aMethodName :aMethod |
-        aMethod package == oldOwnerPackageName ifTrue:[
-            aMethod setPackage:newOwnerPackageName    
-        ].
+	aMethod package == oldOwnerPackageName ifTrue:[
+	    aMethod setPackage:newOwnerPackageName
+	].
     ].
 !
 
-setMethod:aMethod toPackage:newOwnerPackage 
+setMethod:aMethod toPackage:newOwnerPackage
     "sets the variable package"
-    aMethod setPackage:newOwnerPackage name. 
+    aMethod setPackage:newOwnerPackage name.
 ! !
 
 !PackageManager methodsFor:'change & update'!
@@ -752,147 +752,147 @@
     "
     | classNameOfChange packageName changeClass changeMethod |
     aChange isCollection ifTrue:[
-        something == #removeAll: ifTrue:[
-            "happens after checking in"
+	something == #removeAll: ifTrue:[
+	    "happens after checking in"
 "/            self smalltalkChanges removeAll:aChange
-        ].
-        ^ self "do i need to do anything???"
+	].
+	^ self "do i need to do anything???"
     ].
     (aChange isClassChange) ifFalse:[
-        self error:' What is this???'.
-    ].           
+	self error:' What is this???'.
+    ].
 
     (aChange isKindOf:self methodPackageChangeClass) ifTrue:[| aMethod methodOwnedClass oldPackageName |
-        aMethod := aChange previousVersion.
-        methodOwnedClass := aChange changeClass.
-        oldPackageName := aChange oldPackageName.
-        self methodPackageChange:aMethod class:methodOwnedClass oldPackageName:oldPackageName.
-        ^ self
+	aMethod := aChange previousVersion.
+	methodOwnedClass := aChange changeClass.
+	oldPackageName := aChange oldPackageName.
+	self methodPackageChange:aMethod class:methodOwnedClass oldPackageName:oldPackageName.
+	^ self
     ].
     (aChange isKindOf:self classPackageChangeClass) ifTrue:[| classToMove oldPackageName |
-        classToMove := aChange changeClass.
-        oldPackageName := aChange oldPackageName.
-        self classPackageChange:classToMove oldPackageName:oldPackageName.
-        ^ self
+	classToMove := aChange changeClass.
+	oldPackageName := aChange oldPackageName.
+	self classPackageChange:classToMove oldPackageName:oldPackageName.
+	^ self
     ].
 
     (aChange isMethodCategoryChange) ifTrue:[
-        self packagesDo:[:aPackage |
-             "(aPackage isDependentOnMethodNamed:aChange selector forClassNamed:aChange className)" false ifTrue:[
-                aPackage methodCategoryChange:aChange.
-            ].
-        ].
-        ^ self
+	self packagesDo:[:aPackage |
+	     "(aPackage isDependentOnMethodNamed:aChange selector forClassNamed:aChange className)" false ifTrue:[
+		aPackage methodCategoryChange:aChange.
+	    ].
+	].
+	^ self
     ].
 
     "the following is similar to the one above"
     (aChange isMethodCategoryRenameChange) ifTrue:[
-        self packagesDo:[:aPackage |
-            "(aPackage isDependentOnMethodNamed:aChange selector forClassNamed:aChange className)"  false ifTrue:[
-                aPackage methodCategoryRenameChange:aChange.
-            ].
-        ].
-        ^ self
+	self packagesDo:[:aPackage |
+	    "(aPackage isDependentOnMethodNamed:aChange selector forClassNamed:aChange className)"  false ifTrue:[
+		aPackage methodCategoryRenameChange:aChange.
+	    ].
+	].
+	^ self
     ].
 
     (aChange isMethodRemoveChange) ifTrue:[
-        self packagesDo:[:aPackage |
-            (aPackage isDependentOnMethodNamed:aChange selector forClassNamed:aChange className) ifTrue:[
-                aChange previousVersion ifNotNil:[
-                    aPackage methodRemoveChange:aChange.
-                ].
-            ].
-        ].
-        ^ self
+	self packagesDo:[:aPackage |
+	    (aPackage isDependentOnMethodNamed:aChange selector forClassNamed:aChange className) ifTrue:[
+		aChange previousVersion ifNotNil:[
+		    aPackage methodRemoveChange:aChange.
+		].
+	    ].
+	].
+	^ self
     ].
 
     (aChange isMethodChange) ifTrue:[
-        "A new created method or a modified method"
-        changeMethod := aChange changeMethod.
-        packageName := changeMethod package.
+	"A new created method or a modified method"
+	changeMethod := aChange changeMethod.
+	packageName := changeMethod package.
 
-        self packagesDo:[:aPackage |
-            (Switch new)
-                if:[(aPackage name == packageName)] then:[
-                    self addMethod:changeMethod toPackage:aPackage];
-                if:[(aPackage isDependentOnMethodNamed:aChange selector forClassNamed:aChange className)] then:[
-                    aPackage methodChanged:aChange]; 
-                value.
-        ].                                                    
-        ^ self
+	self packagesDo:[:aPackage |
+	    (Switch new)
+		if:[(aPackage name == packageName)] then:[
+		    self addMethod:changeMethod toPackage:aPackage];
+		if:[(aPackage isDependentOnMethodNamed:aChange selector forClassNamed:aChange className)] then:[
+		    aPackage methodChanged:aChange];
+		value.
+	].
+	^ self
     ].
 
     aChange isClassChange ifTrue:[
-        (aChange isClassRemoveChange) ifTrue:[
-            "results in one package being overridden by Smalltalk"
-            classNameOfChange := aChange className asSymbol.
-            self packagesDo:[:aPackage |
-                (Switch new)
-                    if:[(aPackage isDependentOnClassNamed:classNameOfChange)] then:[
-                        aPackage classRemoveChange:aChange]; 
-                    value.
-                ].
-            ^ self
-        ].
+	(aChange isClassRemoveChange) ifTrue:[
+	    "results in one package being overridden by Smalltalk"
+	    classNameOfChange := aChange className asSymbol.
+	    self packagesDo:[:aPackage |
+		(Switch new)
+		    if:[(aPackage isDependentOnClassNamed:classNameOfChange)] then:[
+			aPackage classRemoveChange:aChange];
+		    value.
+		].
+	    ^ self
+	].
 
-        (aChange isClassDefinitionChange) ifTrue:[        
-            "This change is not added to the working class"
-            "changes to instance variables, classVariableNames, poolDictionaries, category"
+	(aChange isClassDefinitionChange) ifTrue:[
+	    "This change is not added to the working class"
+	    "changes to instance variables, classVariableNames, poolDictionaries, category"
 
-            classNameOfChange := aChange className asSymbol.
-            changeClass := aChange changeClass.
-            packageName := changeClass package.
+	    classNameOfChange := aChange className asSymbol.
+	    changeClass := aChange changeClass.
+	    packageName := changeClass package.
 
-            self packagesDo:[:aPackage |
-                (Switch new)
-                    if:[(aPackage name == packageName)] then:[
-                        (aPackage includesPackagedClassNamed:classNameOfChange) ifTrue:[
-                             aPackage removedClassNamed:classNameOfChange.
-                        ].
-                        aPackage addedClass:changeClass];
-                    if:[(aPackage isDependentOnClassNamed:classNameOfChange)] then:[
-                        aPackage classDefinitionChange:aChange]; 
-                    value.
+	    self packagesDo:[:aPackage |
+		(Switch new)
+		    if:[(aPackage name == packageName)] then:[
+			(aPackage includesPackagedClassNamed:classNameOfChange) ifTrue:[
+			     aPackage removedClassNamed:classNameOfChange.
+			].
+			aPackage addedClass:changeClass];
+		    if:[(aPackage isDependentOnClassNamed:classNameOfChange)] then:[
+			aPackage classDefinitionChange:aChange];
+		    value.
 
-            ].
-            ^ self
+	    ].
+	    ^ self
 
-        ].
-        (aChange isClassInstVarDefinitionChange)  ifTrue:[
-            "This change is not added to the working class"
-            "changes to instance variables, classVariableNames, poolDictionaries, category"
+	].
+	(aChange isClassInstVarDefinitionChange)  ifTrue:[
+	    "This change is not added to the working class"
+	    "changes to instance variables, classVariableNames, poolDictionaries, category"
 
-            classNameOfChange := aChange className.
-            changeClass := aChange changeClass.
-            packageName := changeClass package.
+	    classNameOfChange := aChange className.
+	    changeClass := aChange changeClass.
+	    packageName := changeClass package.
 
-            self packagesDo:[:aPackage |
-                (Switch new)
-                    if:[(aPackage name == packageName) ] then:[
-                        aPackage addedClass:changeClass];
-                    if:[(aPackage isDependentOnClassNamed:classNameOfChange) ] then:[
-                        aPackage classInstVarDefinitionChange:aChange].
-            ].
-            ^ self
-        ].
-        (aChange isClassRenameChange) ifTrue:[
-            "This change is not added to the working class"
-            classNameOfChange := aChange className.
-            changeClass := aChange changeClass.
-            packageName := changeClass package.
+	    self packagesDo:[:aPackage |
+		(Switch new)
+		    if:[(aPackage name == packageName) ] then:[
+			aPackage addedClass:changeClass];
+		    if:[(aPackage isDependentOnClassNamed:classNameOfChange) ] then:[
+			aPackage classInstVarDefinitionChange:aChange].
+	    ].
+	    ^ self
+	].
+	(aChange isClassRenameChange) ifTrue:[
+	    "This change is not added to the working class"
+	    classNameOfChange := aChange className.
+	    changeClass := aChange changeClass.
+	    packageName := changeClass package.
 
-            self packagesDo:[:aPackage |
-                (Switch new)
-                    if:[(aPackage name == packageName) ] then:[
-                        aPackage addedClass:changeClass];
-                    if:[(aPackage isDependentOnClassNamed:classNameOfChange) ] then:[
-                        aPackage classRenameChange:aChange]; 
-                    value.
-            ].
-            ^ self
-        ].
+	    self packagesDo:[:aPackage |
+		(Switch new)
+		    if:[(aPackage name == packageName) ] then:[
+			aPackage addedClass:changeClass];
+		    if:[(aPackage isDependentOnClassNamed:classNameOfChange) ] then:[
+			aPackage classRenameChange:aChange];
+		    value.
+	    ].
+	    ^ self
+	].
 
-        self breakPoint:''.
+	self breakPoint:''.
     ].
     self breakPoint:''.
 !
@@ -900,28 +900,28 @@
 classPackageChange:classToOverride oldPackageName:oldPackageName
     "reacts to a class package change
     Assertion:
-        aClass package ~= oldPackageName
+	aClass package ~= oldPackageName
     "
-    
-    self setClass:classToOverride toPackage:(self packageNamed:oldPackageName). 
+
+    self setClass:classToOverride toPackage:(self packageNamed:oldPackageName).
     self error:'Sorry, this function is no longer available other than within the packageBrowser. ', Character cr asString,
-        Character cr asString, ' This action has done nothing!!'.
+	Character cr asString, ' This action has done nothing!!'.
 
 "/    | newPackageName newOwnerPackage|
 "/    newPackageName := classToOverride package.
-"/    newOwnerPackage := self packageNamed:newPackageName ifAbsent:[self newPackageNamed:newPackageName].     
+"/    newOwnerPackage := self packageNamed:newPackageName ifAbsent:[self newPackageNamed:newPackageName].
 "/
 "/    "fake this... maybe this is a kludge..."
-"/    self setClass:classToOverride toPackage:(self packageNamed:oldPackageName). 
+"/    self setClass:classToOverride toPackage:(self packageNamed:oldPackageName).
 "/
 "/    self addClass:classToOverride toPackage:newOwnerPackage.
 !
 
 methodPackageChange:aMethod class:methodOwnedClass oldPackageName:oldPackageName
 
-    self setMethod:aMethod toPackage:(self packageNamed:oldPackageName). 
+    self setMethod:aMethod toPackage:(self packageNamed:oldPackageName).
     Transcript nextPutAll:'Sorry, this function is no longer available other than within the packageBrowser. ', Character cr asString,
-        Character cr asString, ' This action has done nothing!! >>methodPackageChange:aMethod class:methodOwnedClass oldPackageName:oldPackageName'.
+	Character cr asString, ' This action has done nothing!! >>methodPackageChange:aMethod class:methodOwnedClass oldPackageName:oldPackageName'.
 
 
 "/    | newPackageName oldOwnerPackage newOwnerPackage|
@@ -954,21 +954,21 @@
 update:something with:aParameter from:changedObject
 
     (self includesPackage:changedObject) ifTrue:[
-        self packageChanged:something with:aParameter from:changedObject.
-        ^ self.
+	self packageChanged:something with:aParameter from:changedObject.
+	^ self.
     ].
     (changedObject == ChangeSet current) ifTrue:[
-        self changeSetChanged:something with:aParameter from:changedObject.
-        ^ self.
+	self changeSetChanged:something with:aParameter from:changedObject.
+	^ self.
     ].
 ! !
 
 !PackageManager methodsFor:'checks'!
 
-canLoadPackage:aPackage 
+canLoadPackage:aPackage
     ""
     (self includesPackage:aPackage) ifTrue:[
-        Notification raise.
+	Notification raise.
     ].
 ! !
 
@@ -977,7 +977,7 @@
 packagesDo:aOneArgBlock
     "should this or should this not include the defaultPackage??? should it
     be treated seperately?"
-    aOneArgBlock value:defaultPackage.  
+    aOneArgBlock value:defaultPackage.
     super packagesDo:aOneArgBlock.
 !
 
@@ -988,7 +988,7 @@
     selectedPackages := (self packages select:aOneArgBlock).
 
     (aOneArgBlock value:defaultPackage) ifTrue:[
-        selectedPackages add:defaultPackage.
+	selectedPackages add:defaultPackage.
     ].
     ^ selectedPackages
 ! !
@@ -998,7 +998,7 @@
 recoveryHandlerDo:aBlock forException:packageErrorClass
     "an atomic action is about to happen. This should succeed or
     fail and return to the previous state."
-    
+
     "to do - this could be done by an extra class.
     could save the state of the receiver before this action is done
     along with a 'transaction number' held in the receivers class to make
@@ -1007,9 +1007,9 @@
     we are going to do this.
     "
     packageErrorClass handle:[:ex |
-        Transcript show:ex errorString.
+	Transcript show:ex errorString.
     ] do:[
-        aBlock value
+	aBlock value
     ]
 ! !
 
@@ -1019,21 +1019,21 @@
     ^ Smalltalk classNamed:#'Packages::ChangeFaker::ClassPackageChange'
 !
 
-getPackageSaverForPackage:aPackage 
-    ^ StxPackageFileWriter forPackage:aPackage 
+getPackageSaverForPackage:aPackage
+    ^ StxPackageFileWriter forPackage:aPackage
 !
 
 methodPackageChangeClass
     ^ Smalltalk classNamed:#'Packages::ChangeFaker::MethodPackageChange'
 !
 
-newPackageNamed:aString 
+newPackageNamed:aString
     | newPackage |
 
     (self includesPackageNamed:aString) ifTrue:[
-        PackageError raiseCannotAddAsPackageManagerAlreadyIncludesPackageNamed:aString
+	PackageError raiseCannotAddAsPackageManagerAlreadyIncludesPackageNamed:aString
     ].
-    
+
     newPackage := self packageClass named:aString addToManager:self.
     newPackage initializeInstalled.
     ^ newPackage
@@ -1054,7 +1054,7 @@
 uninitialize
 
     self packagesDo:[:aPackage |
-        self removeDependent:aPackage.
+	self removeDependent:aPackage.
     ].
     defaultPackage removeDependent:self.
 
@@ -1064,24 +1064,24 @@
 
 !PackageManager methodsFor:'private-opening'!
 
-getPackageHandlerForPackage:aPackage 
+getPackageHandlerForPackage:aPackage
 
     | aPackageHandler |
 
     (aPackageHandler := aPackage packageHandler) ifNil:[
-        aPackageHandler := PackageHandler forPackage:aPackage.
+	aPackageHandler := PackageHandler forPackage:aPackage.
     ].
 
     ^ aPackageHandler
 !
 
-getPackageReaderForFile:aFilename 
+getPackageReaderForFile:aFilename
     ^ StxPackageFileReader forFilename:aFilename
 ! !
 
 !PackageManager methodsFor:'queries'!
 
-includesPackage:anObject 
+includesPackage:anObject
     ^ ((packages includes:anObject)or:[defaultPackage == anObject])
 !
 
@@ -1093,7 +1093,7 @@
 !PackageManager class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libbasic3/packages/PackageManager.st,v 1.8 2006-01-10 09:25:20 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libbasic3/packages/PackageManager.st,v 1.9 2006-08-24 08:38:42 cg Exp $'
 ! !
 
 PackageManager initialize!