Hi Tim.

пн, 18 февр. 2019 г. в 14:48, Tim Mackinnon <tim@testit.works>:

> Hi Dennis - I’ve been reading the book you mentioned and looking through
> the code as well as your examples and I feel a bit more comfortable with
> what’s going on - however I am stumped about how you do an OR context (vs.
> an AND context).
>
> I would like my menu item to appear for either a selected RPackage OR a
> ClyTaggedClassGroup - I thought I had it with:
>
> RPackage asCalypsoItemContext, ClyTaggedClassGroup  asCalypsoItemContext
> (to get a composite context) but then I realised that the composite is an
> AND.
>
> Is there some way to create an OR context, or do I simply have to create
> multiple commands?
>

You simply need two annotations. One for context of RPackage and another
for context of tag.


>
> Tim
>
>
> On 12 Feb 2019, at 19:32, Denis Kudriashov <dionisi...@gmail.com> wrote:
>
> Hi Tim
>
> вт, 12 февр. 2019 г. в 13:42, Tim Mackinnon <tim@testit.works>:
>
>> Is there any documentation on Calypso   application contexts? I am trying
>> to add a menu item to a package tag (the bit underneath a package - which I
>> often call a sub-package).
>>
>
> Only class comments are available for Calypso. Also there are a Commander
> booklet
> <https://github.com/SquareBracketAssociates/Booklet-Infrastructure>which
> describes contexts and ClassAnnotation github readme
> <https://github.com/pharo-ide/ClassAnnotation> (together with class
> comments).
>
>
>>
>> I’ve specified:
>>
>> ^CmdContextMenuActivation
>>                 byItemOf: ClyQueryMenuGroup for: RPackage
>> asCalypsoItemContext
>>
>>
> The #for: argument of command activations is a context where command
> should be available. Context describes condition where given command (its
> activation strategy) should be visible for users.
> In your example "RPackage asCalypsoItemContext" is an instance of
> ClyBrowserItemContext which matches any selected package in the browser
> (when a kind of RPackage is selected).
> And that's why you do not see it on selected tag because the tag is not a
> package.
>
> But that puts my menu on the package and not the tag
>
> - and if I use the inspect extra menu in calypso, I get what looks to be
>> something that could help me determine what I want but I’m struggling to
>> understand what ClyTaggedClassGroup does, and what a context is all about.
>>
>
> Inspect command opens inspector of actually selected object which is an
> instance of ClyTaggedClassGroup in that case (try inspect selected method
> and you will get a CompiledMethod).
> Children of package in browser are instances of ClyClassGroup and
> subclasses. So they are not raw tags. If you need a command for a tag you
> should add a command for ClyTaggedClassGroup items:
>
> ^CmdContextMenuActivation
>                 byItemOf: ClyQueryMenuGroup for: ClyTaggedClassGroup
> asCalypsoItemContext
>
> Look for example at SycPromotePackageFromTagCommand
> class>>#fullBrowserMenuActivation which is defined this way.
>
> There are other kind of contexts which can be used in command annotations.
> For example if you want a command for selected method only in full browser
> then you should use ClyMethodContextOfFullBrowser:
>
> ^CmdContextMenuActivation byItemOf: ClyQueryMenuGroup for:
> ClyMethodContextOfFullBrowser
>
>
> it can be confusing that simple class is used in this case. But underhood
> it is converted to the instance of context where command should be
> available.
>
>
>>
>> Has anyone else played around with this at all?
>>
>> Ideally I want to have a menu appear on all the tags underneath a
>> particular package - and possibly including that package (or maybe not - I
>> haven’t decided as I want to try it in the wild).
>>
>> While I’m at it - I have quite understood how to create submenu’s either
>> - as I’d like to have several commands all as sub items of a menu item
>> “Exercism”.
>>
>
> Look at commander booklet. It includes example.
>
>
>>
>> Tim
>>
>>
>>
>>
>

Reply via email to