[Seaside] Tree of Seaside classes
Romain Robbes
rrobbes at info.unicaen.fr
Thu Sep 16 15:39:38 CEST 2004
Hi all,
I took the time to set up a visualworks image with moose, codecrawler
and seaside loaded as a moose model,
so that you (or anyone else ...) can use it to understand Seaside
better.
Just download and untar the following image :
http://users.info.unicaen.fr/~rrobbes/seaside/
Here you might find some doc on Codecrawler, or at least links to
publications.
http://scgwiki.iam.unibe.ch:8080/CodeCrawler/1
Note that you still have to register to download visualworks :
http://smalltalk.cincom.com/downloads/index.ssp?content=visualworks
Cheers,
Romain
On Sep 16, 2004, at 3:00 PM, Damien Cassou wrote:
> 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]}
> _______________________________________________
> Seaside mailing list
> Seaside at lists.squeakfoundation.org
> http://lists.squeakfoundation.org/listinfo/seaside
>
More information about the Seaside
mailing list