org.eclipse.ui.viewActions 使用心得

org.eclipse.ui.viewActions 使用心得
因为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

你可能感兴趣的:(org.eclipse.ui.viewActions 使用心得)