MCFileRepositoryInspector.st
author Claus Gittinger <cg@exept.de>
Sat, 01 Sep 2018 17:32:13 +0200
changeset 1086 efc5221435a5
parent 793 af54860401ce
child 995 92bb466548a9
permissions -rw-r--r--
initial checkin
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
123
bd7e45ff389a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     1
"{ Package: 'stx:goodies/monticello' }"
bd7e45ff389a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     2
bd7e45ff389a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     3
MCVersionInspector subclass:#MCFileRepositoryInspector
bd7e45ff389a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     4
	instanceVariableNames:'repository versions loaded newer inherited selectedPackage
bd7e45ff389a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     5
		selectedVersion order versionInfo'
bd7e45ff389a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     6
	classVariableNames:'Order'
bd7e45ff389a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     7
	poolDictionaries:''
586
16f6a09e4a40 category change
Claus Gittinger <cg@exept.de>
parents: 123
diff changeset
     8
	category:'SCM-Monticello-UI'
123
bd7e45ff389a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     9
!
bd7e45ff389a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    10
793
af54860401ce added: #documentation
Claus Gittinger <cg@exept.de>
parents: 586
diff changeset
    11
!MCFileRepositoryInspector class methodsFor:'documentation'!
af54860401ce added: #documentation
Claus Gittinger <cg@exept.de>
parents: 586
diff changeset
    12
af54860401ce added: #documentation
Claus Gittinger <cg@exept.de>
parents: 586
diff changeset
    13
documentation
af54860401ce added: #documentation
Claus Gittinger <cg@exept.de>
parents: 586
diff changeset
    14
"
af54860401ce added: #documentation
Claus Gittinger <cg@exept.de>
parents: 586
diff changeset
    15
    I'm a monticello tool composed of three panes to browse repositories and the packages they contain. You get an instance of me when you click on a repository in Monticello browser and press open. 
af54860401ce added: #documentation
Claus Gittinger <cg@exept.de>
parents: 586
diff changeset
    16
af54860401ce added: #documentation
Claus Gittinger <cg@exept.de>
parents: 586
diff changeset
    17
    My left pane presents the packages, my right one their versions and the bottom one the commit log of the selected package versions.
af54860401ce added: #documentation
Claus Gittinger <cg@exept.de>
parents: 586
diff changeset
    18
af54860401ce added: #documentation
Claus Gittinger <cg@exept.de>
parents: 586
diff changeset
    19
    I underline the packages you already loaded, and highlight the ones you don't have updated to the last version. I also highlight the versions you did not load yet.
af54860401ce added: #documentation
Claus Gittinger <cg@exept.de>
parents: 586
diff changeset
    20
af54860401ce added: #documentation
Claus Gittinger <cg@exept.de>
parents: 586
diff changeset
    21
    Example: I can browse packages of PharoInbox with:
af54860401ce added: #documentation
Claus Gittinger <cg@exept.de>
parents: 586
diff changeset
    22
    (MCFileRepositoryInspector 
af54860401ce added: #documentation
Claus Gittinger <cg@exept.de>
parents: 586
diff changeset
    23
            repository: (MCHttpRepository
af54860401ce added: #documentation
Claus Gittinger <cg@exept.de>
parents: 586
diff changeset
    24
                                            location: 'http://www.squeaksource.com/PharoInbox'
af54860401ce added: #documentation
Claus Gittinger <cg@exept.de>
parents: 586
diff changeset
    25
                                            user: ''
af54860401ce added: #documentation
Claus Gittinger <cg@exept.de>
parents: 586
diff changeset
    26
                                            password: '')
af54860401ce added: #documentation
Claus Gittinger <cg@exept.de>
parents: 586
diff changeset
    27
            workingCopy: nil) show.
af54860401ce added: #documentation
Claus Gittinger <cg@exept.de>
parents: 586
diff changeset
    28
"
af54860401ce added: #documentation
Claus Gittinger <cg@exept.de>
parents: 586
diff changeset
    29
! !
123
bd7e45ff389a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    30
bd7e45ff389a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    31
!MCFileRepositoryInspector class methodsFor:'as yet unclassified'!
bd7e45ff389a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    32
bd7e45ff389a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    33
order
bd7e45ff389a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    34
	Order isNil
