ClassItem.st
author ps
Tue, 15 Feb 2000 17:49:27 +0100
changeset 2612 ce84f1d3dae9
parent 2547 49e7cb306cd5
child 2625 d70f0361a027
permissions -rw-r--r--
*** empty log message ***
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
2516
736908782aa1 initial checkin
ps
parents:
diff changeset
     1
AbstractVersionDiffBrowserItem subclass:#ClassItem
2538
65d455c152f0 defined source container
ps
parents: 2517
diff changeset
     2
	instanceVariableNames:'myClass isRegistered revisonColl revisionInfo'
2516
736908782aa1 initial checkin
ps
parents:
diff changeset
     3
	classVariableNames:''
736908782aa1 initial checkin
ps
parents:
diff changeset
     4
	poolDictionaries:''
2547
49e7cb306cd5 category change
Claus Gittinger <cg@exept.de>
parents: 2542
diff changeset
     5
	category:'Interface-Browsers-Support'
2516
736908782aa1 initial checkin
ps
parents:
diff changeset
     6
!
736908782aa1 initial checkin
ps
parents:
diff changeset
     7
2547
49e7cb306cd5 category change
Claus Gittinger <cg@exept.de>
parents: 2542
diff changeset
     8
!ClassItem class methodsFor:'documentation'!
49e7cb306cd5 category change
Claus Gittinger <cg@exept.de>
parents: 2542
diff changeset
     9
49e7cb306cd5 category change
Claus Gittinger <cg@exept.de>
parents: 2542
diff changeset
    10
documentation
49e7cb306cd5 category change
Claus Gittinger <cg@exept.de>
parents: 2542
diff changeset
    11
"
49e7cb306cd5 category change
Claus Gittinger <cg@exept.de>
parents: 2542
diff changeset
    12
    documentation to be added.
49e7cb306cd5 category change
Claus Gittinger <cg@exept.de>
parents: 2542
diff changeset
    13
49e7cb306cd5 category change
Claus Gittinger <cg@exept.de>
parents: 2542
diff changeset
    14
    [author:]
49e7cb306cd5 category change
Claus Gittinger <cg@exept.de>
parents: 2542
diff changeset
    15
        Pierre Schwarz (ps@exept.de)
49e7cb306cd5 category change
Claus Gittinger <cg@exept.de>
parents: 2542
diff changeset
    16
49e7cb306cd5 category change
Claus Gittinger <cg@exept.de>
parents: 2542
diff changeset
    17
    [see also:]
49e7cb306cd5 category change
Claus Gittinger <cg@exept.de>
parents: 2542
diff changeset
    18
49e7cb306cd5 category change
Claus Gittinger <cg@exept.de>
parents: 2542
diff changeset
    19
    [instance variables:]
49e7cb306cd5 category change
Claus Gittinger <cg@exept.de>
parents: 2542
diff changeset
    20
49e7cb306cd5 category change
Claus Gittinger <cg@exept.de>
parents: 2542
diff changeset
    21
    [class variables:]
49e7cb306cd5 category change
Claus Gittinger <cg@exept.de>
parents: 2542
diff changeset
    22
"
49e7cb306cd5 category change
Claus Gittinger <cg@exept.de>
parents: 2542
diff changeset
    23
49e7cb306cd5 category change
Claus Gittinger <cg@exept.de>
parents: 2542
diff changeset
    24
! !
2516
736908782aa1 initial checkin
ps
parents:
diff changeset
    25
2538
65d455c152f0 defined source container
ps
parents: 2517
diff changeset
    26
!ClassItem class methodsFor:'protocol'!
65d455c152f0 defined source container
ps
parents: 2517
diff changeset
    27
65d455c152f0 defined source container
ps
parents: 2517
diff changeset
    28
expandableRevisionItemClass
65d455c152f0 defined source container
ps
parents: 2517
diff changeset
    29
65d455c152f0 defined source container
ps
parents: 2517
diff changeset
    30
    ^ExpandableRevisionItem
65d455c152f0 defined source container
ps
parents: 2517
diff changeset
    31
!
65d455c152f0 defined source container
ps
parents: 2517
diff changeset
    32
65d455c152f0 defined source container
ps
parents: 2517
diff changeset
    33
