[Seaside] Brushes and state

James Foster Smalltalk at JGFoster.net
Tue Jun 23 19:27:43 UTC 2009


Any thoughts on the callback problem? Would that be fixed in 2.9?

James

On Jun 23, 2009, at 11:59 AM, Julian Fitzell wrote:

> Fair enough. I don't think there are any hard and fast rules. If  
> you, as the author, see your class more like a "special kind of div  
> canvas tag" than as something that has it's own protocol and happens  
> to be currently implemented by writing a div using a canvas, then so  
> be it.
>
> From my point of view, composition feels better than subclassing  
> here: if you can easily generate the HTML you need with the existing  
> tags, you shouldn't need new ones. I don't see your class creating  
> its own Canvas as additional complexity, really (I realize it takes  
> a little additional code in 2.8) - it's no different than what every  
> component does. The RenderContext should carry on throughout (that's  
> why it's there) but the API you want to use to render should be  
> entirely up to you.
>
> Anyway, thanks for humouring me in this little experiment. Hopefully  
> others have found it informative.
>
> Julian
>
> On Tue, Jun 23, 2009 at 9:22 AM, James Foster  
> <Smalltalk at jgfoster.net> wrote:
> Julian,
>
> The #children problem is reported by Seaside in the usual manner  
> with no extra explanation (see attached).
>
> The idea of passing a block to the was one that I thought of as  
> well. I seem to recall that the X Window System had something  
> analogous for initializing widgets (I can't lay my hands on any  
> documentation, however). On the other hand, it seems to be adding  
> complexity in that some things are set one way and some things  
> another way. I'd almost prefer everything being done in the block:
>
> MyComponent>>#renderContentOn: html
> 	html render: (GoogleMap configure: [:map |
> 		map
> 			class: 'foo';
> 			style: 'bar';
> 			setCenter...;
> 			yourself.
> 	].
>
> Of course, this has the disadvantage of forcing you to use the more  
> complex style for everything.
>
> Without harping on the point too much, I'm still not feeling as  
> uncomfortable as it seems I should with the Brush approach. One of  
> the things mentioned as a characteristic of a Brush is that it can  
> have things embedded in it (using #'with:'). There are exceptions  
> already, including <br /> and <hr />, so this isn't really a firm  
> rule. Also, a GoogleMap makes sense only on an WAHtmlCanvas. While  
> it can create its own Canvas, that seems a bit of an additional  
> complexity. I guess I'm still seeing HorizontalRule, Button,  
> TextInput, ListBox, and GoogleMap as being on a continuum of simple  
> to complex but otherwise not substantively different in the way they  
> are created and used. For some, embedding other tags makes sense;  
> for others it does not. Most can display user-defined data and  
> return new values. Most have events that can trigger asynchronous  
> callbacks. All are represented by HTML Tags. Some share tags but are  
> distinguished only by the class (input button). With the GoogleMap,  
> I could even imagine embedding other content that would show if  
> JavaScript were disabled in the browser.
>
> In any case, it seems like several options are available. Maybe if  
> new Painters were more familiar, that approach wouldn't seem so  
> different. (Okay, having typed that last sentence I see that it  
> isn't very profound!)
>
> James
> _______________________________________________
> seaside mailing list
> seaside at lists.squeakfoundation.org
> http://lists.squeakfoundation.org/cgi-bin/mailman/listinfo/seaside

-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.squeakfoundation.org/pipermail/seaside/attachments/20090623/8d021ce4/attachment.htm


More information about the seaside mailing list