--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/packages/AbstractPackageManager.st Wed Apr 09 13:28:46 2003 +0200
@@ -0,0 +1,133 @@
+"{ Package: 'stx:libbasic3' }"
+
+"{ NameSpace: Packages }"
+
+Object subclass:#AbstractPackageManager
+ instanceVariableNames:'packages'
+ classVariableNames:''
+ poolDictionaries:''
+ category:'Package-Managers'
+!
+
+
+!AbstractPackageManager class methodsFor:'instance creation'!
+
+new
+ ^ self basicNew initialize
+! !
+
+!AbstractPackageManager class methodsFor:'defaults'!
+
+defaultPackages
+ ^ Dictionary new.
+! !
+
+!AbstractPackageManager class methodsFor:'factory'!
+
+newDefaultPackage
+ ^ (self newPackageNamed:#'__NoProject__') mergeFromImage.
+!
+
+newPackageNamed:aString
+ ^ self packageClass named:aString
+! !
+
+!AbstractPackageManager methodsFor:'accessing'!
+
+packages
+ ^ packages
+!
+
+packages:something
+ "set the value of the instance variable 'packages' (automatically generated)"
+
+ packages := something.
+! !
+
+!AbstractPackageManager methodsFor:'api'!
+
+installPackage:aPackage
+ "installs aPackage into the image."
+ self subclassResponsibility
+!
+
+loadPackage:aFilename
+ "loads a package ready for installation into the image"
+ self subclassResponsibility
+!
+
+savePackage:aPackage
+ "saves package"
+ self subclassResponsibility
+!
+
+savePackage:aPackage as:aFilename
+ "saves package"
+ self subclassResponsibility
+!
+
+uninstallPackage:aPackage
+ "uninstalls aPackage from the image"
+ self subclassResponsibility
+!
+
+unloadPackage:aPackage
+ "unloads the package from the receiver"
+ self subclassResponsibility
+! !
+
+!AbstractPackageManager methodsFor:'enumerating'!
+
+packagesDo:aOneArgBlock
+ self packagesDo:aOneArgBlock excluding:#().
+!
+
+packagesDo:aOneArgBlock excluding:aCollectionOrObject
+ "iterate through all packages except for aCollection of packages. Return the receiver.
+ also look at #packagesDo: if you dont want to exclude anything"
+ (aCollectionOrObject isCollection) ifTrue:[
+ self packages do:[:aPackage |
+ (aCollectionOrObject includes:aPackage) ifFalse:[
+ aOneArgBlock value:aPackage.
+ ].
+ ].
+ ^ self.
+ ].
+
+ self packages do:[:aPackage |
+ (aCollectionOrObject == aPackage) ifFalse:[
+ aOneArgBlock value:aPackage.
+ ].
+ ].
+! !
+
+!AbstractPackageManager methodsFor:'initialization'!
+
+initialize
+ packages := self class defaultPackages.
+ ChangeSet current addDependent:self.
+ Smalltalk addDependent:self.
+!
+
+uninitialize
+ packages := self class defaultPackages.
+ ChangeSet current removeDependent:self.
+ Smalltalk removeDependent:self.
+! !
+
+!AbstractPackageManager methodsFor:'queries'!
+
+includesPackage:aPackage
+ ^ packages includesKey:aPackage name
+!
+
+includesPackageNamed:aPackageName
+
+ ^ packages includesKey:aPackageName
+! !
+
+!AbstractPackageManager class methodsFor:'documentation'!
+
+version
+ ^ '$Header: /cvs/stx/stx/libbasic3/packages/AbstractPackageManager.st,v 1.1 2003-04-09 11:28:46 james Exp $'
+! !