ClassRevisionTree.st
author ps
Fri, 14 Jan 2000 11:51:42 +0100
changeset 2538 65d455c152f0
parent 2521 0865a2bcec81
child 2544 04ebb73c452f
permissions -rw-r--r--
defined source container
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
2520
36b0b3f51128 initial checkin
ps
parents:
diff changeset
     1
ApplicationModel subclass:#ClassRevisionTree
2538
65d455c152f0 defined source container
ps
parents: 2521
diff changeset
     2
	instanceVariableNames:'selectionHolder classHolder menuBlock selectionBlock
65d455c152f0 defined source container
ps
parents: 2521
diff changeset
     3
		classItemClass listView semaphoreCritical revisionInfoList
65d455c152f0 defined source container
ps
parents: 2521
diff changeset
     4
		revisionTask currentClassItemInTask'
2520
36b0b3f51128 initial checkin
ps
parents:
diff changeset
     5
	classVariableNames:''
36b0b3f51128 initial checkin
ps
parents:
diff changeset
     6
	poolDictionaries:''
36b0b3f51128 initial checkin
ps
parents:
diff changeset
     7
	category:'Interface-Browsers'
36b0b3f51128 initial checkin
ps
parents:
diff changeset
     8
!
36b0b3f51128 initial checkin
ps
parents:
diff changeset
     9
36b0b3f51128 initial checkin
ps
parents:
diff changeset
    10
36b0b3f51128 initial checkin
ps
parents:
diff changeset
    11
!ClassRevisionTree class methodsFor:'interface spec'!
36b0b3f51128 initial checkin
ps
parents:
diff changeset
    12
36b0b3f51128 initial checkin
ps
parents:
diff changeset
    13
windowSpec
36b0b3f51128 initial checkin
ps
parents:
diff changeset
    14
    "This resource specification was automatically generated
36b0b3f51128 initial checkin
ps
parents:
diff changeset
    15
     by the UIPainter of ST/X."
36b0b3f51128 initial checkin
ps
parents:
diff changeset
    16
36b0b3f51128 initial checkin
ps
parents:
diff changeset
    17
    "Do not manually edit this!! If it is corrupted,
36b0b3f51128 initial checkin
ps
parents:
diff changeset
    18
     the UIPainter may not be able to read the specification."
36b0b3f51128 initial checkin
ps
parents:
diff changeset
    19
36b0b3f51128 initial checkin
ps
parents:
diff changeset
    20
    "
36b0b3f51128 initial checkin
ps
parents:
diff changeset
    21
     UIPainter new openOnClass:ClassRevisionTree andSelector:#windowSpec
36b0b3f51128 initial checkin
ps
parents:
diff changeset
    22
     ClassRevisionTree new openInterface:#windowSpec
36b0b3f51128 initial checkin
ps
parents:
diff changeset
    23
     ClassRevisionTree open
36b0b3f51128 initial checkin
ps
parents:
diff changeset
    24
    "
36b0b3f51128 initial checkin
ps
parents:
diff changeset
    25
36b0b3f51128 initial checkin
ps
parents:
diff changeset
    26
    <resource: #canvas>
36b0b3f51128 initial checkin
ps
parents:
diff changeset
    27
36b0b3f51128 initial checkin
ps
parents:
diff changeset
    28
    ^ 
36b0b3f51128 initial checkin
ps
parents:
diff changeset
    29
     #(#FullSpec
36b0b3f51128 initial checkin
ps
parents:
diff changeset
    30
        #name: #windowSpec
36b0b3f51128 initial checkin
ps
parents:
diff changeset
    31
        #window: 
36b0b3f51128 initial checkin
ps
parents:
diff changeset
    32
       #(#WindowSpec
36b0b3f51128 initial checkin
ps
parents:
diff changeset
    33
          #label: 'ClassVersionTree'
36b0b3f51128 initial checkin
ps
parents:
diff changeset
    34
          #name: 'ClassVersionTree'
36b0b3f51128 initial checkin
ps
parents:
diff changeset
    35
          #min: #(#Point 10 10)
36b0b3f51128 initial checkin
ps
parents:
diff changeset
    36
          #max: #(#Point 9999 9999)
2538
65d455c152f0 defined source container
ps
parents: 2521
diff changeset
    37
          #bounds: #(#Rectangle 16 46 881 575)
2520
36b0b3f51128 initial checkin
ps
parents:
diff changeset
    38
        )
36b0b3f51128 initial checkin
ps
parents:
diff changeset
    39
        #component: 
36b0b3f51128 initial checkin
ps
parents:
diff changeset
    40
       #(#SpecCollection
36b0b3f51128 initial checkin
ps
parents:
diff changeset
    41
          #collection: #(
36b0b3f51128 initial checkin
ps
parents:
diff changeset
    42
           #(#HierarchicalListViewSpec
36b0b3f51128 initial checkin
ps
parents:
diff changeset
    43
              #name: 'HierarchicalItemListView'
36b0b3f51128 initial checkin
ps
parents:
diff changeset
    44
              #layout: #(#LayoutFrame 0 0.0 0 0.0 0 1.0 0 1.0)
2538
65d455c152f0 defined source container
ps
parents: 2521
diff changeset
    45
              #menu: #selectItemMenu
2520
36b0b3f51128 initial checkin
ps
parents:
diff changeset
    46
              #hasHorizontalScrollBar: true
36b0b3f51128 initial checkin
ps
parents:
diff changeset
    47
              #hasVerticalScrollBar: true
2538
65d455c152f0 defined source container
ps
parents: 2521
diff changeset
    48
              #listModel: #listModel
2520
36b0b3f51128 initial checkin
ps
parents:
diff changeset
    49
              #multipleSelectOk: true
2538
65d455c152f0 defined source container
ps
parents: 2521
diff changeset
    50
              #useIndex: false
2520
36b0b3f51128 initial checkin
ps
parents:
diff changeset
    51
              #highlightMode: #label
