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