com.windowtester.test.locator.swt.shells.MenuTestShell.java Source code

Java tutorial

Introduction

Here is the source code for com.windowtester.test.locator.swt.shells.MenuTestShell.java

Source

/*******************************************************************************
 *  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;
    }

}