36b0b3f51128 initial checkin
ps
parents:
diff changeset
    52
              #doubleClickSelector: #doubleClick:
2538
65d455c152f0 defined source container
ps
parents: 2521
diff changeset
    53
              #selectConditionSelector: #isItemSelectable:
2520
36b0b3f51128 initial checkin
ps
parents:
diff changeset
    54
              #indicatorSelector: #doubleClick:
36b0b3f51128 initial checkin
ps
parents:
diff changeset
    55
              #retrieveIconsSelector: #icons
36b0b3f51128 initial checkin
ps
parents:
diff changeset
    56
            )
36b0b3f51128 initial checkin
ps
parents:
diff changeset
    57
           )
36b0b3f51128 initial checkin
ps
parents:
diff changeset
    58
         
36b0b3f51128 initial checkin
ps
parents:
diff changeset
    59
        )
36b0b3f51128 initial checkin
ps
parents:
diff changeset
    60
      )
36b0b3f51128 initial checkin
ps
parents:
diff changeset
    61
! !
36b0b3f51128 initial checkin
ps
parents:
diff changeset
    62
2538
65d455c152f0 defined source container
ps
parents: 2521
diff changeset
    63
!ClassRevisionTree class methodsFor:'protocol'!
2520
36b0b3f51128 initial checkin
ps
parents:
diff changeset
    64
2538
65d455c152f0 defined source container
ps
parents: 2521
diff changeset
    65
classItemClass
2520
36b0b3f51128 initial checkin
ps
parents:
diff changeset
    66
2538
65d455c152f0 defined source container
ps
parents: 2521
diff changeset
    67
    ^ClassItem
65d455c152f0 defined source container
ps
parents: 2521
diff changeset
    68
!
2520
36b0b3f51128 initial checkin
ps
parents:
diff changeset
    69
2538
65d455c152f0 defined source container
ps
parents: 2521
diff changeset
    70
classItemRootClass
65d455c152f0 defined source container
ps
parents: 2521
diff changeset
    71
65d455c152f0 defined source container
ps
parents: 2521
diff changeset
    72
    ^ClassItemRoot
2520
36b0b3f51128 initial checkin
ps
parents:
diff changeset
    73
! !
36b0b3f51128 initial checkin
ps
parents:
diff changeset
    74
36b0b3f51128 initial checkin
ps
parents:
diff changeset
    75
!ClassRevisionTree class methodsFor:'startup'!
36b0b3f51128 initial checkin
ps
parents:
diff changeset
    76
2538
65d455c152f0 defined source container
ps
parents: 2521
diff changeset
    77
openOnClassHolder:aClassHolder
65d455c152f0 defined source container
ps
parents: 2521
diff changeset
    78
65d455c152f0 defined source container
ps
parents: 2521
diff changeset
    79
    |theTree|
2520
36b0b3f51128 initial checkin
ps
parents:
diff changeset
    80
36b0b3f51128 initial checkin
ps
parents:
diff changeset
    81
    theTree := self new.
36b0b3f51128 initial checkin
ps
parents:
diff changeset
    82
    theTree allButOpen.
2538
65d455c152f0 defined source container
ps
parents: 2521
diff changeset
    83
    theTree classHolder:aClassHolder.
65d455c152f0 defined source container
ps
parents: 2521
diff changeset
    84
    theTree openWindow.
2520
36b0b3f51128 initial checkin
ps
parents:
diff changeset
    85
     ^theTree
36b0b3f51128 initial checkin
ps
parents:
diff changeset
    86
36b0b3f51128 initial checkin
ps
parents:
diff changeset
    87
"
2538
65d455c152f0 defined source container
ps
parents: 2521
diff changeset
    88
|theSelectionHolder theClassHolder theTree|
2520
36b0b3f51128 initial checkin
ps
parents:
diff changeset
    89
36b0b3f51128 initial checkin
ps
parents:
diff changeset
    90
theSelectionHolder := ValueHolder new.
2538
65d455c152f0 defined source container
ps
parents: 2521
diff changeset
    91
theClassHolder := ValueHolder new.
65d455c152f0 defined source container
ps
parents: 2521
diff changeset
    92
theSelectionHolder compute:[:coll |
65d455c152f0 defined source container
ps
parents: 2521
diff changeset
    93
                coll do:[:each | Transcript showCR: each]].
65d455c152f0 defined source container
ps
parents: 2521
diff changeset
    94
theClassHolder value:(Smalltalk allClasses asOrderedCollection sort:[:x : y|x name < y name]).
65d455c152f0 defined source container
ps
parents: 2521
diff changeset
    95
theTree := ClassRevisionTree openOnClassHolder:theClassHolder.
65d455c152f0 defined source container
ps
parents: 2521
diff changeset
    96
theSelectionHolder value:(Array with:(theTree itemList children last)).
65d455c152f0 defined source container
ps
parents: 2521
diff changeset
    97
theTree selectionHolder:theSelectionHolder.
65d455c152f0 defined source container
ps
parents: 2521
diff changeset
    98
Delay waitForMilliseconds:1500.
65d455c152f0 defined source container
ps
parents: 2521
diff changeset
    99
theClassHolder value:(Project current changedClasses).
65d455c152f0 defined source container
ps
parents: 2521
diff changeset
   100
Delay waitForMilliseconds:1500.
65d455c152f0 defined source container
ps
parents: 2521
diff changeset
   101
theTree classHolder:nil.
65d455c152f0 defined source container
ps
parents: 2521
diff changeset
   102
Delay waitForMilliseconds:1500.
65d455c152f0 defined source container
ps
parents: 2521
diff changeset
   103
theTree classHolder:theClassHolder.
65d455c152f0 defined source container
ps
parents: 2521
diff changeset
   104
Delay waitForMilliseconds:1500.
65d455c152f0 defined source container
ps
parents: 2521
diff changeset
   105
theClassHolder value:(Smalltalk allClasses asOrderedCollection sort:[:x : y|x name < y name]).
2520
36b0b3f51128 initial checkin
ps
parents:
diff changeset
   106
