[Cuis] ColorEditor updated

Dan Norton dnorton at mindspring.com
Wed Nov 4 17:46:20 CST 2015


Ran across this comment for ActiveModel and thought it was interesting, historically.

Part of update 5005u16-Events.cs:

"Change Set:		Events
Date:			11 February 2002
Author:			Rob Withers et al.

Published to 3.3a as 4756Events.cs

The NuBlue events code. Finally..."

The new event model, originally from VisualSmalltalk.
This includes #when:send:to: and friends, in Object (generic implementation) and 
ActiveModel (optimized implementation).
It renders the old change/update mechanism in Object and Model as obsolete, although still 
used.

 - Dan

On 2 Nov 2015 at 15:27, KenD wrote:

> On Mon, 02 Nov 2015 15:58:26 -0500
> "Dan Norton" <dnorton at mindspring.com> wrote:
> 
> >.. I was casting about for some name besides " #when:send:to:
> mechanism" for 
> > use in a brief essay on PluggableListMorph Principles of Operation
> when I came across 
> > Signals. I already wrote a paragraph on Dependency Mechanism.
> 
> I would talk about #when:send:to: as implementing the Observer
> Pattern.
> 
> > So, the simple principle here is to just use #when:send:to: and
> forget about or maybe 
> > deprecate #changed: and #update:? 
> 
> Yes.  Let us work to eliminate #changed: !
> 
> > However, I see a problem common to dependency and #when:send:to:
> which is the 
> > identification and explanation of the various symbols which are
> communicated as the 
> > parameters for send: or changed: . When you're trying to design a
> model or view similar to 
> > something already in existence, the tools are not much help with
> that.
> > 
> > I'm thinking maybe: document in comments? <rant>Nah. We don't do
> comments.</rant>
> 
> We should certainly add clarifying comments!
> 
> Your Comment Browser is a big help here.  Once people start using it
> more, comments will appear.
> 
> I suggest sending Juan a code update with an added "Open Comment
> Browser" Help menu item which autoloads the same way as
> TerseGuide.
> 
> 
> However, class comments are not usually where design patterns show
> up.  8^|
> 
> In the case of #when:send:to: I suggest a slightly larger discussion
> around building paned windows which update dependent panes.
> 
> What constitutes good style?  What code patterns help?
> 
> Think "Useful Code Patterns" to augment "Useful Expressions".
> 
> You can do your own example, but looking at the ColorEditor:
> 
> ColorEditor>>buildMorphicWindow
> 	"Create a useful ColorEditor window"
> 	
> 	self layoutMorph beRow; " A row of columns"
> 		 separation: 6;
> 		 addMorph: self buildColorPaneColumn;
> 		 addMorph: self buildSliderColumn;
> 		 addMorph: self buildRadioButtonColumn;
> 		 color: self backgroundColor.
> 		
> 	self model when: #colorChanged send: #refreshColor to: self.
> 	
> 	^ self
> 
> So trying for good style (hey, I need to improve here too!) one
> uses: 
> 
> [Class]>buildMorphicWindow
>     [Add (construct each pane).. to layout]
>     [Add self or panes as observers]
>   ^ self
> 
> Suggest
>   Smalltalk browseAllImplementorsOf: #buildMorphicWindow
> to see specific usage examples.
> 
> Of course, we will suffer some embarrassment as our real code is
> less than ideal. 8^(
> 
> But this is a great motivator to making our code better!  ;^)
> 
> 
> $0.02
> -KenD






More information about the Cuis mailing list