[Seaside] Tree of Seaside classes
Damien Cassou
damien.cassou at laposte.net
Thu Sep 16 15:00:19 CEST 2004
Avi Bryant a écrit :
>
> On Sep 16, 2004, at 2:30 PM, Damien Cassou wrote:
>
>> >> I want to comment Seaside's classes and methods. Does a graphical tree
>> >> of the classes exists (which show the hierarchy between classes) ? If
>> >> not, is it possible to generate one from squeak easily ?
>> >>
>>
>>> You could try this, which does class diagrams based on dynamical
>>> information :
>>> http://minnow.cc.gatech.edu/squeak/3577
>>
>>
>> This program has a bug that prevents me from using it. The bug report
>> is below.
>
>
> It looks like you didn't load Connectors first, which is required. It's
> available on SqueakMap.
>
> Avi
You are right, I haven't installed Connectors. I've done it and now I
have three flaps on the bottom of Squeak Window. But ClassDiagram
doesn't work better :
16 September 2004 2:57:31 pm
VM: unix - a SmalltalkImage
Image: Squeak3.7 [latest update: #5989]
SecurityManager state:
Restricted: false
FileAccess: true
SocketAccess: true
Working Dir /home/quetzalcoatl/squeak-3.7/squeak-bak
Trusted Dir /home/quetzalcoatl/squeak-3.7/squeak-bak/secure
Untrusted Dir /home/quetzalcoatl/squeak-3.7/squeak-bak/untrusted
CDClassMorph class(Object)>>doesNotUnderstand: #newUMLClassSymbol
Receiver: CDClassMorph
Arguments and temporary variables:
aMessage: newUMLClassSymbol
Receiver's instance variables:
superclass: ProtoObject
methodDict: a MethodDictionary(#addYellowButtonMenuItemsTo:event:->a
CompiledMe...etc...
format: 134
instanceVariables: #('classDiagramUI' 'cdClass')
organization: ('accessing' shownClass)
('initialize-release' initialize initial...etc...
subclasses: nil
name: #CDClassMorph
classPool: nil
sharedPools: nil
environment: a SystemDictionary(lots of globals)
category: nil
CDClassMorph class>>classDiagramUI:class:
Receiver: CDClassMorph
Arguments and temporary variables:
aClassDiagramUI: a CDClassDiagramUI(1247)
aCDClass: aCDClass:WAAnswerHandler
Receiver's instance variables:
superclass: ProtoObject
methodDict: a MethodDictionary(#addYellowButtonMenuItemsTo:event:->a
CompiledMe...etc...
format: 134
instanceVariables: #('classDiagramUI' 'cdClass')
organization: ('accessing' shownClass)
('initialize-release' initialize initial...etc...
subclasses: nil
name: #CDClassMorph
classPool: nil
sharedPools: nil
environment: a SystemDictionary(lots of globals)
category: nil
[] in CDClassDiagramUI>>morphForClass: {[classMorph := CDClassMorph
classDiagramUI: self class: aCDClass. classMorp...]}
Arguments and temporary variables:
aCDClass: aCDClass:WAAnswerHandler
classMorph: nil
each: nil
OrderedCollection(Collection)>>detect:ifNone:
Receiver: an OrderedCollection()
Arguments and temporary variables:
aBlock: [] in CDClassDiagramUI>>morphForClass: {[:each | each
shownClass = aCDC...etc...
exceptionBlock: [] in CDClassDiagramUI>>morphForClass: {[classMorph
:= CDClassM...etc...
each: nil
Receiver's instance variables:
array: #(nil nil nil nil nil nil nil nil nil nil)
firstIndex: 3
lastIndex: 2
--- The full stack ---
CDClassMorph class(Object)>>doesNotUnderstand: #newUMLClassSymbol
CDClassMorph class>>classDiagramUI:class:
[] in CDClassDiagramUI>>morphForClass: {[classMorph := CDClassMorph
classDiagramUI: self class: aCDClass. classMorp...]}
OrderedCollection(Collection)>>detect:ifNone:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
CDClassDiagramUI>>morphForClass:
CDClassDiagramUI>>drawClass:
[] in CDClassDiagramUI>>draw {[:each | self drawClass: each]}
OrderedCollection>>do:
CDClassDiagramUI>>draw
CDClassDiagramUI>>update:
[] in CDClassDiagram(Object)>>changed: {[:aDependent | aDependent
update: aParameter]}
DependentsArray>>do:
CDClassDiagram(Object)>>changed:
CDClassDiagram>>addClassCategoryNamed:
CDClassDiagramWindow>>addClassCategory:
CDClassDiagramWindow>>addClassCategory
PluggableButtonMorph>>performAction
[] in PluggableButtonMorph>>mouseUp: {[:m | (m containsPoint: evt
cursorPoint) ifTrue: [m performAction]]}
Array(SequenceableCollection)>>do:
PluggableButtonMorph>>mouseUp:
PluggableButtonMorph(Morph)>>handleMouseUp:
MouseButtonEvent>>sentTo:
PluggableButtonMorph(Morph)>>handleEvent:
PluggableButtonMorph(Morph)>>handleFocusEvent:
[] in HandMorph>>sendFocusEvent:to:clear: {[ActiveHand := self.
ActiveEvent := anEvent. result := focusHolder han...]}
[] in PasteUpMorph>>becomeActiveDuring: {[aBlock value]}
BlockContext>>on:do:
PasteUpMorph>>becomeActiveDuring:
HandMorph>>sendFocusEvent:to:clear:
HandMorph>>sendEvent:focus:clear:
HandMorph>>sendMouseEvent:
HandMorph>>handleEvent:
HandMorph>>processEvents
[] in WorldState>>doOneCycleNowFor: {[:h | ActiveHand := h. h
processEvents. capturingGesture := capturingGest...]}
Array(SequenceableCollection)>>do:
WorldState>>handsDo:
WorldState>>doOneCycleNowFor:
WorldState>>doOneCycleFor:
PasteUpMorph>>doOneCycle
[] in Project class>>spawnNewProcess {[[World doOneCycle. Processor
yield. false] whileFalse. nil]}
[] in BlockContext>>newProcess {[self value. Processor terminateActive]}
More information about the Seaside
mailing list