"
36b0b3f51128 initial checkin
ps
parents:
diff changeset
   107
36b0b3f51128 initial checkin
ps
parents:
diff changeset
   108
36b0b3f51128 initial checkin
ps
parents:
diff changeset
   109
2538
65d455c152f0 defined source container
ps
parents: 2521
diff changeset
   110
!
65d455c152f0 defined source container
ps
parents: 2521
diff changeset
   111
65d455c152f0 defined source container
ps
parents: 2521
diff changeset
   112
openOnClasses:aClassColl
65d455c152f0 defined source container
ps
parents: 2521
diff changeset
   113
65d455c152f0 defined source container
ps
parents: 2521
diff changeset
   114
    |theTree|
65d455c152f0 defined source container
ps
parents: 2521
diff changeset
   115
65d455c152f0 defined source container
ps
parents: 2521
diff changeset
   116
    theTree := self new.
65d455c152f0 defined source container
ps
parents: 2521
diff changeset
   117
    theTree allButOpen.
65d455c152f0 defined source container
ps
parents: 2521
diff changeset
   118
    theTree classHolder value:aClassColl.
65d455c152f0 defined source container
ps
parents: 2521
diff changeset
   119
    theTree openWindow.
65d455c152f0 defined source container
ps
parents: 2521
diff changeset
   120
     ^theTree
65d455c152f0 defined source container
ps
parents: 2521
diff changeset
   121
65d455c152f0 defined source container
ps
parents: 2521
diff changeset
   122
"
65d455c152f0 defined source container
ps
parents: 2521
diff changeset
   123
|theSelectionHolder theTree|
65d455c152f0 defined source container
ps
parents: 2521
diff changeset
   124
65d455c152f0 defined source container
ps
parents: 2521
diff changeset
   125
theSelectionHolder := ValueHolder new.
65d455c152f0 defined source container
ps
parents: 2521
diff changeset
   126
theSelectionHolder compute:[:coll |
65d455c152f0 defined source container
ps
parents: 2521
diff changeset
   127
                coll do:[:each | Transcript showCR: each]].
65d455c152f0 defined source container
ps
parents: 2521
diff changeset
   128
theTree := ClassRevisionTree openOnClasses:(Smalltalk allClasses asOrderedCollection sort:[:x : y|x name < y name]).
65d455c152f0 defined source container
ps
parents: 2521
diff changeset
   129
theSelectionHolder value:(Array with:(theTree itemList children last)).
65d455c152f0 defined source container
ps
parents: 2521
diff changeset
   130
theTree selectionHolder:theSelectionHolder.
65d455c152f0 defined source container
ps
parents: 2521
diff changeset
   131
"
2520
36b0b3f51128 initial checkin
ps
parents:
diff changeset
   132
! !
36b0b3f51128 initial checkin
ps
parents:
diff changeset
   133
36b0b3f51128 initial checkin
ps
parents:
diff changeset
   134
!ClassRevisionTree methodsFor:'accessing'!
36b0b3f51128 initial checkin
ps
parents:
diff changeset
   135
2538
65d455c152f0 defined source container
ps
parents: 2521
diff changeset
   136
classItemClass
65d455c152f0 defined source container
ps
parents: 2521
diff changeset
   137
    "return the value of the instance variable 'classItemClass' (automatically generated)"
65d455c152f0 defined source container
ps
parents: 2521
diff changeset
   138
65d455c152f0 defined source container
ps
parents: 2521
diff changeset
   139
    ^ classItemClass ifNil:[classItemClass := self class classItemClass]
65d455c152f0 defined source container
ps
parents: 2521
diff changeset
   140
!
65d455c152f0 defined source container
ps
parents: 2521
diff changeset
   141
65d455c152f0 defined source container
ps
parents: 2521
diff changeset
   142
classItemClass:something
65d455c152f0 defined source container
ps
parents: 2521
diff changeset
   143
    "set the value of the instance variable 'classItemClass' (automatically generated)"
65d455c152f0 defined source container
ps
parents: 2521
diff changeset
   144
65d455c152f0 defined source container
ps
parents: 2521
diff changeset
   145
    classItemClass := something.!
65d455c152f0 defined source container
ps
parents: 2521
diff changeset
   146
65d455c152f0 defined source container
ps
parents: 2521
diff changeset
   147
classItemRootClass
65d455c152f0 defined source container
ps
parents: 2521
diff changeset
   148
    "return the value of the instance variable 'classItemClass' (automatically generated)"
65d455c152f0 defined source container
ps
parents: 2521
diff changeset
   149
65d455c152f0 defined source container
ps
parents: 2521
diff changeset
   150
    ^ self class classItemRootClass
2520
36b0b3f51128 initial checkin
ps
parents:
diff changeset
   151
!
36b0b3f51128 initial checkin
ps
parents:
diff changeset
   152
2538
65d455c152f0 defined source container
ps
parents: 2521
diff changeset
   153
itemForSelectionIndex:anIndex
65d455c152f0 defined source container
ps
parents: 2521
diff changeset
   154
""
65d455c152f0 defined source container
ps
parents: 2521
diff changeset
   155
    ^self listModel at:anIndex ifAbsent:nil
2520
36b0b3f51128 initial checkin
ps
parents:
diff changeset
   156
!
36b0b3f51128 initial checkin
ps
parents:
diff changeset
   157
2538
65d455c152f0 defined source container
ps
parents: 2521
diff changeset
   158
itemList
65d455c152f0 defined source container
ps
parents: 2521
diff changeset
   159
    "automatically generated by UIPainter ..."
65d455c152f0 defined source container
ps
parents: 2521
diff changeset
   160
65d455c152f0 defined source container
ps
parents: 2521
diff changeset
   161
    "*** the code below creates a default model when invoked."
65d455c152f0 defined source container
ps
parents: 2521
diff changeset
   162
    "*** (which may not be the one you wanted)"
