I think this is too convoluted because, like Estaban says, you want to keep the theming orthogonal with widget definition.
Yes I do not like it either.
But, you gave me an idea:
If we implement in Morph the followings:
Morph>>themer ^ themer ifNil: [self themerFor: self theme]
what would be self theme I do not really like the idea to have all the morph talking to UITheme theme ^ UITheme current is not sexy to me
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?
I do not know. Now what is clear is that we need strategy as in your original design. I was thinking about that too. Stef