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.