65d455c152f0 defined source container
ps
parents: 2521
diff changeset
   163
    "*** Please change as required and accept it in the browser."
2520
36b0b3f51128 initial checkin
ps
parents:
diff changeset
   164
2538
65d455c152f0 defined source container
ps
parents: 2521
diff changeset
   165
    ^ self listModel root
65d455c152f0 defined source container
ps
parents: 2521
diff changeset
   166
65d455c152f0 defined source container
ps
parents: 2521
diff changeset
   167
65d455c152f0 defined source container
ps
parents: 2521
diff changeset
   168
65d455c152f0 defined source container
ps
parents: 2521
diff changeset
   169
65d455c152f0 defined source container
ps
parents: 2521
diff changeset
   170
2520
36b0b3f51128 initial checkin
ps
parents:
diff changeset
   171
!
36b0b3f51128 initial checkin
ps
parents:
diff changeset
   172
36b0b3f51128 initial checkin
ps
parents:
diff changeset
   173
revisionInfoList
36b0b3f51128 initial checkin
ps
parents:
diff changeset
   174
    "return the value of the instance variable 'revisionInfoList' (automatically generated)"
36b0b3f51128 initial checkin
ps
parents:
diff changeset
   175
36b0b3f51128 initial checkin
ps
parents:
diff changeset
   176
    ^ revisionInfoList ifNil:[revisionInfoList := IdentitySet new]
36b0b3f51128 initial checkin
ps
parents:
diff changeset
   177
!
36b0b3f51128 initial checkin
ps
parents:
diff changeset
   178
36b0b3f51128 initial checkin
ps
parents:
diff changeset
   179
semaphoreCritical
36b0b3f51128 initial checkin
ps
parents:
diff changeset
   180
    "return the value of the instance variable 'semaphoreCritical' (automatically generated)"
36b0b3f51128 initial checkin
ps
parents:
diff changeset
   181
36b0b3f51128 initial checkin
ps
parents:
diff changeset
   182
    ^ semaphoreCritical ifNil:[semaphoreCritical := RecursionLock new]
36b0b3f51128 initial checkin
ps
parents:
diff changeset
   183
! !
36b0b3f51128 initial checkin
ps
parents:
diff changeset
   184
36b0b3f51128 initial checkin
ps
parents:
diff changeset
   185
!ClassRevisionTree methodsFor:'actions'!
36b0b3f51128 initial checkin
ps
parents:
diff changeset
   186
2538
65d455c152f0 defined source container
ps
parents: 2521
diff changeset
   187
doubleClick:anIndex
65d455c152f0 defined source container
ps
parents: 2521
diff changeset
   188
65d455c152f0 defined source container
ps
parents: 2521
diff changeset
   189
    |theItem|
2520
36b0b3f51128 initial checkin
ps
parents:
diff changeset
   190
2538
65d455c152f0 defined source container
ps
parents: 2521
diff changeset
   191
    (((theItem := self itemForSelectionIndex:anIndex) isExpandableRevisionItem) and:[listView sensor shiftDown])
65d455c152f0 defined source container
ps
parents: 2521
diff changeset
   192
        ifTrue: [theItem recursiveToggleExpand]
65d455c152f0 defined source container
ps
parents: 2521
diff changeset
   193
        ifFalse:[theItem toggleExpand]  
2520
36b0b3f51128 initial checkin
ps
parents:
diff changeset
   194
!
36b0b3f51128 initial checkin
ps
parents:
diff changeset
   195
36b0b3f51128 initial checkin
ps
parents:
diff changeset
   196
getRevisionInfoForClassItem: aClassItem
36b0b3f51128 initial checkin
ps
parents:
diff changeset
   197
36b0b3f51128 initial checkin
ps
parents:
diff changeset
   198
    self semaphoreCritical critical:[
36b0b3f51128 initial checkin
ps
parents:
diff changeset
   199
        |theList|
36b0b3f51128 initial checkin
ps
parents:
diff changeset
   200
        currentClassItemInTask == aClassItem ifTrue:[^self].
36b0b3f51128 initial checkin
ps
parents:
diff changeset
   201
        (theList := self revisionInfoList) removeIdentical:aClassItem ifAbsent:[nil].
36b0b3f51128 initial checkin
ps
parents:
diff changeset
   202
        theList add:aClassItem.
36b0b3f51128 initial checkin
ps
parents:
diff changeset
   203
        self startRevisionTask]
36b0b3f51128 initial checkin
ps
parents:
diff changeset
   204
!
36b0b3f51128 initial checkin
ps
parents:
diff changeset
   205
2538
65d455c152f0 defined source container
ps
parents: 2521
diff changeset
   206
isItemSelectable:anIndex
65d455c152f0 defined source container
ps
parents: 2521
diff changeset
   207
"
65d455c152f0 defined source container
ps
parents: 2521
diff changeset
   208
checks if an item at anIndex can be selected. If an selection block
65d455c152f0 defined source container
ps
parents: 2521
diff changeset
   209
is set, evaluate it with the selected item.
65d455c152f0 defined source container
ps
parents: 2521
diff changeset
   210
(Callback from the tree).
2520
36b0b3f51128 initial checkin
ps
parents:
diff changeset
   211
2538
65d455c152f0 defined source container
ps
parents: 2521
diff changeset
   212
<return: Boolean>
65d455c152f0 defined source container
ps
parents: 2521
diff changeset
   213
"
65d455c152f0 defined source container
ps
parents: 2521
diff changeset
   214
   selectionBlock ifNil:[^true].
65d455c152f0 defined source container
ps
parents: 2521
diff changeset
   215
   ^selectionBlock value:(self itemForSelectionIndex:anIndex)
2520
36b0b3f51128 initial checkin
ps
parents:
diff changeset
   216
36b0b3f51128 initial checkin
ps
parents:
diff changeset
   217
! !
36b0b3f51128 initial checkin
ps
parents:
diff changeset
   218
