FileDocCategorySizeDatePackage
CoolBarClass.javaAPI DocExample2706Wed Mar 10 11:48:26 GMT 2004org.cookbook.ch10

CoolBarClass.java

package org.cookbook.ch10;

import org.eclipse.swt.*;
import org.eclipse.swt.events.*;
import org.eclipse.swt.layout.*;
import org.eclipse.swt.widgets.*;
import org.eclipse.swt.graphics.*;

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();
	}
}