[jbosstools-commits] JBoss Tools SVN: r42924 - trunk/tests/plugins/org.jboss.tools.ui.bot.ext/src/org/jboss/tools/ui/bot/ext/view.

jbosstools-commits at lists.jboss.org jbosstools-commits at lists.jboss.org
Wed Aug 8 09:05:36 EDT 2012


Author: ljelinko
Date: 2012-08-08 09:05:35 -0400 (Wed, 08 Aug 2012)
New Revision: 42924

Modified:
   trunk/tests/plugins/org.jboss.tools.ui.bot.ext/src/org/jboss/tools/ui/bot/ext/view/ServersView.java
Log:
Added wait after the project is added to the server.

Modified: trunk/tests/plugins/org.jboss.tools.ui.bot.ext/src/org/jboss/tools/ui/bot/ext/view/ServersView.java
===================================================================
--- trunk/tests/plugins/org.jboss.tools.ui.bot.ext/src/org/jboss/tools/ui/bot/ext/view/ServersView.java	2012-08-08 12:55:59 UTC (rev 42923)
+++ trunk/tests/plugins/org.jboss.tools.ui.bot.ext/src/org/jboss/tools/ui/bot/ext/view/ServersView.java	2012-08-08 13:05:35 UTC (rev 42924)
@@ -1,16 +1,29 @@
 package org.jboss.tools.ui.bot.ext.view;
 
+import static org.eclipse.swtbot.swt.finder.matchers.WidgetMatcherFactory.widgetOfType;
+import static org.eclipse.swtbot.swt.finder.matchers.WidgetMatcherFactory.withMnemonic;
+import static org.hamcrest.Matchers.allOf;
+
 import java.util.ArrayList;
 import java.util.List;
 
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.widgets.Control;
+import org.eclipse.swt.widgets.Event;
+import org.eclipse.swt.widgets.MenuItem;
+import org.eclipse.swt.widgets.Tree;
+import org.eclipse.swtbot.eclipse.finder.waits.Conditions;
 import org.eclipse.swtbot.swt.finder.SWTBot;
 import org.eclipse.swtbot.swt.finder.exceptions.WidgetNotFoundException;
+import org.eclipse.swtbot.swt.finder.finders.ContextMenuFinder;
+import org.eclipse.swtbot.swt.finder.results.WidgetResult;
 import org.eclipse.swtbot.swt.finder.waits.ICondition;
 import org.eclipse.swtbot.swt.finder.widgets.SWTBotButton;
 import org.eclipse.swtbot.swt.finder.widgets.SWTBotMenu;
 import org.eclipse.swtbot.swt.finder.widgets.SWTBotShell;
 import org.eclipse.swtbot.swt.finder.widgets.SWTBotTree;
 import org.eclipse.swtbot.swt.finder.widgets.SWTBotTreeItem;
+import org.hamcrest.Matcher;
 import org.jboss.tools.ui.bot.ext.SWTBotFactory;
 import org.jboss.tools.ui.bot.ext.SWTTestExt;
 import org.jboss.tools.ui.bot.ext.Timing;
@@ -304,12 +317,14 @@
 		ContextMenuHelper.prepareTreeItemForContextMenu(serversTree,server);
 		new SWTBotMenu(ContextMenuHelper.getContextMenu(serversTree, IDELabel.Menu.ADD_AND_REMOVE, false)).click();
 
-		SWTBot shellBot = bot.shell("Add and Remove...").bot();
+		SWTBotShell shell = bot.shell("Add and Remove...");
+		SWTBot shellBot = shell.bot();
 
 		shellBot.tree(0).getTreeItem(projectName).select();
 		shellBot.button("Add >").click();
 		shellBot.button("Finish").click();
 		shellBot.waitWhile(new NonSystemJobRunsCondition(), TaskDuration.VERY_LONG.getTimeout());
+		shellBot.waitUntil(Conditions.shellCloses(shell), TaskDuration.NORMAL.getTimeout());
 	}
 	
 	public void removeProjectFromServer(String projectName, String serverName){
@@ -337,7 +352,7 @@
 	public void openWebPage(String serverName){
 		SWTBot bot = show().bot();
 		SWTBotTree serversTree = bot.tree();
-		SWTBotTreeItem server = findServerByName(serversTree, serverName);
+		SWTBotTreeItem server = new SWTBotTreeItemWithContextMenu(findServerByName(serversTree, serverName));
 		
 		server.contextMenu("Web Browser").click();
 	}
@@ -346,7 +361,7 @@
 		SWTBot bot = show().bot();
 		SWTBotTree serversTree = bot.tree();
 		SWTBotTreeItem server = findServerByName(serversTree, serverName);
-		SWTBotTreeItem project = getProjectNode(server, projectName);
+		SWTBotTreeItem project = new SWTBotTreeItemWithContextMenu(getProjectNode(server, projectName));
 		project.contextMenu("Web Browser").click();
 	}
 	
@@ -397,4 +412,59 @@
 			return "Expected the tree item to be decorated with separator '" + separator + "'";
 		}
 	}
+	
+	class SWTBotTreeItemWithContextMenu extends SWTBotTreeItem {
+
+		private Tree tree;
+		
+		public SWTBotTreeItemWithContextMenu(final SWTBotTreeItem treeItem)
+				throws WidgetNotFoundException {
+			super(treeItem.widget);
+			
+			this.tree = syncExec(new WidgetResult<Tree>() {
+				public Tree run() {
+					return treeItem.widget.getParent();
+				}
+			});
+		}
+		
+		@Override
+		public SWTBotMenu contextMenu(String text) {
+			select();
+			notifyTree(SWT.MouseDown, createMouseEvent(0, 0, 3, 0, 1));
+			notifyTree(SWT.MouseUp, createMouseEvent(0, 0, 3, 0, 1));
+			notifyTree(SWT.MenuDetect);
+			return contextMenu(tree, text);
+		}
+		
+		@SuppressWarnings("unchecked")
+		protected SWTBotMenu contextMenu(final Control control, final String text) {
+			Matcher<MenuItem> withMnemonic = withMnemonic(text);
+			final Matcher<MenuItem> matcher = allOf(widgetOfType(MenuItem.class), withMnemonic);
+			final ContextMenuFinder menuFinder = new ContextMenuFinder(control);
+			return new SWTBotMenu(getMenu(menuFinder.findMenus(matcher)), matcher);
+		}
+		
+		private void notifyTree(int eventType) {
+			notify(eventType, createEvent(), tree);
+		}
+
+		private void notifyTree(int eventType, Event event) {
+			notify(eventType, event, tree);
+		}
+		
+		private MenuItem getMenu(List<MenuItem> items){
+			for (MenuItem item : items){
+				if (!item.isDisposed()){
+					return item;
+				}
+			}
+			
+			if (items.isEmpty()){
+				throw new WidgetNotFoundException("Widget menuItem has not been found");				
+			} else {
+				throw new IllegalStateException("All menu items have been disposed");
+			}
+		}
+	}
 }



More information about the jbosstools-commits mailing list