36b0b3f51128 initial checkin
ps
parents:
diff changeset
   219
!ClassRevisionTree methodsFor:'aspects'!
36b0b3f51128 initial checkin
ps
parents:
diff changeset
   220
2538
65d455c152f0 defined source container
ps
parents: 2521
diff changeset
   221
icons
65d455c152f0 defined source container
ps
parents: 2521
diff changeset
   222
    |icons|
2520
36b0b3f51128 initial checkin
ps
parents:
diff changeset
   223
2538
65d455c152f0 defined source container
ps
parents: 2521
diff changeset
   224
    icons := Dictionary new.
65d455c152f0 defined source container
ps
parents: 2521
diff changeset
   225
    icons at:#loadedRevision put:(Image fromFile:'gifImages/artwork/dots/red_ball.gif').
65d455c152f0 defined source container
ps
parents: 2521
diff changeset
   226
    icons at:#unloadedRevision put:(Image fromFile:'gifImages/artwork/dots/green_ball.gif').
65d455c152f0 defined source container
ps
parents: 2521
diff changeset
   227
    icons at:#unloadedClassItem put:(Image fromFile:'xpmBitmaps/file_images/small_folder_yellow_grey1.xpm').
65d455c152f0 defined source container
ps
parents: 2521
diff changeset
   228
    icons at:#loadingClassItem put:(Image fromFile:'xpmBitmaps/file_images/small_folder_yellow_search.xpm').
65d455c152f0 defined source container
ps
parents: 2521
diff changeset
   229
    icons at:#loadedClassItem put:(Image fromFile:'xpmBitmaps/file_images/small_folder_yellow.xpm').
65d455c152f0 defined source container
ps
parents: 2521
diff changeset
   230
    ^icons
2520
36b0b3f51128 initial checkin
ps
parents:
diff changeset
   231
!
36b0b3f51128 initial checkin
ps
parents:
diff changeset
   232
2538
65d455c152f0 defined source container
ps
parents: 2521
diff changeset
   233
listModel
2520
36b0b3f51128 initial checkin
ps
parents:
diff changeset
   234
    "automatically generated by UIPainter ..."
36b0b3f51128 initial checkin
ps
parents:
diff changeset
   235
36b0b3f51128 initial checkin
ps
parents:
diff changeset
   236
    "*** the code below creates a default model when invoked."
36b0b3f51128 initial checkin
ps
parents:
diff changeset
   237
    "*** (which may not be the one you wanted)"
36b0b3f51128 initial checkin
ps
parents:
diff changeset
   238
    "*** Please change as required and accept it in the browser."
36b0b3f51128 initial checkin
ps
parents:
diff changeset
   239
36b0b3f51128 initial checkin
ps
parents:
diff changeset
   240
    |holder|
36b0b3f51128 initial checkin
ps
parents:
diff changeset
   241
2538
65d455c152f0 defined source container
ps
parents: 2521
diff changeset
   242
    (holder := builder bindingAt:#listModel) isNil ifTrue:[
65d455c152f0 defined source container
ps
parents: 2521
diff changeset
   243
        holder := HierarchicalList new.
65d455c152f0 defined source container
ps
parents: 2521
diff changeset
   244
        holder root:(self classItemRootClass new).
65d455c152f0 defined source container
ps
parents: 2521
diff changeset
   245
        holder showRoot:false.
65d455c152f0 defined source container
ps
parents: 2521
diff changeset
   246
        builder aspectAt:#listModel put:holder.
65d455c152f0 defined source container
ps
parents: 2521
diff changeset
   247
        holder application:self.
2520
36b0b3f51128 initial checkin
ps
parents:
diff changeset
   248
    ].
36b0b3f51128 initial checkin
ps
parents:
diff changeset
   249
    ^ holder.
2538
65d455c152f0 defined source container
ps
parents: 2521
diff changeset
   250
! !
2520
36b0b3f51128 initial checkin
ps
parents:
diff changeset
   251
2538
65d455c152f0 defined source container
ps
parents: 2521
diff changeset
   252
!ClassRevisionTree methodsFor:'change & update'!
2520
36b0b3f51128 initial checkin
ps
parents:
diff changeset
   253
2538
65d455c152f0 defined source container
ps
parents: 2521
diff changeset
   254
update:something with:aParameter from:changedObject
65d455c152f0 defined source container
ps
parents: 2521
diff changeset
   255
65d455c152f0 defined source container
ps
parents: 2521
diff changeset
   256
     changedObject == self classHolder
65d455c152f0 defined source container
ps
parents: 2521
diff changeset
   257
        ifTrue:[self setUpItemList].
65d455c152f0 defined source container
ps
parents: 2521
diff changeset
   258
65d455c152f0 defined source container
ps
parents: 2521
diff changeset
   259
2520
36b0b3f51128 initial checkin
ps
parents:
diff changeset
   260
! !
36b0b3f51128 initial checkin
ps
parents:
diff changeset
   261
36b0b3f51128 initial checkin
ps
parents:
diff changeset
   262
!ClassRevisionTree methodsFor:'interface opening'!
36b0b3f51128 initial checkin
ps
parents:
diff changeset
   263
2538
65d455c152f0 defined source container
ps
parents: 2521
diff changeset
   264
postBuildWith: aBuilder
65d455c152f0 defined source container
ps
parents: 2521
diff changeset
   265
65d455c152f0 defined source container
ps
parents: 2521
diff changeset
   266
    super postBuildWith: aBuilder.
65d455c152f0 defined source container
ps
parents: 2521
diff changeset
   267
    listView := self builder componentAt:#HierarchicalItemListView.
65d455c152f0 defined source container
ps
parents: 2521
diff changeset
   268
    selectionHolder notNil
65d455c152f0 defined source container
ps
parents: 2521
diff changeset
   269
        ifTrue:[listView model:selectionHolder]
65d455c152f0 defined source container
ps
parents: 2521
diff changeset
   270
!
65d455c152f0 defined source container
ps
parents: 2521
diff changeset
   271
