megueloby
megueloby

Reputation: 81

Remove default menu in Eclipse RCP application

I develop an Eclipse RCP application and I don't want to use the default menu and toolbar of my Eclipse. Here is my plugin.xml file

<?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>

and that is what I get enter image description here

I want to remove all unnecessery manu and toolbar. Thanks

Upvotes: 1

Views: 2209

Answers (3)

Chris Clark
Chris Clark

Reputation: 340

I inherited a 12-year-old application and in trying to update it to the latest Eclipse, ran into this problem of default menu items showing up. After trying multiple solutions, including this one, I was left with the Run menu.

This brought me to this page. I used the solution by @ShahzadIftikhar above and tweaked it.

To be specific, we have a class that extends WorkbenchWindowAdvisor and that class contained a postWindowOpen method that only called super.postWindowOpen(). After that call, I added the below code to specifically block the inclusion of the "Run" menu. This menu contained the "Add V8/Chrome JavaScript Exception Breakpoint" and External Tools menu items that were definitely not needed and the client specifically said "get rid of them".

    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);
        }
    }

Once you get this block of code in your application, you should be able to just use the item ID for whatever you want to block.

Upvotes: 2

ShahzadIftikhar
ShahzadIftikhar

Reputation: 523

For removing all defaults options in menu, You need to add this below code in ApplicationWorkbenchWindowAdvisor.java class.

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

Upvotes: 1

greg-449
greg-449

Reputation: 111142

To get full control over the menus and tool bar your application can use its own ActionBarAdvisor derived class. When you do this you create all the items yourself.

The action bar advisor is created in WorkbenchWindowAdvisor class which in turn is created from your WorkbenchAdvisor class.

If you create a RCP plugin project using the 'RCP application with a view' example Eclipse will create examples of these classes for you.

Upvotes: 0

Related Questions