For me, a context menu is the same thing. 
And, no, I am talking about the context menu (right-click).

1. I want to define my own context menu. <- works
2. I want to extend (not redefine) my context menu in some special contexts. <- 
doesn't work

I tried to do that with the <insert /> element. But now I understand that the 
<insert /> element only works with the "XML" menu and not with the context menu.
Is there a way to do extend my own context menu? 

I'm sorry for the confusion but I can't describe that better.


-----Urspr?ngliche Nachricht-----
Von: Hussein Shafie [mailto:hussein at xmlmind.com] 
Gesendet: Dienstag, 30. September 2008 10:32
An: Marc Haemmerle
Cc: xmleditor-support at xmlmind.com
Betreff: Re: [XXE] Extend context menu

I'm afraid I absolutely don't understand what you want to do. What do 
you call a context?

For me, a  context menu is a *right-click* menu (that is, the Edit popup 
  menu, but customized depending on what is selected). Hence the code 
I've sent you.

Are you talking about the "XML" menu which becomes the "DocBook" menu 
when a DocBook document is opened, the XHTML menu when an "XHTML" menu 
is opened, etc?



Marc Haemmerle wrote:
> Thank you for the reply.
> 
> I use 10+ different context menus for different contexts.
> Most of the menu items are the same in all the context menus but a few are 
> different.
> 
> I try to reduce the redundancy and number of context menus. For this reason I 
> want to extend the context menu so I don't have to define the same menu items 
> again and again. I used the <insert/> element to include the 
> context-menu-items from one context menu into another context menu. That's 
> described in this section:
> http://www.xmlmind.com/xmleditor/_distrib/doc/configure/menu.html
> So, depending on the context, the context menu should get extended.
> 
> Example:
> Standard context menu:
> Insert
> 
> Context menu for element author:
> Insert
> ------
> Insert Before...
> Insert After...
> 
> But it doesn't work. What am I doing wrong?
> 
> Code I tried:
> <command name="contextualMenuChooser">
>   <macro trace="true">
>     <sequence>
>       <command name="contextualMenu1" />
>       <sequence>
>         <match context="$implicitElement"
>                pattern="author//*" />
>         <command name="contextualMenu2" />
>       </sequence>
> 
>       <command name="editMenu" />
>     </sequence>
>   </macro>
> </command>
> 
> <command name="contextualMenu1">
>   <menu>
>     <item label="Insert..."
>           command="insert" parameter="into" />
>   </menu>
> </command>
> 
> <command name="contextualMenu2">
>   <menu>
>     <insert />
>     <item label="Insert Before..."
>           command="insert" parameter="before[implicitElement]" />
>     <item label="Insert After..."
>           command="insert" parameter="after[implicitElement]" />
>   </menu>
> </command>
> 
> <binding>
>   <mousePressed button="3"/>
>   <command name="contextualMenuChooser" />
> </binding>
> 
> 
> 
> Do you need any more information to understand my problem?
> 
> 
> 
> 
> 
> 
> -----Urspr?ngliche Nachricht-----
> Von: Hussein Shafie [mailto:hussein at xmlmind.com] 
> Gesendet: Montag, 29. September 2008 21:04
> An: Marc Haemmerle
> Cc: xmleditor-support at xmlmind.com
> Betreff: Re: [XXE] Extend context menu
> 
> --> There are *many* reasons which could cause the macro you wrote not
> to function. Possible reasons:
> * I don't understand your nesting of sequence and choice elements.
> * May be you forgot to specify namespaces (e.g. ancestor::myns:Attribut)
> * I don't understand the <insert/> element
> * I don't see the binding which binds contextualMenuChooser to the right
> click of the mouse.
> * etc.
> 
> I would recommend to re-read this section:
> http://www.xmlmind.com/xmleditor/_distrib/doc/commands/menu.html
> 
> 
> 
> --> Just to prove that contextual menus work fine, I've written this
> code which, in my opinion, is very close to what you want to do:
> 
> ---
> <command name="contextualMenuChooser">
>   <macro trace="true">
>     <choice>
>       <sequence>
>         <match context="$implicitElement"
>                pattern="bookinfo//author//*" />
>         <command name="contextualMenu2" />
>       </sequence>
> 
>       <sequence>
>         <match context="$implicitElement"
>                pattern="bookinfo//*" />
>         <command name="contextualMenu1" />
>       </sequence>
> 
>       <command name="editMenu" />
>     </choice>
>   </macro>
> </command>
> 
> <command name="contextualMenu1">
>   <menu>
>     <item label="Insert..."
>           command="insert" parameter="into" />
>   </menu>
> </command>
> 
> <command name="contextualMenu2">
>   <menu>
>     <item label="Insert Before..."
>           command="insert" parameter="before[implicitElement]" />
>     <item label="Insert After..."
>           command="insert" parameter="after[implicitElement]" />
>   </menu>
> </command>
> 
> <binding>
>   <mousePressed button="3"/>
>   <command name="contextualMenuChooser" />
> </binding>
> ---
> 
> In order to test the above code:
> [1] Copy the above code in your customize.xxe file (Install add-on
> called "A sample customize.xxe" if you don't have one)
> [2] Restart XXE and use File|New, choose a DocBook Book template (not
> DocBook 5, plain DocBook 4)
> [3] Click in the empty title of the book, then right-click: you'll see
> contextualMenu1
> [4] Click in the empty firstname of the author of the book, then
> right-click: you'll see contextualMenu2
> [5] Click in the empty para, then right-click: you'll see the standard
> editMenu
> 
> 
> 
> Marc Haemmerle wrote:
>> I'm using XML mind XML Editor 4.1 on Windows.
>>
>> I tried to extend my own context menu, depending on the chosen element.
>>
>> My code:
>>
>>  
>>
>>  
>>
>>             <command name="contextualMenuChooser">
>>
>>             <macro>
>>
>>                         <sequence>
>>
>>                                    <sequence>
>>
>>                                                <choice>
>>
>>                                                            <test
>> expression="$implicitElement[ancestor::Attribut]" />
>>
>>                                                </choice>
>>
>>                                                <command
>> name="contextualMenuAttribut" />
>>
>>                                    </sequence>
>>
>>                                    <sequence>
>>
>>                                                 <choice>
>>
>>                                                            <test
>> expression="$implicitElement[ancestor::Beschreibung and
>> ancestor::Attribut]" />
>>
>>                                                </choice>
>>
>>                                                <command
>> name="contextualMenuAttributBeschreibung" />
>>
>>                                    </sequence>
>>
>>                         </sequence>
>>
>>             </macro>
>>
>>             </command>
>>
>>            
>>
>> <command name="contextualMenuAttribut">
>>
>>  <menu label="contextualmenu">
>>
>>   <item label="Insert..." command="insert" parameter="into" />
>>
>> </menu>
>>
>> </command>
>>
>>  
>>
>> <command name="contextualMenuAttributBeschreibung">
>>
>> <menu label="contextualmenu">
>>
>>  <insert />
>>
>>   <item label="Insert Before..." command="insert"
>>
>>      parameter="before[implicitElement]" />
>>
>>   <item label="Insert After..." command="insert"
>>
>>     parameter="after[implicitElement]" />
>>
>> </menu>
>>
>> </command>
>>
>>  
>>
>> That's not working. Is there a solution for my problem? How can I do
>> what I want?
>>
> 
>  
> --
> XMLmind XML Editor Support List
> xmleditor-support at xmlmind.com
> http://www.xmlmind.com/mailman/listinfo/xmleditor-support
> 
> 



Reply via email to