[squeak-dev] The Trunk: Monticello-cmm.423.mcz
commits at source.squeak.org
commits at source.squeak.org
Tue Mar 15 19:16:07 UTC 2011
Chris Muller uploaded a new version of Monticello to project The Trunk:
http://source.squeak.org/trunk/Monticello-cmm.423.mcz
==================== Summary ====================
Name: Monticello-cmm.423
Author: cmm
Time: 2 March 2011, 5:48:56.724 pm
UUID: bcedce06-f18b-41c0-beea-955c1a1b6fde
Ancestors: Monticello-ul.422
- Moved MCFileBasedRepository's file-based API to 'private-files' since it cannot be part of the regular public API and be generic with DB-based repository's.
- Another step toward unified RepositoryInspectors. The Repository's should assume responsibility for satisfying a generic MCRepositoryInspector. The steps I took to do this were:
1) Removed (the old) MCRepositoryInspector,
2) renamed MCFileRepositoryInspector to MCRepositoryInspector.
3) Created a new empty subclass named MCFileRepositoryInspector to handle filebased repository-specific behavior, but I anticipate all behaviors will factor out and it won't be needed at all.
- Added new required API for MCRepository's: #versionNamesForPackageNamed:.
- Augmented MCFileName with ancestorAuthor and ancestorVersionNumber. These are used for MCDiffyVersions (.mcd).
=============== Diff against Monticello-ul.422 ===============
Item was changed:
+ ----- Method: MCFileBasedRepository>>allFileNames (in category 'private-files') -----
- ----- Method: MCFileBasedRepository>>allFileNames (in category 'files') -----
allFileNames
self subclassResponsibility!
Item was changed:
+ ----- Method: MCFileBasedRepository>>allFileNamesForVersionNamed: (in category 'private-files') -----
- ----- Method: MCFileBasedRepository>>allFileNamesForVersionNamed: (in category 'files') -----
allFileNamesForVersionNamed: aString
^ self filterFileNames: self readableFileNames forVersionNamed: aString!
Item was changed:
+ ----- Method: MCFileBasedRepository>>allFileNamesOrCache (in category 'private-files') -----
- ----- Method: MCFileBasedRepository>>allFileNamesOrCache (in category 'files') -----
allFileNamesOrCache
^ allFileNames ifNil: [self allFileNames]!
Item was changed:
+ ----- Method: MCFileBasedRepository>>canReadFileNamed: (in category 'private-files') -----
- ----- Method: MCFileBasedRepository>>canReadFileNamed: (in category 'private') -----
canReadFileNamed: aString
| reader |
reader := MCVersionReader readerClassForFileNamed: aString.
^ reader notNil!
Item was changed:
+ ----- Method: MCFileBasedRepository>>filterFileNames:forVersionNamed: (in category 'private-files') -----
- ----- Method: MCFileBasedRepository>>filterFileNames:forVersionNamed: (in category 'files') -----
filterFileNames: aCollection forVersionNamed: aString
^ aCollection select: [:ea | (self versionNameFromFileName: ea) = aString] !
Item was changed:
+ ----- Method: MCFileBasedRepository>>readableFileNames (in category 'private-files') -----
- ----- Method: MCFileBasedRepository>>readableFileNames (in category 'files') -----
readableFileNames
| all cached new |
all := self allFileNamesOrCache. "from repository"
cached := self cachedFileNames. "in memory"
new := all difference: cached.
^ (cached asArray, new)
select: [:ea | self canReadFileNamed: ea]!
Item was added:
+ ----- Method: MCFileBasedRepository>>versionNamesForPackageNamed: (in category 'versions') -----
+ versionNamesForPackageNamed: aString
+ "Answer a collection of MCFileNames whose Package is named aString."
+ ^ (self allVersionNames collect:
+ [ : eachString | MCFileName on: eachString ]) select:
+ [ : eachMCFileName | eachMCFileName packageName = aString ]!
Item was changed:
+ ----- Method: MCFileBasedRepository>>writeStreamForFileNamed:do: (in category 'private-files') -----
- ----- Method: MCFileBasedRepository>>writeStreamForFileNamed:do: (in category 'private') -----
writeStreamForFileNamed: aString do: aBlock
^ self writeStreamForFileNamed: aString replace: false do: aBlock!
Item was changed:
Object subclass: #MCFileName
+ instanceVariableNames: 'packageName author extension versionNumber fileName ancestorAuthor ancestorVersionNumber'
- instanceVariableNames: 'packageName author extension versionNumber fileName'
classVariableNames: ''
poolDictionaries: ''
category: 'Monticello-Modeling'!
+ !MCFileName commentStamp: 'cmm 3/2/2011 15:25' prior: 0!
+ A MCFileName models the Monticello file / version name, in the format [Package]-[Author].[version-number]([ancestorAuthor.ancestorVersionNumber]).[mc?].
- !MCFileName commentStamp: 'cmm 2/28/2011 16:05' prior: 0!
- A MCFileName models the Monticello file / version name, in the format [Package]-[Author].[version-number].[mc?].
The final file-extension only applies to filenames, not version names.
Instance Variables
author: <String>
extension: <String>
fileName: <String>
packageName: <String>
versionNumber: <Integer>!
Item was changed:
----- Method: MCFileName>>= (in category 'testing') -----
= aMCFileName
self == aMCFileName ifTrue: [ ^ true ].
self species = aMCFileName species ifFalse: [ ^ false ].
^ self versionNumber = aMCFileName versionNumber and:
+ [ self author = aMCFileName author and:
+ [ self packageName = aMCFileName packageName and:
+ [ self ancestorAuthor = aMCFileName ancestorAuthor and: [ self ancestorVersionNumber = aMCFileName ancestorVersionNumber ] ] ] ]!
- [ self author = aMCFileName author and: [ self packageName = aMCFileName packageName ] ]!
Item was added:
+ ----- Method: MCFileName>>ancestorAuthor (in category 'access') -----
+ ancestorAuthor
+ "The author of the ancestor, if this is a Diffy filename."
+ ^ ancestorAuthor!
Item was added:
+ ----- Method: MCFileName>>ancestorVersionNumber (in category 'access') -----
+ ancestorVersionNumber
+ "The Integer versionNumber of the ancestor, if this is a Diffy filename."
+ ^ ancestorVersionNumber!
Item was changed:
----- Method: MCFileName>>filename: (in category 'initializing') -----
filename: aString
+ "Parse aString which is assumed to be either a MC filename [Package]-[author].[versionNumber]([ancestorAuthor].[ancestorVersionNumber]), with or without a .mc? extension. The ancestorAuthor and ancestorVersionNumber are only applicable for 'diffy' names."
+ | versionName ancestry |
- "Parse aString which is assumed to be either a MC filename [Package]-[author].[versionNumber], with or without a .mc? extension."
- | name |
fileName := aString.
+ versionName := (aString copyUpToLast: $.) copyUpTo: $(.
+ packageName := versionName copyUpToLast: $-.
+ author := (versionName copyAfterLast: $-) copyUpTo: $..
+ versionNumber := versionName last isDigit
- name := (aString copyUpToLast: $.) copyUpTo: $(.
- packageName := name copyUpToLast: $-.
- author := (name copyAfterLast: $-) copyUpTo: $..
- versionNumber := name last isDigit
ifTrue:
[ extension := aString copyAfterLast: $..
+ ((versionName copyAfterLast: $-) copyAfter: $.) asInteger ifNil: [ 0 ] ]
+ ifFalse: [ ((aString copyAfterLast: $-) copyAfter: $.) asInteger ifNil: [ 0 ] ].
+ ancestry := (aString copyAfterLast: $() copyUpTo: $).
+ ancestry ifNotEmpty:
+ [ ancestorAuthor := (ancestry copyUpTo: $.).
+ ancestorVersionNumber := ((ancestry copyAfter: $.) asInteger) ifNil: [ 0 ] ]!
- ((name copyAfterLast: $-) copyAfter: $.) asInteger ifNil: [ 0 ] ]
- ifFalse: [ ((aString copyAfterLast: $-) copyAfter: $.) asInteger ifNil: [ 0 ] ]!
Item was changed:
----- Method: MCFileName>>isValid (in category 'testing') -----
isValid
+ ^ { packageName. author. versionNumber } allSatisfy: [ : e | e notNil ]!
- ^ { packageName. author. extension. versionNumber } allSatisfy: [ : e | e notNil ]!
Item was changed:
----- Method: MCFileName>>versionNumber (in category 'access') -----
versionNumber
+ "The Integer version number identified by this filename."
- "The version number identified by this filename."
^ versionNumber!
Item was changed:
+ MCRepositoryInspector subclass: #MCFileRepositoryInspector
+ instanceVariableNames: ''
+ classVariableNames: ''
- MCVersionInspector subclass: #MCFileRepositoryInspector
- instanceVariableNames: 'repository versions selectedPackage selectedVersion order versionInfo packageList'
- classVariableNames: 'Order'
poolDictionaries: ''
category: 'Monticello-UI'!
Item was removed:
- ----- Method: MCFileRepositoryInspector class>>initialize (in category 'class initialization') -----
- initialize
- "self initialize"
-
- self migrateInstances!
Item was removed:
- ----- Method: MCFileRepositoryInspector class>>migrateInstances (in category 'class initialization') -----
- migrateInstances
- self allSubInstancesDo: [:inst |
- #(packageList versionList) do: [:each |
- [(inst findListMorph: each) highlightSelector: nil]
- on: Error do: [:ignore | ]]].!
Item was removed:
- ----- Method: MCFileRepositoryInspector class>>order (in category 'as yet unclassified') -----
- order
- Order isNil
- ifTrue: [ Order := 5 ].
- ^Order!
Item was removed:
- ----- Method: MCFileRepositoryInspector class>>order: (in category 'as yet unclassified') -----
- order: anInteger
- Order := anInteger!
Item was removed:
- ----- Method: MCFileRepositoryInspector class>>repository:workingCopy: (in category 'as yet unclassified') -----
- repository: aFileBasedRepository workingCopy: aWorkingCopy
- ^self new
- setRepository: aFileBasedRepository workingCopy: aWorkingCopy;
- yourself!
Item was removed:
- ----- Method: MCFileRepositoryInspector>>defaultExtent (in category 'morphic ui') -----
- defaultExtent
- ^450 at 300!
Item was removed:
- ----- Method: MCFileRepositoryInspector>>defaultLabel (in category 'morphic ui') -----
- defaultLabel
- ^'Repository: ' , repository description!
Item was removed:
- ----- Method: MCFileRepositoryInspector>>hasNewerVersionsFor: (in category 'private') -----
- hasNewerVersionsFor: aMCWorkingCopy
- | latest |
- latest := (versions select:
- [ : eachMCFileName | eachMCFileName packageName = aMCWorkingCopy package name ]) detectMax:
- [ : eachMCFileName | eachMCFileName versionNumber ].
- ^ latest notNil and:
- [ aMCWorkingCopy ancestors allSatisfy:
- [ : ancestor | | loadedVersionNumber ancestorName |
- ancestorName := ancestor mcName.
- loadedVersionNumber := ancestorName versionNumber.
- loadedVersionNumber < latest versionNumber or:
- [ loadedVersionNumber = latest versionNumber and: [ ancestorName author ~= latest author ] ] ] ]!
Item was removed:
- ----- Method: MCFileRepositoryInspector>>hasVersion (in category 'morphic ui') -----
- hasVersion
- ^ selectedVersion notNil!
Item was removed:
- ----- Method: MCFileRepositoryInspector>>load (in category 'actions') -----
- load
- self hasVersion ifTrue:
- [self version isCacheable
- ifTrue: [version workingCopy repositoryGroup addRepository: repository].
- super load.
- self refresh].!
Item was removed:
- ----- Method: MCFileRepositoryInspector>>merge (in category 'actions') -----
- merge
- super merge.
- self refresh.
- !
Item was removed:
- ----- Method: MCFileRepositoryInspector>>order: (in category 'morphic ui') -----
- order: anInteger
- self class order: (order := anInteger).
- self changed: #versionList.!
Item was removed:
- ----- Method: MCFileRepositoryInspector>>orderSpecs (in category 'morphic ui') -----
- orderSpecs
- ^{
- 'unchanged' -> nil.
- 'order by package' -> [ :x :y | x packageName < y packageName ].
- 'order by author' -> [ :x :y | x author < y author ].
- 'order by version-string' -> [ :x :y | x versionNumber asString < y versionNumber asString ].
- 'order by version-number' -> [ :x :y | x versionNumber > y versionNumber ].
- 'order by filename' -> [ :x :y | x fileName < y fileName ].
- }!
Item was removed:
- ----- Method: MCFileRepositoryInspector>>orderString: (in category 'morphic ui') -----
- orderString: anIndex
- ^String streamContents: [ :stream |
- order = anIndex
- ifTrue: [ stream nextPutAll: '<yes>' ]
- ifFalse: [ stream nextPutAll: '<no>' ].
- stream nextPutAll: (self orderSpecs at: anIndex) key ]!
Item was removed:
- ----- Method: MCFileRepositoryInspector>>packageHighlight: (in category 'morphic ui') -----
- packageHighlight: aString
- newer ifNil: [ newer := #() ].
- ^ (loaded anySatisfy:
- [ : each | each packageName = aString ])
- ifTrue:
- [ Text
- string: aString
- attribute:
- (TextEmphasis new emphasisCode:
- ((newer includes: aString)
- ifTrue: [ 5 ]
- ifFalse: [ 4 ])) ]
- ifFalse: [ aString ]!
Item was removed:
- ----- Method: MCFileRepositoryInspector>>packageList (in category 'morphic ui') -----
- packageList
-
- | result loadedPackages |
- packageList ifNotNil: [ ^packageList ].
- result := Set new: versions size.
- versions do: [ :each | result add: each packageName ].
-
- "sort loaded packages first, then alphabetically"
- loadedPackages := Set new: loaded size.
- loaded do: [ :each |
- loadedPackages add: (each packageName) ].
- result := result asArray sort: [ :a :b |
- | loadedA loadedB |
- loadedA := loadedPackages includes: a.
- loadedB := loadedPackages includes: b.
- loadedA = loadedB
- ifTrue: [ a < b ]
- ifFalse: [ loadedA ] ].
-
- ^packageList := result collect: [ :each | self packageHighlight: each ]!
Item was removed:
- ----- Method: MCFileRepositoryInspector>>packageListMenu: (in category 'morphic ui') -----
- packageListMenu: aMenu
- ^aMenu!
Item was removed:
- ----- Method: MCFileRepositoryInspector>>packageSelection (in category 'morphic ui') -----
- packageSelection
- ^self packageList indexOf: selectedPackage!
Item was removed:
- ----- Method: MCFileRepositoryInspector>>packageSelection: (in category 'morphic ui') -----
- packageSelection: aNumber
- selectedPackage := aNumber isZero
- ifFalse: [ (self packageList at: aNumber) asString ].
- self versionSelection: 0.
- self changed: #packageSelection; changed: #versionList!
Item was removed:
- ----- Method: MCFileRepositoryInspector>>postAcceptBrowseFor: (in category 'private') -----
- postAcceptBrowseFor: aModel
- "Make the same selections as in aModel."
- self
- packageSelection: aModel packageSelection ;
- versionSelection: aModel versionSelection!
Item was removed:
- ----- Method: MCFileRepositoryInspector>>refresh (in category 'actions') -----
- refresh
- packageList := nil.
- versions := repository readableFileNames collect: [ : each | MCFileName on: each ].
- self
- refreshEmphasis ;
- changed: #packageList ;
- changed: #versionList!
Item was removed:
- ----- Method: MCFileRepositoryInspector>>repository (in category 'private') -----
- repository
- ^ repository!
Item was removed:
- ----- Method: MCFileRepositoryInspector>>representsSameBrowseeAs: (in category 'morphic ui') -----
- representsSameBrowseeAs: anotherModel
- ^ self class = anotherModel class
- and: [ self repository = anotherModel repository ]!
Item was removed:
- ----- Method: MCFileRepositoryInspector>>setRepository:workingCopy: (in category 'initialize-release') -----
- setRepository: aFileBasedRepository workingCopy: aWorkingCopy
- order := self class order.
- repository := aFileBasedRepository.
- self refresh.
- aWorkingCopy
- ifNil: [selectedPackage := self packageList isEmpty ifFalse: [self packageList first]]
- ifNotNil: [ selectedPackage := aWorkingCopy ancestry ancestorString copyUpToLast: $- ].
- MCWorkingCopy addDependent: self.
- !
Item was removed:
- ----- Method: MCFileRepositoryInspector>>version (in category 'morphic ui') -----
- version
- ^ version ifNil:
- [Cursor wait showWhile:
- [version := repository versionFromFileNamed: selectedVersion].
- version]!
Item was removed:
- ----- Method: MCFileRepositoryInspector>>versionHighlight: (in category 'morphic ui') -----
- versionHighlight: aMCFileName
- inherited ifNil: [inherited := #()].
- ^Text
- string: aMCFileName fileName
- attribute: (TextEmphasis new emphasisCode: (
- ((loaded includes: aMCFileName) ifTrue: [ 4 "underlined" ]
- ifFalse: [ (inherited includes: aMCFileName versionName)
- ifTrue: [ 0 ]
- ifFalse: [ 1 "bold" ] ])))!
Item was removed:
- ----- Method: MCFileRepositoryInspector>>versionInfo (in category 'morphic ui') -----
- versionInfo
- ^ versionInfo ifNil: [versionInfo := repository versionInfoFromFileNamed: selectedVersion]!
Item was removed:
- ----- Method: MCFileRepositoryInspector>>versionList (in category 'morphic ui') -----
- versionList
- | result |
- result := selectedPackage
- ifNil: [ versions copy ]
- ifNotNil:
- [ versions select:
- [ : each | selectedPackage = each packageName ] ].
- "Not sure why we need this ugly Error trapping here.."
- (self orderSpecs at: order) value ifNotNil:
- [ : sortBlock | result sort:
- [ : a : b | [ sortBlock
- value: a
- value: b ]
- on: Error
- do: [ true ] ] ].
- ^ result replace:
- [ : each | self versionHighlight: each ]!
Item was removed:
- ----- Method: MCFileRepositoryInspector>>versionListMenu: (in category 'morphic ui') -----
- versionListMenu: aMenu
- 1 to: self orderSpecs size do: [ :index |
- aMenu addUpdating: #orderString: target: self selector: #order: argumentList: { index } ].
- ^aMenu!
Item was removed:
- ----- Method: MCFileRepositoryInspector>>versionSelection (in category 'morphic ui') -----
- versionSelection
- ^self versionList indexOf: selectedVersion!
Item was removed:
- ----- Method: MCFileRepositoryInspector>>versionSelection: (in category 'morphic ui') -----
- versionSelection: aNumber
- aNumber isZero
- ifTrue: [ selectedVersion := version := versionInfo := nil ]
- ifFalse: [
- selectedVersion := (self versionList at: aNumber) asString.
- version := versionInfo := nil].
- self changed: #versionSelection; changed: #summary; changed: #hasVersion!
Item was removed:
- ----- Method: MCFileRepositoryInspector>>versionSummary (in category 'morphic ui') -----
- versionSummary
- ^ version
- ifNotNil: [version summary]
- ifNil: [self versionInfo summary]!
Item was removed:
- ----- Method: MCFileRepositoryInspector>>widgetSpecs (in category 'morphic ui') -----
- widgetSpecs
- ^#( ((buttonRow) (0 0 1 0) (0 0 0 30))
- ((listMorph: package) (0 0 0.5 0.6) (0 30 0 0))
- ((listMorph: version) (0.5 0 1 0.6) (0 30 0 0))
- ((textMorph: summary) (0 0.6 1 1) (0 0 0 0)) )!
Item was added:
+ ----- Method: MCRepository>>versionNamesForPackageNamed: (in category 'versions') -----
+ versionNamesForPackageNamed: aString
+ "Answer a collection of MCFileNames whose Package is named aString."
+ self subclassResponsibility!
Item was changed:
MCVersionInspector subclass: #MCRepositoryInspector
+ instanceVariableNames: 'repository packageNames versionNames selectedPackage selectedVersion order versionInfo'
+ classVariableNames: 'Order'
- instanceVariableNames: 'repository packages versions selectedPackage selectedVersion'
- classVariableNames: ''
poolDictionaries: ''
category: 'Monticello-UI'!
Item was added:
+ ----- Method: MCRepositoryInspector class>>initialize (in category 'class initialization') -----
+ initialize
+ "self initialize"
+
+ self migrateInstances!
Item was added:
+ ----- Method: MCRepositoryInspector class>>migrateInstances (in category 'class initialization') -----
+ migrateInstances
+ self allSubInstancesDo: [:inst |
+ #(packageList versionList) do: [:each |
+ [(inst findListMorph: each) highlightSelector: nil]
+ on: Error do: [:ignore | ]]].!
Item was added:
+ ----- Method: MCRepositoryInspector class>>order (in category 'as yet unclassified') -----
+ order
+ Order isNil
+ ifTrue: [ Order := 5 ].
+ ^Order!
Item was added:
+ ----- Method: MCRepositoryInspector class>>order: (in category 'as yet unclassified') -----
+ order: anInteger
+ Order := anInteger!
Item was changed:
----- Method: MCRepositoryInspector class>>repository:workingCopy: (in category 'as yet unclassified') -----
repository: aFileBasedRepository workingCopy: aWorkingCopy
^self new
setRepository: aFileBasedRepository workingCopy: aWorkingCopy;
yourself!
Item was changed:
----- Method: MCRepositoryInspector>>defaultExtent (in category 'morphic ui') -----
defaultExtent
^450 at 300!
Item was changed:
----- Method: MCRepositoryInspector>>defaultLabel (in category 'morphic ui') -----
defaultLabel
^'Repository: ' , repository description!
Item was added:
+ ----- Method: MCRepositoryInspector>>hasNewerVersionsFor: (in category 'private') -----
+ hasNewerVersionsFor: aMCWorkingCopy
+ | latest |
+ latest := (versionNames select:
+ [ : eachMCFileName | eachMCFileName packageName = aMCWorkingCopy package name ]) detectMax:
+ [ : eachMCFileName | eachMCFileName versionNumber ].
+ ^ latest notNil and:
+ [ aMCWorkingCopy ancestors allSatisfy:
+ [ : ancestor | | loadedVersionNumber ancestorName |
+ ancestorName := ancestor mcName.
+ loadedVersionNumber := ancestorName versionNumber.
+ loadedVersionNumber < latest versionNumber or:
+ [ loadedVersionNumber = latest versionNumber and: [ ancestorName author ~= latest author ] ] ] ]!
Item was changed:
----- Method: MCRepositoryInspector>>hasVersion (in category 'morphic ui') -----
hasVersion
^ selectedVersion notNil!
Item was changed:
+ ----- Method: MCRepositoryInspector>>load (in category 'actions') -----
- ----- Method: MCRepositoryInspector>>load (in category 'accessing') -----
load
self hasVersion ifTrue:
+ [self version isCacheable
+ ifTrue: [version workingCopy repositoryGroup addRepository: repository].
+ super load.
+ self refresh].!
- [super load.
- self version workingCopy repositoryGroup addRepository: repository].!
Item was added:
+ ----- Method: MCRepositoryInspector>>merge (in category 'actions') -----
+ merge
+ super merge.
+ self refresh.
+ !
Item was added:
+ ----- Method: MCRepositoryInspector>>order: (in category 'morphic ui') -----
+ order: anInteger
+ self class order: (order := anInteger).
+ self changed: #versionList.!
Item was added:
+ ----- Method: MCRepositoryInspector>>orderSpecs (in category 'morphic ui') -----
+ orderSpecs
+ ^{
+ 'unchanged' -> nil.
+ 'order by package' -> [ :x :y | x packageName < y packageName ].
+ 'order by author' -> [ :x :y | x author < y author ].
+ 'order by version-string' -> [ :x :y | x versionNumber asString < y versionNumber asString ].
+ 'order by version-number' -> [ :x :y | x versionNumber > y versionNumber ].
+ 'order by filename' -> [ :x :y | x fileName < y fileName ].
+ }!
Item was added:
+ ----- Method: MCRepositoryInspector>>orderString: (in category 'morphic ui') -----
+ orderString: anIndex
+ ^String streamContents: [ :stream |
+ order = anIndex
+ ifTrue: [ stream nextPutAll: '<yes>' ]
+ ifFalse: [ stream nextPutAll: '<no>' ].
+ stream nextPutAll: (self orderSpecs at: anIndex) key ]!
Item was added:
+ ----- Method: MCRepositoryInspector>>packageHighlight: (in category 'morphic ui') -----
+ packageHighlight: aString
+ newer ifNil: [ newer := #() ].
+ ^ (loaded anySatisfy:
+ [ : each | each packageName = aString ])
+ ifTrue:
+ [ Text
+ string: aString
+ attribute:
+ (TextEmphasis new emphasisCode:
+ ((newer includes: aString)
+ ifTrue: [ 5 ]
+ ifFalse: [ 4 ])) ]
+ ifFalse: [ aString ]!
Item was changed:
----- Method: MCRepositoryInspector>>packageList (in category 'morphic ui') -----
packageList
+
+ | result loadedPackages |
+ packageNames ifNotNil: [ ^packageNames ].
+ result := Set new: versionNames size.
+ versionNames do: [ :each | result add: each packageName ].
+
+ "sort loaded packages first, then alphabetically"
+ loadedPackages := Set new: loaded size.
+ loaded do: [ :each |
+ loadedPackages add: (each packageName) ].
+ result := result asArray sort: [ :a :b |
+ | loadedA loadedB |
+ loadedA := loadedPackages includes: a.
+ loadedB := loadedPackages includes: b.
+ loadedA = loadedB
+ ifTrue: [ a < b ]
+ ifFalse: [ loadedA ] ].
+
+ ^packageNames := result collect: [ :each | self packageHighlight: each ]!
- ^ packages collect: [:ea | ea name]!
Item was changed:
----- Method: MCRepositoryInspector>>packageListMenu: (in category 'morphic ui') -----
packageListMenu: aMenu
^aMenu!
Item was changed:
----- Method: MCRepositoryInspector>>packageSelection (in category 'morphic ui') -----
packageSelection
+ ^self packageList indexOf: selectedPackage!
- ^ packages indexOf: selectedPackage!
Item was changed:
----- Method: MCRepositoryInspector>>packageSelection: (in category 'morphic ui') -----
packageSelection: aNumber
+ selectedPackage := aNumber isZero
+ ifFalse: [ (self packageList at: aNumber) asString ].
+ self versionSelection: 0.
- selectedPackage := aNumber isZero ifFalse: [ packages at: aNumber ].
- versions := repository versionsAvailableForPackage: selectedPackage.
self changed: #packageSelection; changed: #versionList!
Item was changed:
+ ----- Method: MCRepositoryInspector>>refresh (in category 'actions') -----
- ----- Method: MCRepositoryInspector>>refresh (in category 'accessing') -----
refresh
+ packageNames := nil.
+ versionNames := repository readableFileNames collect: [ : each | MCFileName on: each ].
+ self
+ refreshEmphasis ;
+ changed: #packageList ;
+ changed: #versionList!
- packages := repository packages.
- self changed: #packageList.
- self packageSelection: self packageSelection.
- !
Item was changed:
+ ----- Method: MCRepositoryInspector>>representsSameBrowseeAs: (in category 'morphic ui') -----
- ----- Method: MCRepositoryInspector>>representsSameBrowseeAs: (in category 'private') -----
representsSameBrowseeAs: anotherModel
^ self class = anotherModel class
and: [ self repository = anotherModel repository ]!
Item was changed:
----- Method: MCRepositoryInspector>>setRepository:workingCopy: (in category 'initialize-release') -----
+ setRepository: aFileBasedRepository workingCopy: aWorkingCopy
+ order := self class order.
+ repository := aFileBasedRepository.
+ self refresh.
+ aWorkingCopy
+ ifNil: [selectedPackage := self packageList isEmpty ifFalse: [self packageList first]]
+ ifNotNil: [ selectedPackage := aWorkingCopy ancestry ancestorString copyUpToLast: $- ].
+ MCWorkingCopy addDependent: self.
+ !
- setRepository: aRepository workingCopy: aWorkingCopy
- repository := aRepository.
- aWorkingCopy isNil ifFalse: [ selectedPackage := aWorkingCopy package].
- self refresh!
Item was removed:
- ----- Method: MCRepositoryInspector>>sortedVersions (in category 'morphic ui') -----
- sortedVersions
- | sorter |
- sorter := MCVersionSorter new.
- sorter addAllVersionInfos: versions.
- ^ sorter sortedVersionInfos select: [:ea | versions includes: ea]!
Item was removed:
- ----- Method: MCRepositoryInspector>>summary (in category 'accessing') -----
- summary
- ^ selectedVersion
- ifNotNil: [selectedVersion summary]
- ifNil: ['']!
Item was changed:
+ ----- Method: MCRepositoryInspector>>version (in category 'morphic ui') -----
- ----- Method: MCRepositoryInspector>>version (in category 'accessing') -----
version
+ ^ version ifNil:
+ [Cursor wait showWhile:
+ [version := repository versionFromFileNamed: selectedVersion].
+ version]!
- ^ version ifNil: [version := repository versionWithInfo: selectedVersion]!
Item was added:
+ ----- Method: MCRepositoryInspector>>versionHighlight: (in category 'morphic ui') -----
+ versionHighlight: aMCFileName
+ inherited ifNil: [inherited := #()].
+ ^Text
+ string: aMCFileName fileName
+ attribute: (TextEmphasis new emphasisCode: (
+ ((loaded includes: aMCFileName) ifTrue: [ 4 "underlined" ]
+ ifFalse: [ (inherited includes: aMCFileName versionName)
+ ifTrue: [ 0 ]
+ ifFalse: [ 1 "bold" ] ])))!
Item was added:
+ ----- Method: MCRepositoryInspector>>versionInfo (in category 'morphic ui') -----
+ versionInfo
+ ^ versionInfo ifNil: [versionInfo := repository versionInfoFromFileNamed: selectedVersion]!
Item was changed:
----- Method: MCRepositoryInspector>>versionList (in category 'morphic ui') -----
versionList
+ | result |
+ result := selectedPackage
+ ifNil: [ Array empty ]
+ ifNotNil:
+ [ repository versionNamesForPackageNamed: selectedPackage ].
+ "Not sure why we need this ugly Error trapping here.."
+ (self orderSpecs at: order) value ifNotNil:
+ [ : sortBlock | result sort:
+ [ : a : b | [ sortBlock
+ value: a
+ value: b ]
+ on: Error
+ do: [ true ] ] ].
+ ^ result replace:
+ [ : each | self versionHighlight: each ]!
- ^ self sortedVersions collect: [:ea | ea name]!
Item was changed:
----- Method: MCRepositoryInspector>>versionListMenu: (in category 'morphic ui') -----
versionListMenu: aMenu
+ 1 to: self orderSpecs size do: [ :index |
+ aMenu addUpdating: #orderString: target: self selector: #order: argumentList: { index } ].
^aMenu!
Item was changed:
----- Method: MCRepositoryInspector>>versionSelection (in category 'morphic ui') -----
versionSelection
+ ^self versionList indexOf: selectedVersion!
- ^ versions indexOf: selectedVersion!
Item was changed:
----- Method: MCRepositoryInspector>>versionSelection: (in category 'morphic ui') -----
versionSelection: aNumber
aNumber isZero
+ ifTrue: [ selectedVersion := version := versionInfo := nil ]
- ifTrue: [ selectedVersion := nil ]
ifFalse: [
+ selectedVersion := (self versionList at: aNumber) asString.
+ version := versionInfo := nil].
+ self changed: #versionSelection; changed: #summary; changed: #hasVersion!
- selectedVersion := versions at: aNumber].
- self changed: #versionSelection; changed: #summary!
Item was added:
+ ----- Method: MCRepositoryInspector>>versionSummary (in category 'morphic ui') -----
+ versionSummary
+ ^ version
+ ifNotNil: [version summary]
+ ifNil: [self versionInfo summary]!
Item was changed:
----- Method: MCRepositoryInspector>>widgetSpecs (in category 'morphic ui') -----
widgetSpecs
^#( ((buttonRow) (0 0 1 0) (0 0 0 30))
((listMorph: package) (0 0 0.5 0.6) (0 30 0 0))
((listMorph: version) (0.5 0 1 0.6) (0 30 0 0))
((textMorph: summary) (0 0.6 1 1) (0 0 0 0)) )!
More information about the Squeak-dev
mailing list
|