sourceRevisonItemClass
65d455c152f0 defined source container
ps
parents: 2517
diff changeset
    34
65d455c152f0 defined source container
ps
parents: 2517
diff changeset
    35
    ^SourceRevisionItem
65d455c152f0 defined source container
ps
parents: 2517
diff changeset
    36
!
65d455c152f0 defined source container
ps
parents: 2517
diff changeset
    37
65d455c152f0 defined source container
ps
parents: 2517
diff changeset
    38
versionRevisionItemClass
65d455c152f0 defined source container
ps
parents: 2517
diff changeset
    39
65d455c152f0 defined source container
ps
parents: 2517
diff changeset
    40
    ^VersionRevisionItem
65d455c152f0 defined source container
ps
parents: 2517
diff changeset
    41
! !
65d455c152f0 defined source container
ps
parents: 2517
diff changeset
    42
2516
736908782aa1 initial checkin
ps
parents:
diff changeset
    43
!ClassItem methodsFor:'accessing'!
736908782aa1 initial checkin
ps
parents:
diff changeset
    44
2538
65d455c152f0 defined source container
ps
parents: 2517
diff changeset
    45
loadedRevisionItem
65d455c152f0 defined source container
ps
parents: 2517
diff changeset
    46
65d455c152f0 defined source container
ps
parents: 2517
diff changeset
    47
    ^children detect:[:eachRevision | eachRevision isLoadedRevision]
65d455c152f0 defined source container
ps
parents: 2517
diff changeset
    48
!
65d455c152f0 defined source container
ps
parents: 2517
diff changeset
    49
2516
736908782aa1 initial checkin
ps
parents:
diff changeset
    50
myClass
736908782aa1 initial checkin
ps
parents:
diff changeset
    51
    "return the value of the instance variable 'myClass' (automatically generated)"
736908782aa1 initial checkin
ps
parents:
diff changeset
    52
736908782aa1 initial checkin
ps
parents:
diff changeset
    53
    ^ myClass!
736908782aa1 initial checkin
ps
parents:
diff changeset
    54
736908782aa1 initial checkin
ps
parents:
diff changeset
    55
myClass:something
736908782aa1 initial checkin
ps
parents:
diff changeset
    56
    "set the value of the instance variable 'myClass' (automatically generated)"
736908782aa1 initial checkin
ps
parents:
diff changeset
    57
736908782aa1 initial checkin
ps
parents:
diff changeset
    58
    myClass := something.!
736908782aa1 initial checkin
ps
parents:
diff changeset
    59
2538
65d455c152f0 defined source container
ps
parents: 2517
diff changeset
    60
needsChildren
65d455c152f0 defined source container
ps
parents: 2517
diff changeset
    61
    "return the value of the instance variable 'isRegistered' (automatically generated)"
2516
736908782aa1 initial checkin
ps
parents:
diff changeset
    62
2538
65d455c152f0 defined source container
ps
parents: 2517
diff changeset
    63
    ^ children size == 0
65d455c152f0 defined source container
ps
parents: 2517
diff changeset
    64
!
2516
736908782aa1 initial checkin
ps
parents:
diff changeset
    65
2538
65d455c152f0 defined source container
ps
parents: 2517
diff changeset
    66
revisonColl
65d455c152f0 defined source container
ps
parents: 2517
diff changeset
    67
    "return the value of the instance variable 'revisonColl' (automatically generated)"
65d455c152f0 defined source container
ps
parents: 2517
diff changeset
    68
65d455c152f0 defined source container
ps
parents: 2517
diff changeset
    69
    ^ revisonColl!
65d455c152f0 defined source container
ps
parents: 2517
diff changeset
    70
65d455c152f0 defined source container
ps
parents: 2517
diff changeset
    71
revisonColl:something
65d455c152f0 defined source container
ps
parents: 2517
diff changeset
    72
    "set the value of the instance variable 'revisonColl' (automatically generated)"
65d455c152f0 defined source container
ps
parents: 2517
diff changeset
    73
65d455c152f0 defined source container
ps
parents: 2517
diff changeset
    74
    revisonColl := something.! !
2516
736908782aa1 initial checkin
ps
parents:
diff changeset
    75
