diff options
Diffstat (limited to 'plugins/org.eclipse.emf.cdo.dawn.tests/src/org/eclipse/emf/cdo/dawn/tests/ui/util/DawnSWTBotEMFEditor.java')
-rw-r--r-- | plugins/org.eclipse.emf.cdo.dawn.tests/src/org/eclipse/emf/cdo/dawn/tests/ui/util/DawnSWTBotEMFEditor.java | 520 |
1 files changed, 260 insertions, 260 deletions
diff --git a/plugins/org.eclipse.emf.cdo.dawn.tests/src/org/eclipse/emf/cdo/dawn/tests/ui/util/DawnSWTBotEMFEditor.java b/plugins/org.eclipse.emf.cdo.dawn.tests/src/org/eclipse/emf/cdo/dawn/tests/ui/util/DawnSWTBotEMFEditor.java index a07a0678f2..0ac6701dfa 100644 --- a/plugins/org.eclipse.emf.cdo.dawn.tests/src/org/eclipse/emf/cdo/dawn/tests/ui/util/DawnSWTBotEMFEditor.java +++ b/plugins/org.eclipse.emf.cdo.dawn.tests/src/org/eclipse/emf/cdo/dawn/tests/ui/util/DawnSWTBotEMFEditor.java @@ -1,260 +1,260 @@ -/* - * Copyright (c) 2004 - 2011 Eike Stepper (Berlin, Germany) 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: - * Eike Stepper - initial API and implementation - */ -package org.eclipse.emf.cdo.dawn.tests.ui.util; - -import org.eclipse.jface.viewers.TreeViewer; -import org.eclipse.jface.viewers.Viewer; -import org.eclipse.swt.widgets.Control; -import org.eclipse.swt.widgets.Display; -import org.eclipse.swtbot.eclipse.finder.SWTWorkbenchBot; -import org.eclipse.swtbot.eclipse.finder.widgets.SWTBotEditor; -import org.eclipse.swtbot.eclipse.gef.finder.widgets.SWTBotGefContextMenu; -import org.eclipse.swtbot.swt.finder.exceptions.WidgetNotFoundException; -import org.eclipse.swtbot.swt.finder.widgets.SWTBotTree; -import org.eclipse.swtbot.swt.finder.widgets.SWTBotTreeItem; -import org.eclipse.ui.IEditorPart; -import org.eclipse.ui.IEditorReference; -import org.eclipse.ui.part.MultiPageEditorPart; - -import org.hamcrest.SelfDescribing; - -import java.lang.reflect.InvocationTargetException; -import java.lang.reflect.Method; - -/** - * @author Martin Fluegge - */ -public class DawnSWTBotEMFEditor extends SWTBotEditor -{ - public DawnSWTBotEMFEditor(IEditorReference editorReference, SWTWorkbenchBot bot) throws WidgetNotFoundException - { - super(editorReference, bot); - } - - public DawnSWTBotEMFEditor(IEditorReference editorReference, SWTWorkbenchBot bot, SelfDescribing description) - { - super(editorReference, bot, description); - } - - /** - * return the tree of the EMF editor - */ - public SWTBotTree getSelectionPageTree() - { - MultiPageEditorPart editor = (MultiPageEditorPart)getReference().getEditor(false); - SWTBotTree swtBotTree = null; - try - { - setActivePage(editor, 0); - - TreeViewer viewer = (TreeViewer)getCurrentViewer(); - swtBotTree = new SWTBotTree(viewer.getTree()); - } - catch (Exception ex) - { - throw new RuntimeException(ex); - } - - return swtBotTree; - } - - public void setActivePage(int i) - { - MultiPageEditorPart editor = (MultiPageEditorPart)getReference().getEditor(false); - try - { - setActivePage(editor, i); - } - catch (Exception ex) - { - throw new RuntimeException(ex); - } - } - - public DawnSWTBotEMFEditor clickContextMenu(Control control, String text) throws WidgetNotFoundException - { - new SWTBotGefContextMenu(control, text).click(); - return this; - } - - protected Object getSelectedPage(final MultiPageEditorPart editor) - { - Object ret = null; - - RunnableWithResult runnable = new RunnableWithResult(ret) - { - @Override - public void run() - { - result = editor.getSelectedPage(); - } - }; - editor.getSite().getShell().getDisplay().syncExec(runnable); - - return runnable.getResult(); - } - - public Viewer getCurrentViewer() - { - final MultiPageEditorPart editor = (MultiPageEditorPart)getReference().getEditor(false); - - IEditorPart ret = null; - - RunnableWithResult runnable = new RunnableWithResult(ret) - { - - @Override - public void run() - { - try - { - Class<?>[] parameterTypes = new Class[0]; - Method method = getMethod(editor, "getViewer", parameterTypes); - method.setAccessible(true); - Object[] params = new Object[0]; - result = method.invoke(editor, params); - } - catch (Exception ex) - { - throw new RuntimeException(ex); - } - } - }; - - editor.getSite().getShell().getDisplay().syncExec(runnable); - return (Viewer)runnable.getResult(); - } - - protected IEditorPart getActiveEditor() - { - final MultiPageEditorPart editor = (MultiPageEditorPart)getReference().getEditor(false); - - IEditorPart ret = null; - - RunnableWithResult runnable = new RunnableWithResult(ret) - { - @Override - public void run() - { - try - { - Class<?>[] parameterTypes = new Class[0]; - - Class<?> superClass = getSuperClass(editor.getClass(), MultiPageEditorPart.class); - - Method method = superClass.getDeclaredMethod("getActiveEditor", parameterTypes); - method.setAccessible(true); - Object[] params = new Object[0]; - result = method.invoke(editor, params); - } - catch (Exception ex) - { - throw new RuntimeException(ex); - } - } - }; - - editor.getSite().getShell().getDisplay().syncExec(runnable); - return (IEditorPart)runnable.getResult(); - } - - protected void setActivePage(final MultiPageEditorPart editor, final int i) throws SecurityException, - NoSuchMethodException, IllegalArgumentException, IllegalAccessException, InvocationTargetException - { - editor.getSite().getShell().getDisplay().syncExec(new Runnable() - { - public void run() - { - try - { - Class<?>[] parameterTypes = new Class[1]; - parameterTypes[0] = int.class; - - Class<?> superClass = getSuperClass(editor.getClass(), MultiPageEditorPart.class); - - Method method = superClass.getDeclaredMethod("setActivePage", parameterTypes); - - boolean accessible = method.isAccessible(); - method.setAccessible(true); - - Object[] params = new Object[1]; - params[0] = i; - method.invoke(editor, params); - method.setAccessible(accessible); - } - catch (Exception ex) - { - throw new RuntimeException(ex); - } - } - }); - } - - private Class<?> getSuperClass(Class<?> a, Class<?> b) - { - Class<?> ret = a; - while (ret != b && ret != Object.class) - { - ret = ret.getSuperclass(); - } - return ret; - } - - protected abstract class RunnableWithResult implements Runnable - { - protected Object result; - - public RunnableWithResult(Object result) - { - this.result = result; - } - - public abstract void run(); - - public Object getResult() - { - return result; - } - } - - private Method getMethod(final MultiPageEditorPart editor, String methodName, Class<?>[] parameterTypes) - throws NoSuchMethodException - { - Method method = null; - Class<?> clazz = editor.getClass(); - while (method == null && clazz != Object.class) - { - try - { - method = clazz.getDeclaredMethod(methodName, parameterTypes); - } - catch (NoSuchMethodException ex) - { - clazz = clazz.getSuperclass(); - } - } - return method; - } - - public void setText(final SWTBotTreeItem item, final String text) - { - MultiPageEditorPart editor = (MultiPageEditorPart)getReference().getEditor(false); - Display display = editor.getEditorSite().getShell().getDisplay(); - - display.asyncExec(new Runnable() - { - public void run() - { - item.widget.setData(text); - } - }); - } -} +/*
+ * Copyright (c) 2004 - 2012 Eike Stepper (Berlin, Germany) 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:
+ * Eike Stepper - initial API and implementation
+ */
+package org.eclipse.emf.cdo.dawn.tests.ui.util;
+
+import org.eclipse.jface.viewers.TreeViewer;
+import org.eclipse.jface.viewers.Viewer;
+import org.eclipse.swt.widgets.Control;
+import org.eclipse.swt.widgets.Display;
+import org.eclipse.swtbot.eclipse.finder.SWTWorkbenchBot;
+import org.eclipse.swtbot.eclipse.finder.widgets.SWTBotEditor;
+import org.eclipse.swtbot.eclipse.gef.finder.widgets.SWTBotGefContextMenu;
+import org.eclipse.swtbot.swt.finder.exceptions.WidgetNotFoundException;
+import org.eclipse.swtbot.swt.finder.widgets.SWTBotTree;
+import org.eclipse.swtbot.swt.finder.widgets.SWTBotTreeItem;
+import org.eclipse.ui.IEditorPart;
+import org.eclipse.ui.IEditorReference;
+import org.eclipse.ui.part.MultiPageEditorPart;
+
+import org.hamcrest.SelfDescribing;
+
+import java.lang.reflect.InvocationTargetException;
+import java.lang.reflect.Method;
+
+/**
+ * @author Martin Fluegge
+ */
+public class DawnSWTBotEMFEditor extends SWTBotEditor
+{
+ public DawnSWTBotEMFEditor(IEditorReference editorReference, SWTWorkbenchBot bot) throws WidgetNotFoundException
+ {
+ super(editorReference, bot);
+ }
+
+ public DawnSWTBotEMFEditor(IEditorReference editorReference, SWTWorkbenchBot bot, SelfDescribing description)
+ {
+ super(editorReference, bot, description);
+ }
+
+ /**
+ * return the tree of the EMF editor
+ */
+ public SWTBotTree getSelectionPageTree()
+ {
+ MultiPageEditorPart editor = (MultiPageEditorPart)getReference().getEditor(false);
+ SWTBotTree swtBotTree = null;
+ try
+ {
+ setActivePage(editor, 0);
+
+ TreeViewer viewer = (TreeViewer)getCurrentViewer();
+ swtBotTree = new SWTBotTree(viewer.getTree());
+ }
+ catch (Exception ex)
+ {
+ throw new RuntimeException(ex);
+ }
+
+ return swtBotTree;
+ }
+
+ public void setActivePage(int i)
+ {
+ MultiPageEditorPart editor = (MultiPageEditorPart)getReference().getEditor(false);
+ try
+ {
+ setActivePage(editor, i);
+ }
+ catch (Exception ex)
+ {
+ throw new RuntimeException(ex);
+ }
+ }
+
+ public DawnSWTBotEMFEditor clickContextMenu(Control control, String text) throws WidgetNotFoundException
+ {
+ new SWTBotGefContextMenu(control, text).click();
+ return this;
+ }
+
+ protected Object getSelectedPage(final MultiPageEditorPart editor)
+ {
+ Object ret = null;
+
+ RunnableWithResult runnable = new RunnableWithResult(ret)
+ {
+ @Override
+ public void run()
+ {
+ result = editor.getSelectedPage();
+ }
+ };
+ editor.getSite().getShell().getDisplay().syncExec(runnable);
+
+ return runnable.getResult();
+ }
+
+ public Viewer getCurrentViewer()
+ {
+ final MultiPageEditorPart editor = (MultiPageEditorPart)getReference().getEditor(false);
+
+ IEditorPart ret = null;
+
+ RunnableWithResult runnable = new RunnableWithResult(ret)
+ {
+
+ @Override
+ public void run()
+ {
+ try
+ {
+ Class<?>[] parameterTypes = new Class[0];
+ Method method = getMethod(editor, "getViewer", parameterTypes);
+ method.setAccessible(true);
+ Object[] params = new Object[0];
+ result = method.invoke(editor, params);
+ }
+ catch (Exception ex)
+ {
+ throw new RuntimeException(ex);
+ }
+ }
+ };
+
+ editor.getSite().getShell().getDisplay().syncExec(runnable);
+ return (Viewer)runnable.getResult();
+ }
+
+ protected IEditorPart getActiveEditor()
+ {
+ final MultiPageEditorPart editor = (MultiPageEditorPart)getReference().getEditor(false);
+
+ IEditorPart ret = null;
+
+ RunnableWithResult runnable = new RunnableWithResult(ret)
+ {
+ @Override
+ public void run()
+ {
+ try
+ {
+ Class<?>[] parameterTypes = new Class[0];
+
+ Class<?> superClass = getSuperClass(editor.getClass(), MultiPageEditorPart.class);
+
+ Method method = superClass.getDeclaredMethod("getActiveEditor", parameterTypes);
+ method.setAccessible(true);
+ Object[] params = new Object[0];
+ result = method.invoke(editor, params);
+ }
+ catch (Exception ex)
+ {
+ throw new RuntimeException(ex);
+ }
+ }
+ };
+
+ editor.getSite().getShell().getDisplay().syncExec(runnable);
+ return (IEditorPart)runnable.getResult();
+ }
+
+ protected void setActivePage(final MultiPageEditorPart editor, final int i) throws SecurityException,
+ NoSuchMethodException, IllegalArgumentException, IllegalAccessException, InvocationTargetException
+ {
+ editor.getSite().getShell().getDisplay().syncExec(new Runnable()
+ {
+ public void run()
+ {
+ try
+ {
+ Class<?>[] parameterTypes = new Class[1];
+ parameterTypes[0] = int.class;
+
+ Class<?> superClass = getSuperClass(editor.getClass(), MultiPageEditorPart.class);
+
+ Method method = superClass.getDeclaredMethod("setActivePage", parameterTypes);
+
+ boolean accessible = method.isAccessible();
+ method.setAccessible(true);
+
+ Object[] params = new Object[1];
+ params[0] = i;
+ method.invoke(editor, params);
+ method.setAccessible(accessible);
+ }
+ catch (Exception ex)
+ {
+ throw new RuntimeException(ex);
+ }
+ }
+ });
+ }
+
+ private Class<?> getSuperClass(Class<?> a, Class<?> b)
+ {
+ Class<?> ret = a;
+ while (ret != b && ret != Object.class)
+ {
+ ret = ret.getSuperclass();
+ }
+ return ret;
+ }
+
+ protected abstract class RunnableWithResult implements Runnable
+ {
+ protected Object result;
+
+ public RunnableWithResult(Object result)
+ {
+ this.result = result;
+ }
+
+ public abstract void run();
+
+ public Object getResult()
+ {
+ return result;
+ }
+ }
+
+ private Method getMethod(final MultiPageEditorPart editor, String methodName, Class<?>[] parameterTypes)
+ throws NoSuchMethodException
+ {
+ Method method = null;
+ Class<?> clazz = editor.getClass();
+ while (method == null && clazz != Object.class)
+ {
+ try
+ {
+ method = clazz.getDeclaredMethod(methodName, parameterTypes);
+ }
+ catch (NoSuchMethodException ex)
+ {
+ clazz = clazz.getSuperclass();
+ }
+ }
+ return method;
+ }
+
+ public void setText(final SWTBotTreeItem item, final String text)
+ {
+ MultiPageEditorPart editor = (MultiPageEditorPart)getReference().getEditor(false);
+ Display display = editor.getEditorSite().getShell().getDisplay();
+
+ display.asyncExec(new Runnable()
+ {
+ public void run()
+ {
+ item.widget.setData(text);
+ }
+ });
+ }
+}
|