display = new Display();
shell = new Shell(display);
shell.setLayout(new GridLayout());
shell.setText("CoolBar Example");
shell.setSize(600, 200);
coolBar = new CoolBar(shell, SWT.BORDER | SWT.FLAT);
coolBar.setLayoutData(new GridData(GridData.FILL_BOTH));
ToolBar toolBar1 = new ToolBar(coolBar, SWT.FLAT);
for (int loopIndex = 0; loopIndex < 5; loopIndex++)
{
ToolItem toolItem = new ToolItem(toolBar1, SWT.PUSH);
toolItem.setText("Button " + loopIndex);
}
ToolBar toolBar2 = new ToolBar(coolBar, SWT.FLAT | SWT.WRAP);
for (int loopIndex = 5; loopIndex < 10; loopIndex++)
{
ToolItem toolItem = new ToolItem(toolBar2, SWT.PUSH);
toolItem.setText("Button " + loopIndex);
}
CoolItem coolItem1 = new CoolItem(coolBar, SWT.DROP_DOWN);
coolItem1.setControl(toolBar1);
CoolItem coolItem2 = new CoolItem(coolBar, SWT.DROP_DOWN);
coolItem2.setControl(toolBar2);
Point toolBar1Size = toolBar1.computeSize(SWT.DEFAULT, SWT.DEFAULT);
Point coolBar1Size = coolItem1.computeSize(toolBar1Size.x, toolBar1Size.y);
coolItem1.setSize(coolBar1Size);
Point toolBar2Size = toolBar2.computeSize(SWT.DEFAULT, SWT.DEFAULT);
Point coolBar2Size = coolItem1.computeSize(toolBar2Size.x, toolBar2Size.y);
coolItem2.setSize(coolBar2Size);
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();
if (menu != null)
{
menu.dispose();
}
menu = new Menu(coolBar);
for (int loopIndex = 0; loopIndex < buttons.length; loopIndex++)
{
MenuItem menuItem = new MenuItem(menu, SWT.PUSH);
menuItem.setText(buttons[loopIndex].getText());
}
Point menuPoint = coolBar.toDisplay(new Point(event.x, event.y));
menu.setLocation(menuPoint.x, menuPoint.y);
menu.setVisible(true);
}
}
}
coolItem1.addSelectionListener(new CoolBarListener());
coolItem2.addSelectionListener(new CoolBarListener());
shell.open();
while (!shell.isDisposed())
{
if (!display.readAndDispatch())
display.sleep();
}
display.dispose();