packages/PackageManager.st
author james
Fri, 16 May 2003 13:45:11 +0200
changeset 1279 95a37d60edd8
parent 1268 9dc8d1b8ce9b
child 1285 143445ab234b
permissions -rw-r--r--
*** empty log message ***
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
1231
2f3a15bfac92 initial checkin
james
parents:
diff changeset
     1
"{ Package: 'stx:libbasic3' }"
2f3a15bfac92 initial checkin
james
parents:
diff changeset
     2
2f3a15bfac92 initial checkin
james
parents:
diff changeset
     3
"{ NameSpace: Packages }"
2f3a15bfac92 initial checkin
james
parents:
diff changeset
     4
2f3a15bfac92 initial checkin
james
parents:
diff changeset
     5
AbstractPackageManager subclass:#PackageManager
1268
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
     6
	instanceVariableNames:'workingPackage defaultPackage'
1231
2f3a15bfac92 initial checkin
james
parents:
diff changeset
     7
	classVariableNames:''
2f3a15bfac92 initial checkin
james
parents:
diff changeset
     8
	poolDictionaries:''
2f3a15bfac92 initial checkin
james
parents:
diff changeset
     9
	category:'Package-Managers'
2f3a15bfac92 initial checkin
james
parents:
diff changeset
    10
!
2f3a15bfac92 initial checkin
james
parents:
diff changeset
    11
2f3a15bfac92 initial checkin
james
parents:
diff changeset
    12
PackageManager class instanceVariableNames:'currentPackage currentManager imageChanges'
2f3a15bfac92 initial checkin
james
parents:
diff changeset
    13
2f3a15bfac92 initial checkin
james
parents:
diff changeset
    14
"
2f3a15bfac92 initial checkin
james
parents:
diff changeset
    15
 No other class instance variables are inherited by this class.
2f3a15bfac92 initial checkin
james
parents:
diff changeset
    16
"
2f3a15bfac92 initial checkin
james
parents:
diff changeset
    17
!
2f3a15bfac92 initial checkin
james
parents:
diff changeset
    18
2f3a15bfac92 initial checkin
james
parents:
diff changeset
    19
!PackageManager class methodsFor:'documentation'!
2f3a15bfac92 initial checkin
james
parents:
diff changeset
    20
2f3a15bfac92 initial checkin
james
parents:
diff changeset
    21
documentation
2f3a15bfac92 initial checkin
james
parents:
diff changeset
    22
"
2f3a15bfac92 initial checkin
james
parents:
diff changeset
    23
    PackageManager smalltalkPackageManager
2f3a15bfac92 initial checkin
james
parents:
diff changeset
    24
2f3a15bfac92 initial checkin
james
parents:
diff changeset
    25
    [author:]
2f3a15bfac92 initial checkin
james
parents:
diff changeset
    26
         (james@miraculix)
2f3a15bfac92 initial checkin
james
parents:
diff changeset
    27
2f3a15bfac92 initial checkin
james
parents:
diff changeset
    28
    [instance variables:]
2f3a15bfac92 initial checkin
james
parents:
diff changeset
    29
2f3a15bfac92 initial checkin
james
parents:
diff changeset
    30
    [class variables:]
2f3a15bfac92 initial checkin
james
parents:
diff changeset
    31
2f3a15bfac92 initial checkin
james
parents:
diff changeset
    32
    [see also:]
2f3a15bfac92 initial checkin
james
parents:
diff changeset
    33
2f3a15bfac92 initial checkin
james
parents:
diff changeset
    34
"
2f3a15bfac92 initial checkin
james
parents:
diff changeset
    35
!
2f3a15bfac92 initial checkin
james
parents:
diff changeset
    36
2f3a15bfac92 initial checkin
james
parents:
diff changeset
    37
documentation_exceptions
2f3a15bfac92 initial checkin
james
parents:
diff changeset
    38
"
2f3a15bfac92 initial checkin
james
parents:
diff changeset
    39
2f3a15bfac92 initial checkin
james
parents:
diff changeset
    40
    ClassDescription fileOutErrorSignal 
2f3a15bfac92 initial checkin
james
parents:
diff changeset
    41
            can occur when a class within a package is autoloaded. Handle in application
2f3a15bfac92 initial checkin
james
parents:
diff changeset
    42
2f3a15bfac92 initial checkin
james
parents:
diff changeset
    43
    [author:]
2f3a15bfac92 initial checkin
james
parents:
diff changeset
    44
         (james@miraculix)
2f3a15bfac92 initial checkin
james
parents:
diff changeset
    45
    
2f3a15bfac92 initial checkin
james
parents:
diff changeset
    46
"
2f3a15bfac92 initial checkin
james
parents:
diff changeset
    47
!
2f3a15bfac92 initial checkin
james
parents:
diff changeset
    48
2f3a15bfac92 initial checkin
james
parents:
diff changeset
    49
examples
2f3a15bfac92 initial checkin
james
parents:
diff changeset
    50
"
2f3a15bfac92 initial checkin
james
parents:
diff changeset
    51
2f3a15bfac92 initial checkin
james
parents:
diff changeset
    52
  more examples to be added:
2f3a15bfac92 initial checkin
james
parents:
diff changeset
    53
                                                                [exBegin]
2f3a15bfac92 initial checkin
james
parents:
diff changeset
    54
    ... add code fragment for 
2f3a15bfac92 initial checkin
james
parents:
diff changeset
    55
    ... executable example here ...
2f3a15bfac92 initial checkin
james
parents:
diff changeset
    56
                                                                [exEnd]
2f3a15bfac92 initial checkin
james
parents:
diff changeset
    57
"
2f3a15bfac92 initial checkin
james
parents:
diff changeset
    58
!
2f3a15bfac92 initial checkin
james
parents:
diff changeset
    59
2f3a15bfac92 initial checkin
james
parents:
diff changeset
    60
history
2f3a15bfac92 initial checkin
james
parents:
diff changeset
    61
    "Created: / 27.1.2003 / 13:57:50 / james"
2f3a15bfac92 initial checkin
james
parents:
diff changeset
    62
! !
2f3a15bfac92 initial checkin
james
parents:
diff changeset
    63
2f3a15bfac92 initial checkin
james
parents:
diff changeset
    64
!PackageManager class methodsFor:'instance creation'!
2f3a15bfac92 initial checkin
james
parents:
diff changeset
    65
2f3a15bfac92 initial checkin
james
parents:
diff changeset
    66
initialize
2f3a15bfac92 initial checkin
james
parents:
diff changeset
    67
    "Uninitialize Singleton"
2f3a15bfac92 initial checkin
james
parents:
diff changeset
    68
    currentManager ifNotNil:[
2f3a15bfac92 initial checkin
james
parents:
diff changeset
    69
        currentManager uninitialize.
2f3a15bfac92 initial checkin
james
parents:
diff changeset
    70
        currentManager := nil.
2f3a15bfac92 initial checkin
james
parents:
diff changeset
    71
        currentPackage := nil.
2f3a15bfac92 initial checkin
james
parents:
diff changeset
    72
    ]
2f3a15bfac92 initial checkin
james
parents:
diff changeset
    73
2f3a15bfac92 initial checkin
james
parents:
diff changeset
    74
"
2f3a15bfac92 initial checkin
james
parents:
diff changeset
    75
    self initialize
2f3a15bfac92 initial checkin
james
parents:
diff changeset
    76
"
2f3a15bfac92 initial checkin
james
parents:
diff changeset
    77
!
2f3a15bfac92 initial checkin
james
parents:
diff changeset
    78
2f3a15bfac92 initial checkin
james
parents:
diff changeset
    79
newManagerOfCurrentImage
2f3a15bfac92 initial checkin
james
parents:
diff changeset
    80
    | anInstance |
2f3a15bfac92 initial checkin
james
parents:
diff changeset
    81
    anInstance := self new.
2f3a15bfac92 initial checkin
james
parents:
diff changeset
    82
2f3a15bfac92 initial checkin
james
parents:
diff changeset
    83
    self basicPackagesInImage do:[:aPackage |
2f3a15bfac92 initial checkin
james
parents:
diff changeset
    84
        package isInstalled:true.
2f3a15bfac92 initial checkin
james
parents:
diff changeset
    85
        anInstance addPackage:aPackage
2f3a15bfac92 initial checkin
james
parents:
diff changeset
    86
    ].
2f3a15bfac92 initial checkin
james
parents:
diff changeset
    87
    ^ anInstance
2f3a15bfac92 initial checkin
james
parents:
diff changeset
    88
2f3a15bfac92 initial checkin
james
parents:
diff changeset
    89
"
2f3a15bfac92 initial checkin
james
parents:
diff changeset
    90
currentManager := self newManagerOfCurrentImage.
2f3a15bfac92 initial checkin
james
parents:
diff changeset
    91
"
2f3a15bfac92 initial checkin
james
parents:
diff changeset
    92
! !
2f3a15bfac92 initial checkin
james
parents:
diff changeset
    93
1268
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
    94
!PackageManager class methodsFor:'* As yet uncategorized *'!
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
    95
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
    96
