[Seaside] What's the difference and why??

Rick Flower rickf at ca-flower.com
Mon Feb 27 21:51:51 UTC 2006


Brian Brown wrote:
> Hi Rick - let's step back for a sec and talk about a different 
> structure....
Yea.. I was hoping someone might give me an idea of a better way to 
proceed!  Thanks!
> What *I* do, and others may have different patterns for their seaside 
> apps, is to create a main page component, and #call: (this is 
> Smalltalk notation for denoting a message send, or a method call in 
> C++ parlance) the components that I want to show up on the page. So, 
> as a simple example, you might have an initialize method:
>
> initialize
>     mainPage := MainPage new.
>     aboutPage := AboutPage new.
>     enrollPage := EnrollPage new.
>     contactPage := ContactPage new.
>     menuArea := MenuArea on: self.
>
> mainPage, aboutPage etc. are instance variables on your main App class 
> - say MyWebApp, where the initialize is located.
That makes sense and I was thinking about doing something like that so I 
wouldn't need to instantiate new instances of each
class on the fly..
> Then, in MyWebApp>>renderContentOn:
>
> renderContentOn: html
>     html divClass: 'sidebar' with: [html render: menuArea].
>     html divClass: 'contentarea' with: [html render: mainPage].
Excellent!
> Then in MenuArea class, you would have a class side method like:
>
> on: aComponent
>     ^ (self new) parent: aComponent
Ahh.. When might I ask does this get invoked?  Is this part of object 
instantiation when the above
"html render: menuArea" gets rendered?

> renderContentOn: html
>     html unorderedList: [
>            html listItem: [html anchorWithAction: [self parent 
> clearAllDelegates] text: 'Home'.].
>            html listItem: [html anchorWithAction: [self parent 
> mainPage call: self parent aboutPage] text: 'About'.].
>           html listItem: [html anchorWithAction: [self mainPage call: 
> self parent call enrollPage] text: 'Enroll'.].
>            html listItem: [html anchorWithAction: [self mainPage call: 
> self parent call contactPage] text: 'Contact Us'.].
>    ].
Do you mind if I ask what "clearAllDelegates" does?  I found that it is 
part of Seaside, but didn't see anything that
really explains what its for..
> This means that you have to have accessor method for the instance 
> variables that get initialized on the MyWebApp class so that you can 
> call "self parent enrollPage" from the MenuArea component. You could 
> also create convenience methods on your menu page, like: 
Thanks again.. I'll try this out.. I guess I've never gotten into 
writing web pages in true OO before and am having a hard time
of it..

-- Rick




More information about the Seaside mailing list