This is kind of a hackish way to do it, but it works as long as there's only one button in the matrix you want this behavior with. You first bind the NSMatrix's selectedTag binding to whatever controller/model object and key you want. If you've been using selectedIndex instead, this means you may need to shuffle around some of your constants and tags of the buttons in the matrix, since it will be the tag of the selected button that gets assigned as the value instead of the index.
Assign the tag value of 0 to the button you want the enabled state of the checkbox to depend on. Then, bind the enabled binding of the checkbox to the same object + key that the matrix's selection is bound to. Once that's done, open the NSValueTransformer pop-up and select NSIsNil. This will mean that the checkbox will be enabled only when the matrix's selected tag is 0, i.e. the checkbox will be enabled only when the button with the 0 tag is selected.
So in your example:
- the tag value for Salad is 0
- selectedTag of the matrix is bound to x.y
- enabled of the Croutons checkbox is bound to x.y with an NSIsNil transformer
This is hackish primarily because NSIsNil is really expecting to get an object as input, but the integer value of a 0 tag is the same as the object value of nil, so it works. To really do this correctly, you would bind the enabled state of the croutons checkbox to another BOOL key in your controller/model that would change its value whenever the key that the matrix is bound to gets changed. Check out +[NSObject setKeys:triggerChangeNotificationsForDependentKey:] to see how to set this dependency up.