2520
36b0b3f51128 initial checkin
ps
parents:
diff changeset
   272
postOpenWith: aBuilder
36b0b3f51128 initial checkin
ps
parents:
diff changeset
   273
36b0b3f51128 initial checkin
ps
parents:
diff changeset
   274
36b0b3f51128 initial checkin
ps
parents:
diff changeset
   275
    super postOpenWith: aBuilder.
2538
65d455c152f0 defined source container
ps
parents: 2521
diff changeset
   276
    self itemList expand.
2520
36b0b3f51128 initial checkin
ps
parents:
diff changeset
   277
!
36b0b3f51128 initial checkin
ps
parents:
diff changeset
   278
36b0b3f51128 initial checkin
ps
parents:
diff changeset
   279
release
36b0b3f51128 initial checkin
ps
parents:
diff changeset
   280
36b0b3f51128 initial checkin
ps
parents:
diff changeset
   281
    self stopRevisionTask.    
36b0b3f51128 initial checkin
ps
parents:
diff changeset
   282
    ^super release
36b0b3f51128 initial checkin
ps
parents:
diff changeset
   283
36b0b3f51128 initial checkin
ps
parents:
diff changeset
   284
36b0b3f51128 initial checkin
ps
parents:
diff changeset
   285
! !
36b0b3f51128 initial checkin
ps
parents:
diff changeset
   286
2538
65d455c152f0 defined source container
ps
parents: 2521
diff changeset
   287
!ClassRevisionTree methodsFor:'menu actions'!
2520
36b0b3f51128 initial checkin
ps
parents:
diff changeset
   288
2538
65d455c152f0 defined source container
ps
parents: 2521
diff changeset
   289
selectItemMenu
65d455c152f0 defined source container
ps
parents: 2521
diff changeset
   290
"
65d455c152f0 defined source container
ps
parents: 2521
diff changeset
   291
get the menu for the selected items.If a menuBlock is set then evalute this block
65d455c152f0 defined source container
ps
parents: 2521
diff changeset
   292
with the current selection.
2520
36b0b3f51128 initial checkin
ps
parents:
diff changeset
   293
2538
65d455c152f0 defined source container
ps
parents: 2521
diff changeset
   294
<return: Menu|nil>
65d455c152f0 defined source container
ps
parents: 2521
diff changeset
   295
"
65d455c152f0 defined source container
ps
parents: 2521
diff changeset
   296
    ^ [ menuBlock value ]
65d455c152f0 defined source container
ps
parents: 2521
diff changeset
   297
! !
2520
36b0b3f51128 initial checkin
ps
parents:
diff changeset
   298
2538
65d455c152f0 defined source container
ps
parents: 2521
diff changeset
   299
!ClassRevisionTree methodsFor:'private'!
2520
36b0b3f51128 initial checkin
ps
parents:
diff changeset
   300
36b0b3f51128 initial checkin
ps
parents:
diff changeset
   301
revisionTaskCycle
36b0b3f51128 initial checkin
ps
parents:
diff changeset
   302
36b0b3f51128 initial checkin
ps
parents:
diff changeset
   303
    |theClassItem|
36b0b3f51128 initial checkin
ps
parents:
diff changeset
   304
36b0b3f51128 initial checkin
ps
parents:
diff changeset
   305
    [
36b0b3f51128 initial checkin
ps
parents:
diff changeset
   306
        theClassItem := nil.
36b0b3f51128 initial checkin
ps
parents:
diff changeset
   307
        self semaphoreCritical critical:[
36b0b3f51128 initial checkin
ps
parents:
diff changeset
   308
            self revisionInfoList notEmpty
36b0b3f51128 initial checkin
ps
parents:
diff changeset
   309
                ifTrue:[theClassItem := self revisionInfoList remove:(self revisionInfoList last) ifAbsent:[nil]]
36b0b3f51128 initial checkin
ps
parents:
diff changeset
   310
        ].
2538
65d455c152f0 defined source container
ps
parents: 2521
diff changeset
   311
        (theClassItem notNil and:[theClassItem needsChildren])ifTrue:[
65d455c152f0 defined source container
ps
parents: 2521
diff changeset
   312
            currentClassItemInTask:=theClassItem.
65d455c152f0 defined source container
ps
parents: 2521
diff changeset
   313
            theClassItem computeRevisions.
65d455c152f0 defined source container
ps
parents: 2521
diff changeset
   314
            currentClassItemInTask:=nil
2520
36b0b3f51128 initial checkin
ps
parents:
diff changeset
   315
        ].
36b0b3f51128 initial checkin
ps
parents:
diff changeset
   316
        theClassItem notNil
36b0b3f51128 initial checkin
ps
parents:
diff changeset
   317
    ] whileTrue.
36b0b3f51128 initial checkin
ps
parents:
diff changeset
   318
!
36b0b3f51128 initial checkin
ps
parents:
diff changeset
   319
2538
65d455c152f0 defined source container
ps
parents: 2521
diff changeset
   320
setUpItemList
65d455c152f0 defined source container
ps
parents: 2521
diff changeset
   321
65d455c152f0 defined source container
ps
parents: 2521
diff changeset
   322
    |theClassColl theClassItemColl root|
65d455c152f0 defined source container
ps
parents: 2521
diff changeset
   323
65d455c152f0 defined source container
ps
parents: 2521
diff changeset
   324
    root := self classItemRootClass new.
