2017-05-24 11:25 GMT+02:00 Sven Van Caekenberghe <sven@stfx.eu>:
Hi,
I am struggle a bit in find the right way to add a contextual menu to a Spec ListModel.
Consider:
ListModel new title: 'List Example'; items: Smalltalk allClasses; openWithSpec.
I would like to add a right-click contextual menu to the list, with for example a 'Browse' action. I can't find such a simple example. I know there is a #menu: option, I can see some usages in my image, but they seem to do different things. What would be the recommended approach ?
ListModel new title: 'List Example'; items: Smalltalk allClasses; "menu: [ ];" openWithSpec.
Thanks,
Sven
PS: Probably the reference to the #selectedItem of the ListModel for the action is hard to write in a one-liner, that is not a requirement.
It is a problem or at least confusing that the menu: method does not uses a MenuModel, but a Morphic menu. If you don't want to touch a Morphic class from within the ListModel, you can do it like it is done in some tools, just ignore the MenuMorph and instantiate a new MenuModel and call buildWithSpecAsPopup. Or add your menu items to the menu argument: l:=ListModel new. l title: 'List Example'; items: Smalltalk allClasses; menu: [:menu :shifted | (menu add: 'Browse' target: l selectedItem selector: #browse) isEnabled: l selectedItem notNil. "return the menu object" menu ]; openWithSpec.