I see. But why not to let the class subscribe to what it needs? Maybe something like:
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= Command subclass: #ClyShowClassRefCommand ClyShowClassRefCommand class>>registerFor: aCommandActivator aCommandActivator add: self for: ClyButtonToolbarGroup. aCommandActivator add: self for: ClyBrowserContext. -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= This is just a suggestion. Alexandre -- _,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;: Alexandre Bergel http://www.bergel.eu ^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;. > On Apr 12, 2017, at 6:54 AM, Denis Kudriashov <dionisi...@gmail.com> wrote: > > > 2017-04-12 0:28 GMT+02:00 Alexandre Bergel <alexandre.ber...@me.com > <mailto:alexandre.ber...@me.com>>: > I would imagine that your activatorClass can lookup the command simply as: > > PackageCommand allSubclasses select: [ :c | c isEnabledFor: … ] > > This approach restricts command implementation and queries to single > hierarchy which is not scale. > For example in Calypso there is ShowClassRefsCommand which is shown as > toolbar button in both system and method browsers. But this command is in > ClassCommand hierarchy because it operates on collection of classes. > We can lookup both MethodCommands and ClassCommands in method browser. But > then we will have a lot of commands which we do not need in method browser. > > Another example is "browse" command which is accessed by cmd+b and from > context menu of any browser pane. > > Here is how they all connected to Calypso browsers: > > ClyShowClassRefCommand class>>systemBrowserToolbarActivator > <commandActivator> > ^ClyToolbarCommandActivator byItemOf: ClyButtonToolbarGroup for: > ClyClassSystemBrowserContext > > ClyShowClassRefCommand class>methodBrowserToolbarActivator > <commandActivator> > ^ClyToolbarCommandActivator byItemOf: ClyButtonToolbarGroup for: > ClyMethodBrowserContext > > ClySpawnSystemBrowserCommand class>>browserShortcutActivator > <commandActivator> > ^CmdShortcutCommandActivator by: $b meta for: ClyBrowserContext > > ClySpawnSystemBrowserCommand class>>browserMenuActivator > <commandActivator> > ^CmdContextMenuCommandActivator byRootGroupItemFor: ClyBrowserContext > > (ClyBrowserContext is superclass of any Calypso browser contexts)