Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to add a pulldown button in a view's toolbar?

I need to add a pulldown button to a view's toolbar in an Eclipse plugin.

Actually buttons in the toolbar are added like that :

<extension point="org.eclipse.ui.viewActions">
  <viewContribution id="..." targetId="$MyViewId$">
    <action id="..."
            toolbarPath="action1"
            class="Class extending Action and implementing IViewActionDelegate">
    </action>
  </viewContribution>
</extension>
like image 888
Julien Hoarau Avatar asked May 05 '10 12:05

Julien Hoarau


People also ask

How do you use a pull down menu?

Use a pull-down button to present commands or items that are directly related to the button’s action. The menu lets you help people clarify the button’s target or customize its behavior without requiring additional buttons in your interface.

What is a pull-down button?

A pull-down button displays a menu of items or actions that directly relate to the button’s purpose. After people choose an item in a pull-down button’s menu, the menu closes, and the app performs the chosen action. Use a pull-down button to present commands or items that are directly related to the button’s action.

What are the toolbar buttons for?

An integral part of the ToolBar control is the buttons you add to it. These can be used to provide easy access to menu commands or, alternately, they can be placed in another area of the user interface of your application to expose commands to your users that are not available in the menu structure.

How do I show a drop-down button with an arrow?

To show a drop-down button with an arrow, you must also set the TBSTYLE_EX_DRAWDDARROWS toolbar style by sending a TB_SETEXTENDEDSTYLE message. The following illustration shows a drop-down "Open" button with the context menu open and showing a list of files. In this example, the toolbar has the TBSTYLE_EX_DRAWDDARROWS style.


1 Answers

I've figured it out. Two ways: one using org.eclipse.ui.viewActions extension, the other with org.eclipse.ui.menus

Using org.eclipse.ui.viewActions extension (eclipse >= 3.5)

  • action's style must set to pulldown
    <extension point="org.eclipse.ui.viewActions">
      <viewContribution id="..." targetId="$MyViewId$">
        <action id="..."
                toolbarPath="action1"
                class="xxx.MyAction"
                style="pulldown">
        </action>
      </viewContribution>
    </extension>
  • action class must implement IViewActionDelegate (required for an action contributing to a view toolbar) and IMenuCreator (defines the menu behavior).
    public class RetrieveViolationsViewActionDelegate implements IViewActionDelegate, IMenuCreator
    {
      private IAction action;
      private Menu menu;

      // IViewActionDelegate methods
      ...

      // IMenuCreator methods
      public void selectionChanged(IAction action, ISelection selection)
      {
        if (action != this.action)
        {
          action.setMenuCreator(this);
          this.action = action;
        }
      }

      public void dispose()
      {
        if (menu != null)
        {
          menu.dispose();
        }
      }

      public Menu getMenu(Control parent)
      {
        Menu menu = new Menu(parent);
        addActionToMenu(menu, new ClassImplemententingIAction());
        return menu;
      }

      public Menu getMenu(Menu parent)
      {
        // Not use
        return null;
      }



      private void addActionToMenu(Menu menu, IAction action)
      {
        ActionContributionItem item= new ActionContributionItem(action);
        item.fill(menu, -1);
      }
    }

Using org.eclipse.ui.menus (eclipse >= 3.3)

  • Add a new menucontribution to the org.eclipse.ui.menus extension point.
  • Set the location URI to toolbar:IdOfYourView
  • Add a toolbar to this extension and a new command to this new toolbar.
  • Change the command style to pulldown
  • Create a new menucontribution and set the locationURI to menu:IdOfThePullDownCommand
  • Add commands to this menu.

More info

like image 187
Julien Hoarau Avatar answered Sep 23 '22 23:09

Julien Hoarau