65d455c152f0 defined source container
ps
parents: 2521
diff changeset
   325
    (theClassColl := self classHolder value) notNil ifTrue:[
65d455c152f0 defined source container
ps
parents: 2521
diff changeset
   326
        theClassItemColl := theClassColl collect:[:eachClass |
65d455c152f0 defined source container
ps
parents: 2521
diff changeset
   327
            |theClassItem theClass|
65d455c152f0 defined source container
ps
parents: 2521
diff changeset
   328
            theClassItem := self classItemClass new.
65d455c152f0 defined source container
ps
parents: 2521
diff changeset
   329
            theClass := Smalltalk resolveName:eachClass inClass:Smalltalk.
65d455c152f0 defined source container
ps
parents: 2521
diff changeset
   330
            theClassItem myClass:theClass.
65d455c152f0 defined source container
ps
parents: 2521
diff changeset
   331
            theClassItem].
65d455c152f0 defined source container
ps
parents: 2521
diff changeset
   332
       root addAll: theClassItemColl.
65d455c152f0 defined source container
ps
parents: 2521
diff changeset
   333
    ].
65d455c152f0 defined source container
ps
parents: 2521
diff changeset
   334
    self listModel root:root.
65d455c152f0 defined source container
ps
parents: 2521
diff changeset
   335
!
65d455c152f0 defined source container
ps
parents: 2521
diff changeset
   336
2520
36b0b3f51128 initial checkin
ps
parents:
diff changeset
   337
startRevisionTask
36b0b3f51128 initial checkin
ps
parents:
diff changeset
   338
36b0b3f51128 initial checkin
ps
parents:
diff changeset
   339
    self semaphoreCritical critical:[
36b0b3f51128 initial checkin
ps
parents:
diff changeset
   340
        revisionTask ifNil:[
36b0b3f51128 initial checkin
ps
parents:
diff changeset
   341
            revisionTask := Process for:[
36b0b3f51128 initial checkin
ps
parents:
diff changeset
   342
                                            self revisionTaskCycle
36b0b3f51128 initial checkin
ps
parents:
diff changeset
   343
                                        ]
36b0b3f51128 initial checkin
ps
parents:
diff changeset
   344
                               priority:(Processor userBackgroundPriority).
36b0b3f51128 initial checkin
ps
parents:
diff changeset
   345
            revisionTask addExitAction:[revisionTask := nil].
36b0b3f51128 initial checkin
ps
parents:
diff changeset
   346
            revisionTask resume.
36b0b3f51128 initial checkin
ps
parents:
diff changeset
   347
        ].
36b0b3f51128 initial checkin
ps
parents:
diff changeset
   348
    ].
36b0b3f51128 initial checkin
ps
parents:
diff changeset
   349
!
36b0b3f51128 initial checkin
ps
parents:
diff changeset
   350
36b0b3f51128 initial checkin
ps
parents:
diff changeset
   351
stopRevisionTask
36b0b3f51128 initial checkin
ps
parents:
diff changeset
   352
    |task|
36b0b3f51128 initial checkin
ps
parents:
diff changeset
   353
36b0b3f51128 initial checkin
ps
parents:
diff changeset
   354
    self semaphoreCritical critical:[
36b0b3f51128 initial checkin
ps
parents:
diff changeset
   355
        (task := revisionTask) notNil ifTrue:[
36b0b3f51128 initial checkin
ps
parents:
diff changeset
   356
            revisionTask := nil.
36b0b3f51128 initial checkin
ps
parents:
diff changeset
   357
            Exception handle:[:ex|] do:[
36b0b3f51128 initial checkin
ps
parents:
diff changeset
   358
                task terminateWithAllSubprocesses.
36b0b3f51128 initial checkin
ps
parents:
diff changeset
   359
                task waitUntilTerminated.
36b0b3f51128 initial checkin
ps
parents:
diff changeset
   360
            ]
36b0b3f51128 initial checkin
ps
parents:
diff changeset
   361
        ]
36b0b3f51128 initial checkin
ps
parents:
diff changeset
   362
    ].
36b0b3f51128 initial checkin
ps
parents:
diff changeset
   363
36b0b3f51128 initial checkin
ps
parents:
diff changeset
   364
! !
36b0b3f51128 initial checkin
ps
parents:
diff changeset
   365
2538
65d455c152f0 defined source container
ps
parents: 2521
diff changeset
   366
!ClassRevisionTree methodsFor:'protocol accessing'!
65d455c152f0 defined source container
ps
parents: 2521
diff changeset
   367
65d455c152f0 defined source container
ps
parents: 2521
diff changeset
   368
classHolder
65d455c152f0 defined source container
ps
parents: 2521
diff changeset
   369
    "return the value of the instance variable 'classHolder' (automatically generated)"
65d455c152f0 defined source container
ps
parents: 2521
diff changeset
   370
65d455c152f0 defined source container
ps
parents: 2521
diff changeset
   371
    ^classHolder ifNil:[
65d455c152f0 defined source container
ps
parents: 2521
diff changeset
   372
        classHolder := ValueHolder new.
65d455c152f0 defined source container
ps
parents: 2521
diff changeset
   373
        classHolder addDependent:self
65d455c152f0 defined source container
ps
parents: 2521
diff changeset
   374
    ]
65d455c152f0 defined source container
ps
parents: 2521
diff changeset
   375
!
65d455c152f0 defined source container
ps
parents: 2521
diff changeset
   376
65d455c152f0 defined source container
ps
parents: 2521
diff changeset
   377
classHolder:aValueHolder
65d455c152f0 defined source container
ps
parents: 2521
diff changeset
   378
    "set the value of the instance variable 'classHolder' (automatically generated)"
2520
36b0b3f51128 initial checkin
ps
parents:
diff changeset
   379
2538
65d455c152f0 defined source container
ps
parents: 2521
diff changeset
   380
    (classHolder ~~ aValueHolder) ifTrue:[
65d455c152f0 defined source container
ps
parents: 2521
diff changeset
   381
        classHolder removeDependent:self.
65d455c152f0 defined source container
ps
parents: 2521
diff changeset
   382
        classHolder := aValueHolder.
65d455c152f0 defined source container
ps
parents: 2521
diff changeset
   383
        classHolder notNil ifTrue:[
65d455c152f0 defined source container
ps
parents: 2521
diff changeset
   384
            classHolder addDependent:self.
65d455c152f0 defined source container
ps
parents: 2521
diff changeset
   385
        ].
65d455c152f0 defined source container
ps
parents: 2521
diff changeset
   386
        self setUpItemList
65d455c152f0 defined source container
ps
parents: 2521
diff changeset
   387
    ].
