> Was is really necessary to introduce pragmas here?
>
> In short: Commander needs pragma to query methods for command lookup. What alternative you could suggest?
I would imagine that your activatorClass can lookup the command simply as:
PackageCommand allSubclasses select: [ :c | c isEnabledFor: ��� ]
Would this not work?
I am personally not keen of using pragma. The worth is when you have no idea what a pragma does and looking for implementors or sender does not help.
Here is an example:
-=-=-=-=-=-=-=-=-=-=-=-=
��RadioButtonModel>>canDeselectByClick
�� �� �� �� <api: #inspect>
�� �� �� �� "Return true clicking on a selected radio button deselects it"
�� �� �� �� ^ canDeselectByClick value
-=-=-=-=-=-=-=-=-=-=-=-=
No idea what is the effect of the #api: pragma. There is no implementor of it. I could also the example of the Fame metamodel.
Anyway, the fact that I am kind of complaining should not prevent you from moving ahead. I would be happy having Calypso in the image, even if pragmas.
Go go go!
Cheers,
Alexandre
>
> In details:
>
> Commander caches all activators for each command class. It searches all methods which supply them using pragma and store all retrieved instances in class variable.
>
> To lookup required commands users enumerate cached activators declared for given context:
> activatorClass allDeclaredFor: aToolContext do: blockWithActivator
> This process is fast and not produces any garbage.
>
> Also activation methods are supposed to be packaged together with application which provide context for them. They can be in different package than commands.
> Commands are reusable and can be extended by multiple applications with different set of activation methods.
> For example in Calypso I will extract separate SystemCommands package which can be reused by other tools like inspector and debugger. And Calypso will "attach" these commands by own set of extension methods.
--
_,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:
Alexandre Bergel�� http://www.bergel.eu
^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;.