basePackageNames
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
    97
    ^ #(
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
    98
            #'__NoProject__'
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
    99
            #'stx:clients/AddrBook'
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   100
            #'stx:clients/Animation'
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   101
            #'stx:clients/Clock'
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   102
            #'stx:clients/Demos'
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   103
            #'stx:clients/DirView'
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   104
            #'stx:clients/DocTool'
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   105
            #'stx:clients/DrawTool'
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   106
            #'stx:clients/GLdemos'
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   107
            #'stx:clients/GuessingGame'
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   108
            #'stx:clients/LogicTool'
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   109
            #'stx:clients/MailTool'
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   110
            #'stx:clients/NewsTool'
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   111
            #'stx:clients/PingPong'
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   112
            #'stx:clients/Tetris'
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   113
            #'stx:clients/TicTacToe'
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   114
            #'stx:clients/TicTacToe3D'
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   115
            #'stx:clients/Tools'
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   116
            #'stx:goodies'
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   117
            #'stx:goodies/benchmarks'
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   118
            #'stx:goodies/benchmarks/deltaBlue'
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   119
            #'stx:goodies/benchmarks/dhrystones'
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   120
            #'stx:goodies/benchmarks/misc'
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   121
            #'stx:goodies/benchmarks/richards'
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   122
            #'stx:goodies/benchmarks/self'
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   123
            #'stx:goodies/communication'
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   124
            #'stx:goodies/dhbNumeric'
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   125
            #'stx:goodies/distributions'
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   126
            #'stx:goodies/glorp'
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   127
            #'stx:goodies/lisp'
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   128
            #'stx:goodies/math/fibonacci'
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   129
            #'stx:goodies/measurement'
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   130
            #'stx:goodies/minneStore'
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   131
            #'stx:goodies/obsolete'
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   132
            #'stx:goodies/persistency'
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   133
            #'stx:goodies/postscript'
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   134
            #'stx:goodies/prolog'
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   135
            #'stx:goodies/rdoit'
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   136
            #'stx:goodies/refactoryBrowser'
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   137
            #'stx:goodies/regex'
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   138
            #'stx:goodies/remoteObjects'
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   139
            #'stx:goodies/screenSavers'
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   140
            #'stx:goodies/sif'
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   141
            #'stx:goodies/smaCC'
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   142
            #'stx:goodies/soap'
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   143
            #'stx:goodies/soap/examples'
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   144
            #'stx:goodies/soap/opera'
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   145
            #'stx:goodies/soap/splash'
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   146
            #'stx:goodies/soap/spray'
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   147
            #'stx:goodies/soap/wsdl'
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   148
            #'stx:goodies/soap/xe'
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   149
            #'stx:goodies/soap/xmlsig'
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   150
            #'stx:goodies/sound'
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   151
            #'stx:goodies/stmath'
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   152
            #'stx:goodies/stxInExternalWindow'
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   153
            #'stx:goodies/sunit'
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   154
            #'stx:goodies/swazoo'
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   155
            #'stx:goodies/tgen'
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   156
            #'stx:goodies/webServer'
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   157
            #'stx:goodies/webServer/pwsSwiki'
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   158
            #'stx:goodies/xml-indelv'
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   159
            #'stx:goodies/xml-vw'
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   160
            #'stx:goodies/xml-yaxo'
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   161
            #'stx:libbasic'
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   162
            #'stx:libbasic2'
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   163
            #'stx:libbasic3'
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   164
            #'stx:libboss'
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   165
            #'stx:libcomp'
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   166
            #'stx:libcompat'
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   167
            #'stx:libhtml'
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   168
            #'stx:libjava'
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   169
            #'stx:libjava/examples'
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   170
            #'stx:libjavascript'
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   171
            #'stx:libodbc'
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   172
            #'stx:libopengl'
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   173
            #'stx:libsnmp'
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   174
            #'stx:libtable'
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   175
            #'stx:libtool'
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   176
            #'stx:libtool2'
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   177
            #'stx:libui'
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   178
            #'stx:libview'
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   179
            #'stx:libview2'
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   180
            #'stx:libwidg'
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   181
            #'stx:libwidg2'
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   182
            #'stx:libwidg3'
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   183
    )
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   184
! !
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   185
1231
2f3a15bfac92 initial checkin
james
parents:
diff changeset
   186
!PackageManager class methodsFor:'accessing'!
2f3a15bfac92 initial checkin
james
parents:
diff changeset
   187
2f3a15bfac92 initial checkin
james
parents:
diff changeset
   188
changes
2f3a15bfac92 initial checkin
james
parents:
diff changeset
   189
    imageChanges ifNil:[
2f3a15bfac92 initial checkin
james
parents:
diff changeset
   190
        imageChanges := OrderedCollection new.
2f3a15bfac92 initial checkin
james
parents:
diff changeset
   191
    ].
2f3a15bfac92 initial checkin
james
parents:
diff changeset
   192
    ^ imageChanges
2f3a15bfac92 initial checkin
james
parents:
diff changeset
   193
!
2f3a15bfac92 initial checkin
james
parents:
diff changeset
   194
2f3a15bfac92 initial checkin
james
parents:
diff changeset
   195
smalltalkPackageManager
2f3a15bfac92 initial checkin
james
parents:
diff changeset
   196
    "/ to clear the singleton for the moment
2f3a15bfac92 initial checkin
james
parents:
diff changeset
   197
     | workingPackage packagesInImage|
2f3a15bfac92 initial checkin
james
parents:
diff changeset
   198
2f3a15bfac92 initial checkin
james
parents:
diff changeset
   199
    "/    self initialize.
2f3a15bfac92 initial checkin
james
parents:
diff changeset
   200
    currentManager 
2f3a15bfac92 initial checkin
james
parents:
diff changeset
   201
        ifNil:[ 
2f3a15bfac92 initial checkin
james
parents:
diff changeset
   202
            currentManager := self new.
2f3a15bfac92 initial checkin
james
parents:
diff changeset
   203
2f3a15bfac92 initial checkin
james
parents:
diff changeset
   204
            packagesInImage := self basicPackagesInImage.
1244
93e70ae3c90f *** empty log message ***
james
parents: 1242
diff changeset
   205
            workingPackage := packagesInImage removeKey:#'__NoProject__'. 
1231
2f3a15bfac92 initial checkin
james
parents:
diff changeset
   206
1268
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   207
            currentManager addPackages:(packagesInImage). 
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   208
            currentManager defaultPackage:workingPackage.
1231
2f3a15bfac92 initial checkin
james
parents:
diff changeset
   209
        ].
2f3a15bfac92 initial checkin
james
parents:
diff changeset
   210
    ^ currentManager
2f3a15bfac92 initial checkin
james
parents:
diff changeset
   211
! !
2f3a15bfac92 initial checkin
james
parents:
diff changeset
   212
2f3a15bfac92 initial checkin
james
parents:
diff changeset
   213
!PackageManager class methodsFor:'defaults'!
2f3a15bfac92 initial checkin
james
parents:
diff changeset
   214
2f3a15bfac92 initial checkin
james
parents:
diff changeset
   215
defaultPackages
2f3a15bfac92 initial checkin
james
parents:
diff changeset
   216
    ^ DictionaryStack new.
2f3a15bfac92 initial checkin
james
parents:
diff changeset
   217
! !
2f3a15bfac92 initial checkin
james
parents:
diff changeset
   218
2f3a15bfac92 initial checkin
james
parents:
diff changeset
   219
!PackageManager class methodsFor:'factory'!
2f3a15bfac92 initial checkin
james
parents:
diff changeset
   220
1268
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   221
defaultPackage
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   222
    ^ (Packages::Package named:#'__NoProject__')
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   223
!
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   224
1231
2f3a15bfac92 initial checkin
james
parents:
diff changeset
   225
packageClass
2f3a15bfac92 initial checkin
james
parents:
diff changeset
   226
    ^ Package
2f3a15bfac92 initial checkin
james
parents:
diff changeset
   227
! !
2f3a15bfac92 initial checkin
james
parents:
diff changeset
   228
2f3a15bfac92 initial checkin
james
parents:
diff changeset
   229
!PackageManager class methodsFor:'temporary'!
2f3a15bfac92 initial checkin
james
parents:
diff changeset
   230
2f3a15bfac92 initial checkin
james
parents:
diff changeset
   231
basicPackagesInImage
2f3a15bfac92 initial checkin
james
parents:
diff changeset
   232
    "builds up dictionary of the packages in the system taking the information of the classes and
2f3a15bfac92 initial checkin
james
parents:
diff changeset
   233
    methods so we have a complete picture but without the prerequisite information.
2f3a15bfac92 initial checkin
james
parents:
diff changeset
   234
    returns the dictionary"
2f3a15bfac92 initial checkin
james
parents:
diff changeset
   235
    | packagesInImage extentions clsPkg |
2f3a15bfac92 initial checkin
james
parents:
diff changeset
   236
2f3a15bfac92 initial checkin
james
parents:
diff changeset
   237
    packagesInImage := Dictionary new.
2f3a15bfac92 initial checkin
james
parents:
diff changeset
   238
    extentions := Dictionary new.
2f3a15bfac92 initial checkin
james
parents:
diff changeset
   239
2f3a15bfac92 initial checkin
james
parents:
diff changeset
   240
    "collect the classes and mark where the extentions are"
2f3a15bfac92 initial checkin
james
parents:
diff changeset
   241
    Smalltalk allClasses do:[:aClass |
1268
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   242
            aClass isNameSpace ifFalse:[
1231
2f3a15bfac92 initial checkin
james
parents:
diff changeset
   243
                clsPkg := aClass package.
1268
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   244
                ((packagesInImage at: clsPkg 
1231
2f3a15bfac92 initial checkin
james
parents:
diff changeset
   245
                                 ifAbsentPut:[clsPkg == #'__NoProject__' ifTrue:[
1268
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   246
                                    (Package named:clsPkg)
1231
2f3a15bfac92 initial checkin
james
parents:
diff changeset
   247
                                 ] ifFalse:[(Package named:clsPkg)
2f3a15bfac92 initial checkin
james
parents:
diff changeset
   248
                                 ].         ])
1268
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   249
                    addedClass:aClass).
1231
2f3a15bfac92 initial checkin
james
parents:
diff changeset
   250
2f3a15bfac92 initial checkin
james
parents:
diff changeset
   251
"/                aClass hasExtensions ifTrue:[
2f3a15bfac92 initial checkin
james
parents:
diff changeset
   252
                    aClass instAndClassSelectorsAndMethodsDo:[:sel :mthd |
2f3a15bfac92 initial checkin
james
parents:
diff changeset
   253
                        |mthdPkg|
2f3a15bfac92 initial checkin
james
parents:
diff changeset
   254
                        mthdPkg := mthd package.
2f3a15bfac92 initial checkin
james
parents:
diff changeset
   255
                        mthdPkg ~= clsPkg ifTrue:[| methodPackage |
2f3a15bfac92 initial checkin
james
parents:
diff changeset
   256
                            "this is found out when you add a class!!"
2f3a15bfac92 initial checkin
james
parents:
diff changeset
   257
"/                            (packagesInImage at: clsPkg) removeMethod:mthd. "does not belong to the package"
2f3a15bfac92 initial checkin
james
parents:
diff changeset
   258
                            methodPackage := 
2f3a15bfac92 initial checkin
james
parents:
diff changeset
   259
                                    (packagesInImage at: mthdPkg ifAbsentPut:[
2f3a15bfac92 initial checkin
james
parents:
diff changeset
   260
                                        mthdPkg == #'__NoProject__' ifTrue:[
1268
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   261
                                            (Package named:mthdPkg)
1231
2f3a15bfac92 initial checkin
james
parents:
diff changeset
   262
                                         ] ifFalse:[(Package named:mthdPkg)
2f3a15bfac92 initial checkin
james
parents:
diff changeset
   263
                                         ].         
2f3a15bfac92 initial checkin
james
parents:
diff changeset
   264
                                     ]).
2f3a15bfac92 initial checkin
james
parents:
diff changeset
   265
                             methodPackage  addedMethod:mthd
2f3a15bfac92 initial checkin
james
parents:
diff changeset
   266
2f3a15bfac92 initial checkin
james
parents:
diff changeset
   267
                        ].
2f3a15bfac92 initial checkin
james
parents:
diff changeset
   268
"/                    ].
2f3a15bfac92 initial checkin
james
parents:
diff changeset
   269
                ] 
1268
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   270
            ]
