FileDocCategorySizeDatePackage
MenuClass.javaAPI DocExample2536Mon Mar 08 11:54:38 GMT 2004org.cookbook.ch09

MenuClass.java

package org.cookbook.ch09;

import org.eclipse.swt.widgets.*;
import org.eclipse.swt.SWT;
import org.eclipse.swt.events.*;

public class MenuClass
{

	Display display;
	Shell shell;
	Menu menuBar, fileMenu, editMenu;
	MenuItem fileMenuHeader, editMenuHeader;
	MenuItem fileExitItem, fileSaveItem, fileEnglishItem, fileGermanItem, editCopyItem;
	Text text;

	public MenuClass()
	{
		display = new Display();
		shell = new Shell(display);
		shell.setText("Menu Example");
		shell.setSize(300, 200);

		text = new Text(shell, SWT.BORDER);
		text.setBounds(80, 50, 150, 25);

		menuBar = new Menu(shell, SWT.BAR);
		fileMenuHeader = new MenuItem(menuBar, SWT.CASCADE);
		fileMenuHeader.setText("&File");

		fileMenu = new Menu(shell, SWT.DROP_DOWN);
		fileMenuHeader.setMenu(fileMenu);

		fileSaveItem = new MenuItem(fileMenu, SWT.PUSH);
		fileSaveItem.setText("&Save");

		fileEnglishItem = new MenuItem(fileMenu, SWT.RADIO);
		fileEnglishItem.setText("English");

		fileGermanItem = new MenuItem(fileMenu, SWT.RADIO);
		fileGermanItem.setText("German");

		fileExitItem = new MenuItem(fileMenu, SWT.PUSH);
		fileExitItem.setText("E&xit");

		editMenuHeader = new MenuItem(menuBar, SWT.CASCADE);
		editMenuHeader.setText("&Edit");

		editMenu = new Menu(shell, SWT.DROP_DOWN);
		editMenuHeader.setMenu(editMenu);

		editCopyItem = new MenuItem(editMenu, SWT.PUSH);
		editCopyItem.setText("&Copy");

		fileExitItem.addSelectionListener(new MenuItemListener());
		fileSaveItem.addSelectionListener(new MenuItemListener());
		editCopyItem.addSelectionListener(new MenuItemListener());

		fileEnglishItem.addSelectionListener(new RadioItemListener());
		fileGermanItem.addSelectionListener(new RadioItemListener());

		shell.setMenuBar(menuBar);
		shell.open();
		while (!shell.isDisposed())
		{
			if (!display.readAndDispatch())
				display.sleep();
		}
		display.dispose();
	}

	class MenuItemListener extends SelectionAdapter
	{
		public void widgetSelected(SelectionEvent event)
		{
			if(((MenuItem) event.widget).getText().equals("E&xit")){
				shell.close();
			}
			text.setText("You selected " + ((MenuItem) event.widget).getText());
		}
	}

	class RadioItemListener extends SelectionAdapter
	{
		public void widgetSelected(SelectionEvent event)
		{
			MenuItem item = (MenuItem)event.widget;
			text.setText(item.getText() + " is on.");
		}
	}

	public static void main(String[] args)
	{
		MenuClass menuExample = new MenuClass();
	}
}