删除Eclipse RCP应用程序中的默认菜单

时间:2014-09-20 00:08:40

标签: eclipse-rcp toolbar menubar

我开发了一个Eclipse RCP应用程序,我不想使用Eclipse的默认菜单和工具栏。 这是我的plugin.xml文件

<?xml version="1.0" encoding="UTF-8"?>
<?eclipse version="3.4"?>
<plugin>

 <extension
         id="application"
         point="org.eclipse.core.runtime.applications">
      <application>
         <run
               class="pmetest.Application">
         </run>
      </application>
   </extension>
   <extension
         point="org.eclipse.ui.perspectives">
      <perspective
            name="PME Perspective"
            class="pmetest.ui.perspective.Perspective"
            id="pmetest.perspective">
      </perspective>
   </extension>
   <extension
         point="org.eclipse.ui.views">
      <view
            name="My FX View From PME"
            icon="icons/sample.gif"
            class="pmetest.ui.view.fx.MyViewPart"
            id="com.ongoladev.pmetest.MyViewPart">
      </view>
      <view
            class="pmetest.ui.view.FormView"
            id="com.ongoladev.pmetest.formview"
            name="FormView from PME"
            restorable="true">
      </view>
   </extension>
   <extension
         id="product"
         point="org.eclipse.core.runtime.products">
      <product
            application="pmetest.application"
            name="Hello RCP">
         <property
               name="windowImages"
               value="icons/alt_window_16.gif,icons/alt_window_32.gif">
         </property>
      </product>
   </extension>
   <extension
         point="org.eclipse.ui.commands">
      <command
            defaultHandler="pmetest.ui.command.CommandExit"
            id="com.ongoladev.pmetest.Exit"
            name="Exit">
      </command>
   </extension>
   <extension
         point="org.eclipse.ui.menus">
      <menuContribution
            allPopups="false"
            locationURI="menu:org.eclipse.ui.main.menu">
         <menu
               id="filemenuid"
               label="File My">
            <command
                  commandId="com.ongoladev.pmetest.Exit"
                  label="Exit application"
                  style="push"
                  tooltip="Exit Application">
            </command>
         </menu>
      </menuContribution>
   </extension>

</plugin>

这就是我得到的 enter image description here

我想删除所有不必要的manu和工具栏。 感谢

3 个答案:

答案 0 :(得分:1)

要删除菜单中的所有默认选项,您需要在ApplicationWorkbenchWindowAdvisor.java类中添加以下代码。

@Override
public void postWindowOpen() { 
    IWorkbenchWindow workbenchWindow =  PlatformUI.getWorkbench().getActiveWorkbenchWindow();
    IContributionItem[] items = ((WorkbenchWindow)workbenchWindow).getMenuBarManager().getItems();
    for (IContributionItem item : items) {
            item.setVisible(false);
    }
}

答案 1 :(得分:1)

我继承了一个已有12年历史的应用程序,并试图将其更新到最新的Eclipse,遇到了这个默认菜单项出现的问题。在尝试了多个解决方案(包括API docs)后,我留下了“运行”菜单。

这让我进入了这个页面。我使用了@ShahzadIftikhar上面的解决方案并进行了调整。

具体来说,我们有一个扩展WorkbenchWindowAdvisor的类,该类包含一个只调用super.postWindowOpen()的postWindowOpen方法。在那次调用之后,我添加了以下代码,专门阻止包含“运行”菜单。此菜单包含“添加V8 / Chrome JavaScript异常断点”和“外部工具”菜单项,这些项目绝对不需要,客户专门说“摆脱它们”。

    IWorkbenchWindow workbenchWindow = PlatformUI.getWorkbench().getActiveWorkbenchWindow();
    IContributionItem[] items = ((WorkbenchWindow) workbenchWindow).getMenuBarManager().getItems();
    for (IContributionItem item : items) {
        if (item.getId().equals("org.eclipse.ui.run")) {
            item.setVisible(false);
        }
    }

在应用程序中获得此代码块后,您应该只能使用项目ID来阻止任何内容。

答案 2 :(得分:0)

要完全控制菜单和工具栏,您的应用程序可以使用自己的ActionBarAdvisor派生类。执行此操作时,您自己创建所有项目。

操作栏顾问程序是在WorkbenchWindowAdvisor类中创建的,而WorkbenchAdvisor类是从{{1}}类创建的。

如果您使用带有视图的&#39; RCP应用程序创建RCP插件项目&#39;示例Eclipse将为您创建这些类的示例。