1231
2f3a15bfac92 initial checkin
james
parents:
diff changeset
   271
    ].
1268
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   272
"/    packagesInImage removeKey:#''.    "remove namespaces"
1231
2f3a15bfac92 initial checkin
james
parents:
diff changeset
   273
    packagesInImage do:[:aPackage |
2f3a15bfac92 initial checkin
james
parents:
diff changeset
   274
        aPackage initializeInstalled.
2f3a15bfac92 initial checkin
james
parents:
diff changeset
   275
    ].
1244
93e70ae3c90f *** empty log message ***
james
parents: 1242
diff changeset
   276
    "the following is needed in a fresh image!!"
1268
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   277
    packagesInImage at:#'__NoProject__' ifAbsentPut:[(Package named:#'__NoProject__')].
1231
2f3a15bfac92 initial checkin
james
parents:
diff changeset
   278
    ^ packagesInImage
2f3a15bfac92 initial checkin
james
parents:
diff changeset
   279
! !
2f3a15bfac92 initial checkin
james
parents:
diff changeset
   280
2f3a15bfac92 initial checkin
james
parents:
diff changeset
   281
!PackageManager methodsFor:'accessing'!
2f3a15bfac92 initial checkin
james
parents:
diff changeset
   282
1268
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   283
allClassCategories
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   284
    | allClassCategories |  
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   285
    allClassCategories := SortedCollection new.
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   286
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   287
    self packagesDo:[:aPackage |
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   288
        allClassCategories addAll:aPackage classCategories
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   289
    ].
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   290
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   291
    ^ allClassCategories
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   292
!
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   293
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   294
allPackageCategories
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   295
    ^ (self packages collect:[:aPackage | aPackage category]) asSet.
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   296
!
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   297
1231
2f3a15bfac92 initial checkin
james
parents:
diff changeset
   298
changes
2f3a15bfac92 initial checkin
james
parents:
diff changeset
   299
    ^ self class changes
2f3a15bfac92 initial checkin
james
parents:
diff changeset
   300
!
2f3a15bfac92 initial checkin
james
parents:
diff changeset
   301
1268
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   302
defaultPackage
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   303
    "return the value of the instance variable 'defaultPackage' (automatically generated)"
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   304
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   305
    ^ defaultPackage
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   306
!
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   307
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   308
defaultPackage:something
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   309
    "set the value of the instance variable 'defaultPackage' if the current default package
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   310
    is also the working package. Change the working package "
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   311
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   312
    workingPackage == defaultPackage ifTrue:[
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   313
        workingPackage := something.
1231
2f3a15bfac92 initial checkin
james
parents:
diff changeset
   314
    ].
1268
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   315
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   316
    defaultPackage := something.
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   317
!
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   318
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   319
packageNamed:anIdentifier
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   320
    ^ self packageNamed:anIdentifier ifAbsent:[nil]
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   321
!
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   322
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   323
packageNamed:anIdentifier ifAbsent:aBlock
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   324
    anIdentifier ifNil:[
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   325
        ^ aBlock value
1231
2f3a15bfac92 initial checkin
james
parents:
diff changeset
   326
    ].
1268
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   327
    defaultPackage name == anIdentifier ifTrue:[
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   328
        ^ defaultPackage
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   329
    ].
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   330
    ^ packages atKey:anIdentifier ifAbsent:aBlock
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   331
!
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   332
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   333
packagesAtCategoryName:aCategoryName 
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   334
    ^ self packages select:[:aPackage |
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   335
        (aPackage isInCategoryNamed:aCategoryName)
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   336
    ].
1231
2f3a15bfac92 initial checkin
james
parents:
diff changeset
   337
!
2f3a15bfac92 initial checkin
james
parents:
diff changeset
   338
2f3a15bfac92 initial checkin
james
parents:
diff changeset
   339
packagesNamed:aCollectionOfPackageNames 
2f3a15bfac92 initial checkin
james
parents:
diff changeset
   340
1268
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   341
    ^ (aCollectionOfPackageNames collect:[:aName |
1231
2f3a15bfac92 initial checkin
james
parents:
diff changeset
   342
        self packageNamed:aName
2f3a15bfac92 initial checkin
james
parents:
diff changeset
   343
    ]).
2f3a15bfac92 initial checkin
james
parents:
diff changeset
   344
!
2f3a15bfac92 initial checkin
james
parents:
diff changeset
   345
1279
95a37d60edd8 *** empty log message ***
james
parents: 1268
diff changeset
   346
smalltalkChanges
95a37d60edd8 *** empty log message ***
james
parents: 1268
diff changeset
   347
    ^ self class changes
95a37d60edd8 *** empty log message ***
james
parents: 1268
diff changeset
   348
!
95a37d60edd8 *** empty log message ***
james
parents: 1268
diff changeset
   349
1231
2f3a15bfac92 initial checkin
james
parents:
diff changeset
   350
workingPackage
2f3a15bfac92 initial checkin
james
parents:
diff changeset
   351
    "return the value of the instance variable 'workingPackage' (automatically generated)"
2f3a15bfac92 initial checkin
james
parents:
diff changeset
   352
2f3a15bfac92 initial checkin
james
parents:
diff changeset
   353
    ^ workingPackage
2f3a15bfac92 initial checkin
james
parents:
diff changeset
   354
!
2f3a15bfac92 initial checkin
james
parents:
diff changeset
   355
2f3a15bfac92 initial checkin
james
parents:
diff changeset
   356
workingPackage:aPackage
1268
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   357
    ((aPackage == defaultPackage) or:[self includesPackage:aPackage]) ifFalse:[
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   358
        self error:'Trying to make a package that i do not know about the workingPackage!!'
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   359
    ].
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   360
1231
2f3a15bfac92 initial checkin
james
parents:
diff changeset
   361
    workingPackage removeDependent:self.
2f3a15bfac92 initial checkin
james
parents:
diff changeset
   362
    workingPackage:= aPackage.
2f3a15bfac92 initial checkin
james
parents:
diff changeset
   363
    workingPackage addDependent:self.
2f3a15bfac92 initial checkin
james
parents:
diff changeset
   364
! !
2f3a15bfac92 initial checkin
james
parents:
diff changeset
   365
2f3a15bfac92 initial checkin
james
parents:
diff changeset
   366
!PackageManager methodsFor:'adding & removing'!
2f3a15bfac92 initial checkin
james
parents:
diff changeset
   367
2f3a15bfac92 initial checkin
james
parents:
diff changeset
   368
addChange:aChange
2f3a15bfac92 initial checkin
james
parents:
diff changeset
   369
    ^ self class changes add:aChange.
2f3a15bfac92 initial checkin
james
parents:
diff changeset
   370
!
2f3a15bfac92 initial checkin
james
parents:
diff changeset
   371
2f3a15bfac92 initial checkin
james
parents:
diff changeset
   372
addPackage:aPackage
2f3a15bfac92 initial checkin
james
parents:
diff changeset
   373
    "the reciever needs to be dependent on the packages just in case they change"
2f3a15bfac92 initial checkin
james
parents:
diff changeset
   374
    aPackage addDependent:self.
2f3a15bfac92 initial checkin
james
parents:
diff changeset
   375
    self basicAddPackage:aPackage.
2f3a15bfac92 initial checkin
james
parents:
diff changeset
   376
    self changed:#addPackage: with:aPackage
2f3a15bfac92 initial checkin
james
parents:
diff changeset
   377
!
2f3a15bfac92 initial checkin
james
parents:
diff changeset
   378
2f3a15bfac92 initial checkin
james
parents:
diff changeset
   379
addPackages:aPackages
2f3a15bfac92 initial checkin
james
parents:
diff changeset
   380
    "the reciever needs to be dependent on the packages just in case they change"
2f3a15bfac92 initial checkin
james
parents:
diff changeset
   381
    aPackages do:[:aPackage |
2f3a15bfac92 initial checkin
james
parents:
diff changeset
   382
        self basicAddPackage:aPackage.
2f3a15bfac92 initial checkin
james
parents:
diff changeset
   383
    ].
2f3a15bfac92 initial checkin
james
parents:
diff changeset
   384
    self changed:#addPackages: with:aPackages
2f3a15bfac92 initial checkin
james
parents:
diff changeset
   385
!
2f3a15bfac92 initial checkin
james
parents:
diff changeset
   386
2f3a15bfac92 initial checkin
james
parents:
diff changeset
   387
basicAddPackage:aPackage
2f3a15bfac92 initial checkin
james
parents:
diff changeset
   388
    "the reciever needs to be dependent on the packages just in case they change"
2f3a15bfac92 initial checkin
james
parents:
diff changeset
   389
    packages push:aPackage.
2f3a15bfac92 initial checkin
james
parents:
diff changeset
   390
!
2f3a15bfac92 initial checkin
james
parents:
diff changeset
   391
2f3a15bfac92 initial checkin
james
parents:
diff changeset
   392
basicRemovePackage:aPackage
2f3a15bfac92 initial checkin
james
parents:
diff changeset
   393
    ^ packages removeKey:aPackage name
2f3a15bfac92 initial checkin
james
parents:
diff changeset
   394
!
2f3a15bfac92 initial checkin
james
parents:
diff changeset
   395
2f3a15bfac92 initial checkin
james
parents:
diff changeset
   396
removeChange:aChange
2f3a15bfac92 initial checkin
james
parents:
diff changeset
   397
    ^ self class changes remove:aChange.
2f3a15bfac92 initial checkin
james
parents:
diff changeset
   398
!
2f3a15bfac92 initial checkin
james
parents:
diff changeset
   399
2f3a15bfac92 initial checkin
james
parents:
diff changeset
   400
removePackage:aPackage
2f3a15bfac92 initial checkin
james
parents:
diff changeset
   401
    "the reciever needs to be dependent on the packages just in case they change"
2f3a15bfac92 initial checkin
james
parents:
diff changeset
   402
    aPackage removeDependent:self.
