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