SWY CoolBarClass
import org.eclipse.swt.SWT; import org.eclipse.swt.events.SelectionAdapter; import org.eclipse.swt.events.SelectionEvent; import org.eclipse.swt.graphics.Point; import org.eclipse.swt.layout.GridData; import org.eclipse.swt.layout.GridLayout; import org.eclipse.swt.widgets.CoolBar; import org.eclipse.swt.widgets.CoolItem; import org.eclipse.swt.widgets.Display; import org.eclipse.swt.widgets.Menu; import org.eclipse.swt.widgets.MenuItem; import org.eclipse.swt.widgets.Shell; import org.eclipse.swt.widgets.ToolBar; import org.eclipse.swt.widgets.ToolItem; public class CoolBarClass { static Display display; static Shell shell; static CoolBar coolBar; static Menu menu = null; public static void main(String[] args) { 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(); } }