修改 RCP 编辑器和视图标题菜单

编辑器和视图标题中有许多默认的菜单,这些菜单不是由IEditorPart 或者 IViewPart控制的,而是通过AbstracPresentationFactory 来初始化和进行处理的。Eclipse 提供一个默认的实现——WorkbenchPresentationFactory,核心代码如下:

public StackPresentation createEditorPresentation(Composite parent,

                     IStackPresentationSite site) {

              DefaultTabFolder folder = new DefaultTabFolder(parent,

                            editorTabPosition | SWT.BORDER, site

                                          .supportsState(IStackPresentationSite.STATE_MINIMIZED),

                            site.supportsState(IStackPresentationSite.STATE_MAXIMIZED));

 

              /*

               * Set the minimum characters to display, if the preference is something

               * other than the default. This is mainly intended for RCP applications

               * or for expert users (i.e., via the plug-in customization file).

               *

               */

              final IPreferenceStore store = PlatformUI.getPreferenceStore();

              if (store

                            .contains(IWorkbenchPreferenceConstants.EDITOR_MINIMUM_CHARACTERS)) {

                     final int minimumCharacters = store

                                   .getInt(IWorkbenchPreferenceConstants.EDITOR_MINIMUM_CHARACTERS);

                     if (minimumCharacters >= 0) {

                            folder.setMinimumCharacters(minimumCharacters);

                     }

              }

 

              PresentablePartFolder partFolder = new PresentablePartFolder(folder);

 

              TabbedStackPresentation result = new TabbedStackPresentation(site,

                            partFolder, new StandardEditorSystemMenu(site));

 

              DefaultThemeListener themeListener = new DefaultThemeListener(folder,

                            result.getTheme());

              result.getTheme().addListener(themeListener);

 

             new DefaultMultiTabListener(result.getApiPreferences(),

                                     IWorkbenchPreferenceConstants.SHOW_MULTIPLE_EDITOR_TABS, folder);

 

                   new DefaultSimpleTabListener(result.getApiPreferences(),

                                     IWorkbenchPreferenceConstants.SHOW_TRADITIONAL_STYLE_TABS,

                                     folder);

 

                   return result;

}

这个方法是用来给编辑器添加标题菜单的,默认的实现为StandardEditorSystemMenu,跟踪代码可以发现这个类继承自StandardViewSystemMenu,不同的地方是多添加了三个菜单项CloseOthersCloseAllOpenAgain。知道这些,如何去实现自己的编辑器标题菜单就很容易了。StandardEditorSystemMenu的关键代码:

    public StandardEditorSystemMenu(IStackPresentationSite site) {

        super(site);

       

        closeOthers = new SystemMenuCloseOthers(site);

        closeAll = new SystemMenuCloseAll(site);

              openAgain = ActionFactory.NEW_EDITOR.create

(PlatformUI.getWorkbench().getActiveWorkbenchWindow());

        menuManager.add(closeOthers);

        menuManager.add(closeAll);

              menuManager.add(new Separator());

              menuManager.add(openAgain);

}

实现了自己的PresentationFactory以后,让它生效还必须添加一个Extension——org.eclipse.ui.presentationFactories,语法很简单:

<extension

         point="org.eclipse.ui.presentationFactories">

         <factory 

           class="test.PresentationFactory" 

           id="test.PresentationFactory" 

           name="My Presentation"/> 

</extension>

然后在plugin_customization.ini文件中指定要使用的presentationFactoryorg.eclipse.ui/presentationFactoryId=test.PresentationFactory

这样RCP 就会使用自定义的PresentationFactory中的标题菜单了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值