2013-09-21 3 views
0

У меня есть действие. В fillContextMenu я пытаюсь выполнить итерацию всех пунктов меню, доступных с помощью метода IMenuManager.getItems(). Я не могу получить полный список меню.Eclipse Манипулирование проводником проекта Контекстное меню Динамически

Например, контекстное меню импорта и экспорта недоступно через getItems().

Скрыть вклады, добавленные через расширение popupMenus.

Есть ли способ перебрать все меню, связанные с данным менеджером меню.

Спасибо.

Phani.

ответ

0

Ваша проблема заключается в том, что при вызове getItems() на IMenuManager он будет возвращать только дочерние элементы, а не дочерние элементы других IMenuManagers, которые добавляются в ваш корень IMenuManager. Если вы хотите получить все элементы, а дочерние элементы IMenuManager - это функция, которая сделает это. Хотя, если вы делаете это, чтобы добавить IContributionItems, вы можете просто использовать .addItem (item itemPath), который будет внутренне ходить по графику и добавлять свой вклад в нужное место. Если вы хотите удалить существующий взнос, вам нужно сначала получить все элементы вклада в дереве меню, а затем вызвать remove() в IMenuManager с экземпляром ContributionItem, который вы хотите удалить. Попробуйте эту функцию, и вы увидите элементы импорта и экспорта, а также другие элементы подменю в вашем корневом менеджере. Надеюсь, что это поможет, если вы все еще застряли, ответьте. - Duncan Krebs

private IContributionItem[] getMenuTreeItems(IMenuManager rootManager) { 
     List<IContributionItem> items = new ArrayList<IContributionItem>(); 
     addMenuManagerItems(rootManager, items); 
     return items.toArray(new IContributionItem[items.size()]); 

    } 

    private void addMenuManagerItems(IMenuManager manager, List<IContributionItem> items) { 
     for (IContributionItem item : manager.getItems()) { 
      if (item instanceof IMenuManager) { 
       IMenuManager childManager = (IMenuManager) item; 
       addMenuManagerItems(childManager, items); 
      } else { 
       items.add(item); 
      } 
     } 
    } 
+0

Duncan Krebs, я делаю то же, что и вы предлагали. Несмотря на наличие подменю, которое я вижу во всплывающем окне, они не отображаются через код. Я получаю некоторые элементы, разделители и группы вклада только через код и без менеджеров меню. – Sajja

Смежные вопросы