2f3a15bfac92 initial checkin
james
parents:
diff changeset
   403
    self basicRemovePackage:aPackage.
2f3a15bfac92 initial checkin
james
parents:
diff changeset
   404
    self changed:#removePackage: with:aPackage
2f3a15bfac92 initial checkin
james
parents:
diff changeset
   405
!
2f3a15bfac92 initial checkin
james
parents:
diff changeset
   406
2f3a15bfac92 initial checkin
james
parents:
diff changeset
   407
removePackageNamed:aPackageName
2f3a15bfac92 initial checkin
james
parents:
diff changeset
   408
    | aPackage |
2f3a15bfac92 initial checkin
james
parents:
diff changeset
   409
    aPackage := (packages removeKey:aPackageName).
2f3a15bfac92 initial checkin
james
parents:
diff changeset
   410
    aPackage removeDependent:self.
2f3a15bfac92 initial checkin
james
parents:
diff changeset
   411
    self changed:#removePackage: with:aPackage
2f3a15bfac92 initial checkin
james
parents:
diff changeset
   412
! !
2f3a15bfac92 initial checkin
james
parents:
diff changeset
   413
2f3a15bfac92 initial checkin
james
parents:
diff changeset
   414
!PackageManager methodsFor:'api'!
2f3a15bfac92 initial checkin
james
parents:
diff changeset
   415
1268
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   416
addClass:aClass toPackage:newPackage
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   417
    "A manager type of the method which should not be called from Smalltalk changes"
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   418
    | oldPackageName oldPackage |
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   419
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   420
    (self includesPackage:newPackage) ifFalse:[
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   421
        self error:'The package manager does not know of the package ', newPackage name.
1231
2f3a15bfac92 initial checkin
james
parents:
diff changeset
   422
    ].
1268
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   423
    oldPackageName := aClass package.
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   424
    oldPackage := self packageNamed:oldPackageName.
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   425
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   426
    (oldPackageName == newPackage name) ifTrue:["error??"
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   427
        newPackage addedClass:aClass.
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   428
        ^ self  
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   429
    ].
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   430
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   431
    self setClass:aClass toPackage:newPackage. 
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   432
    PackageError handle:[:ex |
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   433
        self setClass:aClass toPackage:oldPackage. 
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   434
        ex raise.
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   435
    ] do:[   
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   436
        newPackage addedClass:aClass.
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   437
        oldPackage overrideClassNamed:aClass name byPackageNamed:newPackage name.
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   438
    ].
1231
2f3a15bfac92 initial checkin
james
parents:
diff changeset
   439
!
2f3a15bfac92 initial checkin
james
parents:
diff changeset
   440
1268
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   441
addMethod:aMethod toPackage:newPackage
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   442
    | oldPackageName oldPackage|
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   443
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   444
    (self includesPackage:newPackage) ifFalse:[
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   445
        self error:'The package manager does not know of the package ', newPackage name.
1231
2f3a15bfac92 initial checkin
james
parents:
diff changeset
   446
    ].
1268
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   447
"/    self moveClass:aClass toPackage:newPackage.
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   448
    oldPackageName := aMethod package.
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   449
    oldPackage := self packageNamed:oldPackageName.
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   450
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   451
    (oldPackageName == newPackage name) ifTrue:[
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   452
        newPackage addedMethod:aMethod.            
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   453
        ^ self  "error??"
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   454
    ].
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   455
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   456
    aMethod setPackage:newPackage name. 
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   457
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   458
    newPackage addedMethod:aMethod.            
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   459
    oldPackage overrideMethod:aMethod byPackageNamed:newPackage name.
1231
2f3a15bfac92 initial checkin
james
parents:
diff changeset
   460
!
2f3a15bfac92 initial checkin
james
parents:
diff changeset
   461
2f3a15bfac92 initial checkin
james
parents:
diff changeset
   462
installPackage:aPackage 
2f3a15bfac92 initial checkin
james
parents:
diff changeset
   463
    "installs a package that the receiver is aware of into the image if not raise an error
2f3a15bfac92 initial checkin
james
parents:
diff changeset
   464
    for the sender to catch so it is able to handle it"
2f3a15bfac92 initial checkin
james
parents:
diff changeset
   465
    (self includesPackage:aPackage) ifFalse:[
2f3a15bfac92 initial checkin
james
parents:
diff changeset
   466
        self error:'The package manager does not know of the package ', aPackage name,' so it cannot be installed!!'
2f3a15bfac92 initial checkin
james
parents:
diff changeset
   467
    ].
2f3a15bfac92 initial checkin
james
parents:
diff changeset
   468
    ^ (self getPackageHandlerForPackage:aPackage) installPackageIn:self
2f3a15bfac92 initial checkin
james
parents:
diff changeset
   469
!
2f3a15bfac92 initial checkin
james
parents:
diff changeset
   470
2f3a15bfac92 initial checkin
james
parents:
diff changeset
   471
loadPackageFromFile:aFilename 
2f3a15bfac92 initial checkin
james
parents:
diff changeset
   472
    "install a starter package which comes from a file. This is the
2f3a15bfac92 initial checkin
james
parents:
diff changeset
   473
    a state where the package has not yet entered the image but it
2f3a15bfac92 initial checkin
james
parents:
diff changeset
   474
    is a package that the receiver is aware of and has some initial
2f3a15bfac92 initial checkin
james
parents:
diff changeset
   475
    information about. Return the installed Package"
2f3a15bfac92 initial checkin
james
parents:
diff changeset
   476
2f3a15bfac92 initial checkin
james
parents:
diff changeset
   477
    ^ (self getPackageReaderForFile:aFilename) loadPackageIn:self .
2f3a15bfac92 initial checkin
james
parents:
diff changeset
   478
!
2f3a15bfac92 initial checkin
james
parents:
diff changeset
   479
2f3a15bfac92 initial checkin
james
parents:
diff changeset
   480
moveClass:aClass toPackage:newOwnerPackage 
2f3a15bfac92 initial checkin
james
parents:
diff changeset
   481
    "i have the responsibilty to set aClasses new variable (newOwnerPackage name) and
2f3a15bfac92 initial checkin
james
parents:
diff changeset
   482
    all the methods in aClass with the same package name!!
2f3a15bfac92 initial checkin
james
parents:
diff changeset
   483
    "
1268
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   484
    | oldOwnerPackage|
1231
2f3a15bfac92 initial checkin
james
parents:
diff changeset
   485
1268
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   486
    oldOwnerPackage := self packageNamed:aClass package.
1231
2f3a15bfac92 initial checkin
james
parents:
diff changeset
   487
2f3a15bfac92 initial checkin
james
parents:
diff changeset
   488
    oldOwnerPackage ifNil:[
1244
93e70ae3c90f *** empty log message ***
james
parents: 1242
diff changeset
   489
        "error handling - if a package has accidentially been removed
1268
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   490
        and i do not know about it. Fake it and put it in the default package"
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   491
       oldOwnerPackage := defaultPackage.
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   492
       self setClass:aClass toPackage:defaultPackage.
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   493
       (defaultPackage includesPackagedClassNamed:aClass name) ifTrue:[
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   494
           defaultPackage removedClassNamed:aClass name.
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   495
       ].
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   496
       defaultPackage addedClass:aClass.
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   497
    ].
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   498
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   499
    oldOwnerPackage == newOwnerPackage ifTrue:[
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   500
        (oldOwnerPackage includesPackagedClassNamed:aClass name) ifFalse:[
1279
95a37d60edd8 *** empty log message ***
james
parents: 1268
diff changeset
   501
            self setClass:aClass toPackage:newOwnerPackage.
1268
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   502
            oldOwnerPackage addedClass:aClass.
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   503
        ].
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   504
        ^ self.
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   505
    ].
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   506
    "change the value of package to the new name... not sure if this is the correct place for this"
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   507
    (oldOwnerPackage notNil
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   508
        and:[aClass package == oldOwnerPackage name]) ifTrue:[
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   509
            self setClass:aClass toPackage:newOwnerPackage.
1231
2f3a15bfac92 initial checkin
james
parents:
diff changeset
   510
    ].
2f3a15bfac92 initial checkin
james
parents:
diff changeset
   511
1268
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   512
    self moveClassNamed:aClass name fromPackage:oldOwnerPackage toPackage:newOwnerPackage.
1231
2f3a15bfac92 initial checkin
james
parents:
diff changeset
   513
!
2f3a15bfac92 initial checkin
james
parents:
diff changeset
   514
1268
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   515
moveClassNamed:aClassName fromPackage:fromPackage toPackage:newOwnerPackage 
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   516
    "i have the responsibilty to set aClasses new variable (newOwnerPackage name) and
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   517
    all the methods in aClass with the same package name!!
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   518
    "
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   519
    | oldOwnerPackage oldOwnerPackageIncludesMovingClass oldPackageMovingClass newPackagedClass |
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   520
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   521
    oldOwnerPackage := fromPackage.
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   522
    oldPackageMovingClass := (oldOwnerPackage packagedClassNamed:aClassName).
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   523
    oldOwnerPackageIncludesMovingClass := oldPackageMovingClass notNil.
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   524
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   525
    oldOwnerPackageIncludesMovingClass ifFalse:[
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   526
        self error:'Error ', fromPackage name, ' does not know this class!!'.
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   527
        ^ self.
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   528
    ].
1231
2f3a15bfac92 initial checkin
james
parents:
diff changeset
   529
1268
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   530
    (oldOwnerPackage == newOwnerPackage) ifTrue:[
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   531
        "Mmm interesting. There is not much to do here. oldOwnerPackage knows the class already"
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   532
        ^ self
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   533
    ].
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   534
    (newPackagedClass := newOwnerPackage packagedClassNamed:aClassName) ifNotNil:[
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   535
        PackageError raiseErrorString:newOwnerPackage name,  ' already knows a class with this name. Remove this class from here first!!'.
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   536
        ^ self.
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   537
    ].
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   538
    oldOwnerPackage movedClassNamed:aClassName toPackage:newOwnerPackage
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   539
!
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   540
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   541
moveMethod:aMethod toPackage:newOwnerPackage 
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   542
    |oldOwnerPackage|
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   543
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   544
    aMethod mclass ifNil:[
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   545
        self error:'Cannot move a method without an owning class!!'
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   546
    ].
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   547
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   548
    oldOwnerPackage := self packageNamed:aMethod package ifAbsent:[defaultPackage].
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   549
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   550
    self setMethod:aMethod toPackage:newOwnerPackage. 
