blob: 91754768a6ea7aa86f0d11f4ed252e638b8bc0ff [file] [log] [blame]
/*
* Copyright (c) 2010-2012, 2015 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.emf.cdo.dawn.examples.acore.diagram.edit.parts.AClassEditPart;
import org.eclipse.emf.cdo.dawn.examples.acore.diagram.edit.parts.AInterfaceEditPart;
import org.eclipse.emf.cdo.dawn.ui.DawnColorConstants;
import org.eclipse.emf.cdo.dawn.ui.DawnEditorInput;
import org.eclipse.emf.cdo.dawn.ui.helper.EditorDescriptionHelper;
import org.eclipse.emf.common.util.URI;
import org.eclipse.emf.ecoretools.diagram.edit.parts.EClassEditPart;
import org.eclipse.draw2d.IFigure;
import org.eclipse.draw2d.LineBorder;
import org.eclipse.gef.EditPart;
import org.eclipse.gef.GraphicalEditPart;
import org.eclipse.swtbot.eclipse.gef.finder.SWTGefBot;
import org.eclipse.swtbot.eclipse.gef.finder.widgets.SWTBotGefEditPart;
import org.eclipse.swtbot.eclipse.gef.finder.widgets.SWTBotGefEditor;
import org.eclipse.swtbot.swt.finder.finders.UIThreadRunnable;
import org.eclipse.swtbot.swt.finder.matchers.AbstractMatcher;
import org.eclipse.swtbot.swt.finder.results.VoidResult;
import org.eclipse.swtbot.swt.finder.widgets.SWTBotCombo;
import org.eclipse.swtbot.swt.finder.widgets.SWTBotShell;
import org.eclipse.swtbot.swt.finder.widgets.SWTBotText;
import org.eclipse.ui.PartInitException;
import org.eclipse.ui.PlatformUI;
import org.hamcrest.Description;
import java.util.ArrayList;
import java.util.List;
/**
* @author Martin Fluegge
*/
public class DawnEcoreTestUtil
{
public static final String CREATION_WIZARD_NAME_GMF = "Dawn Ecore Diagram";
public static final String CREATION_WIZARD_NAME_EMF = "Dawn Ecore Model";
public static final String E_CLASS = "EClass";
public static final String E_REFERENCE = "EReference";
public static final String E_ATTRIBUTE = "EAttribute";
public static final String E_OPERATION = "EOperation";
public static final String INHERITANCE = "Inheritance";
public static final String E_DATATYPE = "EDataType";
public static final String E_PACKAGE = "EPackage";
public static final String E_ANNOTATION = "EAnnotation";
public static final String E_ENUM = "EEnum";
public static final String E_ANNOTATION_LINK = "EAnnotation link";
public static final String DETAILS_ENTRY = "Details Entry";
private static String resourceFieldLabel = org.eclipse.emf.cdo.dawn.ui.messages.Messages.DawnCreateNewResourceWizardPage_6;
public static SWTBotGefEditor openNewEcoreToolsEditor(String diagramResourceName, SWTGefBot bot)
{
bot.menu("File").menu("New").menu("Other...").click();
SWTBotShell shell = bot.shell("New");
shell.activate();
bot.tree().expandNode("Dawn Examples").select(DawnEcoreTestUtil.CREATION_WIZARD_NAME_GMF);
bot.button("Next >").click();
bot.button("Finish").click();
SWTBotGefEditor editor = bot.gefEditor("default");
return editor;
}
public static DawnSWTBotEMFEditor openEcoreEMFEditor(URI resourceURI, DawnEMFEditorBot bot)
{
String resourceName = resourceURI.lastSegment();
final String editorID = EditorDescriptionHelper.getEditorIdForDawnEditor(resourceName);
final DawnEditorInput editorInput = new DawnEditorInput(resourceURI);
UIThreadRunnable.asyncExec(new VoidResult()
{
public void run()
{
try
{
PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().getActivePart().getSite().getPage()
.openEditor(editorInput, editorID);
}
catch (PartInitException ex)
{
throw new RuntimeException(ex);
}
}
});
return bot.emfEditor(resourceName);
}
public static DawnSWTBotEMFEditor openNewEcoreEMFEditor(String resourceName, DawnEMFEditorBot bot)
{
bot.menu("File").menu("New").menu("Other...").click();
SWTBotShell shell = bot.shell("New");
shell.activate();
bot.tree().expandNode("Dawn Examples").select(DawnEcoreTestUtil.CREATION_WIZARD_NAME_EMF);
bot.button("Next >").click();
shell = bot.shell("New");
shell.activate();
SWTBotText fileSemanticNameLabel = bot.textWithLabel(resourceFieldLabel);
fileSemanticNameLabel.setText(resourceName);
bot.button("Next >").click();
SWTBotCombo comboBox = bot.comboBox(0);// bot.ccomboBox(0);
comboBox.setFocus();
comboBox.setSelection("EPackage");
bot.button("Finish").click();
return bot.emfEditor(resourceName);
}
// public static List<SWTBotGefEditPart> getEClassEditParts(SWTBotGefEditor editor)
// {
// List<SWTBotGefEditPart> editParts = editor.editParts(new AbstractMatcher<EClassEditPart>()
// {
// @Override
// protected boolean doMatch(Object item)
// {
// return item instanceof AClassEditPart;
// }
//
// public void describeTo(Description description)
// {
// }
// });
// return editParts;
// }
public static void sleep(int seconds)
{
try
{
Thread.sleep(seconds);
}
catch (InterruptedException ex)
{
throw new RuntimeException(ex);
}
}
public static boolean showsConflict(EditPart editPart)
{
if (editPart instanceof AClassEditPart || editPart instanceof AInterfaceEditPart)
{
GraphicalEditPart e = (GraphicalEditPart)editPart;
IFigure figure = e.getFigure();
return ((LineBorder)figure.getBorder()).getColor().equals(DawnColorConstants.COLOR_DELETE_CONFLICT);
}
return false;
}
public static List<SWTBotGefEditPart> getAllConnections(final SWTBotGefEditor editor)
{
List<SWTBotGefEditPart> aClassEditParts = editor.editParts(new AbstractMatcher<AClassEditPart>()
{
@Override
protected boolean doMatch(Object item)
{
if (item instanceof EClassEditPart)
{
return true;
}
return false;
}
public void describeTo(Description description)
{
}
});
List<SWTBotGefEditPart> ret = new ArrayList<SWTBotGefEditPart>();
for (SWTBotGefEditPart editPart : aClassEditParts)
{
ret.addAll(editPart.sourceConnections());
}
for (SWTBotGefEditPart editPart : aClassEditParts)
{
ret.addAll(editPart.targetConnections());
}
return ret;
}
public static List<SWTBotGefEditPart> getAllSourceConnections(final SWTBotGefEditor editor)
{
List<SWTBotGefEditPart> aClassEditParts = editor.editParts(new AbstractMatcher<AClassEditPart>()
{
@Override
protected boolean doMatch(Object item)
{
if (item instanceof EClassEditPart)
{
return true;
}
return false;
}
public void describeTo(Description description)
{
}
});
List<SWTBotGefEditPart> ret = new ArrayList<SWTBotGefEditPart>();
for (SWTBotGefEditPart editPart : aClassEditParts)
{
ret.addAll(editPart.sourceConnections());
}
return ret;
}
public static List<SWTBotGefEditPart> getAllTargetConnections(final SWTBotGefEditor editor)
{
List<SWTBotGefEditPart> aClassEditParts = editor.editParts(new AbstractMatcher<AClassEditPart>()
{
@Override
protected boolean doMatch(Object item)
{
if (item instanceof EClassEditPart)
{
return true;
}
return false;
}
public void describeTo(Description description)
{
}
});
List<SWTBotGefEditPart> ret = new ArrayList<SWTBotGefEditPart>();
for (SWTBotGefEditPart editPart : aClassEditParts)
{
ret.addAll(editPart.targetConnections());
}
return ret;
}
}