On Wed, Apr 12, 2017 at 6:28 AM, Alexandre Bergel <alexandre.ber...@me.com> wrote:
> > > 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. The other way to look at it is we need to improve implementor/sender lookups around pragmas (speaking very generically. I don't know what the gaps are.) cheers -ben > 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 > ^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;. > > > > >