736908782aa1 initial checkin
ps
parents:
diff changeset
    76
!ClassItem methodsFor:'initialization'!
736908782aa1 initial checkin
ps
parents:
diff changeset
    77
736908782aa1 initial checkin
ps
parents:
diff changeset
    78
initialize
2517
69888372f495 *** empty log message ***
ps
parents: 2516
diff changeset
    79
"
69888372f495 *** empty log message ***
ps
parents: 2516
diff changeset
    80
initialize necessary things
2516
736908782aa1 initial checkin
ps
parents:
diff changeset
    81
2517
69888372f495 *** empty log message ***
ps
parents: 2516
diff changeset
    82
<return: self>
69888372f495 *** empty log message ***
ps
parents: 2516
diff changeset
    83
"
2538
65d455c152f0 defined source container
ps
parents: 2517
diff changeset
    84
    super initialize.
65d455c152f0 defined source container
ps
parents: 2517
diff changeset
    85
    isRegistered := false
65d455c152f0 defined source container
ps
parents: 2517
diff changeset
    86
! !
65d455c152f0 defined source container
ps
parents: 2517
diff changeset
    87
65d455c152f0 defined source container
ps
parents: 2517
diff changeset
    88
!ClassItem methodsFor:'private'!
65d455c152f0 defined source container
ps
parents: 2517
diff changeset
    89
65d455c152f0 defined source container
ps
parents: 2517
diff changeset
    90
addAllRevisionsBefore:anExpandableRevisonItem
65d455c152f0 defined source container
ps
parents: 2517
diff changeset
    91
65d455c152f0 defined source container
ps
parents: 2517
diff changeset
    92
65d455c152f0 defined source container
ps
parents: 2517
diff changeset
    93
    |theChildrens theStartIndex theStopIndex theRevisionSize|
65d455c152f0 defined source container
ps
parents: 2517
diff changeset
    94
65d455c152f0 defined source container
ps
parents: 2517
diff changeset
    95
    (theStartIndex := children size) <= (theRevisionSize := revisonColl size) ifTrue:[
65d455c152f0 defined source container
ps
parents: 2517
diff changeset
    96
        theStopIndex := theRevisionSize.
65d455c152f0 defined source container
ps
parents: 2517
diff changeset
    97
        theChildrens := revisonColl copyFrom:theStartIndex to:theStopIndex.
65d455c152f0 defined source container
ps
parents: 2517
diff changeset
    98
        "remove expandable item"
65d455c152f0 defined source container
ps
parents: 2517
diff changeset
    99
        self remove:anExpandableRevisonItem.
65d455c152f0 defined source container
ps
parents: 2517
diff changeset
   100
        "add items"
65d455c152f0 defined source container
ps
parents: 2517
diff changeset
   101
        self addAll:theChildrens.
65d455c152f0 defined source container
ps
parents: 2517
diff changeset
   102
    ]
65d455c152f0 defined source container
ps
parents: 2517
diff changeset
   103
!
65d455c152f0 defined source container
ps
parents: 2517
diff changeset
   104
65d455c152f0 defined source container
ps
parents: 2517
diff changeset
   105
addNewRevisionsBefore:anExpandableRevisonItem
65d455c152f0 defined source container
ps
parents: 2517
diff changeset
   106
65d455c152f0 defined source container
ps
parents: 2517
diff changeset
   107
65d455c152f0 defined source container
ps
parents: 2517
diff changeset
   108
    |theChildrens theStartIndex theStopIndex|
65d455c152f0 defined source container
ps
parents: 2517
diff changeset
   109
65d455c152f0 defined source container
ps
parents: 2517
diff changeset
   110
    (theStartIndex := children size) <= revisonColl size ifTrue:[
65d455c152f0 defined source container
ps
parents: 2517
diff changeset
   111
        theStopIndex := (theStartIndex-1) * 2 + (theStartIndex-1).
65d455c152f0 defined source container
ps
parents: 2517
diff changeset
   112
        theStopIndex := theStopIndex min:revisonColl size.
65d455c152f0 defined source container
ps
parents: 2517
diff changeset
   113
        theChildrens := revisonColl copyFrom:theStartIndex to:theStopIndex.
65d455c152f0 defined source container
ps
parents: 2517
diff changeset
   114
        "add items"
65d455c152f0 defined source container
ps
parents: 2517
diff changeset
   115
        self addAll:theChildrens before:anExpandableRevisonItem.
65d455c152f0 defined source container
ps
parents: 2517
diff changeset
   116
        "check if all revisions are shown, if true remove expandable item"
65d455c152f0 defined source container
ps
parents: 2517
diff changeset
   117
        (theStopIndex = revisonColl size) ifTrue:[self remove:anExpandableRevisonItem].
65d455c152f0 defined source container
ps
parents: 2517
diff changeset
   118
    ]
