/// <summary> /// Метод вызывается для получения допустимых и подавляемых команд контекстного меню для выделенных /// элементов навигации одной категории и типа. /// Например, если в «Навигаторе» выделены элементы навигации нескольких разных категорий и типов, /// то данная команда будет вызываться для каждой из подгрупп этих элементов, сгруппированных по их /// категориям и типам. /// Это наиболее применяемый метод даного интерфейса. Позволяет перекрывать команды контекстного меню /// для элементов навигации определённых категорий, типов, задавая более высокий приоритет описаниям /// этих команд. /// </summary> /// <param name="items"> /// Коллекция выделенных элементов пространства навигации, для которых выполняется /// поиск допустимых команд контекстного меню. /// </param> /// <param name="viewServices"> /// Контейнер сервисов (контекст) для выделенных элементов пространства навигации. /// </param> public CommandsInfo GetMergedCommands(ISelectedItems items, IServiceProvider viewServices) { // ВНИМАНИЕ! Основное требование к данному методу – нельзя выполнять обращения к базе даных // для того, чтобы проверить, можно ли отображать команду меню или нет! // Список добавленных или перекрытых команд контекстного меню CommandsInfo commandsInfo = new CommandsInfo(); // Есть один выделенный элемент if (items != null && items.Count == 1) { // Пробуем получить описание выделенного объекта IDBTypedObjectID objID = items.GetItemData(0, typeof(IDBTypedObjectID)) as IDBTypedObjectID; // Выделен объект if (objID != null) { // Получаем идентификатор типа объектов "Рабочий стол" // Разрешать создавать его копию не будем Int32 desktopObjectTypeID = MetaDataHelper.GetObjectTypeID(SystemGUIDs.objtypeWorkspace); // Можем добавить команду "Создать\Копию объекта" if (objID.ObjectType != desktopObjectTypeID) { // Команда "Создать\Копию объекта" commandsInfo.Add("CreateCopyyyyyyy", new CommandInfo(TriggerPriority.ItemCategory, new ClickEventHandler(CommandProvider.CreateObjectCopyyy))); } } } // Вернём список return(commandsInfo); }