因为TreeView要增加一个弹出菜单来
Java代码
1 private void createContextMenu(Composite parent) {
2 MenuManager mgr = new MenuManager();
3 mgr.setRemoveAllWhenShown(true);
4 final EntityTreeView tree = this;
5 mgr.addMenuListener(new IMenuListener() {
6 public void menuAboutToShow(IMenuManager manager) {
7 // TODO Auto-generated method stub
8 ISelection selection = tree.getSelection();
9 if(selection instanceof IStructuredSelection){
10 IStructuredSelection incoming = (IStructuredSelection)selection;
11 if(incoming.size() >0 && incoming.getFirstElement() instanceof AbstractEntity){
12 selectedEntity = (AbstractEntity)incoming.getFirstElement();
13 fillContextMenu(manager,selectedEntity);
14 }
15 }
16
17 }
18
19 });
20
21 org.eclipse.swt.widgets.Menu menu = mgr.createContextMenu(this.getControl());
22 this.getControl().setMenu(menu);
23 getViewSite().registerContextMenu(mgr, this);
24 }
25
26 private void fillContextMenu(IMenuManager manager,AbstractEntity selectedEntity) {
27 org.eclipse.jface.action.IContributionItem items[] = getViewSite().getActionBars().getMenuManager().getItems();
28 for (IContributionItem item : items) {
29 if(item instanceof PluginActionContributionItem){
30 PluginActionContributionItem pitem = (PluginActionContributionItem)item;
31 if(selectedEntity instanceof CategoryModel){
32 if ("com.test.actions.RefreshViewActionDelegate".equals(pitem.getAction().getId())){
33 manager.add(item);
34 continue;
35 }
36 }
37
38 }
39
40
41 }
42 }
plugin.xml
<extension
point="org.eclipse.ui.viewActions">
<viewContribution
id="com.test.EntityContribution"
targetID="com.test.View">
<action
class="com.etest.actions.AddActionDelegate"
icon="icons/action.gif"
id="com.etest.actions.AddActionDelegate"
label="Add"
menubarPath="category"
style="push">
</action>
targetID指定那个View会获取到这些action
如果指定一个toolbarPath
就会在NavigatorBar显示这些action