package org.jboss.tools.jsf.ui.test;
import org.eclipse.core.resources.IFile;
import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.core.runtime.IStatus;
import org.eclipse.core.runtime.jobs.Job;
import org.eclipse.swt.SWT;
import org.eclipse.swt.events.MenuEvent;
import org.eclipse.swt.events.MenuListener;
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.TypedListener;
import org.eclipse.ui.progress.UIJob;
import org.jboss.tools.jst.jsp.test.ca.ContentAssistantTestCase;
import org.jboss.tools.test.util.TestProjectProvider;
import org.jboss.tools.test.util.WorkbenchUtils;
public class CreateJSF2CompositeMenuTest extends ContentAssistantTestCase {
TestProjectProvider provider = null;
boolean makeCopy = true;
private static final String PROJECT_NAME = "test_jsf_project";
private static final String PAGE_NAME = "/WebContent/pages/test_page2.xhtml";
public void setUp() throws Exception {
provider = new TestProjectProvider("org.jboss.tools.jsf.ui.test", null, PROJECT_NAME, makeCopy);
project = provider.getProject();
}
protected void tearDown() throws Exception {
if(provider != null) {
provider.dispose();
}
}
public void testMenu(){
fileName = PAGE_NAME;
IFile testfile = project.getFile(fileName);
assertTrue("Test file doesn't exist: " + project.getName() + "/" + fileName,
(testfile.exists() && testfile.isAccessible()));
editorPart = WorkbenchUtils.openEditor(project.getName()+"/"+ fileName); //$NON-NLS-1$
obtainTextEditor(editorPart);
UIJob registerJob = new UIJob(Display.getDefault(), "JBoss Central DND initialization") {
{
setPriority(Job.DECORATE);
}
@Override
public IStatus runInUIThread(IProgressMonitor monitor) {
viewer = getTextViewer();
Menu menu = viewer.getTextWidget().getMenu();
Listener[] listeners = menu.getListeners(SWT.Show);
assertTrue("No listeners found in context menu",listeners.length > 0);
for(Listener listener : listeners){
if(listener instanceof TypedListener){
TypedListener tl = (TypedListener)listener;
if(tl.getEventListener() instanceof MenuListener){
MenuListener ml = (MenuListener)tl.getEventListener();
Event event = new Event();
event.widget = viewer.getTextWidget();
event.display = viewer.getTextWidget().getDisplay();
event.time = (int)System.currentTimeMillis();
ml.menuShown(new MenuEvent(event));
}else{
fail("Event listener should be instance of MenuListener");
}
}else{
fail("listener should be instance of TypedListener");
}
}
menu.setVisible(true);
MenuItem[] items = menu.getItems();
assertTrue("No items found in context menu",items.length > 0);
for(MenuItem item : items){
if("Create JSF2 composite...".equals(item.getText())){
// found
return null;
}
}
fail("Create JSF2 composite... menu item not found");
return null;
}
};
}
}