--- a/packages/PackageDetails.st Thu Apr 10 12:02:49 2003 +0200
+++ b/packages/PackageDetails.st Thu Apr 10 14:28:55 2003 +0200
@@ -17,6 +17,13 @@
privateIn:PackageDetails
!
+LabelAndIcon subclass:#ClassLabelAndIcon
+ instanceVariableNames:'class'
+ classVariableNames:''
+ poolDictionaries:''
+ privateIn:PackageDetails::Class
+!
+
AbstractPackageDetails subclass:#Comment
instanceVariableNames:'commentTextHolder commentTextModifiedChannel
commentTextAcceptChannel editTextView'
@@ -408,25 +415,24 @@
#component:
#(#SpecCollection
#collection: #(
- #(#SelectionInListModelViewSpec
- #name: 'SelectionInListModelView1'
+ #(#SequenceViewSpec
+ #name: 'SelectionInListModelView2'
#model: #selectedCategoryHolder
#hasHorizontalScrollBar: true
#hasVerticalScrollBar: true
- #listModel: #categoryList
- #multipleSelectOk: true
+ #isMultiSelect: true
#useIndex: false
- #highlightMode: #line
+ #sequenceList: #categoryList
)
- #(#SelectionInListModelViewSpec
- #name: 'SelectedClassView'
+ #(#SequenceViewSpec
+ #name: 'SelectedClassView1'
#model: #selectedClassHolder
#hasHorizontalScrollBar: true
#hasVerticalScrollBar: true
- #listModel: #classList
- #multipleSelectOk: true
+ #isMultiSelect: true
+ #doubleClickSelector: #browseClass:
#useIndex: false
- #highlightMode: #line
+ #sequenceList: #classList
)
)
@@ -548,6 +554,14 @@
! !
+!PackageDetails::Class methodsFor:'* As yet uncategorized *'!
+
+browseClass:aCollection
+ | theClass |
+ theClass := aCollection first classModel.
+ theClass browse
+! !
+
!PackageDetails::Class methodsFor:'accessing'!
declareDependents
@@ -562,6 +576,37 @@
^ (privateProcesses at:aSymbol put:aProcess).
! !
+!PackageDetails::Class methodsFor:'adding'!
+
+addPrivateClassLabelAndIconForClass:aClass toClassList:aClassList level:aNumber
+ aClass privateClasses do:[:aPrivateClass |
+ aClassList add:(self newClassLabelAndIconWithClass:aPrivateClass).
+ self addPrivateClassLabelAndIconForClass:aPrivateClass toClassList:aClassList level:(aNumber + 1).
+ ].
+!
+
+putClassesNamesIn:aClassList fromPackages:collectionOfPackages inCategories:collectionOfCategoryNames
+ | classesWithoutPrivateClasses|
+ classesWithoutPrivateClasses := OrderedCollection new.
+ collectionOfCategoryNames do:[:aCategoryName |
+ collectionOfPackages do:[:aPackage |
+ (aPackage classesInCategory:aCategoryName)
+ do:[:aClass | aClass isPrivate ifFalse:[
+ classesWithoutPrivateClasses add:(self newClassLabelAndIconWithClass:aClass).
+ ].
+ ].
+ ].
+ ].
+ classesWithoutPrivateClasses sort:[:x :y |
+ x asString < y asString
+ ].
+ classesWithoutPrivateClasses do:[:aLableAndIcon | | aClass |
+ aClass := aLableAndIcon classModel.
+ aClassList add:aLableAndIcon.
+ self addPrivateClassLabelAndIconForClass:aClass toClassList:aClassList level:1
+ ].
+! !
+
!PackageDetails::Class methodsFor:'aspects'!
categoryList
@@ -669,27 +714,15 @@
!PackageDetails::Class methodsFor:'change & update'!
selectedCategoryChanged:aCollectionOfCategories
- | addingToClassListCache count howManyBeforeUpdate |
- (self privateProcessesAt:#selectedCategoryChanged:) terminate.
- (self privateProcessesAt:#selectedCategoryChanged: put:[
+
+ self withProcessNamed:#selectedCategoryChanged: do:[
classList removeAll.
- addingToClassListCache := OrderedCollection new.
- count := 0.
- howManyBeforeUpdate := (self packagesSelected size / 2).
- aCollectionOfCategories do:[:aCategoryName |
- (self packagesNamed:self packagesSelected) do:[:aPackage |
- addingToClassListCache addAll:((aPackage classesInCategory:aCategoryName)
- collect:[:aClass | aClass name]).
- ].
- count := count + 1.
- count < howManyBeforeUpdate ifTrue:[
- classList addAll:addingToClassListCache.
- addingToClassListCache removeAll.
- count := 0.
- ].
- ].
- classList addAll:addingToClassListCache. "add the ones left over"
- ] fork)
+ self
+ putClassesNamesIn:classList
+ fromPackages:(self packagesNamed:self packagesSelected)
+ inCategories:aCollectionOfCategories.
+
+ ].
!
update:something with:aParameter from:changedObject
@@ -713,12 +746,26 @@
].
categoryList addAll:classCategoryNames.
+ categoryList sort:[:x :y |
+ x < y
+ ].
] fork
"/ packages do:[:aPackage |
"/ categoryList addAll:aPackage classCategories
"/ ].
! !
+!PackageDetails::Class methodsFor:'factory'!
+
+labelAndIconClass
+ ^ ClassLabelAndIcon
+!
+
+newClassLabelAndIconWithClass:aClass
+"/ aClass isPrivate ifTrue:[self halt.].
+ ^ self labelAndIconClass class:aClass
+! !
+
!PackageDetails::Class methodsFor:'initialization & release'!
closeDownViews
@@ -841,11 +888,70 @@
"/ HTMLDocumentView openFullOnDocumentationFile:'help/<MyApplication>/TOP.html'.
! !
+!PackageDetails::Class methodsFor:'process'!
+
+withProcessNamed:aName do:aBlock
+ "stop unconditionally the process and replace with aBlock"
+ (self privateProcessesAt:aName) terminate.
+ self privateProcessesAt:aName put:aBlock fork.
+! !
+
!PackageDetails::Class methodsFor:'queries'!
validateCanChange:arg
! !
+!PackageDetails::Class::ClassLabelAndIcon class methodsFor:'instance'!
+
+class:aClass
+ ^ (self basicNew) classModel:aClass; initialize
+! !
+
+!PackageDetails::Class::ClassLabelAndIcon methodsFor:'accessing'!
+
+asString
+
+ | aString |
+ aString := String new.
+ class isPrivate ifTrue:[
+ aString := ' '.
+ self privateClassDepth timesRepeat:[
+ aString := aString , ' '.
+ ].
+ aString := aString , '::'.
+ ].
+
+ aString := aString, class shortName asString.
+
+ ^ aString
+!
+
+classModel
+ "return the value of the instance variable 'class' (automatically generated)"
+
+ ^ class
+!
+
+classModel:something
+ "set the value of the instance variable 'class' (automatically generated)"
+
+ class := something.
+ self string: self asString.
+!
+
+privateClassDepth
+ | thisClass counter |
+ thisClass := class.
+ counter := 0.
+ [thisClass isNameSpace] whileFalse:[
+ thisClass := thisClass owningClass.
+ thisClass ifNil:[thisClass := Smalltalk].
+ counter := counter + 1.
+ ].
+
+ ^ counter - 1
+! !
+
!PackageDetails::Comment class methodsFor:'constant values'!
applicationName
@@ -2127,5 +2233,5 @@
!PackageDetails class methodsFor:'documentation'!
version
- ^ '$Header: /cvs/stx/stx/libbasic3/packages/PackageDetails.st,v 1.1 2003-04-09 11:24:54 james Exp $'
+ ^ '$Header: /cvs/stx/stx/libbasic3/packages/PackageDetails.st,v 1.2 2003-04-10 12:28:55 james Exp $'
! !