1279
95a37d60edd8 *** empty log message ***
james
parents: 1268
diff changeset
   551
    (oldOwnerPackage definesSelector:aMethod name forClassNamed:(aMethod mclass name asSymbol)) ifFalse:[
1268
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   552
        newOwnerPackage addedMethod:aMethod.
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   553
        ^ self
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   554
    ].
1231
2f3a15bfac92 initial checkin
james
parents:
diff changeset
   555
    oldOwnerPackage movedMethod:aMethod toPackage:newOwnerPackage
2f3a15bfac92 initial checkin
james
parents:
diff changeset
   556
!
2f3a15bfac92 initial checkin
james
parents:
diff changeset
   557
1268
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   558
removeClassNamed:aClass fromPackage:fromPackage
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   559
    ^ self removeClassNamed:aClass fromPackage:fromPackage moveToDefaultPackage:true.
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   560
!
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   561
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   562
removeClassNamed:removeClassName fromPackage:fromPackage moveToDefaultPackage:moveToDefaultPackage
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   563
    "this is different from removing a class from a system. If you want to do that do
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   564
    aClass removeFromSystem and the package manager will react!!
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   565
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   566
    This is an administration remove on the packages and just moves aClass to the responsibility
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   567
    of the package manager's default class and removes all responsibilites from fromPackage.
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   568
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   569
    "
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   570
    | overriddingPackage overriddingPackageName removingPackagedClass |
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   571
    removingPackagedClass :=  (fromPackage packagedClassNamed:removeClassName).
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   572
    (self includesPackage:fromPackage) ifFalse:[
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   573
        self error:'The package manager does not know of the package ', fromPackage name.
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   574
    ].
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   575
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   576
    fromPackage == defaultPackage ifTrue:[
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   577
        "when the packaged class is in the defaultClass it is removed from the system!!!!"
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   578
        ^ removingPackagedClass removeFromSystem.
1231
2f3a15bfac92 initial checkin
james
parents:
diff changeset
   579
    ].
1268
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   580
    "if the fromPackage has been overridden all that needs to be done is that the
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   581
    packages that the fromPackage has overridden needs to be swapped to the package that
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   582
    the fromPackage has been overridden by. Then it can be removed from the fromPackage"
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   583
    removingPackagedClass isInSmalltalk ifFalse:[
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   584
        overriddingPackageName := (fromPackage overriddingPackageNameAtClassName:removeClassName).
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   585
        overriddingPackage := self packageNamed:overriddingPackageName.
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   586
        overriddingPackage ifNotNil:[
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   587
            self packagesDo:[:aPackage |
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   588
                (fromPackage ~= aPackage and:[aPackage ~= defaultPackage]) ifTrue:[
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   589
                    ((aPackage overriddenClassNamesByPackage:fromPackage) includes:removeClassName) ifTrue:[
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   590
                        "to keep class in smalltalk"
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   591
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   592
                        aPackage changePackageOverrideFromPackage:fromPackage toPackage:overriddingPackage
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   593
                            forClassNamed:removeClassName.
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   594
                    ].
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   595
                ].
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   596
            ].
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   597
            ^ removingPackagedClass removeFromPackage.
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   598
        ].
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   599
    ].
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   600
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   601
    "when we are here the fromPackage holds the currentRepresentation of the class in Smalltalk"
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   602
    moveToDefaultPackage ifTrue:[ | return |
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   603
        self setClass:removingPackagedClass classInSmalltalk toPackage:defaultPackage.
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   604
        self packagesDo:[:aPackage |  
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   605
            ((aPackage overriddenClassNamesByPackage:fromPackage) includes:removeClassName) ifTrue:[
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   606
                "to keep class in smalltalk"  
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   607
                aPackage changePackageOverrideFromPackage:fromPackage toPackage:defaultPackage
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   608
                    forClassNamed:removeClassName.
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   609
            ].
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   610
        ].
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   611
        return := removingPackagedClass removeFromPackage.
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   612
        removingPackagedClass package:defaultPackage.
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   613
        defaultPackage addedPackagedClass:removingPackagedClass.
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   614
        ^ return
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   615
    ].
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   616
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   617
    ^ removingPackagedClass removeFromSystem.
1231
2f3a15bfac92 initial checkin
james
parents:
diff changeset
   618
!
2f3a15bfac92 initial checkin
james
parents:
diff changeset
   619
2f3a15bfac92 initial checkin
james
parents:
diff changeset
   620
removeMethod:aMethod fromPackage:aPackage
2f3a15bfac92 initial checkin
james
parents:
diff changeset
   621
    "add method to a package. At this point it is determined to be a loose method or not"
2f3a15bfac92 initial checkin
james
parents:
diff changeset
   622
    (self includesPackage:aPackage) ifFalse:[
2f3a15bfac92 initial checkin
james
parents:
diff changeset
   623
        self error:'The package manager does not know of the package ', aPackage name.
2f3a15bfac92 initial checkin
james
parents:
diff changeset
   624
    ].
2f3a15bfac92 initial checkin
james
parents:
diff changeset
   625
    aPackage removedMethod:aMethod
2f3a15bfac92 initial checkin
james
parents:
diff changeset
   626
!
2f3a15bfac92 initial checkin
james
parents:
diff changeset
   627
2f3a15bfac92 initial checkin
james
parents:
diff changeset
   628
savePackage:aPackage 
2f3a15bfac92 initial checkin
james
parents:
diff changeset
   629
    self savePackage:aPackage as:aPackage filename.
2f3a15bfac92 initial checkin
james
parents:
diff changeset
   630
!
2f3a15bfac92 initial checkin
james
parents:
diff changeset
   631
2f3a15bfac92 initial checkin
james
parents:
diff changeset
   632
savePackage:aPackage as:aFilename
2f3a15bfac92 initial checkin
james
parents:
diff changeset
   633
    "saves a package that the receiver is aware of if not raise an error
2f3a15bfac92 initial checkin
james
parents:
diff changeset
   634
    for the sender to catch so it is able to handle it"
2f3a15bfac92 initial checkin
james
parents:
diff changeset
   635
    (self includesPackage:aPackage) ifFalse:[
2f3a15bfac92 initial checkin
james
parents:
diff changeset
   636
        self error:'This package manager is not responsible of the package ', aPackage name,' so it cannot be saved!!'
2f3a15bfac92 initial checkin
james
parents:
diff changeset
   637
    ].
2f3a15bfac92 initial checkin
james
parents:
diff changeset
   638
2f3a15bfac92 initial checkin
james
parents:
diff changeset
   639
    (self getPackageHandlerForPackage:aPackage) savePackageAs:aFilename.
2f3a15bfac92 initial checkin
james
parents:
diff changeset
   640
    ^ aPackage.
2f3a15bfac92 initial checkin
james
parents:
diff changeset
   641
!
2f3a15bfac92 initial checkin
james
parents:
diff changeset
   642
2f3a15bfac92 initial checkin
james
parents:
diff changeset
   643
uninstallPackage:aPackage 
2f3a15bfac92 initial checkin
james
parents:
diff changeset
   644
    "need to include the restoration of packages aPackage has overridden!!!!!!!!"
2f3a15bfac92 initial checkin
james
parents:
diff changeset
   645
    (self includesPackage:aPackage) ifFalse:[
2f3a15bfac92 initial checkin
james
parents:
diff changeset
   646
        self error:'The package manager does not know of the package ', aPackage name,' so it cannot be uninstalled!!'
2f3a15bfac92 initial checkin
james
parents:
diff changeset
   647
    ].
2f3a15bfac92 initial checkin
james
parents:
diff changeset
   648
1268
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   649
    (self isBasePackage:aPackage) ifTrue:[
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   650
        self error:aPackage name asString, ' is a base package and cannot be uninstalled!!'.
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   651
    ].
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   652
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   653
    aPackage uninstallFromManager:self.
1231
2f3a15bfac92 initial checkin
james
parents:
diff changeset
   654
!
2f3a15bfac92 initial checkin
james
parents:
diff changeset
   655
2f3a15bfac92 initial checkin
james
parents:
diff changeset
   656
unloadPackage:aPackage 
2f3a15bfac92 initial checkin
james
parents:
diff changeset
   657
    "unloads the package from the receiver.Does not need to
2f3a15bfac92 initial checkin
james
parents:
diff changeset
   658
     make any checks here as it is not installed."
2f3a15bfac92 initial checkin
james
parents:
diff changeset
   659
2f3a15bfac92 initial checkin
james
parents:
diff changeset
   660
    (self includesPackage:aPackage) ifFalse:[
2f3a15bfac92 initial checkin
james
parents:
diff changeset
   661
        self error:'The package manager does not know of the package ', aPackage name.
2f3a15bfac92 initial checkin
james
parents:
diff changeset
   662
    ].
2f3a15bfac92 initial checkin
james
parents:
diff changeset
   663
1268
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   664
    (self isBasePackage:aPackage) ifTrue:[
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   665
        self error:aPackage name asString, ' is a base package and cannot be unloaded!!'.
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   666
    ].
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   667
1231
2f3a15bfac92 initial checkin
james
parents:
diff changeset
   668
    aPackage isInstalled ifTrue:[
2f3a15bfac92 initial checkin
james
parents:
diff changeset
   669
        self uninstallPackage:aPackage.
2f3a15bfac92 initial checkin
james
parents:
diff changeset
   670
    ].
2f3a15bfac92 initial checkin
james
parents:
diff changeset
   671
    self removePackage:aPackage.
1279
95a37d60edd8 *** empty log message ***
james
parents: 1268
diff changeset
   672
    aPackage removeFromSystem.
1268
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   673
    self changed:#unloadPackage: with:aPackage.
1231
2f3a15bfac92 initial checkin
james
parents:
diff changeset
   674
    ^ aPackage.
1268
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   675
!
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   676
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   677
unloadPackageNamed:aPackageName 
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   678
    "unloads the package from the receiver.Does not need to
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   679
     make any checks here as it is not installed."
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   680
    | aPackage |
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   681
    (self includesPackageNamed:aPackageName) ifFalse:[
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   682
        self error:'The package manager does not know of the package ', aPackageName.
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   683
    ].
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   684
    aPackage := self packageNamed:aPackageName.
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   685
    aPackage == workingPackage ifTrue:[
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   686
        PackageNotification raiseUnloadingWorkingPackage:aPackageName.
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   687
        workingPackage := defaultPackage.
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   688
    ].
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   689
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   690
    self unloadPackage:aPackage.
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   691
! !
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   692
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   693
!PackageManager methodsFor:'basic admin'!
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   694
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   695
setClass:aClass toPackage:newOwnerPackage 
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   696
    "sets the variable package in both class and methods belonging to the class
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   697
     but only with the same name as the classes old package"
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   698
    |oldOwnerPackageName newOwnerPackageName|
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   699
    newOwnerPackageName := newOwnerPackage name.
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   700
    oldOwnerPackageName := aClass package.
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   701
    aClass setPackage:newOwnerPackageName. 
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   702
    aClass methodDictionary copy keysAndValuesDo:[:aMethodName :aMethod |
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   703
        aMethod package == oldOwnerPackageName ifTrue:[
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   704
            aMethod setPackage:newOwnerPackageName    
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   705
        ].
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   706
    ].
