/******************************************************************************* * Copyright (c) 2012 Google, Inc. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html * * Contributors: * Google, Inc. - initial API and implementation *******************************************************************************/ package com.windowtester.test.locator.swt.shells; import org.eclipse.jface.resource.DeviceResourceException; import org.eclipse.jface.resource.ImageDescriptor; import org.eclipse.jface.resource.JFaceResources; import org.eclipse.jface.resource.LocalResourceManager; import org.eclipse.swt.SWT; import org.eclipse.swt.layout.GridLayout; import org.eclipse.swt.widgets.Display; import org.eclipse.swt.widgets.Event; import org.eclipse.swt.widgets.Listener; import org.eclipse.swt.widgets.Menu; import org.eclipse.swt.widgets.MenuItem; import org.eclipse.swt.widgets.Shell; import org.eclipse.swt.widgets.Widget; public class MenuTestShell { private static final String RUN_ITEM_TEXT = "Ru&n..."; private static final String RUN_AS_ITEM_TEXT = "R&un as"; private static final String RUN_IT_ITEM_TEXT = "Run it"; private static final String RUN_MENU_TEXT = "Run"; private static final String MIX_MENU_TEXT = "Mix"; private static final String MIX_PUSH_TEXT = "Push"; private static final String MIX_RADIO_TEXT = "Radio"; private static final String MIX_IMAGE_TEXT = "Image"; private static final String MIX_NORMAL_TEXT = "Normal"; protected Shell shell; // the last selected menu item public Widget selectedMenuItem; MenuTestShell window; public MenuItem topMenuItem; public MenuItem parentMenuItem_1; public MenuItem child1MenuItem; public MenuItem child2MenuItem; public MenuItem grandchildMenuItem; public MenuItem grandchildrenMenuItem; protected Menu menu; /** * Launch the application * * @param args */ public static void main(String[] args) { try { MenuTestShell window = new MenuTestShell(); window.open(); // new EventRecordingWatcher(window.getShell()).watch(); final Display display = Display.getDefault(); while (!window.getShell().isDisposed()) { if (!display.readAndDispatch()) display.sleep(); } } catch (Exception e) { e.printStackTrace(); } } /** * Open the window */ public void open() { shell = new Shell(); createContents(); createMenuAndContents(); shell.open(); shell.layout(); } private void createMenuAndContents() { Listener selectionListener = new Listener() { public void handleEvent(Event event) { selectedMenuItem = event.widget; System.out.println("CLICK");// DEBUG } }; menu = new Menu(shell, SWT.BAR); shell.setMenuBar(menu); topMenuItem = new MenuItem(menu, SWT.NONE); topMenuItem.setText("top"); topMenuItem.addListener(SWT.Selection, selectionListener); parentMenuItem_1 = new MenuItem(menu, SWT.CASCADE); parentMenuItem_1.setText("parent"); parentMenuItem_1.addListener(SWT.Selection, selectionListener); final Menu menu_1 = new Menu(parentMenuItem_1); parentMenuItem_1.setMenu(menu_1); child1MenuItem = new MenuItem(menu_1, SWT.NONE); child1MenuItem.setText("child 1"); child1MenuItem.addListener(SWT.Selection, selectionListener); child2MenuItem = new MenuItem(menu_1, SWT.CASCADE); child2MenuItem.setText("child 2"); child2MenuItem.addListener(SWT.Selection, selectionListener); final Menu menu_2 = new Menu(child2MenuItem); child2MenuItem.setMenu(menu_2); grandchildMenuItem = new MenuItem(menu_2, SWT.NONE); grandchildMenuItem.setText("grand/child"); grandchildMenuItem.addListener(SWT.Selection, selectionListener); grandchildrenMenuItem = new MenuItem(menu_2, SWT.NONE); grandchildrenMenuItem.setText("grand/&children...\t\tCtrl+F"); // ...\t\tCtrl+F grandchildrenMenuItem.addListener(SWT.Selection, selectionListener); MenuItem runMenuItem = new MenuItem(menu, SWT.CASCADE); runMenuItem.setText(RUN_MENU_TEXT); Menu runMenu = new Menu(menu); runMenuItem.setMenu(runMenu); MenuItem runItem = new MenuItem(runMenu, SWT.NONE); runItem.setText(RUN_ITEM_TEXT); MenuItem runAsItem = new MenuItem(runMenu, SWT.NONE); runAsItem.setText(RUN_AS_ITEM_TEXT); MenuItem runItItem = new MenuItem(runMenu, SWT.NONE); runItItem.setText(RUN_IT_ITEM_TEXT); MenuItem mixMenuItem = new MenuItem(menu, SWT.CASCADE); mixMenuItem.setText(MIX_MENU_TEXT); Menu mixMenu = new Menu(menu); mixMenuItem.setMenu(mixMenu); MenuItem mixPushItem = new MenuItem(mixMenu, SWT.PUSH); mixPushItem.setText(MIX_PUSH_TEXT); MenuItem mixRadioItem = new MenuItem(mixMenu, SWT.RADIO); mixRadioItem.setText(MIX_RADIO_TEXT); MenuItem mixImageItem = new MenuItem(mixMenu, SWT.NONE); mixImageItem.setImage(null); mixImageItem.setText(MIX_IMAGE_TEXT); MenuItem mixNormalItem = new MenuItem(mixMenu, SWT.NONE); mixNormalItem.setText(MIX_NORMAL_TEXT); LocalResourceManager m = new LocalResourceManager(JFaceResources.getResources()); ImageDescriptor icon = ImageDescriptor.createFromFile(getClass(), "new_wiz.png"); try { mixImageItem.setImage(icon == null ? null : m.createImage(icon)); } catch (DeviceResourceException e) { icon = ImageDescriptor.getMissingImageDescriptor(); try { mixImageItem.setImage(m.createImage(icon)); /* * the 3.2 build complained of an unhandled exception here * -- this attempts to make it happy... */ } catch (Throwable th) { throw new RuntimeException(th); } } } /** * Create contents of the window */ protected void createContents() { final GridLayout gridLayout = new GridLayout(); shell.setLayout(gridLayout); shell.setSize(316, 67); shell.setText("Menu Test"); } public Shell getShell() { return shell; } }