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 ...Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Read now
Unlock full access