定制Eclipse视图Tab的右键系统菜单

定制Eclipse视图Tab的右键系统菜单(或者屏蔽Tab上的系统右键菜单)介绍:

1.在ApplicationWorkbenchWindowAdvisor类的preWindowOpen()方法中为 IWorkbenchWindowConfigurer添加一个自定义WorkbenchPresentationFactory工厂类;

2.在自定义WorkbenchPresentationFactory工厂类中实现public StackPresentation createViewPresentation(Composite parent,IStackPresentationSite site)方法:代码如下:
public StackPresentation createViewPresentation(Composite parent,
           IStackPresentationSite site) {

       /**XXXTabFolder继承于AbstractTabFolder.*/
       XXXTabFolder folder = new XXXTabFolder(parent,
               viewTabPosition | SWT.BORDER);

       PresentablePartFolder partFolder = new PresentablePartFolder(folder);

       folder.setUnselectedCloseVisible(false);
       folder.setUnselectedImageVisible(true);

       TabbedStackPresentation result = new TabbedStackPresentation(site,
               partFolder, new XXXStandardSystemMenu(site));

       /** XXXPropertyListener继承于AbstractPropertyListener. */
       XXXPropertyListener themeListener = new EduPropertyListener(folder,
               result.getTheme());
       result.getTheme().addListener(themeListener);

       /** XXXSimpleTabListener继承于AbstractBooleanListener. */
       new XXXSimpleTabListener(result.getApiPreferences(),
               IWorkbenchPreferenceConstants.SHOW_TRADITIONAL_STYLE_TABS,
               folder);

       return result;
   }

其中XXXStandardSystemMenu(site)就是定义我们自己的系统菜单(现在我是 屏蔽所有右键菜单)
public class XXXStandardSystemMenu implements ISystemMenu {

   MenuManager menuManager = new MenuManager();

   /**
    * Create the standard view menu
    *
    * @param site
    *            the site to associate the view with
    */
   public XXXStandardSystemMenu(IStackPresentationSite site) {

       site.addSystemActions(menuManager);
   }

   public String getMoveMenuText() {
       return WorkbenchMessages.ViewPane_moveView;
   }

   /*
    * (non-Javadoc)
    *
    * @see
    * org.eclipse.ui.internal.presentations.util.ISystemMenu#show(org.eclipse
    * .swt.graphics.Point, org.eclipse.ui.presentations.IPresentablePart)
    */
   public void show(Control parent, Point displayCoordinates,
           IPresentablePart currentSelection) {

       Menu aMenu = menuManager.createContextMenu(parent);
       menuManager.removeAll();
       aMenu.setLocation(displayCoordinates.x, displayCoordinates.y);
       aMenu.setVisible(false);
   }

   /**
    * Dispose resources associated with this menu
    */
   public void dispose() {
       menuManager.dispose();
       menuManager.removeAll();
   }

顺便说一句屏蔽编辑器右键也是一样的原理实现。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Eclipse 中给文件右键菜单添加可展开的二级菜单,需要在插件的 `plugin.xml` 文件中进行配置。 首先,在 `plugin.xml` 中定义一个菜单: ```xml <menu id="mySubMenu" label="My Sub Menu" icon="icons/sample.gif"> </menu> ``` 然后,在 `plugin.xml` 中定义一个 `popupMenu` 扩展,将菜单添加到文件的右键菜单中: ```xml <extension point="org.eclipse.ui.popupMenus"> <objectContribution objectClass="org.eclipse.core.resources.IFile" id="com.example.myObjectContribution"> <menu id="myPopupMenu" label="My Popup Menu"> <command commandId="org.eclipse.ui.file.refresh" label="Refresh"/> <menu id="mySubMenu" label="My Sub Menu"> <command commandId="com.example.myCommand" label="Submenu Command"/> </menu> </menu> <action label="My Action" class="com.example.MyAction" menubarPath="myPopupMenu/mySubMenu" enablesFor="1" id="com.example.myAction"> </action> </objectContribution> </extension> ``` 在上述代码中,`objectContribution` 定义了一个对象贡献,用于将菜单和操作添加到文件的右键菜单中。`menu` 定义了一个顶级菜单和一个子菜单,其中子菜单的 `id` 属性和上面定义的菜单的 `id` 属性相同。`command` 定义了一个刷新命令,并将其添加到顶级菜单中;`action` 定义了一个自定义操作,并将其添加到子菜单中。`menubarPath` 属性指定了操作所在的菜单路径,这里是子菜单的路径。 配置完成后,右键单击文件时,将显示一个名为 "My Popup Menu" 的顶级菜单,其中包含了 "Refresh" 命令和名为 "My Sub Menu" 的子菜单,子菜单中包含了 "Submenu Command" 命令。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值