1279
95a37d60edd8 *** empty log message ***
james
parents: 1268
diff changeset
   707
95a37d60edd8 *** empty log message ***
james
parents: 1268
diff changeset
   708
    aClass class methodDictionary copy keysAndValuesDo:[:aMethodName :aMethod |
95a37d60edd8 *** empty log message ***
james
parents: 1268
diff changeset
   709
        aMethod package == oldOwnerPackageName ifTrue:[
95a37d60edd8 *** empty log message ***
james
parents: 1268
diff changeset
   710
            aMethod setPackage:newOwnerPackageName    
95a37d60edd8 *** empty log message ***
james
parents: 1268
diff changeset
   711
        ].
95a37d60edd8 *** empty log message ***
james
parents: 1268
diff changeset
   712
    ].
1268
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   713
!
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   714
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   715
setMethod:aMethod toPackage:newOwnerPackage 
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   716
    "sets the variable package"
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   717
    aMethod setPackage:newOwnerPackage name. 
1231
2f3a15bfac92 initial checkin
james
parents:
diff changeset
   718
! !
2f3a15bfac92 initial checkin
james
parents:
diff changeset
   719
2f3a15bfac92 initial checkin
james
parents:
diff changeset
   720
!PackageManager methodsFor:'change & update'!
2f3a15bfac92 initial checkin
james
parents:
diff changeset
   721
2f3a15bfac92 initial checkin
james
parents:
diff changeset
   722
changeSetChanged:something with:aChange from:changedObject
2f3a15bfac92 initial checkin
james
parents:
diff changeset
   723
    "find out what type of change it is and send the packages the corresponding
2f3a15bfac92 initial checkin
james
parents:
diff changeset
   724
     message to is if they are affected. If they are they should (if they are behaving)
2f3a15bfac92 initial checkin
james
parents:
diff changeset
   725
    send me a change notification to inform me about it(see packageChanged:with:from:)!!
2f3a15bfac92 initial checkin
james
parents:
diff changeset
   726
    "
1268
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   727
    | classNameOfChange packageName changeClass changeMethod |
1231
2f3a15bfac92 initial checkin
james
parents:
diff changeset
   728
    aChange isCollection ifTrue:[
1279
95a37d60edd8 *** empty log message ***
james
parents: 1268
diff changeset
   729
        something == #removeAll: ifTrue:[
95a37d60edd8 *** empty log message ***
james
parents: 1268
diff changeset
   730
            "happens after checking in"
95a37d60edd8 *** empty log message ***
james
parents: 1268
diff changeset
   731
"/            self smalltalkChanges removeAll:aChange
95a37d60edd8 *** empty log message ***
james
parents: 1268
diff changeset
   732
        ].
1231
2f3a15bfac92 initial checkin
james
parents:
diff changeset
   733
        ^ self "do i need to do anything???"
2f3a15bfac92 initial checkin
james
parents:
diff changeset
   734
    ].
2f3a15bfac92 initial checkin
james
parents:
diff changeset
   735
    (aChange isClassChange) ifFalse:[
1244
93e70ae3c90f *** empty log message ***
james
parents: 1242
diff changeset
   736
        self error:' What is this???'.
93e70ae3c90f *** empty log message ***
james
parents: 1242
diff changeset
   737
    ].           
1231
2f3a15bfac92 initial checkin
james
parents:
diff changeset
   738
1268
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   739
    (aChange isKindOf:self methodPackageChangeClass) ifTrue:[| aMethod methodOwnedClass oldPackageName |
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   740
        aMethod := aChange previousVersion.
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   741
        methodOwnedClass := aChange changeClass.
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   742
        oldPackageName := aChange oldPackageName.
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   743
        self methodPackageChange:aMethod class:methodOwnedClass oldPackageName:oldPackageName.
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   744
        ^ self
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   745
    ].
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   746
    (aChange isKindOf:self classPackageChangeClass) ifTrue:[| classToMove oldPackageName |
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   747
        classToMove := aChange changeClass.
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   748
        oldPackageName := aChange oldPackageName.
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   749
        self classPackageChange:classToMove oldPackageName:oldPackageName.
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   750
        ^ self
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   751
    ].
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   752
1231
2f3a15bfac92 initial checkin
james
parents:
diff changeset
   753
    (aChange isMethodCategoryChange) ifTrue:[
2f3a15bfac92 initial checkin
james
parents:
diff changeset
   754
        self packagesDo:[:aPackage |
1268
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   755
             "(aPackage isDependentOnMethodNamed:aChange selector forClassNamed:aChange className)" false ifTrue:[
1231
2f3a15bfac92 initial checkin
james
parents:
diff changeset
   756
                aPackage methodCategoryChange:aChange.
2f3a15bfac92 initial checkin
james
parents:
diff changeset
   757
            ].
2f3a15bfac92 initial checkin
james
parents:
diff changeset
   758
        ].
2f3a15bfac92 initial checkin
james
parents:
diff changeset
   759
        ^ self
2f3a15bfac92 initial checkin
james
parents:
diff changeset
   760
    ].
2f3a15bfac92 initial checkin
james
parents:
diff changeset
   761
2f3a15bfac92 initial checkin
james
parents:
diff changeset
   762
    "the following is similar to the one above"
2f3a15bfac92 initial checkin
james
parents:
diff changeset
   763
    (aChange isMethodCategoryRenameChange) ifTrue:[
2f3a15bfac92 initial checkin
james
parents:
diff changeset
   764
        self packagesDo:[:aPackage |
1268
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   765
            "(aPackage isDependentOnMethodNamed:aChange selector forClassNamed:aChange className)"  false ifTrue:[
1231
2f3a15bfac92 initial checkin
james
parents:
diff changeset
   766
                aPackage methodCategoryRenameChange:aChange.
2f3a15bfac92 initial checkin
james
parents:
diff changeset
   767
            ].
2f3a15bfac92 initial checkin
james
parents:
diff changeset
   768
        ].
2f3a15bfac92 initial checkin
james
parents:
diff changeset
   769
        ^ self
2f3a15bfac92 initial checkin
james
parents:
diff changeset
   770
    ].
2f3a15bfac92 initial checkin
james
parents:
diff changeset
   771
1268
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   772
    (aChange isMethodRemoveChange) ifTrue:[
1231
2f3a15bfac92 initial checkin
james
parents:
diff changeset
   773
        self packagesDo:[:aPackage |
1268
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   774
            (aPackage isDependentOnMethodNamed:aChange selector forClassNamed:aChange className) ifTrue:[
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   775
                aChange previousVersion ifNotNil:[
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   776
                    aPackage methodRemoveChange:aChange.
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   777
                ].
1231
2f3a15bfac92 initial checkin
james
parents:
diff changeset
   778
            ].
2f3a15bfac92 initial checkin
james
parents:
diff changeset
   779
        ].
2f3a15bfac92 initial checkin
james
parents:
diff changeset
   780
        ^ self
2f3a15bfac92 initial checkin
james
parents:
diff changeset
   781
    ].
2f3a15bfac92 initial checkin
james
parents:
diff changeset
   782
1268
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   783
    (aChange isMethodChange) ifTrue:[
1231
2f3a15bfac92 initial checkin
james
parents:
diff changeset
   784
        "A new created method or a modified method"
1268
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   785
        changeMethod := aChange changeMethod.
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   786
        packageName := changeMethod package.
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   787
1231
2f3a15bfac92 initial checkin
james
parents:
diff changeset
   788
        self packagesDo:[:aPackage |
1268
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   789
            (Switch new)
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   790
                if:[(aPackage name == packageName)
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   791
                ] then:[self addMethod:changeMethod toPackage:aPackage];
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   792
                if:[(aPackage isDependentOnMethodNamed:aChange selector forClassNamed:aChange className) 
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   793
                ] then:[aPackage methodChanged:aChange]; 
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   794
                value.
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   795
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   796
        ].                                                    
1231
2f3a15bfac92 initial checkin
james
parents:
diff changeset
   797
        ^ self
2f3a15bfac92 initial checkin
james
parents:
diff changeset
   798
    ].
2f3a15bfac92 initial checkin
james
parents:
diff changeset
   799
