Hi Stef,




On Mon, Jan 6, 2014 at 5:54 PM, St�phane Ducasse <stephane.ducasse@inria.fr> wrote:
Ok I read


UITheme would act as a theme factory.
and each widget delegate to the Themer associated to themselve and the current theme

So subclasse of UITheme can propose different themer for the same widget.

Exactly.
Now since the themer is a separate class (from the morph it means that you must have all the hooks to customise it).
So why not.
I was also thinking that a widget could be an �abstract� class whose subclasses implement the themes.

Then you would create a widget like that


SpolightItemMorph forThemer: UITheme blue
and it would create an instance of a subclas SpotligherBluerItemMorph.

Did you try this design?

I think this is too convoluted because, like Estaban says, you want to keep the theming orthogonal with widget definition.

But, you gave me an idea:

If we implement in Morph the followings:

Morph>>themer
� � ^ themer ifNil: [self themerFor: self theme]

Morph>>themerFor: aTheme
� � ^ self subclassResponsibility

And then in a morph we would have something like this:

SpotlightItemMorph>>themerFor: aTheme
� � ^ aTheme�spotterThemer

SpotlightItemMorph>>onSelected
self themer configureSelectedItemMorph: self

Then we could simply do pretty much what you want:

SpotlightItemMorph new themer: MySpotterThemer new.

I like this idea. What do you think?

Doru


Stef



--
www.tudorgirba.com

"Every thing has its own flow"