Как мы можем динамически генерировать контекст подменю для средства просмотра дерева

Я заполнил контекстное меню для средства просмотра дерева, но теперь мне нужно динамически заполнить контекст подменю для средства просмотра дерева, подконтекстное меню должно содержать все содержимое списка. Например, список содержит [a,b,c,d,e ] так что теперь в главном меню есть меню А, а подменю должно содержать все элементы в списке, это можно сделать

структура меню должна быть следующей A->a b c d e

Теперь код контекстного меню выглядит следующим образом

protected void fillContextMenu(final IMenuManager contextMenu) {
        //String nnn = null;
        //contextMenu.add(new GroupMarker(IWorkbenchActionConstants.MB_ADDITIONS));
        //contextMenu.add(new GroupMarker(nnn));

         IMenuManager submenu = new MenuManager("Add Test Case");

            submenu.add(new Action("Sub menu item 1") {
                 @Override
                 public void run() {
                     // implement this
                 }
             });

           contextMenu.add(submenu);



        contextMenu.add(new Action("Add Test step") {
            @Override
            public void run() {
                // don't do anything here
            }
        });
        contextMenu.add(new Action("Add New Test Case") {
            @Override
            public void run() {
                // implement this
            }


        });

}

Итак, как теперь мы можем создать динамическое подконтекстное меню, содержащееся в списке.


person vinod raj    schedule 08.12.2014    source источник


Ответы (1)


Сначала убедитесь, что

IMenuManager.setRemoveAllWhenShown(true);

вызывается при создании контекстного меню. Это означает, что fillContextMenu будет вызываться каждый раз при отображении меню.

Затем все, что вам нужно сделать, это прокрутить список, создав действия для каждого элемента в списке в fillContextMenu:

List<String> itemList = .... your list

for (String item : itemList)
 {
   submenu.add(new Action(item) {
         @Override
         public void run() {
               // implement this
         }
   });
 }
person greg-449    schedule 08.12.2014
comment
когда я нажимаю любую кнопку в подменю, как я могу получить название подменю, которое нажато - person vinod raj; 16.12.2014
comment
Пожалуйста, не задавайте новые вопросы в комментариях - person greg-449; 16.12.2014