2f3a15bfac92 initial checkin
james
parents:
diff changeset
   800
    aChange isClassChange ifTrue:[
2f3a15bfac92 initial checkin
james
parents:
diff changeset
   801
        (aChange isClassRemoveChange) ifTrue:[
1268
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   802
            "results in one package being overridden by Smalltalk"
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   803
            classNameOfChange := aChange className.
1231
2f3a15bfac92 initial checkin
james
parents:
diff changeset
   804
            self packagesDo:[:aPackage |
1268
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   805
                (Switch new)
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   806
                    if:[(aPackage isDependentOnClassNamed:classNameOfChange) 
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   807
                    ] then:[aPackage classRemoveChange:aChange]; 
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   808
                    value.
1231
2f3a15bfac92 initial checkin
james
parents:
diff changeset
   809
                ].
2f3a15bfac92 initial checkin
james
parents:
diff changeset
   810
            ^ self
2f3a15bfac92 initial checkin
james
parents:
diff changeset
   811
        ].
2f3a15bfac92 initial checkin
james
parents:
diff changeset
   812
1268
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   813
        (aChange isClassDefinitionChange) ifTrue:[        
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   814
            "This change is not added to the working class"
1231
2f3a15bfac92 initial checkin
james
parents:
diff changeset
   815
            "changes to instance variables, classVariableNames, poolDictionaries, category"
1268
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   816
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   817
            classNameOfChange := aChange className.
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   818
            changeClass := aChange changeClass.
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   819
            packageName := changeClass package.
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   820
1231
2f3a15bfac92 initial checkin
james
parents:
diff changeset
   821
            self packagesDo:[:aPackage |
1268
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   822
                (Switch new)
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   823
                    if:[(aPackage name == packageName)
1279
95a37d60edd8 *** empty log message ***
james
parents: 1268
diff changeset
   824
                    ] then:[(aPackage includesPackagedClassNamed:classNameOfChange) ifTrue:[
1268
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   825
                                 aPackage removedClassNamed:classNameOfChange.
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   826
                            ].
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   827
                            aPackage addedClass:changeClass];
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   828
                    if:[(aPackage isDependentOnClassNamed:classNameOfChange) 
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   829
                    ] then:[aPackage classDefinitionChange:aChange]; 
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   830
                    value.
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   831
1231
2f3a15bfac92 initial checkin
james
parents:
diff changeset
   832
            ].
2f3a15bfac92 initial checkin
james
parents:
diff changeset
   833
            ^ self
2f3a15bfac92 initial checkin
james
parents:
diff changeset
   834
2f3a15bfac92 initial checkin
james
parents:
diff changeset
   835
        ].
2f3a15bfac92 initial checkin
james
parents:
diff changeset
   836
        (aChange isClassInstVarDefinitionChange)  ifTrue:[
1268
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   837
            "This change is not added to the working class"
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   838
            "changes to instance variables, classVariableNames, poolDictionaries, category"
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   839
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   840
            classNameOfChange := aChange className.
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   841
            changeClass := aChange changeClass.
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   842
            packageName := changeClass package.
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   843
1231
2f3a15bfac92 initial checkin
james
parents:
diff changeset
   844
            self packagesDo:[:aPackage |
1268
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   845
                (Switch new)
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   846
                    if:[(aPackage name == packageName)
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   847
                    ] then:[aPackage addedClass:changeClass];
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   848
                    if:[(aPackage isDependentOnClassNamed:classNameOfChange) 
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   849
                    ] then:[aPackage classInstVarDefinitionChange:aChange].
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   850
1231
2f3a15bfac92 initial checkin
james
parents:
diff changeset
   851
            ].
2f3a15bfac92 initial checkin
james
parents:
diff changeset
   852
            ^ self
2f3a15bfac92 initial checkin
james
parents:
diff changeset
   853
        ].
2f3a15bfac92 initial checkin
james
parents:
diff changeset
   854
        (aChange isClassRenameChange) ifTrue:[
1268
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   855
            "This change is not added to the working class"
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   856
            classNameOfChange := aChange className.
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   857
            changeClass := aChange changeClass.
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   858
            packageName := changeClass package.
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   859
1231
2f3a15bfac92 initial checkin
james
parents:
diff changeset
   860
            self packagesDo:[:aPackage |
1268
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   861
                (Switch new)
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   862
                    if:[(aPackage name == packageName)
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   863
                    ] then:[aPackage addedClass:changeClass];
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   864
                    if:[(aPackage isDependentOnClassNamed:classNameOfChange) 
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   865
                    ] then:[aPackage classRenameChange:aChange]; 
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   866
                    value.
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   867
1231
2f3a15bfac92 initial checkin
james
parents:
diff changeset
   868
            ].
2f3a15bfac92 initial checkin
james
parents:
diff changeset
   869
            ^ self
2f3a15bfac92 initial checkin
james
parents:
diff changeset
   870
        ].
2f3a15bfac92 initial checkin
james
parents:
diff changeset
   871
1268
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   872
1244
93e70ae3c90f *** empty log message ***
james
parents: 1242
diff changeset
   873
        self breakPoint:''.
1231
2f3a15bfac92 initial checkin
james
parents:
diff changeset
   874
    ].
1244
93e70ae3c90f *** empty log message ***
james
parents: 1242
diff changeset
   875
    self breakPoint:''.
1231
2f3a15bfac92 initial checkin
james
parents:
diff changeset
   876
!
2f3a15bfac92 initial checkin
james
parents:
diff changeset
   877
1268
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   878
classPackageChange:classToOverride oldPackageName:oldPackageName
1231
2f3a15bfac92 initial checkin
james
parents:
diff changeset
   879
    "reacts to a class package change
2f3a15bfac92 initial checkin
james
parents:
diff changeset
   880
    Assertion:
2f3a15bfac92 initial checkin
james
parents:
diff changeset
   881
        aClass package ~= oldPackageName
2f3a15bfac92 initial checkin
james
parents:
diff changeset
   882
    "
1268
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   883
    
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   884
    self setClass:classToOverride toPackage:(self packageNamed:oldPackageName). 
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   885
    self error:'Sorry, this function is no longer available other than within the packageBrowser. ', Character cr asString,
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   886
        Character cr asString, ' This action has done nothing!!'.
1231
2f3a15bfac92 initial checkin
james
parents:
diff changeset
   887
1268
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   888
"/    | newPackageName newOwnerPackage|
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   889
"/    newPackageName := classToOverride package.
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   890
"/    newOwnerPackage := self packageNamed:newPackageName ifAbsent:[self newPackageNamed:newPackageName].     
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   891
"/
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   892
"/    "fake this... maybe this is a kludge..."
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   893
"/    self setClass:classToOverride toPackage:(self packageNamed:oldPackageName). 
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   894
"/
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   895
"/    self addClass:classToOverride toPackage:newOwnerPackage.
1231
2f3a15bfac92 initial checkin
james
parents:
diff changeset
   896
!
2f3a15bfac92 initial checkin
james
parents:
diff changeset
   897
2f3a15bfac92 initial checkin
james
parents:
diff changeset
   898
methodPackageChange:aMethod class:methodOwnedClass oldPackageName:oldPackageName
2f3a15bfac92 initial checkin
james
parents:
diff changeset
   899
1268
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   900
    self setMethod:aMethod toPackage:(self packageNamed:oldPackageName). 
1279
95a37d60edd8 *** empty log message ***
james
parents: 1268
diff changeset
   901
    Transcript nextPutAll:'Sorry, this function is no longer available other than within the packageBrowser. ', Character cr asString,
95a37d60edd8 *** empty log message ***
james
parents: 1268
diff changeset
   902
        Character cr asString, ' This action has done nothing!! >>methodPackageChange:aMethod class:methodOwnedClass oldPackageName:oldPackageName'.
1268
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   903
1231
2f3a15bfac92 initial checkin
james
parents:
diff changeset
   904
1268
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   905
"/    | newPackageName oldOwnerPackage newOwnerPackage|
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   906
"/
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   907
"/    newPackageName := aMethod package.
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   908
"/    oldOwnerPackage :=(self packageNamed:oldPackageName).
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   909
"/    newOwnerPackage := (self packageNamed:newPackageName).
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   910
"/
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   911
"/    newOwnerPackage ifNil:[
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   912
"/        PackageError raiseErrorString:'The package ', newPackageName, ' is not known',
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   913
"/            ' to this packageManager', ' and so cannot realise this methodPackageChange'
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   914
"/
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   915
"/    ].
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   916
"/
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   917
"/    oldOwnerPackage ifNil:[
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   918
"/        PackageError raiseErrorString:'The package ', oldPackageName, ' is not known',
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   919
"/            ' to this packageManager', ' and so cannot realise this methodPackageChange'
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   920
"/    ].
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   921
"/
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   922
"/    oldOwnerPackage movedMethod:aMethod toPackage:newOwnerPackage
1231
2f3a15bfac92 initial checkin
james
parents:
diff changeset
   923
!
2f3a15bfac92 initial checkin
james
parents:
diff changeset
   924
2f3a15bfac92 initial checkin
james
parents:
diff changeset
   925
packageChanged:something with:aParameter from:changedObject
2f3a15bfac92 initial checkin
james
parents:
diff changeset
   926
   "maybe send a change notification for views here???"
2f3a15bfac92 initial checkin
james
parents:
diff changeset
   927
"/    self halt.
1268
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   928
    self addChange:aParameter.
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   929
    self changed:#packagedChanged with:changedObject
1231
2f3a15bfac92 initial checkin
james
parents:
diff changeset
   930
!
2f3a15bfac92 initial checkin
james
parents:
diff changeset
   931
2f3a15bfac92 initial checkin
james
parents:
diff changeset
   932
update:something with:aParameter from:changedObject
1268
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   933
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   934
    (self includesPackage:changedObject) ifTrue:[
1231
2f3a15bfac92 initial checkin
james
parents:
diff changeset
   935
        self packageChanged:something with:aParameter from:changedObject.
2f3a15bfac92 initial checkin
james
parents:
diff changeset
   936
        ^ self.
2f3a15bfac92 initial checkin
james
parents:
diff changeset
   937
    ].
2f3a15bfac92 initial checkin
james
parents:
diff changeset
   938
    (changedObject == ChangeSet current) ifTrue:[
2f3a15bfac92 initial checkin
james
parents:
diff changeset
   939
        self changeSetChanged:something with:aParameter from:changedObject.
2f3a15bfac92 initial checkin
james
parents:
diff changeset
   940
        ^ self.
2f3a15bfac92 initial checkin
james
parents:
diff changeset
   941
    ].
2f3a15bfac92 initial checkin
james
parents:
diff changeset
   942
! !
2f3a15bfac92 initial checkin
james
parents:
diff changeset
   943
2f3a15bfac92 initial checkin
james
parents:
diff changeset
   944
!PackageManager methodsFor:'checks'!
2f3a15bfac92 initial checkin
james
parents:
diff changeset
   945
2f3a15bfac92 initial checkin
james
parents:
diff changeset
   946
canLoadPackage:aPackage 
2f3a15bfac92 initial checkin
james
parents:
diff changeset
   947
    ""
2f3a15bfac92 initial checkin
james
parents:
diff changeset
   948
    (self includesPackage:aPackage) ifTrue:[
2f3a15bfac92 initial checkin
james
parents:
diff changeset
   949
        Notification raise.
2f3a15bfac92 initial checkin
james
parents:
diff changeset
   950
    ].
2f3a15bfac92 initial checkin
james
parents:
diff changeset
   951
! !
2f3a15bfac92 initial checkin
james
parents:
diff changeset
   952
2f3a15bfac92 initial checkin
james
parents:
diff changeset
   953
!PackageManager methodsFor:'enumarating'!
2f3a15bfac92 initial checkin
james
parents:
diff changeset
   954
2f3a15bfac92 initial checkin
james
parents:
diff changeset
   955
packagesDo:aOneArgBlock
1268
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   956
    "should this or should this not include the defaultPackage??? should it
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   957
    be treated seperately?"
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   958
    aOneArgBlock value:defaultPackage.  
