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