65d455c152f0 defined source container
ps
parents: 2521
diff changeset
   388
!
2520
36b0b3f51128 initial checkin
ps
parents:
diff changeset
   389
2538
65d455c152f0 defined source container
ps
parents: 2521
diff changeset
   390
menuBlock
65d455c152f0 defined source container
ps
parents: 2521
diff changeset
   391
    "return the value of the instance variable 'menuBlock' (automatically generated)"
65d455c152f0 defined source container
ps
parents: 2521
diff changeset
   392
65d455c152f0 defined source container
ps
parents: 2521
diff changeset
   393
    ^ menuBlock
65d455c152f0 defined source container
ps
parents: 2521
diff changeset
   394
!
2520
36b0b3f51128 initial checkin
ps
parents:
diff changeset
   395
2538
65d455c152f0 defined source container
ps
parents: 2521
diff changeset
   396
menuBlock:something
65d455c152f0 defined source container
ps
parents: 2521
diff changeset
   397
    "set the value of the instance variable 'menuBlock' (automatically generated)"
65d455c152f0 defined source container
ps
parents: 2521
diff changeset
   398
65d455c152f0 defined source container
ps
parents: 2521
diff changeset
   399
    menuBlock := something.!
65d455c152f0 defined source container
ps
parents: 2521
diff changeset
   400
65d455c152f0 defined source container
ps
parents: 2521
diff changeset
   401
selectionBlock
65d455c152f0 defined source container
ps
parents: 2521
diff changeset
   402
    "return the value of the instance variable 'selectionBlock' (automatically generated)"
65d455c152f0 defined source container
ps
parents: 2521
diff changeset
   403
65d455c152f0 defined source container
ps
parents: 2521
diff changeset
   404
    ^ selectionBlock!
65d455c152f0 defined source container
ps
parents: 2521
diff changeset
   405
65d455c152f0 defined source container
ps
parents: 2521
diff changeset
   406
selectionBlock:something
65d455c152f0 defined source container
ps
parents: 2521
diff changeset
   407
    "set the value of the instance variable 'selectionBlock' (automatically generated)"
65d455c152f0 defined source container
ps
parents: 2521
diff changeset
   408
65d455c152f0 defined source container
ps
parents: 2521
diff changeset
   409
    selectionBlock := something.!
65d455c152f0 defined source container
ps
parents: 2521
diff changeset
   410
65d455c152f0 defined source container
ps
parents: 2521
diff changeset
   411
selectionHolder
2520
36b0b3f51128 initial checkin
ps
parents:
diff changeset
   412
2538
65d455c152f0 defined source container
ps
parents: 2521
diff changeset
   413
    ^selectionHolder
65d455c152f0 defined source container
ps
parents: 2521
diff changeset
   414
!
65d455c152f0 defined source container
ps
parents: 2521
diff changeset
   415
65d455c152f0 defined source container
ps
parents: 2521
diff changeset
   416
selectionHolder:aValueHolder
65d455c152f0 defined source container
ps
parents: 2521
diff changeset
   417
    "set the value of the instance variable 'revisionItemSelection' (automatically generated)"
65d455c152f0 defined source container
ps
parents: 2521
diff changeset
   418
65d455c152f0 defined source container
ps
parents: 2521
diff changeset
   419
    selectionHolder := aValueHolder.
65d455c152f0 defined source container
ps
parents: 2521
diff changeset
   420
    listView ifNil:[^self].
65d455c152f0 defined source container
ps
parents: 2521
diff changeset
   421
    listView model:selectionHolder
65d455c152f0 defined source container
ps
parents: 2521
diff changeset
   422
! !
65d455c152f0 defined source container
ps
parents: 2521
diff changeset
   423
65d455c152f0 defined source container
ps
parents: 2521
diff changeset
   424
!ClassRevisionTree methodsFor:'protocol setup'!
65d455c152f0 defined source container
ps
parents: 2521
diff changeset
   425
65d455c152f0 defined source container
ps
parents: 2521
diff changeset
   426
setupOnClasses:aClassColl
65d455c152f0 defined source container
ps
parents: 2521
diff changeset
   427
65d455c152f0 defined source container
ps
parents: 2521
diff changeset
   428
    self classHolder value:aClassColl.
2520
36b0b3f51128 initial checkin
ps
parents:
diff changeset
   429
"
36b0b3f51128 initial checkin
ps
parents:
diff changeset
   430
|theTree|
36b0b3f51128 initial checkin
ps
parents:
diff changeset
   431
36b0b3f51128 initial checkin
ps
parents:
diff changeset
   432
theTree := ClassRevisionTree new.
36b0b3f51128 initial checkin
ps
parents:
diff changeset
   433
theTree open.
2538
65d455c152f0 defined source container
ps
parents: 2521
diff changeset
   434
theTree setupOnClasses:#(VersionDiffBrowser HierarchicalVersionDiffBrowser SourceRevisionItem Project)
2520
36b0b3f51128 initial checkin
ps
parents:
diff changeset
   435
"
36b0b3f51128 initial checkin
ps
parents:
diff changeset
   436
! !
36b0b3f51128 initial checkin
ps
parents:
diff changeset
   437
36b0b3f51128 initial checkin
ps
parents:
diff changeset
   438
!ClassRevisionTree class methodsFor:'documentation'!
36b0b3f51128 initial checkin
ps
parents:
diff changeset
   439
36b0b3f51128 initial checkin
ps
parents:
diff changeset
   440
version
2538
65d455c152f0 defined source container
ps
parents: 2521
diff changeset
   441
    ^ '$Header: /cvs/stx/stx/libtool/ClassRevisionTree.st,v 1.3 2000-01-14 10:51:09 ps Exp $'
2520
36b0b3f51128 initial checkin
ps
parents:
diff changeset
   442
! !