[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