2010-06-09 4 views
2

Hiho,Java swt treeview popup menu

В настоящее время у меня есть всплывающее меню, которое появляется, когда я нажимаю элемент древовидной структуры. Но я хочу показать разные всплывающие окна для разных записей в виде дерева. Я не получаю идеи, как сделать это ...

Вот мой код для создания меню:

MenuManager menuMgr = new MenuManager("#PopupMenu"); 
menuMgr.setRemoveAllWhenShown(true); 
menuMgr.addMenuListener(new IMenuListener() { 
    @Override 
    public void menuAboutToShow(IMenuManager manager) { 
     Action action = new Action() { 
     public void run() { 
       // So something 
     } 
    }; 
    action.setText("Set as working file"); 
    manager.add(action); 
} 

}); 

Menu menu = menuMgr.createContextMenu(getTree()); 
getTree().setMenu(menu); 

ответ

0

Две идеи. Для обоих вам необходимо прослушать выбор в TreeView, потому что это единственный способ определить, какое меню (или специальный контент) вы хотите показать.

Затем вы можете установить правильное меню в дерево сразу после того, как знаете, какой из них использовать или вносить необходимые элементы в существующее меню (так оно выполняется в среде eclipse).

+0

Последняя звучит хорошо для меня, я буду пробовать. – InsertNickHere

1

Вы должны импользовать в MouseListener на дереве:

final Tree tree = new Tree(parent, ...); 
tree.addMouseListener(new MouseAdapter() { 
    @override 
    public void mouseDown(MouseEvent me) { 
     if(tree.getSelection() instanceof MySpecificTreeNode) { 
      // create menu... 
     } 
    } 
}); 
+0

Я думаю, что ваш ответ тоже будет работать, но я предпочитаю другой. Извините. – InsertNickHere

+0

Если код является частью приложения RCP, необходимо зарегистрировать TreeView как SelectionProvider и прослушать более глобально –