Tools_ClassCategoryList.st
changeset 5592 d9730a8d7c52
parent 5591 273637686948
child 5909 95cd2d9822b3
equal deleted inserted replaced
5591:273637686948 5592:d9730a8d7c52
     1 "{ Package: 'stx:__NoProject__' }"
     1 "{ Package: 'stx:libtool' }"
     2 
     2 
     3 "{ NameSpace: Tools }"
     3 "{ NameSpace: Tools }"
     4 
     4 
     5 BrowserList subclass:#ClassCategoryList
     5 BrowserList subclass:#ClassCategoryList
     6 	instanceVariableNames:'categoryList classes allSelected'
     6 	instanceVariableNames:'categoryList classes allSelected'
    38 
    38 
    39     <resource: #canvas>
    39     <resource: #canvas>
    40 
    40 
    41     ^ 
    41     ^ 
    42      #(#FullSpec
    42      #(#FullSpec
    43         #name: #singleCategoryWindowSpec
    43 	#name: #singleCategoryWindowSpec
    44         #window: 
    44 	#window: 
    45        #(#WindowSpec
    45        #(#WindowSpec
    46           #label: 'ClassCategoryList'
    46 	  #label: 'ClassCategoryList'
    47           #name: 'ClassCategoryList'
    47 	  #name: 'ClassCategoryList'
    48           #min: #(#Point 0 0)
    48 	  #min: #(#Point 0 0)
    49           #max: #(#Point 1024 721)
    49 	  #max: #(#Point 1024 721)
    50           #bounds: #(#Rectangle 218 175 518 475)
    50 	  #bounds: #(#Rectangle 218 175 518 475)
    51         )
    51 	)
    52         #component: 
    52 	#component: 
    53        #(#SpecCollection
    53        #(#SpecCollection
    54           #collection: #(
    54 	  #collection: #(
    55            #(#LabelSpec
    55 	   #(#LabelSpec
    56               #label: 'ClassCategoryName'
    56 	      #label: 'ClassCategoryName'
    57               #name: 'ClassCategoryLabel'
    57 	      #name: 'ClassCategoryLabel'
    58               #layout: #(#LayoutFrame 0 0.0 0 0 0 1.0 25 0)
    58 	      #layout: #(#LayoutFrame 0 0.0 0 0 0 1.0 25 0)
    59               #translateLabel: true
    59 	      #translateLabel: true
    60               #labelChannel: #classCategoryLabelHolder
    60 	      #labelChannel: #classCategoryLabelHolder
    61               #menu: #menuHolder
    61 	      #menu: #menuHolder
    62             )
    62 	    )
    63            )
    63 	   )
    64          
    64          
    65         )
    65 	)
    66       )
    66       )
    67 !
    67 !
    68 
    68 
    69 windowSpec
    69 windowSpec
    70     "This resource specification was automatically generated
    70     "This resource specification was automatically generated
    81 
    81 
    82     <resource: #canvas>
    82     <resource: #canvas>
    83 
    83 
    84     ^ 
    84     ^ 
    85      #(#FullSpec
    85      #(#FullSpec
    86         #name: #windowSpec
    86 	#name: #windowSpec
    87         #window: 
    87 	#window: 
    88        #(#WindowSpec
    88        #(#WindowSpec
    89           #label: 'ClassCategoryList'
    89 	  #label: 'ClassCategoryList'
    90           #name: 'ClassCategoryList'
    90 	  #name: 'ClassCategoryList'
    91           #min: #(#Point 0 0)
    91 	  #min: #(#Point 0 0)
    92           #max: #(#Point 1024 721)
    92 	  #max: #(#Point 1024 721)
    93           #bounds: #(#Rectangle 13 23 313 323)
    93 	  #bounds: #(#Rectangle 13 23 313 323)
    94         )
    94 	)
    95         #component: 
    95 	#component: 
    96        #(#SpecCollection
    96        #(#SpecCollection
    97           #collection: #(
    97 	  #collection: #(
    98            #(#SequenceViewSpec
    98 	   #(#SequenceViewSpec
    99               #name: 'List'
    99 	      #name: 'List'
   100               #layout: #(#LayoutFrame 0 0.0 0 0.0 0 1.0 0 1.0)
   100 	      #layout: #(#LayoutFrame 0 0.0 0 0.0 0 1.0 0 1.0)
   101               #tabable: true
   101 	      #tabable: true
   102               #model: #selectedCategories
   102 	      #model: #selectedCategories
   103               #menu: #menuHolder
   103 	      #menu: #menuHolder
   104               #hasHorizontalScrollBar: true
   104 	      #hasHorizontalScrollBar: true
   105               #hasVerticalScrollBar: true
   105 	      #hasVerticalScrollBar: true
   106               #miniScrollerHorizontal: true
   106 	      #miniScrollerHorizontal: true
   107               #isMultiSelect: true
   107 	      #isMultiSelect: true
   108               #valueChangeSelector: #selectionChangedByClick
   108 	      #valueChangeSelector: #selectionChangedByClick
   109               #useIndex: false
   109 	      #useIndex: false
   110               #sequenceList: #categoryList
   110 	      #sequenceList: #categoryList
   111               #doubleClickChannel: #doubleClickChannel
   111 	      #doubleClickChannel: #doubleClickChannel
   112               #properties: 
   112 	      #properties: 
   113              #(#PropertyListDictionary
   113 	     #(#PropertyListDictionary
   114                 #dragArgument: nil
   114 		#dragArgument: nil
   115                 #dropArgument: nil
   115 		#dropArgument: nil
   116                 #canDropSelector: #canDrop:
   116 		#canDropSelector: #canDrop:
   117                 #dropSelector: #doDrop:
   117 		#dropSelector: #doDrop:
   118               )
   118 	      )
   119             )
   119 	    )
   120            )
   120 	   )
   121          
   121          
   122         )
   122 	)
   123       )
   123       )
   124 
   124 
   125     "Created: / 5.2.2000 / 13:42:11 / cg"
   125     "Created: / 5.2.2000 / 13:42:11 / cg"
   126     "Modified: / 18.8.2000 / 20:11:49 / cg"
   126     "Modified: / 18.8.2000 / 20:11:49 / cg"
   127 ! !
   127 ! !
   200      nameListEntryForALL categoryOfClass wg|
   200      nameListEntryForALL categoryOfClass wg|
   201 
   201 
   202     selectedCategories := self selectedCategoriesStrings.
   202     selectedCategories := self selectedCategoriesStrings.
   203 
   203 
   204     changedObject == Smalltalk ifTrue:[
   204     changedObject == Smalltalk ifTrue:[
   205         ((something == #classVariables) 
   205 	((something == #classVariables) 
   206         or:[something == #classDefinition]) ifTrue:[
   206 	or:[something == #classDefinition]) ifTrue:[
   207             listValid == true ifTrue:[
   207 	    listValid == true ifTrue:[
   208                 categoryOfClass := aParameter category.
   208 		categoryOfClass := aParameter category.
   209                 (categoryList value includes:categoryOfClass) ifFalse:[
   209 		(categoryList value includes:categoryOfClass) ifFalse:[
   210                     self invalidateList.                
   210 		    self invalidateList.                
   211                 ].
   211 		].
   212                 slaveMode value ~~ true ifTrue:[
   212 		slaveMode value ~~ true ifTrue:[
   213                     (selectedCategories includes:categoryOfClass) ifTrue:[
   213 		    (selectedCategories includes:categoryOfClass) ifTrue:[
   214                         "/ a selected class has changed
   214 			"/ a selected class has changed
   215                         "/ in order to give others a chance to update their list before,
   215 			"/ in order to give others a chance to update their list before,
   216                         "/ this one is always enqueued for delayed update (even if immediateUpdate is true)
   216 			"/ this one is always enqueued for delayed update (even if immediateUpdate is true)
   217                         "/ self enqueueDelayedUpdateOutputGenerator
   217 			"/ self enqueueDelayedUpdateOutputGenerator
   218                         self enqueueMessage:#updateOutputGenerator for:self arguments:#()
   218 			self enqueueMessage:#updateOutputGenerator for:self arguments:#()
   219                     ].
   219 		    ].
   220                 ].
   220 		].
   221             ].
   221 	    ].
   222             ^ self
   222 	    ^ self
   223         ].
   223 	].
   224         something == #newClass ifTrue:[
   224 	something == #newClass ifTrue:[
   225             categoryOfClass := aParameter category.
   225 	    categoryOfClass := aParameter category.
   226 "/            listValid == true ifTrue:[
   226 "/            listValid == true ifTrue:[
   227                 (categoryList value includes:categoryOfClass) ifFalse:[
   227 		(categoryList value includes:categoryOfClass) ifFalse:[
   228                     self invalidateList.                
   228 		    self invalidateList.                
   229                 ].
   229 		].
   230 "/            ].
   230 "/            ].
   231             slaveMode value ~~ true ifTrue:[
   231 	    slaveMode value ~~ true ifTrue:[
   232                 (selectedCategories includes:categoryOfClass) ifTrue:[
   232 		(selectedCategories includes:categoryOfClass) ifTrue:[
   233                     self enqueueDelayedUpdateOutputGenerator
   233 		    self enqueueDelayedUpdateOutputGenerator
   234                 ].
   234 		].
   235             ].
   235 	    ].
   236             ^ self
   236 	    ^ self
   237         ].
   237 	].
   238 
   238 
   239         self invalidateList.
   239 	self invalidateList.
   240 
   240 
   241         (something == #classRemove 
   241 	(something == #classRemove 
   242         or:[something == #projectOrganization 
   242 	or:[something == #projectOrganization 
   243         or:[something == #organization]]) ifTrue:[
   243 	or:[something == #organization]]) ifTrue:[
   244             slaveMode value ~~ true ifTrue:[
   244 	    slaveMode value ~~ true ifTrue:[
   245                 "/ sorry: cannot filter on category (already changed to #removed)
   245 		"/ sorry: cannot filter on category (already changed to #removed)
   246                 self enqueueDelayedUpdateOutputGenerator
   246 		self enqueueDelayedUpdateOutputGenerator
   247             ].
   247 	    ].
   248         ].
   248 	].
   249         ^ self
   249 	^ self
   250     ].
   250     ].
   251 
   251 
   252     changedObject == ChangeSet ifTrue:[
   252     changedObject == ChangeSet ifTrue:[
   253         "/ remove all other change notifications from the eventQueue
   253 	"/ remove all other change notifications from the eventQueue
   254         wg := self windowGroup.
   254 	wg := self windowGroup.
   255         wg isNil ifTrue:[
   255 	wg isNil ifTrue:[
   256             "/ oops - should no longer be dependent...
   256 	    "/ oops - should no longer be dependent...
   257             changedObject removeDependent:self.
   257 	    changedObject removeDependent:self.
   258         ] ifFalse:[
   258 	] ifFalse:[
   259             wg sensor 
   259 	    wg sensor 
   260                 flushEventsFor:self 
   260 		flushEventsFor:self 
   261                 where:[:ev | ev isMessageSendEvent 
   261 		where:[:ev | ev isMessageSendEvent 
   262                              and:[ev selector == #delayedUpdate:with:from:
   262 			     and:[ev selector == #delayedUpdate:with:from:
   263                              and:[(ev arguments at:3) == ChangeSet]]].
   263 			     and:[(ev arguments at:3) == ChangeSet]]].
   264         ].
   264 	].
   265 
   265 
   266         something == #addChange: ifTrue:[
   266 	something == #addChange: ifTrue:[
   267             "/ only need to invalidate, if that change changes my emphasis 
   267 	    "/ only need to invalidate, if that change changes my emphasis 
   268             "/ (i.e. if its a new methodChange)
   268 	    "/ (i.e. if its a new methodChange)
   269 "/            self invalidateList.
   269 "/            self invalidateList.
   270 
   270 
   271             aParameter isMethodChange ifTrue:[
   271 	    aParameter isMethodChange ifTrue:[
   272                 (ChangeSet current 
   272 		(ChangeSet current 
   273                     count:[:chg | chg notNil and:[chg isMethodChange
   273 		    count:[:chg | chg notNil and:[chg isMethodChange
   274                                   and:[ chg className = aParameter className ]]])
   274 				  and:[ chg className = aParameter className ]]])
   275                 == 1 ifTrue:[
   275 		== 1 ifTrue:[
   276                     "/ that methodChange is the first for this method.
   276 		    "/ that methodChange is the first for this method.
   277                     aParameter changeClass ifNotNil:[
   277 		    aParameter changeClass ifNotNil:[
   278                         self colorizeCategoryAsChanged:(aParameter changeClass category).
   278 			self colorizeCategoryAsChanged:(aParameter changeClass category).
   279                     ]
   279 		    ]
   280                 ]
   280 		]
   281             ].
   281 	    ].
   282             ^ self
   282 	    ^ self
   283         ].
   283 	].
   284 
   284 
   285         self invalidateList.
   285 	self invalidateList.
   286         ^ self
   286 	^ self
   287     ].
   287     ].
   288 
   288 
   289     changedObject == nameSpaceFilter ifTrue:[
   289     changedObject == nameSpaceFilter ifTrue:[
   290         "/ all might be more or less than before ...
   290 	"/ all might be more or less than before ...
   291         allSelected := false.
   291 	allSelected := false.
   292     ].
   292     ].
   293     changedObject == packageFilter ifTrue:[
   293     changedObject == packageFilter ifTrue:[
   294         "/ all might be more or less than before ...
   294 	"/ all might be more or less than before ...
   295         allSelected := false.    
   295 	allSelected := false.    
   296     ].
   296     ].
   297 
   297 
   298     selectedCategoriesHolder := self selectedCategories.
   298     selectedCategoriesHolder := self selectedCategories.
   299     changedObject == selectedCategoriesHolder ifTrue:[
   299     changedObject == selectedCategoriesHolder ifTrue:[
   300         categoryList isNil ifTrue:[
   300 	categoryList isNil ifTrue:[
   301             "/ oops - hurry up
   301 	    "/ oops - hurry up
   302             self invalidateList.
   302 	    self invalidateList.
   303         ].
   303 	].
   304 
   304 
   305         nameListEntryForALL := self class nameListEntryForALL.
   305 	nameListEntryForALL := self class nameListEntryForALL.
   306 
   306 
   307         selectedCategories size > 1 ifTrue:[
   307 	selectedCategories size > 1 ifTrue:[
   308             (selectedCategories includes:nameListEntryForALL) ifTrue:[
   308 	    (selectedCategories includes:nameListEntryForALL) ifTrue:[
   309                 self makeSelectionOtherThanAllVisible.
   309 		self makeSelectionOtherThanAllVisible.
   310             ]
   310 	    ]
   311         ].
   311 	].
   312 
   312 
   313         "/ if all selected before AND allSelected after, no need to update the output generator
   313 	"/ if all selected before AND allSelected after, no need to update the output generator
   314         allSelectedBefore := allSelected ? false.
   314 	allSelectedBefore := allSelected ? false.
   315         allSelected := selectedCategories includes:nameListEntryForALL.
   315 	allSelected := selectedCategories includes:nameListEntryForALL.
   316         (allSelectedBefore and:[allSelected]) ifTrue:[
   316 	(allSelectedBefore and:[allSelected]) ifTrue:[
   317             ^ self
   317 	    ^ self
   318         ].
   318 	].
   319     ].
   319     ].
   320 
   320 
   321     super delayedUpdate:something with:aParameter from:changedObject
   321     super delayedUpdate:something with:aParameter from:changedObject
   322 
   322 
   323     "Created: / 5.2.2000 / 13:42:12 / cg"
   323     "Created: / 5.2.2000 / 13:42:12 / cg"
   752 ! !
   752 ! !
   753 
   753 
   754 !ClassCategoryList class methodsFor:'documentation'!
   754 !ClassCategoryList class methodsFor:'documentation'!
   755 
   755 
   756 version
   756 version
   757     ^ '$Header: /cvs/stx/stx/libtool/Tools_ClassCategoryList.st,v 1.1 2004-02-26 18:55:56 cg Exp $'
   757     ^ '$Header: /cvs/stx/stx/libtool/Tools_ClassCategoryList.st,v 1.2 2004-02-26 19:03:55 cg Exp $'
   758 ! !
   758 ! !