MCWorkingCopyBrowser.st
author Claus Gittinger <cg@exept.de>
Sat, 01 Sep 2018 17:32:13 +0200
changeset 1086 efc5221435a5
parent 602 4d0ee5eb4551
child 995 92bb466548a9
permissions -rw-r--r--
initial checkin
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
133
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     1
"{ Package: 'stx:goodies/monticello' }"
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     2
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     3
MCTool subclass:#MCWorkingCopyBrowser
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     4
	instanceVariableNames:'workingCopy workingCopyWrapper repository defaults'
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     5
	classVariableNames:''
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     6
	poolDictionaries:''
602
4d0ee5eb4551 category change
Claus Gittinger <cg@exept.de>
parents: 133
diff changeset
     7
	category:'SCM-Monticello-UI'
133
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     8
!
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     9
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    10
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    11
!MCWorkingCopyBrowser class methodsFor:'as yet unclassified'!
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    12
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    13
initialize
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    14
	 (TheWorldMenu respondsTo: #registerOpenCommand:)
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    15
         ifTrue: [TheWorldMenu registerOpenCommand: {'Monticello Browser'. {self. #open}}]
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    16
!
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    17
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    18
new
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    19
	^ self basicNew initialize
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    20
!
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    21
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    22
open
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    23
	self new show
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    24
! !
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    25
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    26
!MCWorkingCopyBrowser methodsFor:'actions'!
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    27
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    28
addRepository
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    29
	self newRepository ifNotNilDo:
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    30
		[:repos | self addRepository: repos ].
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    31
!
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    32
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    33
addRepository: aRepository
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    34
	self repository: aRepository.
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    35
	self repositoryGroup addRepository: aRepository.
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    36
	self changed: #repositoryList; changed: #repositorySelection.
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    37
	self changedButtons.
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    38
!
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    39
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    40
addRepositoryToPackage
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    41
	self repository ifNotNilDo:
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    42
		[:repos |
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    43
		(self pickWorkingCopySatisfying: [ :p | (p repositoryGroup includes: repos) not ]) ifNotNilDo:
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    44
			[:wc |
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    45
			workingCopy _ wc.
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    46
			workingCopy repositoryGroup addRepository: repos.
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    47
			self repository: repos.	
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    48
			self
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    49
				changed: #workingCopySelection;
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    50
				changed: #repositoryList;
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    51
				changed: #repositorySelection.
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    52
			self changedButtons]]
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    53
!
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    54
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    55
addRepositoryToWorkingCopy
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    56
	workingCopy ifNotNilDo:
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    57
		[:wc |
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    58
			workingCopy repositoryGroup addRepository: self repository.
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    59
			self
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    60
				changed: #workingCopySelection;
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    61
				changed: #repositoryList;
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    62
				changed: #repositorySelection.
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    63
			self changedButtons]
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    64
!
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    65
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    66
addRequiredPackage
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    67
	workingCopy ifNotNilDo:
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    68
		[:wc |
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    69
		self pickWorkingCopy ifNotNilDo:
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    70
			[:required |
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    71
			wc requirePackage: required package.
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    72
			self workingCopyListChanged]]
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    73
!
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    74
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    75
addWorkingCopy
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    76
	|name|
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    77
	name _ FillInTheBlankMorph request: 'Name of package:'.
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    78
	name isEmptyOrNil ifFalse:
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    79
		[PackageInfo registerPackageName: name.
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    80
		workingCopy _ MCWorkingCopy forPackage: (MCPackage new name: name).
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    81
		workingCopyWrapper _ nil.
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    82
		self repositorySelection: 0].
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    83
	self workingCopyListChanged; changed: #workingCopySelection; changed: #repositoryList.
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    84
	self changedButtons.
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    85
!
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    86
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    87
backportChanges
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    88
	self canBackport ifFalse: [^self].
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    89
	workingCopy ifNotNil:
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    90
		[workingCopy needsSaving ifTrue: [^ self inform: 'You must save the working copy before backporting.'].
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    91
		self pickAncestorVersionInfo ifNotNilDo:
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    92
			[:baseVersionInfo |
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    93
			workingCopy backportChangesTo: baseVersionInfo]]
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    94
!
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    95
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    96
browseWorkingCopy
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    97
	workingCopy ifNotNil:
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    98
		[(MCSnapshotBrowser forSnapshot: workingCopy package snapshot)
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    99
			label: 'Snapshot Browser: ', workingCopy packageName;
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   100
			show]
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   101
!
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   102
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   103
canBackport
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   104
	^ self hasWorkingCopy and: [workingCopy needsSaving not]
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   105
!
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   106
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   107
checkForNewerVersions
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   108
	| newer |
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   109
	newer _ workingCopy possiblyNewerVersionsIn: self repository.
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   110
	^ newer isEmpty or: [
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   111
		self confirm: 'CAUTION!! These versions in the repository may be newer:', 
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   112
			String cr, newer asString, String cr,
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   113
			'Do you really want to save this version?'].
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   114
!
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   115
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   116
clearRequiredPackages
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   117
	workingCopy ifNotNilDo:
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   118
		[:wc |
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   119
		wc clearRequiredPackages.
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   120
		self workingCopyListChanged]
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   121
!
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   122
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   123
deleteWorkingCopy
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   124
	workingCopy unregister.
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   125
	self workingCopySelection: 0.
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   126
	self workingCopyListChanged.
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   127
!
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   128
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   129
editRepository
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   130
	| newRepo |
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   131
	
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   132
	newRepo := self repository openAndEditTemplateCopy.
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   133
	newRepo ifNotNil: [ 
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   134
		newRepo class = self repository class
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   135
			ifTrue: [self repository copyFrom: newRepo]
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   136
			ifFalse: [self inform: 'Must not change repository type!!']]
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   137
!
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   138
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   139
flushAllCaches
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   140
	| beforeBytes afterBytes beforeVersions afterVersions |
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   141
	Cursor wait showWhile: [
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   142
		beforeBytes := Smalltalk garbageCollect.
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   143
		beforeVersions := MCVersion allSubInstances size.
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   144
		MCFileBasedRepository flushAllCaches.
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   145
		afterBytes := Smalltalk garbageCollect.
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   146
		afterVersions := MCVersion allSubInstances size.
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   147
	].
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   148
	^self inform: (beforeVersions - afterVersions) asString, ' versions flushed', String cr,
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   149
 		(afterBytes - beforeBytes) asStringWithCommas, ' bytes reclaimed'
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   150
!
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   151
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   152
inspectWorkingCopy
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   153
	workingCopy ifNotNil: [workingCopy inspect]
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   154
!
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   155
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   156
loadRepositories
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   157
	FileStream fileIn: 'MCRepositories.st'.
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   158
	self changed: #repositoryList.
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   159
	self changedButtons.
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   160
!
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   161
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   162
newRepository
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   163
	| types index |
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   164
	types _ MCRepository allConcreteSubclasses asArray.
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   165
	index _ (PopUpMenu labelArray: (types collect: [:ea | ea description]))
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   166
				startUpWithCaption: 'Repository type:'.
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   167
	^ index = 0 ifFalse: [(types at: index) morphicConfigure]
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   168
!
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   169
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   170
openRepository
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   171
	self repository ifNotNilDo: [:repos | repos morphicOpen: workingCopy ]
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   172
!
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   173
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   174
recompilePackage
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   175
	workingCopy package packageInfo methods
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   176
		do: [:ea | ea actualClass recompile: ea methodSymbol]
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   177
		displayingProgress: 'Recompiling...'
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   178
!
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   179
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   180
removeRepository
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   181
	self repository ifNotNilDo:
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   182
		[:repos |
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   183
		self repositoryGroup removeRepository: repos.
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   184
		self repositorySelection: (1 min: self repositories size)].
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   185
	self changed: #repositoryList.
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   186
	self changedButtons.
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   187
!
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   188
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   189
repository
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   190
	workingCopy ifNotNil: [repository _ self defaults at: workingCopy ifAbsent: []].
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   191
	^ repository
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   192
!
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   193
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   194
repository: aRepository
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   195
	repository _ aRepository.
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   196
	workingCopy ifNotNil: [self defaults at: workingCopy put: aRepository]
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   197
!
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   198
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   199
revertPackage
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   200
	self pickAncestorVersionInfo ifNotNilDo: [:info |
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   201
		(self repositoryGroup versionWithInfo: info
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   202
			ifNone: [^self inform: 'No repository found for ', info name]
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   203
		) load]
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   204
!
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   205
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   206
saveRepositories
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   207
	| f |
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   208
	f := FileStream forceNewFileNamed: 'MCRepositories.st'.
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   209
	MCRepositoryGroup default repositoriesDo: [:r |
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   210
		f nextPutAll: 'MCRepositoryGroup default addRepository: (', r asCreationTemplate, ')!!'; cr.]
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   211
!
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   212
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   213
saveVersion
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   214
	| repo |
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   215
	self canSave ifFalse: [^self].
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   216
	self checkForNewerVersions ifFalse: [^self].
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   217
	repo _ self repository.
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   218
	workingCopy newVersion ifNotNilDo:
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   219
		[:v |
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   220
		(MCVersionInspector new version: v) show.
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   221
		Cursor wait showWhile: [repo storeVersion: v].
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   222
		MCCacheRepository default cacheAllFileNamesDuring: 
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   223
			[repo cacheAllFileNamesDuring: 
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   224
				[v allAvailableDependenciesDo:
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   225
					[:dep |
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   226
					(repo includesVersionNamed: dep info name)
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   227
						ifFalse: [repo storeVersion: dep]]]]]
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   228
!
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   229
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   230
trimAncestry
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   231
	self pickAncestorVersionInfo ifNotNilDo:
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   232
		[:ancestor |
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   233
		workingCopy ancestry trimAfterVersionInfo: ancestor]
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   234
!
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   235
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   236
unloadPackage
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   237
	workingCopy unload.
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   238
	self workingCopySelection: 0.
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   239
	self workingCopyListChanged.
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   240
!
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   241
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   242
viewChanges
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   243
	| patch |
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   244
	self canSave ifTrue:
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   245
		[patch _ workingCopy changesRelativeToRepository: self repository.
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   246
		patch isNil ifTrue: [^ self].
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   247
		patch isEmpty
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   248
			ifTrue: [ workingCopy modified: false.
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   249
				self inform: 'No changes' ]
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   250
			ifFalse:
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   251
				[ workingCopy modified: true.
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   252
				(MCPatchBrowser forPatch: patch)
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   253
					label: 'Patch Browser: ', workingCopy description;
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   254
					show]]
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   255
!
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   256
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   257
viewHistory
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   258
	workingCopy ifNotNil:
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   259
		[(MCWorkingHistoryBrowser new
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   260
				ancestry: workingCopy ancestry;
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   261
				package: workingCopy package)
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   262
			label:  'Version History: ',  workingCopy packageName;
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   263
			show]
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   264
! !
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   265
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   266
!MCWorkingCopyBrowser methodsFor:'morphic ui'!
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   267
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   268
buttonSpecs
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   269
       ^ #(
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   270
               ('+Package' addWorkingCopy 'Add a new package and make it the working copy')
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   271
               (Browse browseWorkingCopy 'Browse the working copy of the selected package' hasWorkingCopy)
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   272
               (Scripts editLoadScripts 'Edit the load/unload scripts of this package' hasWorkingCopy)
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   273
               (History viewHistory 'View the working copy''s history' hasWorkingCopy)
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   274
               (Changes viewChanges 'View the working copy''s changes relative to the installed version from the repository' canSave)
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   275
               (Backport backportChanges 'Backport the working copy''s changes to an ancestor' canBackport)
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   276
               (Save saveVersion 'Save the working copy as a new version to the selected repository' canSave)
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   277
             ('+Repository' addRepository 'Add an existing repository to the list of those visible')
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   278
               (Open openRepository 'Open a browser on the selected repository' hasRepository)
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   279
               )
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   280
!
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   281
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   282
canSave
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   283
	^ self hasWorkingCopy and: [self hasRepository]
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   284
!
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   285
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   286
changedButtons
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   287
	self changed: #hasWorkingCopy.
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   288
	self changed: #canSave.
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   289
	self changed: #canBackport.
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   290
	self changed: #hasRepository.
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   291
!
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   292
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   293
defaultExtent
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   294
	^ 550@200
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   295
!
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   296
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   297
defaultLabel
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   298
	^ 'Monticello Browser'
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   299
!
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   300
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   301
defaults
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   302
	^ defaults ifNil: [defaults _ Dictionary new]
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   303
!
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   304
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   305
editLoadScripts
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   306
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   307
	| menu |
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   308
	self hasWorkingCopy ifFalse: [^self].
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   309
	menu _ MenuMorph new defaultTarget: self.
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   310
	menu add: 'edit preamble' selector: #editScript: argument: #preamble.
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   311
	menu add: 'edit postscript' selector: #editScript: argument: #postscript.
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   312
	menu add: 'edit preambleOfRemoval' selector: #editScript: argument: #preambleOfRemoval.
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   313
	menu add: 'edit postscriptOfRemoval' selector: #editScript: argument: #postscriptOfRemoval.
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   314
	menu popUpInWorld.
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   315
!
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   316
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   317
editScript: scriptSymbol
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   318
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   319
| script |
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   320
script _ workingCopy packageInfo perform: scriptSymbol.
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   321
script openLabel: scriptSymbol asString, ' of the Package ', workingCopy package name.
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   322
!
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   323
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   324
hasRepository
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   325
	^ self repository notNil
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   326
!
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   327
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   328
hasWorkingCopy
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   329
	^ workingCopy notNil
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   330
!
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   331
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   332
initialize
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   333
	MCWorkingCopy addDependent: self.
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   334
	self workingCopies do: [:ea | ea addDependent: self].
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   335
!
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   336
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   337
pickAncestorVersionInfo
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   338
	| ancestors index |
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   339
	ancestors _ workingCopy ancestry breadthFirstAncestors.
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   340
	index _ (PopUpMenu labelArray: (ancestors collect: [:ea | ea name]))
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   341
				startUpWithCaption: 'Ancestor:'.
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   342
	^ index = 0 ifFalse: [ ancestors at: index]
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   343
!
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   344
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   345
pickWorkingCopy
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   346
	^self pickWorkingCopySatisfying: [ :c | true ]
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   347
!
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   348
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   349
pickWorkingCopySatisfying: aBlock
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   350
	| copies index |
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   351
	copies _ self workingCopies select: aBlock.
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   352
	copies isEmpty ifTrue: [ ^nil ].
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   353
	index _ (PopUpMenu labelArray: (copies collect: [:ea | ea packageName]))
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   354
				startUpWithCaption: 'Package:'.
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   355
	^ index = 0 ifFalse: [ copies at: index]
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   356
!
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   357
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   358
repositories
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   359
	^ self repositoryGroup repositories
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   360
!
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   361
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   362
repositoryGroup
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   363
	^ workingCopy
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   364
		ifNil: [MCRepositoryGroup default]
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   365
		ifNotNil: [workingCopy repositoryGroup]
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   366
!
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   367
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   368
repositoryList
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   369
	^ self repositories collect: [:ea | ea description]
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   370
!
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   371
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   372
repositoryListMenu: aMenu
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   373
	self repository ifNil: [^ aMenu].
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   374
	self fillMenu: aMenu fromSpecs:
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   375
		#(('open repository' #openRepository)
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   376
		    ('edit repository info' #editRepository)
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   377
		   ('add to package...' #addRepositoryToPackage)
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   378
		   ('remove repository' #removeRepository)	
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   379
		   ('load repositories' #loadRepositories)	
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   380
		   ('save repositories' #saveRepositories)
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   381
		   ('flush cached versions' #flushAllCaches)	
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   382
		).
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   383
		aMenu
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   384
		add: (self repository alwaysStoreDiffs
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   385
					ifTrue: ['store full versions']
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   386
					ifFalse: ['store diffs'])
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   387
		target: self
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   388
		selector: #toggleDiffs.
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   389
	^ aMenu
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   390
				
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   391
!
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   392
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   393
repositorySelection
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   394
	^ self repositories indexOf: self repository
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   395
!
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   396
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   397
repositorySelection: aNumber
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   398
	aNumber = 0
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   399
		ifTrue: [self repository: nil]
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   400
		ifFalse: [self repository: (self repositories at: aNumber)].
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   401
	self changed: #repositorySelection.
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   402
	self changedButtons.
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   403
!
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   404
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   405
toggleDiffs
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   406
	self repository alwaysStoreDiffs
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   407
		ifTrue: [self repository doNotAlwaysStoreDiffs]
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   408
		ifFalse: [self repository doAlwaysStoreDiffs]
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   409
!
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   410
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   411
unsortedWorkingCopies
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   412
	^ MCWorkingCopy allManagers 
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   413
!
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   414
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   415
update: aSymbol
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   416
	self unsortedWorkingCopies do: [:ea | ea addDependent: self].
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   417
	self workingCopyListChanged.
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   418
!
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   419
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   420
widgetSpecs
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   421
	^ #(
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   422
		((buttonRow) (0 0 1 0) (0 0 0 30))
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   423
		((treeOrListMorph: workingCopy) (0 0 0.5 1) (0 30 0 0))
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   424
		((listMorph: repository) (0.5 0 1 1) (0 30 0 0))
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   425
		)
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   426
!
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   427
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   428
workingCopies
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   429
	^ MCWorkingCopy allManagers asSortedCollection:
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   430
		[ :a :b | a package name <= b package name ]
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   431
!
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   432
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   433
workingCopy: wc
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   434
	workingCopy _ wc.
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   435
	self changed: #workingCopyList; changed: #workingCopySelection; changed: #repositoryList.
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   436
	self changedButtons.
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   437
!
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   438
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   439
workingCopyList
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   440
	^ self workingCopies collect:
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   441
		[:ea |
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   442
		(workingCopy notNil and: [workingCopy requiredPackages includes: ea package])
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   443
			ifTrue: [Text string: ea description emphasis: (Array with: TextEmphasis bold)]
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   444
			ifFalse: [ea description]]
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   445
!
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   446
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   447
workingCopyListChanged
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   448
	self changed: #workingCopyList.
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   449
	self changed: #workingCopyTree.
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   450
	self changedButtons.
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   451
!
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   452
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   453
workingCopyListMenu: aMenu
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   454
	workingCopy ifNil: [^ aMenu].
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   455
	self fillMenu: aMenu fromSpecs:
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   456
		#(('add required package' #addRequiredPackage)
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   457
			('clear required packages' #clearRequiredPackages)
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   458
			('browse package' #browseWorkingCopy)
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   459
			('view changes' #viewChanges)
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   460
			('view history' #viewHistory)
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   461
			('recompile package' #recompilePackage)
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   462
			('revert package...' #revertPackage)
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   463
			('trim ancestry' #trimAncestry)
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   464
			('unload package' #unloadPackage)
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   465
			('delete working copy' #deleteWorkingCopy)).
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   466
	(Smalltalk includesKey: #SARMCPackageDumper) ifTrue: [
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   467
		aMenu add: 'make SAR' target: self selector: #fileOutAsSAR
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   468
	].
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   469
	^aMenu
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   470
!
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   471
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   472
workingCopyListMorph
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   473
	^ PluggableMultiColumnListMorph
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   474
		on: self
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   475
		list: #workingCopyList
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   476
		selected: #workingCopySelection
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   477
		changeSelected: #workingCopySelection:
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   478
		menu: #workingCopyListMenu:
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   479
!
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   480
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   481
workingCopySelection
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   482
	^ self workingCopies indexOf: workingCopy
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   483
!
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   484
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   485
workingCopySelection: aNumber
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   486
	self workingCopy: 
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   487
		(aNumber = 0 
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   488
			ifTrue:[nil]
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   489
			ifFalse:[self workingCopies at: aNumber]).	
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   490
!
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   491
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   492
workingCopySelectionWrapper
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   493
	^workingCopyWrapper
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   494
!
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   495
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   496
workingCopySelectionWrapper: aWrapper
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   497
	workingCopyWrapper := aWrapper.
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   498
	self changed: #workingCopySelectionWrapper.
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   499
	self workingCopy: (aWrapper ifNotNil:[aWrapper item])
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   500
!
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   501
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   502
workingCopyTree
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   503
	^ self workingCopies collect:[:each| MCDependentsWrapper with: each model: self].
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   504
!
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   505
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   506
workingCopyTreeMenu: aMenu
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   507
	workingCopy ifNil: [^ aMenu].
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   508
	self fillMenu: aMenu fromSpecs:
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   509
		#(('add required package' #addRequiredPackage)
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   510
			('clear required packages' #clearRequiredPackages)
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   511
			('browse package' #browseWorkingCopy)
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   512
			('view changes' #viewChanges)
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   513
			('view history' #viewHistory)
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   514
			('recompile package' #recompilePackage)
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   515
			('revert package...' #revertPackage)
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   516
			('unload package' #unloadPackage)
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   517
			('trim ancestry' #trimAncestry)
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   518
			('delete working copy' #deleteWorkingCopy)
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   519
			('inspect working copy' #inspectWorkingCopy)).
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   520
	(Smalltalk includesKey: #SARMCPackageDumper) ifTrue: [
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   521
		aMenu add: 'make SAR' target: self selector: #fileOutAsSAR
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   522
	].
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   523
	^aMenu
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   524
!
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   525
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   526
workingCopyTreeMorph
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   527
	^ SimpleHierarchicalListMorph
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   528
		on: self
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   529
		list: #workingCopyTree
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   530
		selected: #workingCopyWrapper
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   531
		changeSelected: #workingCopyWrapper:
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   532
		menu: #workingCopyListMenu:
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   533
! !
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   534
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   535
!MCWorkingCopyBrowser class methodsFor:'documentation'!
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   536
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   537
version
602
4d0ee5eb4551 category change
Claus Gittinger <cg@exept.de>
parents: 133
diff changeset
   538
    ^ '$Header: /cvs/stx/stx/goodies/monticello/MCWorkingCopyBrowser.st,v 1.2 2012-09-11 21:15:12 cg Exp $'
133
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   539
! !
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   540
5ea1a0145f0f initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   541
MCWorkingCopyBrowser initialize!