[Seaside] Tree of Seaside classes
Romain Robbes
rrobbes at info.unicaen.fr
Thu Sep 16 14:54:08 CEST 2004
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.
>
>> The other possibility (which might need some more time) would be
>> to use Seaside's ports on visualworks,
>> and use Moose and CodeCrawler to have an in-depth analysis of the
>> code.
>> (see http://www.iam.unibe.ch/~scg/Research/CodeCrawler/ ) (if I had
>> some time, I might have a look at it myself ...)
> I do not have VisualWorls, but I can try to download it if it is
> freely downloadable.
>
it is freely downloadable, but you have to register to obtain a cd key
(just giving your mail adress).
I'll try to build an image with moose, codecrawler and seaside so that
you can try it if you want.
>
> P.S. I've CCed the developper of ClassDiagram
>
>
> Here is the bug report :
>
> 16 September 2004 2:23:13 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(843)
> 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]}
> _______________________________________________
> Seaside mailing list
> Seaside at lists.squeakfoundation.org
> http://lists.squeakfoundation.org/listinfo/seaside
>
More information about the Seaside
mailing list