bd7e45ff389a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    35
		ifTrue: [ Order _ 5 ].
bd7e45ff389a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    36
	^Order
bd7e45ff389a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    37
!
bd7e45ff389a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    38
bd7e45ff389a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    39
order: anInteger
bd7e45ff389a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    40
	Order _ anInteger
bd7e45ff389a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    41
!
bd7e45ff389a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    42
bd7e45ff389a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    43
repository: aFileBasedRepository workingCopy: aWorkingCopy
bd7e45ff389a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    44
	^self new
bd7e45ff389a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    45
		setRepository: aFileBasedRepository workingCopy: aWorkingCopy;
bd7e45ff389a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    46
		yourself
bd7e45ff389a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    47
! !
bd7e45ff389a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    48
bd7e45ff389a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    49
!MCFileRepositoryInspector class methodsFor:'class initialization'!
bd7e45ff389a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    50
bd7e45ff389a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    51
initialize
bd7e45ff389a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    52
	"self initialize"
bd7e45ff389a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    53
bd7e45ff389a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    54
	self migrateInstances
bd7e45ff389a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    55
!
bd7e45ff389a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    56
bd7e45ff389a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    57
migrateInstances
bd7e45ff389a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    58
	self allSubInstancesDo: [:inst |
bd7e45ff389a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    59
		#(packageList versionList) do: [:each |
bd7e45ff389a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    60
			[(inst findListMorph: each) highlightSelector: nil]
bd7e45ff389a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    61
				on: Error do: [:ignore | ]]].
bd7e45ff389a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    62
! !
bd7e45ff389a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    63
bd7e45ff389a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    64
!MCFileRepositoryInspector methodsFor:'as yet unclassified'!
bd7e45ff389a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    65
bd7e45ff389a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    66
load
bd7e45ff389a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    67
	self hasVersion ifTrue:
bd7e45ff389a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    68
		[self version isCacheable
bd7e45ff389a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    69
			ifTrue: [version workingCopy repositoryGroup addRepository: repository].
bd7e45ff389a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    70
		super load.
bd7e45ff389a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    71
		self refresh].
bd7e45ff389a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    72
!
bd7e45ff389a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    73
bd7e45ff389a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    74
merge
bd7e45ff389a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    75
	super merge.
bd7e45ff389a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    76
	self refresh.
bd7e45ff389a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    77
!
bd7e45ff389a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    78
bd7e45ff389a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    79
refresh
bd7e45ff389a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    80
	| packageNames name latest av |
bd7e45ff389a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    81
	packageNames _ Set new.