65d455c152f0 defined source container
ps
parents: 2517
diff changeset
   119
!
65d455c152f0 defined source container
ps
parents: 2517
diff changeset
   120
65d455c152f0 defined source container
ps
parents: 2517
diff changeset
   121
setRevisionInfo:aRevisionInfo
65d455c152f0 defined source container
ps
parents: 2517
diff changeset
   122
65d455c152f0 defined source container
ps
parents: 2517
diff changeset
   123
    aRevisionInfo removeKey:#revisions.
65d455c152f0 defined source container
ps
parents: 2517
diff changeset
   124
    revisionInfo := aRevisionInfo
2516
736908782aa1 initial checkin
ps
parents:
diff changeset
   125
! !
736908782aa1 initial checkin
ps
parents:
diff changeset
   126
736908782aa1 initial checkin
ps
parents:
diff changeset
   127
!ClassItem methodsFor:'protocol'!
736908782aa1 initial checkin
ps
parents:
diff changeset
   128
736908782aa1 initial checkin
ps
parents:
diff changeset
   129
children
736908782aa1 initial checkin
ps
parents:
diff changeset
   130
"returns list of children. The revision for the class myClass
736908782aa1 initial checkin
ps
parents:
diff changeset
   131
are computed via the sourcecode manager. Only when the childrens
736908782aa1 initial checkin
ps
parents:
diff changeset
   132
are needed, they are calculated.
736908782aa1 initial checkin
ps
parents:
diff changeset
   133
736908782aa1 initial checkin
ps
parents:
diff changeset
   134
<return: nil|List>
736908782aa1 initial checkin
ps
parents:
diff changeset
   135
"  
2538
65d455c152f0 defined source container
ps
parents: 2517
diff changeset
   136
65d455c152f0 defined source container
ps
parents: 2517
diff changeset
   137
    isRegistered ifFalse:[
65d455c152f0 defined source container
ps
parents: 2517
diff changeset
   138
        isRegistered := true.
2516
736908782aa1 initial checkin
ps
parents:
diff changeset
   139
        self application getRevisionInfoForClassItem:self.
2538
65d455c152f0 defined source container
ps
parents: 2517
diff changeset
   140
        self changed:#icon
2516
736908782aa1 initial checkin
ps
parents:
diff changeset
   141
    ].
736908782aa1 initial checkin
ps
parents:
diff changeset
   142
    ^children
736908782aa1 initial checkin
ps
parents:
diff changeset
   143
736908782aa1 initial checkin
ps
parents:
diff changeset
   144
!
736908782aa1 initial checkin
ps
parents:
diff changeset
   145
2538
65d455c152f0 defined source container
ps
parents: 2517
diff changeset
   146
computeRevisions
65d455c152f0 defined source container
ps
parents: 2517
diff changeset
   147
2542
dbebe8c0abf3 *** empty log message ***
ps
parents: 2538
diff changeset
   148
    |theClass theSourceCodeManager theRevisionLog|
2538
65d455c152f0 defined source container
ps
parents: 2517
diff changeset
   149
65d455c152f0 defined source container
ps
parents: 2517
diff changeset
   150
    theClass := self myClass. 
2542
dbebe8c0abf3 *** empty log message ***
ps
parents: 2538
diff changeset
   151
    (theSourceCodeManager := theClass sourceCodeManager) isNil
dbebe8c0abf3 *** empty log message ***
ps
parents: 2538
diff changeset
   152
        ifFalse:[theRevisionLog := theSourceCodeManager revisionLogOf:theClass].
dbebe8c0abf3 *** empty log message ***
ps
parents: 2538
diff changeset
   153
    self setRevisions:theRevisionLog
