question

Upvotes
Accepted
39.3k 76 11 27

How to hide Related, Trading and Send To entries in the right-click menu?

In a WPF app using Eikon .NET Integration API I'm trying to hide all entries in the built-in right-click menu. I used the following code to make sure I didn't miss anything in the enumeration. It successfully hides Print and Edit commands from the right-click menu. However I still see Related, Trading and Send To commands appear upon right-click in my app. These commands appear disabled (grayed out), but not hidden. I'd like to remove them altogether.

AppHost.Menu.OnDisplayContextMenu(builder =>
{
	foreach(BuiltInCommand cmd in System.Enum.GetValues(typeof(BuiltInCommand)))
	{
		builder.HideBuiltInMenuItem(cmd);
	}
});
eikoneikon-app-studioside-by-side-apiapp
icon clock
10 |1500

Up to 2 attachments (including images) can be used with a maximum of 512.0 KiB each and 1.0 MiB total.

Upvotes
Accepted
45.2k 103 43 60

The problem happens when the application uses both IMenuBuilder.HideBuiltInMenuItem() and ContextService.Subscribe(), as shown below.

        public MainControl(IAppHost appHost)
            : this()
        {
            AppHost = appHost;
            AppHost.Closing += AppHostOnClosing;

            //1. Add custom menu and hide 
            AppHost.Menu.OnDisplayContextMenu(builder =>
            {              
                var openAppMenuItem = new UserMenuItem("Test");
                openAppMenuItem.IsEnabled = true;
                builder.AppendCustomMenuItem(openAppMenuItem);            
                foreach (BuiltInCommand cmd in System.Enum.GetValues(typeof(BuiltInCommand)))
                {
                    builder.HideBuiltInMenuItem(cmd);
                }
            }
           );
            //2. Subscribe to context
            AppHost.ContextService.Subscribe(ctx =>
            {
            }
           );
           
        }

The Related, Trading and Send To commands appear upon right-click. These commands appear disabled, but not hidden.

However, after removing ContextService.Subscribe() part, the built-in menu items are completely hidden.

        public MainControl(IAppHost appHost)
            : this()
        {
            AppHost = appHost;
            AppHost.Closing += AppHostOnClosing;
            //1. Add custom menu and hide 
            AppHost.Menu.OnDisplayContextMenu(builder =>
            {              
                var openAppMenuItem = new UserMenuItem("Test");
                openAppMenuItem.IsEnabled = true;


                builder.AppendCustomMenuItem(openAppMenuItem);             
                foreach (BuiltInCommand cmd in System.Enum.GetValues(typeof(BuiltInCommand)))
                {
                    builder.HideBuiltInMenuItem(cmd);
                }
            }
           );           
        }

I will contact the Eikon team to verify this issue.


notwork.png (8.5 KiB)
work.png (7.2 KiB)
icon clock
10 |1500

Up to 2 attachments (including images) can be used with a maximum of 512.0 KiB each and 1.0 MiB total.

The Eikon team indicates that this is an expected behaviour.

If the application uses the context service, it means that it wants to be able to navigate from the app instance. So, these entries will be added by the desktop.

If it wants to hide these entries, it couldn’t navigate so it doesn’t need to subscribe.

Upvotes
219 1 3 7

As far as I remember, preventing an App to completely redefine Eikon right-click was a design choice (Product), to enforce look and feel consistency. Dev team and product should be involved here.

icon clock
10 |1500

Up to 2 attachments (including images) can be used with a maximum of 512.0 KiB each and 1.0 MiB total.

Upvotes
45.2k 103 43 60

Your code works fine in my environment. After hiding all built-in menu items, I can see only my custom menu after right click.

You may need to verify the version of Integration API and Eikon. I am using ThomsonReuters.Eikon.Integration.1.2.13.6440 and Eikon 4.0.37555.


menu.png (4.7 KiB)
icon clock
10 |1500

Up to 2 attachments (including images) can be used with a maximum of 512.0 KiB each and 1.0 MiB total.