On 25-Jun-08, at 3:22 PM, I. Savant wrote:

I need a new type of NSButton/NSButtonCell that I am calling an
NSLatchButton.
Once it is pushed it stays pushed - pushing it again does not revert it back
to unpushed state.
(Of course there would be a method to set it to it's unlatched state but
pushing the button would not
invoke that action)

However I'm not sure how to approach this. Should I use categories,
extensions, or subclass or what?

  Why do you need a new button type? No matter how you want it to
look, the behavior should be dictated by the controller layer. When
its action is fired, simply force its state to be NSOnState.

Thanks for that idea - I hadn't thought of it. It's not as clean as I would like but
it would work.


If I were dealing with the source code I would add to the button types enums
and add a method or case to deal with that type.

  Yes, and I would snarf the freezlehopper until it is within one
tenth of a hoptzit of the specified framulator.  But that's also
unnecessary. ;-)
I guess your smile indicates humour.

Yes, of course you can subclass NSButton/Cell and add
a new type, then override all the drawing routines, etc. to handle
that case, but you *still* shouldn't force the button to take on the
responsibility of application-specific logic (see "MVC design
pattern").
I am familiar with the pattern having used Smalltalk.
If I did add a subclass there would be no need to ovveride everything.
Only specific set state methods.

It's your application's idea that a button can't be
"unpushed" once it's pushed; it's your application's responsibility to
enforce such a state once set.
True which is why I asked for suggestions.

But what suggestions do you have?
  Read the NSButton documentation *and* the target/action mechanism
documentation (both easily searchable in Apple's reference library).
You're making a mountain out of a mole hill.
Perhaps... But for future posts of mine please be so kind as to assume
that I've always read the available Apple documentation.
I lived by RTFM since 360 Assembler days!
In this case the references for NSButton/NSButtonCell plus Button Programming topics.

I appreciate your comments.
respect...

Peter

_______________________________________________

Cocoa-dev mailing list (Cocoa-dev@lists.apple.com)

Please do not post admin requests or moderator comments to the list.
Contact the moderators at cocoa-dev-admins(at)lists.apple.com

Help/Unsubscribe/Update your Subscription:
http://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com

This email sent to [EMAIL PROTECTED]

Reply via email to