2538
65d455c152f0 defined source container
ps
parents: 2517
diff changeset
   154
!
65d455c152f0 defined source container
ps
parents: 2517
diff changeset
   155
2516
736908782aa1 initial checkin
ps
parents:
diff changeset
   156
hasChildren
736908782aa1 initial checkin
ps
parents:
diff changeset
   157
"a class items has always childs
736908782aa1 initial checkin
ps
parents:
diff changeset
   158
736908782aa1 initial checkin
ps
parents:
diff changeset
   159
<return: Boolean>
736908782aa1 initial checkin
ps
parents:
diff changeset
   160
"
736908782aa1 initial checkin
ps
parents:
diff changeset
   161
736908782aa1 initial checkin
ps
parents:
diff changeset
   162
     ^true
736908782aa1 initial checkin
ps
parents:
diff changeset
   163
!
736908782aa1 initial checkin
ps
parents:
diff changeset
   164
2538
65d455c152f0 defined source container
ps
parents: 2517
diff changeset
   165
icon
65d455c152f0 defined source container
ps
parents: 2517
diff changeset
   166
    isRegistered ifFalse:[^#unloadedClassItem].
65d455c152f0 defined source container
ps
parents: 2517
diff changeset
   167
    (isRegistered and:[children size ~~ 0]) ifTrue:[
65d455c152f0 defined source container
ps
parents: 2517
diff changeset
   168
        ^#loadedClassItem 
65d455c152f0 defined source container
ps
parents: 2517
diff changeset
   169
    ].
65d455c152f0 defined source container
ps
parents: 2517
diff changeset
   170
    ^#loadingClassItem
65d455c152f0 defined source container
ps
parents: 2517
diff changeset
   171
!
65d455c152f0 defined source container
ps
parents: 2517
diff changeset
   172
2516
736908782aa1 initial checkin
ps
parents:
diff changeset
   173
label
736908782aa1 initial checkin
ps
parents:
diff changeset
   174
736908782aa1 initial checkin
ps
parents:
diff changeset
   175
   ^myClass name
736908782aa1 initial checkin
ps
parents:
diff changeset
   176
736908782aa1 initial checkin
ps
parents:
diff changeset
   177
2538
65d455c152f0 defined source container
ps
parents: 2517
diff changeset
   178
!
65d455c152f0 defined source container
ps
parents: 2517
diff changeset
   179
65d455c152f0 defined source container
ps
parents: 2517
diff changeset
   180
newestRevision
65d455c152f0 defined source container
ps
parents: 2517
diff changeset
   181
65d455c152f0 defined source container
ps
parents: 2517
diff changeset
   182
    revisionInfo ifNil:[^''].
65d455c152f0 defined source container
ps
parents: 2517
diff changeset
   183
    ^revisionInfo at:#newestRevision
65d455c152f0 defined source container
ps
parents: 2517
diff changeset
   184
65d455c152f0 defined source container
ps
parents: 2517
diff changeset
   185
65d455c152f0 defined source container
ps
parents: 2517
diff changeset
   186
!
65d455c152f0 defined source container
ps
parents: 2517
diff changeset
   187
65d455c152f0 defined source container
ps
parents: 2517
diff changeset
   188
setChildrensFromRevisionColl
65d455c152f0 defined source container
ps
parents: 2517
diff changeset
   189
65d455c152f0 defined source container
ps
parents: 2517
diff changeset
   190
    |theChildrens|
65d455c152f0 defined source container
ps
parents: 2517
diff changeset
   191
65d455c152f0 defined source container
ps
parents: 2517
diff changeset
   192
    revisonColl size > 5
65d455c152f0 defined source container
ps
parents: 2517
diff changeset
   193
        ifTrue:[
65d455c152f0 defined source container
ps
parents: 2517
diff changeset
   194
            theChildrens := revisonColl copyFrom:1 to:5.
65d455c152f0 defined source container
ps
parents: 2517
diff changeset
   195
            theChildrens add:self class expandableRevisionItemClass new.
65d455c152f0 defined source container
ps
parents: 2517
diff changeset
   196
            ]
65d455c152f0 defined source container
ps
parents: 2517
diff changeset
   197
        ifFalse:[theChildrens:=revisonColl].
65d455c152f0 defined source container
ps
parents: 2517
diff changeset
   198
    self addAll:theChildrens
65d455c152f0 defined source container
ps
parents: 2517
diff changeset
   199
!
65d455c152f0 defined source container
ps
parents: 2517
diff changeset
   200
65d455c152f0 defined source container
ps
parents: 2517
diff changeset
   201
setRevisions:aRevisionInfo
65d455c152f0 defined source container
ps
parents: 2517
diff changeset
   202
65d455c152f0 defined source container
ps
parents: 2517
diff changeset
   203
    aRevisionInfo isNil
65d455c152f0 defined source container
ps
parents: 2517
diff changeset
   204
        ifTrue: [revisonColl := Array with:(self class sourceRevisonItemClass newForRevision:nil)]
65d455c152f0 defined source container
ps
parents: 2517
diff changeset
   205
        ifFalse:[revisonColl := (aRevisionInfo at:#revisions) collect:[:eachRevision|
65d455c152f0 defined source container
ps
parents: 2517
diff changeset
   206
                    self class versionRevisionItemClass newForRevision:eachRevision].
65d455c152f0 defined source container
ps
parents: 2517
diff changeset
   207
                self isMyClassChanged
65d455c152f0 defined source container
ps
parents: 2517
diff changeset
   208
                    ifTrue:[revisonColl addFirst:(self class sourceRevisonItemClass newForRevision:myClass revisionInfo)].
65d455c152f0 defined source container
ps
parents: 2517
diff changeset
   209
                self setRevisionInfo:aRevisionInfo].
65d455c152f0 defined source container
ps
parents: 2517
diff changeset
   210
     self setChildrensFromRevisionColl.
2516
736908782aa1 initial checkin
ps
parents:
diff changeset
   211
! !
736908782aa1 initial checkin
ps
parents:
diff changeset
   212
736908782aa1 initial checkin
ps
parents:
diff changeset
   213
!ClassItem methodsFor:'testing'!
736908782aa1 initial checkin
ps
parents:
diff changeset
   214
736908782aa1 initial checkin
ps
parents:
diff changeset
   215
isClassItem
2538
65d455c152f0 defined source container
ps
parents: 2517
diff changeset
   216
"
65d455c152f0 defined source container
ps
parents: 2517
diff changeset
   217
Used for testing tree items. Define correct behaviour in subclasses
65d455c152f0 defined source container
ps
parents: 2517
diff changeset
   218
65d455c152f0 defined source container
ps
parents: 2517
diff changeset
   219
<return: Boolean>
65d455c152f0 defined source container
ps
parents: 2517
diff changeset
   220
"
2516
736908782aa1 initial checkin
ps
parents:
diff changeset
   221
736908782aa1 initial checkin
ps
parents:
diff changeset
   222
    ^true
736908782aa1 initial checkin
ps
parents:
diff changeset
   223
736908782aa1 initial checkin
ps
parents:
diff changeset
   224
736908782aa1 initial checkin
ps
parents:
diff changeset
   225
!
736908782aa1 initial checkin
ps
parents:
diff changeset
   226
736908782aa1 initial checkin
ps
parents:
diff changeset
   227
isMyClassChanged
736908782aa1 initial checkin
ps
parents:
diff changeset
   228
736908782aa1 initial checkin
ps
parents:
diff changeset
   229
    ^Project isClassChanged: myClass  
736908782aa1 initial checkin
ps
parents:
diff changeset
   230
! !
736908782aa1 initial checkin
ps
parents:
diff changeset
   231
736908782aa1 initial checkin
ps
parents:
diff changeset
   232
!ClassItem class methodsFor:'documentation'!
736908782aa1 initial checkin
ps
parents:
diff changeset
   233
736908782aa1 initial checkin
ps
parents:
diff changeset
   234
version
2612
ce84f1d3dae9 *** empty log message ***
ps
parents: 2547
diff changeset
   235
    ^ '$Header: /cvs/stx/stx/libtool/ClassItem.st,v 1.6 2000-02-15 16:49:13 ps Exp $'
2516
736908782aa1 initial checkin
ps
parents:
diff changeset
   236
! !