Hey all:I would like to add a button to a group layer context menu in the table of contents. The button is from an add-in that also contains an extension. Should be straight-forward enough. The extension monitors the IActiveViewEvents_Event events and checks for a group layer being added by a specific name. When a layer is added, the IActiveViewEvents_ItemAddedEventHandler() is fired and calls a method that adds the button to the group layer context menus if the name is right. That mechanism is working. The snippet of code that is failing is below:
if (String.Compare(topLayer.Name, "Testing") == 0)
{
// Set a uid for the group layer context menu.
UID gUID = new UID();
gUID.Value = "esriArcMapUI.GroupLayerContextMenu"; // "{863A0D98-73DC-4331-8658-ED0E22247E36}"
// Get the command bar denoting that context menu.
ICommandBar groupLayerContextMenu = ArcMap.Application.Document.CommandBars.Find(gUID, false, false) as ICommandBar;
// If there is a group layer context menu.
if (groupLayerContextMenu != null)
{
// Change the UID to the add-in command.
gUID.Value = ThisAddIn.IDs.TestContextMenuButton;
ICommandItem cmd = groupLayerContextMenu.Find(gUID);
if (cmd == null)
{
cmd = groupLayerContextMenu.Add(uid, ref missing); // 'Command not available' error thrown here...
cmd.Refresh();
}
}
}
To me, it seems that the command is not found because ICommandBar.Add(uid) is trying to dig for it in the registry but because it resides in an add-in it has not been added to the registry. Is there another way to add a button, or any item for that matter, when it lives in an add-in? Or am I missing something simple?