blob: 92adb7be5dca94019dc7213a70431c6112053d06 [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.AClass;
import org.eclipse.emf.cdo.dawn.examples.acore.diagram.edit.parts.AClassAggregationsEditPart;
import org.eclipse.emf.cdo.dawn.examples.acore.diagram.edit.parts.AClassAssociationsEditPart;
import org.eclipse.emf.cdo.dawn.examples.acore.diagram.edit.parts.AClassCompositionsEditPart;
import org.eclipse.emf.cdo.dawn.examples.acore.diagram.edit.parts.AClassEditPart;
import org.eclipse.emf.cdo.dawn.examples.acore.diagram.edit.parts.AClassImplementedInterfacesEditPart;
import org.eclipse.emf.cdo.dawn.examples.acore.diagram.edit.parts.AClassSubClassesEditPart;
import org.eclipse.emf.cdo.dawn.examples.acore.diagram.edit.parts.AInterfaceEditPart;
import org.eclipse.emf.cdo.dawn.examples.acore.diagram.part.AcoreVisualIDRegistry;
import org.eclipse.emf.cdo.dawn.examples.acore.diagram.providers.AcoreElementTypes;
import org.eclipse.emf.cdo.dawn.examples.acore.diagram.providers.AcoreViewProvider;
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.draw2d.IFigure;
import org.eclipse.draw2d.LineBorder;
import org.eclipse.gef.EditPart;
import org.eclipse.gef.GraphicalEditPart;
import org.eclipse.gmf.runtime.diagram.core.providers.IViewProvider;
import org.eclipse.gmf.runtime.notation.Diagram;
import org.eclipse.gmf.runtime.notation.Edge;
import org.eclipse.gmf.runtime.notation.Node;
import org.eclipse.gmf.runtime.notation.datatype.RelativeBendpoint;
import org.eclipse.swt.graphics.Color;
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.List;
/**
* @author Martin Fluegge
*/
public class DawnAcoreTestUtil
{
public static final String A_CLASS = "AClass";
public static final String A_INTERFACE = "AInterface";
public static final String A_ATTRIBUTE = "AAttribute";
public static final String A_OPERATION = "AOperation";
public static final String CONNECTION_IHERITS = "inherits";
public static final String CONNECTION_IMPLEMENTS = "implements";
public static final String CONNECTION_ASSOCIATION = "association";
public static final String CONNECTION_AGGREGATION = "aggregation";
public static final String CONNECTION_COMPOSITION = "composition";
public static final String CREATION_WIZARD_NAME_GMF = "Dawn Acore Diagram";
public static final String CREATION_WIZARD_NAME_EMF = "Dawn Acore Model";
private static IViewProvider viewProvider = new AcoreViewProvider();
private static String resourceFieldLabel = org.eclipse.emf.cdo.dawn.ui.messages.Messages.DawnCreateNewResourceWizardPage_6;
public static SWTBotGefEditor openNewAcoreGMFEditor(String diagramResourceName, SWTGefBot bot)
{
return openNewAcoreGMFEditor(diagramResourceName, diagramResourceName.replace("_diagram", ""), bot);
}
public static SWTBotGefEditor openNewAcoreGMFEditor(String diagramResourceName, String semanticResource,
SWTGefBot bot)
{
bot.menu("File").menu("New").menu("Other...").click();
SWTBotShell shell = bot.shell("New");
shell.activate();
bot.tree().expandNode("Dawn Examples").select("Dawn Acore Diagram");
bot.button("Next >").click();
shell.activate();
SWTBotText fileNameLabel = bot.textWithLabel(resourceFieldLabel);
fileNameLabel.setText(diagramResourceName);
bot.button("Next >").click();
SWTBotText fileSemanticNameLabel = bot.textWithLabel(resourceFieldLabel);
fileSemanticNameLabel = bot.textWithLabel(resourceFieldLabel);
fileSemanticNameLabel.setText(semanticResource);
fileSemanticNameLabel = bot.textWithLabel(resourceFieldLabel);
bot.button("Finish").click();
SWTBotGefEditor editor = bot.gefEditor(diagramResourceName);
return editor;
}
public static DawnSWTBotEMFEditor openAcoreEMFEditor(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 openNewAcoreEMFEditor(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(DawnAcoreTestUtil.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("ACore Root");
bot.button("Finish").click();
return bot.emfEditor(resourceName);
}
public static List<SWTBotGefEditPart> getAClassEditParts(SWTBotGefEditor editor)
{
List<SWTBotGefEditPart> editParts = editor.editParts(new AbstractMatcher<AClassEditPart>()
{
@Override
protected boolean doMatch(Object item)
{
return item instanceof AClassEditPart;
}
public void describeTo(Description description)
{
}
});
return editParts;
}
public static List<SWTBotGefEditPart> getAInterfaceEditParts(SWTBotGefEditor editor)
{
List<SWTBotGefEditPart> editParts = editor.editParts(new AbstractMatcher<AInterfaceEditPart>()
{
@Override
protected boolean doMatch(Object item)
{
return item instanceof AInterfaceEditPart;
}
public void describeTo(Description description)
{
}
});
return editParts;
}
public static List<SWTBotGefEditPart> getAClassAssociationsEditParts(SWTBotGefEditor editor)
{
List<SWTBotGefEditPart> editParts = getAClassEditParts(editor);
return DawnSWTBotUtil.getConnectionEditParts(editor, AClassAssociationsEditPart.class, editParts);
}
public static Node createNewAClassRemote(Diagram diagram, AClass newAClass)
{
String type = AcoreVisualIDRegistry.getType(AClassEditPart.VISUAL_ID);
return DawnSWTBotUtil.createNewNodeRemote(diagram, newAClass, type);
}
// public static Edge createNewAssociationRemote(Node source, Node target)
// {
// String type = AcoreVisualIDRegistry.getType(AClassAssociationsEditPart.VISUAL_ID);
// Edge newEdge = DawnSWTBotUtil.createEdgeRemote(source, target, type);
// return newEdge;
// }
public static Edge createNewAssociationRemote(Node source, Node target, List<RelativeBendpoint> bendpoints)
{
String type = AcoreVisualIDRegistry.getType(AClassAssociationsEditPart.VISUAL_ID);
return DawnSWTBotUtil.createEdgeRemote(source, target, type, AcoreElementTypes.AClassAssociations_4003, bendpoints,
viewProvider);
}
public static Edge createNewImplementsRelationRemote(Node source, Node target, List<RelativeBendpoint> bendpoints)
{
String type = AcoreVisualIDRegistry.getType(AClassImplementedInterfacesEditPart.VISUAL_ID);
return DawnSWTBotUtil.createEdgeRemote(source, target, type, AcoreElementTypes.AClassImplementedInterfaces_4002,
bendpoints, viewProvider);
}
public static Edge createNewInheritanceRelationRemote(Node source, Node target, List<RelativeBendpoint> bendpoints)
{
String type = AcoreVisualIDRegistry.getType(AClassSubClassesEditPart.VISUAL_ID);
return DawnSWTBotUtil.createEdgeRemote(source, target, type, AcoreElementTypes.AClassSubClasses_4001, bendpoints,
viewProvider);
}
public static Edge createNewCompositionRemote(Node source, Node target, List<RelativeBendpoint> bendpoints)
{
String type = AcoreVisualIDRegistry.getType(AClassCompositionsEditPart.VISUAL_ID);
return DawnSWTBotUtil.createEdgeRemote(source, target, type, AcoreElementTypes.AClassCompositions_4005, bendpoints,
viewProvider);
}
public static Edge createNewAggregationRemote(Node source, Node target, List<RelativeBendpoint> bendpoints)
{
String type = AcoreVisualIDRegistry.getType(AClassAggregationsEditPart.VISUAL_ID);
return DawnSWTBotUtil.createEdgeRemote(source, target, type, AcoreElementTypes.AClassAggregations_4004, bendpoints,
viewProvider);
}
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 Object showsLock(EditPart editPart, Color lockColor)
{
if (editPart instanceof AClassEditPart || editPart instanceof AInterfaceEditPart)
{
GraphicalEditPart e = (GraphicalEditPart)editPart;
IFigure figure = e.getFigure();
return ((LineBorder)figure.getBorder()).getColor().equals(lockColor);
}
return false;
}
public static Object showsNoLock(EditPart editPart)
{
if (editPart instanceof AClassEditPart || editPart instanceof AInterfaceEditPart)
{
GraphicalEditPart e = (GraphicalEditPart)editPart;
IFigure figure = e.getFigure();
Color color = ((LineBorder)figure.getBorder()).getColor();
return !(color.equals(DawnColorConstants.COLOR_LOCKED_REMOTELY)
&& color.equals(DawnColorConstants.COLOR_LOCKED_LOCALLY));
}
return false;
}
}