bd7e45ff389a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    82
	versions _ repository readableFileNames collect: [ :each |
bd7e45ff389a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    83
		name _ (each copyUpToLast: $.) copyUpTo: $(.
bd7e45ff389a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    84
		name last isDigit ifFalse: [Array with: name with: '' with: '' with: each]
bd7e45ff389a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    85
			ifTrue:
bd7e45ff389a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    86
				[Array
bd7e45ff389a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    87
					with: (packageNames add: (name copyUpToLast:  $-))		"pkg name"
bd7e45ff389a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    88
					with: ((name copyAfterLast: $-) upTo: $.)				"user"
bd7e45ff389a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    89
					with: ((name copyAfterLast: $-) copyAfter: $.) asInteger	"version"
bd7e45ff389a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    90
					with: each]].
bd7e45ff389a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    91
	newer _ Set new.
bd7e45ff389a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    92
	inherited _ Set new.
bd7e45ff389a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    93
	loaded _ Set new.
bd7e45ff389a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    94
	(MCWorkingCopy allManagers 
bd7e45ff389a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    95
"		select: [ :each | packageNames includes: each packageName]")
bd7e45ff389a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    96
		do: [:each |
bd7e45ff389a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    97
			each ancestors do: [ :ancestor |
bd7e45ff389a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    98
				loaded add: ancestor name.
bd7e45ff389a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    99
				ancestor ancestorsDoWhileTrue: [:heir |
bd7e45ff389a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   100
					(inherited includes: heir name)
bd7e45ff389a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   101
						ifTrue: [false]
bd7e45ff389a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   102
						ifFalse: [inherited add: heir name. true]]].
bd7e45ff389a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   103
			latest _ (versions select: [:v | v first = each package name])	
bd7e45ff389a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   104
				detectMax: [:v | v third].
bd7e45ff389a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   105
			(latest notNil and: [
bd7e45ff389a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   106
				each ancestors allSatisfy: [:ancestor |
bd7e45ff389a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   107
					av _ ((ancestor name copyAfterLast: $-) copyAfter: $.) asInteger.
bd7e45ff389a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   108
					av < latest third or: [
bd7e45ff389a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   109
						av = latest third and: [((ancestor name copyAfterLast: $-) upTo: $.) ~= latest second]]]])
bd7e45ff389a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   110
				ifTrue: [newer add: each package name ]].
bd7e45ff389a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   111
bd7e45ff389a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   112
	self changed: #packageList; changed: #versionList
bd7e45ff389a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   113
!
bd7e45ff389a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   114
bd7e45ff389a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   115
setRepository: aFileBasedRepository workingCopy: aWorkingCopy
bd7e45ff389a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   116
	order _ self class order.
bd7e45ff389a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   117
	repository _ aFileBasedRepository.
bd7e45ff389a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   118
	self refresh.
bd7e45ff389a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   119
	aWorkingCopy
bd7e45ff389a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   120
		ifNil: [selectedPackage _ self packageList isEmpty ifFalse: [self packageList first]]
bd7e45ff389a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   121
		ifNotNil: [ selectedPackage _ aWorkingCopy ancestry ancestorString copyUpToLast: $- ].
bd7e45ff389a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   122
	MCWorkingCopy addDependent: self.
bd7e45ff389a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   123
! !
bd7e45ff389a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   124
bd7e45ff389a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   125
!MCFileRepositoryInspector methodsFor:'morphic ui'!
bd7e45ff389a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   126
bd7e45ff389a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   127
buttonSpecs
bd7e45ff389a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   128
	^#(('Refresh' refresh 'refresh the version-list')) , super buttonSpecs
bd7e45ff389a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   129
!
bd7e45ff389a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   130
bd7e45ff389a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   131
defaultExtent
bd7e45ff389a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   132
	^450@300
bd7e45ff389a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   133
!
bd7e45ff389a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   134
bd7e45ff389a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   135
defaultLabel
bd7e45ff389a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   136
	^'Repository: ' , repository description
bd7e45ff389a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   137
!
bd7e45ff389a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   138
bd7e45ff389a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   139
hasVersion
bd7e45ff389a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   140
	^ selectedVersion notNil
bd7e45ff389a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   141
!
bd7e45ff389a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   142
bd7e45ff389a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   143
order: anInteger
bd7e45ff389a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   144
	self class order: (order _ anInteger).
bd7e45ff389a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   145
	self changed: #versionList.
bd7e45ff389a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   146
!
bd7e45ff389a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   147
bd7e45ff389a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   148
orderSpecs
bd7e45ff389a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   149
	^{
bd7e45ff389a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   150
		'unchanged' -> nil.
bd7e45ff389a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   151
		'order by package' -> [ :x :y | x first <= y first ].
bd7e45ff389a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   152
		'order by author' -> [ :x :y | x second <= y second ].
bd7e45ff389a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   153
		'order by version-string' -> [ :x :y | x third <= y third ].
bd7e45ff389a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   154
		'order by version-number' -> [ :x :y | x third asNumber >= y third asNumber ].
bd7e45ff389a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   155
		'order by filename' -> [ :x :y | x fourth <= y fourth ].
bd7e45ff389a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   156
	}
bd7e45ff389a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   157
!
bd7e45ff389a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   158
bd7e45ff389a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   159
orderString: anIndex
bd7e45ff389a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   160
	^String streamContents: [ :stream |
bd7e45ff389a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   161
		order = anIndex
bd7e45ff389a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   162
			ifTrue: [ stream nextPutAll: '<yes>' ]
bd7e45ff389a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   163
			ifFalse: [ stream nextPutAll: '<no>' ].
bd7e45ff389a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   164
		stream nextPutAll: (self orderSpecs at: anIndex) key ]
bd7e45ff389a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   165
!
bd7e45ff389a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   166
bd7e45ff389a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   167
packageHighlight: aString
bd7e45ff389a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   168
bd7e45ff389a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   169
	newer ifNil: [newer := #()].
bd7e45ff389a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   170
	^(loaded anySatisfy: [:each | (each copyUpToLast: $-) = aString])
bd7e45ff389a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   171
		ifTrue: [
bd7e45ff389a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   172
			Text string: aString
bd7e45ff389a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   173
				attribute: (TextEmphasis new emphasisCode: (
bd7e45ff389a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   174
					((newer includes: aString)
bd7e45ff389a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   175
						ifTrue: [5] ifFalse: [4])))]
bd7e45ff389a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   176
		ifFalse: [aString]
bd7e45ff389a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   177
!
bd7e45ff389a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   178
bd7e45ff389a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   179
packageList
bd7e45ff389a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   180
	| result |
bd7e45ff389a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   181
	result _ versions
bd7e45ff389a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   182
		inject: Set new
bd7e45ff389a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   183
		into: [ :set :each | set add: each first; yourself ].
bd7e45ff389a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   184
bd7e45ff389a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   185
	"sort loaded packages first, then alphabetically"
bd7e45ff389a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   186
	result _ result asSortedCollection: [:a :b |
bd7e45ff389a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   187
		| loadedA loadedB |
bd7e45ff389a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   188
		loadedA _ loaded anySatisfy: [:each | (each copyUpToLast: $-) = a].
bd7e45ff389a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   189
		loadedB _ loaded anySatisfy: [:each | (each copyUpToLast: $-) = b].
bd7e45ff389a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   190
		loadedA = loadedB 
bd7e45ff389a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   191
			ifTrue: [a < b]
bd7e45ff389a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   192
			ifFalse: [loadedA]].
bd7e45ff389a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   193
bd7e45ff389a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   194
	^result collect: [:each | self packageHighlight: each]
bd7e45ff389a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   195
!
bd7e45ff389a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   196
bd7e45ff389a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   197
packageListMenu: aMenu
bd7e45ff389a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   198
	^aMenu
bd7e45ff389a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   199
!
bd7e45ff389a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   200
bd7e45ff389a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   201
packageSelection
bd7e45ff389a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   202
	^self packageList indexOf: selectedPackage
bd7e45ff389a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   203
!
bd7e45ff389a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   204
bd7e45ff389a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   205
packageSelection: aNumber
bd7e45ff389a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   206
	selectedPackage _ aNumber isZero
bd7e45ff389a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   207
		ifFalse: [ (self packageList at: aNumber) asString ].
bd7e45ff389a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   208
	self versionSelection: 0.
bd7e45ff389a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   209
	self changed: #packageSelection; changed: #versionList
bd7e45ff389a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   210
!
bd7e45ff389a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   211
bd7e45ff389a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   212
version
bd7e45ff389a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   213
	^ version ifNil:
bd7e45ff389a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   214
		[Cursor wait showWhile:
bd7e45ff389a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   215
			[version _ repository versionFromFileNamed: selectedVersion].
bd7e45ff389a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   216
		version]
bd7e45ff389a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   217
!
bd7e45ff389a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   218
bd7e45ff389a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   219
versionHighlight: aString
bd7e45ff389a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   220
bd7e45ff389a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   221
	| verName |
bd7e45ff389a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   222
	inherited ifNil: [inherited := #()].
bd7e45ff389a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   223
	verName := (aString copyUpToLast: $.) copyUpTo: $(.
bd7e45ff389a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   224
	^Text
bd7e45ff389a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   225
		string: aString
bd7e45ff389a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   226
		attribute: (TextEmphasis new emphasisCode: (
bd7e45ff389a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   227
			((loaded includes: verName) ifTrue: [ 4 "underlined" ]
bd7e45ff389a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   228
				ifFalse: [ (inherited includes: verName)
bd7e45ff389a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   229
					ifTrue: [ 0 ]
bd7e45ff389a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   230
					ifFalse: [ 1 "bold" ] ])))
bd7e45ff389a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   231
!
bd7e45ff389a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   232
bd7e45ff389a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   233
versionInfo
bd7e45ff389a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   234
	^ versionInfo ifNil: [versionInfo _ repository versionInfoFromFileNamed: selectedVersion]
bd7e45ff389a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   235
!
bd7e45ff389a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   236
bd7e45ff389a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   237
versionList
bd7e45ff389a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   238
	| result sortBlock |
bd7e45ff389a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   239
	result _ selectedPackage isNil
bd7e45ff389a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   240
		ifTrue: [ versions ]
bd7e45ff389a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   241
		ifFalse: [ versions select: [ :each | selectedPackage = each first ] ].
bd7e45ff389a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   242
	sortBlock _ (self orderSpecs at: order) value.
bd7e45ff389a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   243
	sortBlock isNil ifFalse: [
bd7e45ff389a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   244
		result _ result asSortedCollection: [:a :b | [sortBlock value: a value: b] on: Error do: [true]]].
bd7e45ff389a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   245
	^result _ result 
bd7e45ff389a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   246
		collect: [ :each | self versionHighlight: each fourth ]
bd7e45ff389a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   247
!
bd7e45ff389a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   248
bd7e45ff389a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   249
versionListMenu: aMenu
bd7e45ff389a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   250
	1 to: self orderSpecs size do: [ :index |
bd7e45ff389a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   251
		aMenu addUpdating: #orderString: target: self selector: #order: argumentList: { index } ].
bd7e45ff389a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   252
	^aMenu
bd7e45ff389a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   253
!
bd7e45ff389a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   254
bd7e45ff389a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   255
versionSelection
bd7e45ff389a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   256
	^self versionList indexOf: selectedVersion
bd7e45ff389a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   257
!
bd7e45ff389a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   258
bd7e45ff389a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   259
versionSelection: aNumber
bd7e45ff389a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   260
	aNumber isZero 
bd7e45ff389a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   261
		ifTrue: [ selectedVersion _ version _ versionInfo _ nil ]
bd7e45ff389a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   262
		ifFalse: [ 
bd7e45ff389a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   263
			selectedVersion _ (self versionList at: aNumber) asString.
bd7e45ff389a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   264
			version _ versionInfo _ nil].
bd7e45ff389a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   265
	self changed: #versionSelection; changed: #summary; changed: #hasVersion
bd7e45ff389a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   266
!
bd7e45ff389a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   267
bd7e45ff389a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   268
versionSummary
bd7e45ff389a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   269
	^ version
bd7e45ff389a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   270
		ifNotNil: [version summary]
bd7e45ff389a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   271
		ifNil: [self versionInfo summary]
bd7e45ff389a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   272
!
bd7e45ff389a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   273
bd7e45ff389a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   274
widgetSpecs
bd7e45ff389a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   275
	^#(	((buttonRow) (0 0 1 0) (0 0 0 30))
bd7e45ff389a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   276
		((listMorph: package) (0 0 0.5 0.6) (0 30 0 0))
bd7e45ff389a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   277
		((listMorph: version) (0.5 0 1 0.6) (0 30 0 0))
bd7e45ff389a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   278
		((textMorph: summary) (0 0.6 1 1) (0 0 0 0)) )
bd7e45ff389a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   279
! !
bd7e45ff389a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   280
bd7e45ff389a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   281
!MCFileRepositoryInspector class methodsFor:'documentation'!
bd7e45ff389a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   282
bd7e45ff389a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   283
version
793
af54860401ce added: #documentation
Claus Gittinger <cg@exept.de>
parents: 586
diff changeset
   284
    ^ '$Header: /cvs/stx/stx/goodies/monticello/MCFileRepositoryInspector.st,v 1.3 2013-05-15 12:03:44 cg Exp $'
123
bd7e45ff389a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   285
! !
bd7e45ff389a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   286
793
af54860401ce added: #documentation
Claus Gittinger <cg@exept.de>
parents: 586
diff changeset
   287
123
bd7e45ff389a initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   288
MCFileRepositoryInspector initialize!