10.4. Adding Drop-Down Menus to Coolbars

Problem

You want to add drop-down menus to coolbars.

Solution

Create your own menus, catch the coolbar events you want to handle, and display the menus using the Menu class’s setLocation and setVisible methods.

Tip

This is the same way context menus are created in SWT.

Discussion

If you give a coolbar item the style SWT.DROP_DOWN, it’ll display a chevron button, also called an arrow button, when the full item can’t be displayed. Clicking that button can display a drop-down menu with all the buttons in the coolbar item—if you know what you’re doing.

As an example, we’ll add a drop-down menu to the coolbar developed in the previous recipe. To make that menu active, we’ll catch arrow button clicks (event.detail == SWT.ARROW) in the coolbar with this code in the class CoolBarListener:

class CoolBarListener extends SelectionAdapter
{
    public void widgetSelected(SelectionEvent event)
    {
        if (event.detail == SWT.ARROW)
               {
                  .
                  .
                  .

        }
    }
}

The objective here is to display the button captions as menu items, so we start by getting a list of buttons from the toolbar that was clicked:

class CoolBarListener extends SelectionAdapter
{
    public void widgetSelected(SelectionEvent event)
    {
        if (event.detail == SWT.ARROW)
        {
            ToolBar toolBar = (ToolBar) ((CoolItem) 
                            event.widget).getControl( );
               ToolItem[] buttons = toolBar.getItems( );
                   .
                   .
                   .
        }
    }
}

Next we create a menu with items corresponding to the button captions:

class CoolBarListener extends SelectionAdapter { public void widgetSelected(SelectionEvent ...

Get Eclipse Cookbook now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.