1231
2f3a15bfac92 initial checkin
james
parents:
diff changeset
   959
    super packagesDo:aOneArgBlock.
1268
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   960
!
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   961
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   962
packagesSelect:aOneArgBlock
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   963
    "should this or should this not include the defaultPackage??? should it
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   964
    be treated seperately?"
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   965
    | selectedPackages |
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   966
    selectedPackages := (self packages select:aOneArgBlock).
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   967
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   968
    (aOneArgBlock value:defaultPackage) ifTrue:[
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   969
        selectedPackages add:defaultPackage.
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   970
    ].
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   971
    ^ selectedPackages
1231
2f3a15bfac92 initial checkin
james
parents:
diff changeset
   972
! !
2f3a15bfac92 initial checkin
james
parents:
diff changeset
   973
2f3a15bfac92 initial checkin
james
parents:
diff changeset
   974
!PackageManager methodsFor:'errors'!
2f3a15bfac92 initial checkin
james
parents:
diff changeset
   975
2f3a15bfac92 initial checkin
james
parents:
diff changeset
   976
recoveryHandlerDo:aBlock forException:packageErrorClass
2f3a15bfac92 initial checkin
james
parents:
diff changeset
   977
    "an atomic action is about to happen. This should succeed or
2f3a15bfac92 initial checkin
james
parents:
diff changeset
   978
    fail and return to the previous state."
2f3a15bfac92 initial checkin
james
parents:
diff changeset
   979
    
2f3a15bfac92 initial checkin
james
parents:
diff changeset
   980
    "to do - this could be done by an extra class.
2f3a15bfac92 initial checkin
james
parents:
diff changeset
   981
    could save the state of the receiver before this action is done
2f3a15bfac92 initial checkin
james
parents:
diff changeset
   982
    along with a 'transaction number' held in the receivers class to make
2f3a15bfac92 initial checkin
james
parents:
diff changeset
   983
    sure we are consistant. The hard copy could then be the backup. This
2f3a15bfac92 initial checkin
james
parents:
diff changeset
   984
    all depends on how long it takes to make the backup and how often
2f3a15bfac92 initial checkin
james
parents:
diff changeset
   985
    we are going to do this.
2f3a15bfac92 initial checkin
james
parents:
diff changeset
   986
    "
2f3a15bfac92 initial checkin
james
parents:
diff changeset
   987
    packageErrorClass handle:[:ex |
2f3a15bfac92 initial checkin
james
parents:
diff changeset
   988
        Transcript show:ex errorString.
2f3a15bfac92 initial checkin
james
parents:
diff changeset
   989
    ] do:[
2f3a15bfac92 initial checkin
james
parents:
diff changeset
   990
        aBlock value
2f3a15bfac92 initial checkin
james
parents:
diff changeset
   991
    ]
2f3a15bfac92 initial checkin
james
parents:
diff changeset
   992
! !
2f3a15bfac92 initial checkin
james
parents:
diff changeset
   993
2f3a15bfac92 initial checkin
james
parents:
diff changeset
   994
!PackageManager methodsFor:'factory'!
2f3a15bfac92 initial checkin
james
parents:
diff changeset
   995
1268
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   996
classPackageChangeClass
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   997
    ^ Smalltalk classNamed:#'Packages::ChangeFaker::ClassPackageChange'
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   998
!
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
   999
1231
2f3a15bfac92 initial checkin
james
parents:
diff changeset
  1000
getPackageSaverForPackage:aPackage 
2f3a15bfac92 initial checkin
james
parents:
diff changeset
  1001
    ^ StxPackageFileWriter forPackage:aPackage 
2f3a15bfac92 initial checkin
james
parents:
diff changeset
  1002
!
2f3a15bfac92 initial checkin
james
parents:
diff changeset
  1003
1268
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
  1004
methodPackageChangeClass
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
  1005
    ^ Smalltalk classNamed:#'Packages::ChangeFaker::MethodPackageChange'
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
  1006
!
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
  1007
1231
2f3a15bfac92 initial checkin
james
parents:
diff changeset
  1008
newPackageNamed:aString 
2f3a15bfac92 initial checkin
james
parents:
diff changeset
  1009
    | newPackage |
2f3a15bfac92 initial checkin
james
parents:
diff changeset
  1010
2f3a15bfac92 initial checkin
james
parents:
diff changeset
  1011
    (self includesPackageNamed:aString) ifTrue:[
1268
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
  1012
        PackageError raiseCannotAddAsPackageManagerAlreadyIncludesPackageNamed:aString
1231
2f3a15bfac92 initial checkin
james
parents:
diff changeset
  1013
    ].
2f3a15bfac92 initial checkin
james
parents:
diff changeset
  1014
    
2f3a15bfac92 initial checkin
james
parents:
diff changeset
  1015
    newPackage := self packageClass named:aString addToManager:self.
2f3a15bfac92 initial checkin
james
parents:
diff changeset
  1016
    newPackage initializeInstalled.
2f3a15bfac92 initial checkin
james
parents:
diff changeset
  1017
    ^ newPackage
2f3a15bfac92 initial checkin
james
parents:
diff changeset
  1018
!
2f3a15bfac92 initial checkin
james
parents:
diff changeset
  1019
2f3a15bfac92 initial checkin
james
parents:
diff changeset
  1020
packageClass
2f3a15bfac92 initial checkin
james
parents:
diff changeset
  1021
    ^ Package
2f3a15bfac92 initial checkin
james
parents:
diff changeset
  1022
! !
2f3a15bfac92 initial checkin
james
parents:
diff changeset
  1023
2f3a15bfac92 initial checkin
james
parents:
diff changeset
  1024
!PackageManager methodsFor:'initialization'!
2f3a15bfac92 initial checkin
james
parents:
diff changeset
  1025
2f3a15bfac92 initial checkin
james
parents:
diff changeset
  1026
initialize
1268
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
  1027
    defaultPackage := self class defaultPackage.
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
  1028
    workingPackage := defaultPackage.
1231
2f3a15bfac92 initial checkin
james
parents:
diff changeset
  1029
    super initialize.
2f3a15bfac92 initial checkin
james
parents:
diff changeset
  1030
!
2f3a15bfac92 initial checkin
james
parents:
diff changeset
  1031
2f3a15bfac92 initial checkin
james
parents:
diff changeset
  1032
uninitialize
2f3a15bfac92 initial checkin
james
parents:
diff changeset
  1033
2f3a15bfac92 initial checkin
james
parents:
diff changeset
  1034
    self packagesDo:[:aPackage |
2f3a15bfac92 initial checkin
james
parents:
diff changeset
  1035
        self removeDependent:aPackage.
2f3a15bfac92 initial checkin
james
parents:
diff changeset
  1036
    ].
1268
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
  1037
    defaultPackage removeDependent:self.
1231
2f3a15bfac92 initial checkin
james
parents:
diff changeset
  1038
2f3a15bfac92 initial checkin
james
parents:
diff changeset
  1039
    packages := nil.
2f3a15bfac92 initial checkin
james
parents:
diff changeset
  1040
    super uninitialize.
2f3a15bfac92 initial checkin
james
parents:
diff changeset
  1041
! !
2f3a15bfac92 initial checkin
james
parents:
diff changeset
  1042
2f3a15bfac92 initial checkin
james
parents:
diff changeset
  1043
!PackageManager methodsFor:'private-opening'!
2f3a15bfac92 initial checkin
james
parents:
diff changeset
  1044
2f3a15bfac92 initial checkin
james
parents:
diff changeset
  1045
getPackageHandlerForPackage:aPackage 
2f3a15bfac92 initial checkin
james
parents:
diff changeset
  1046
2f3a15bfac92 initial checkin
james
parents:
diff changeset
  1047
    | aPackageHandler |
2f3a15bfac92 initial checkin
james
parents:
diff changeset
  1048
2f3a15bfac92 initial checkin
james
parents:
diff changeset
  1049
    (aPackageHandler := aPackage packageHandler) ifNil:[
2f3a15bfac92 initial checkin
james
parents:
diff changeset
  1050
        aPackageHandler := PackageHandler forPackage:aPackage.
2f3a15bfac92 initial checkin
james
parents:
diff changeset
  1051
    ].
2f3a15bfac92 initial checkin
james
parents:
diff changeset
  1052
2f3a15bfac92 initial checkin
james
parents:
diff changeset
  1053
    ^ aPackageHandler
2f3a15bfac92 initial checkin
james
parents:
diff changeset
  1054
!
2f3a15bfac92 initial checkin
james
parents:
diff changeset
  1055
2f3a15bfac92 initial checkin
james
parents:
diff changeset
  1056
getPackageReaderForFile:aFilename 
2f3a15bfac92 initial checkin
james
parents:
diff changeset
  1057
    ^ StxPackageFileReader forFilename:aFilename
2f3a15bfac92 initial checkin
james
parents:
diff changeset
  1058
! !
2f3a15bfac92 initial checkin
james
parents:
diff changeset
  1059
2f3a15bfac92 initial checkin
james
parents:
diff changeset
  1060
!PackageManager methodsFor:'queries'!
2f3a15bfac92 initial checkin
james
parents:
diff changeset
  1061
1268
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
  1062
includesPackage:anObject 
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
  1063
    ^ ((packages includes:anObject)or:[defaultPackage == anObject])
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
  1064
!
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
  1065
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
  1066
isBasePackage:aPackage
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
  1067
9dc8d1b8ce9b Lots and lots of changes...
james
parents: 1244
diff changeset
  1068
    ^ self class basePackageNames includes:aPackage name.
1231
2f3a15bfac92 initial checkin
james
parents:
diff changeset
  1069
! !
2f3a15bfac92 initial checkin
james
parents:
diff changeset
  1070
2f3a15bfac92 initial checkin
james
parents:
diff changeset
  1071
!PackageManager class methodsFor:'documentation'!
2f3a15bfac92 initial checkin
james
parents:
diff changeset
  1072
2f3a15bfac92 initial checkin
james
parents:
diff changeset
  1073
version
1279
95a37d60edd8 *** empty log message ***
james
parents: 1268
diff changeset
  1074
    ^ '$Header: /cvs/stx/stx/libbasic3/packages/PackageManager.st,v 1.5 2003-05-16 11:44:25 james Exp $'
1231
2f3a15bfac92 initial checkin
james
parents:
diff changeset
  1075
! !
2f3a15bfac92 initial checkin
james
parents:
diff changeset
  1076
2f3a15bfac92 initial checkin
james
parents:
diff changeset
  1077
PackageManager initialize!