Hi Keary -

Thanks!! I'll take at the popup button cell.

-- Jim

On May 24, 2010, at 1:26 PM, Keary Suska wrote:

> On May 23, 2010, at 3:31 PM, Velocityboy wrote:
> 
>> I'm working on an app that has the concept of allowing the user to create 
>> templates of things which are then instanced into a document. Central to 
>> this is the idea that the user can create a template, then select it as part 
>> of another template or an instance. The relationship between template types 
>> is fixed. (For example, suppose one template is a tire and another is a car; 
>> the car has a link to a tire template; the user can select the 17"  tire 
>> template for the car they are working on.) 
>> 
>> I have an NSTableView with NSComboBoxCell's which contain lists of the other 
>> appropriate templates the user has created, which can be linked to the 
>> current template. The problem I'm having is that, if I put the templates the 
>> user can choose from into an array controller and source the combo box from 
>> that, the control wants the template to have implemented NSCopying, and then 
>> makes copies of it to render. A copy of the template is what ends up getting 
>> put back into the base template model object's pointer. So base template 
>> ends up referring to the other template by value, not by reference. This is 
>> a problem for me, as the expectation being set is that editing the template 
>> also affects the instances derived from it (to carry the car analogy 
>> forward, if the user uses the 17" tire template on three cars, then changes 
>> the tread pattern on the tire, that should affect those three cars with no 
>> further action.)
>> 
>> I've come up with two possible solutions, neither of which I like. One is to 
>> use the template's name as a key; that's ugly, the app currently doesn't 
>> have the restriction that template names have to be unique (though that's 
>> not an entirely unreasonable limitation). The other is to wrap the model 
>> class in a proxy that DOES implement NSCopying, but just contains a single 
>> pointer to the template instance. That's ugly since then I have to code and 
>> maintain another layer of indirection between the controller and the model. 
>> 
>> Is there a standard pattern for dealing with this situation?
> 
> First off, it is important to remember that a combobox is basically an 
> NSTextField with a menu option. It is designed to edit a single string value. 
> On top of that, it isn't really meant for deterministic data entry. It sounds 
> like you really need a popup button cell instead.
> 
> Secondly, it sounds like something is wired wrong. The NSComboBox shouldn't 
> be trying to copy your template object, as it isn't relevant to the 
> combobox--per the first paragraph above it is expecting a string.
> 
> HTH,
> 
> Keary Suska
> Esoteritech, Inc.
> "Demystifying technology for your home or business"
> 
> 

_______________________________________________

Cocoa-dev mailing list ([email protected])

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