/*******************************************************************************
* Copyright (c) 2012 Original authors and others.
* 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:
* Original authors and others - initial API and implementation
******************************************************************************/
package org.eclipse.nebula.widgets.nattable.ui.menu;
import org.eclipse.nebula.widgets.nattable.ui.NatEventData;
import org.eclipse.swt.SWT;
import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Event;
import org.eclipse.swt.widgets.Menu;
import org.eclipse.swt.widgets.MenuItem;
import org.eclipse.swt.widgets.Shell;
import org.junit.Assert;
import org.junit.Test;
public class MenuItemProvidersTest {
@Test
public void shouldGetDataFromParentForNestedMenus() throws Exception {
Display display = Display.getDefault();
Shell shell = new Shell(display);
Menu menu = new Menu(shell, SWT.POP_UP);
menu.setData(MenuItemProviders.NAT_EVENT_DATA_KEY, new NatEventData(null, null, 5, 1, null));
MenuItem item1 = new MenuItem(menu, SWT.PUSH);
item1.setText("Push Item");
MenuItem item2 = new MenuItem(menu, SWT.CASCADE);
item2.setText("Cascade Item");
Menu subMenu = new Menu(menu);
item2.setMenu(subMenu);
MenuItem subItem1 = new MenuItem(subMenu, SWT.PUSH);
subItem1.setText("Subitem 1");
MenuItem subItem2 = new MenuItem(subMenu, SWT.PUSH);
subItem2.setText("Subitem 2");
Event testEvent = new Event();
testEvent.widget = shell;
SelectionEvent selectionEvent = new SelectionEvent(testEvent);
selectionEvent.widget = subItem2;
NatEventData natEventData = MenuItemProviders.getNatEventData(selectionEvent);
Assert.assertNotNull(natEventData);
Assert.assertEquals(5, natEventData.getColumnPosition());
Assert.assertEquals(1, natEventData.getRowPosition());
}
}