/**
* <copyright>
* Copyright (c) 2010-2014 Henshin developers. 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
* </copyright>
*/
package org.eclipse.emf.henshin.model.actions;
import java.util.List;
import org.eclipse.emf.henshin.model.Action;
import org.eclipse.emf.henshin.model.Edge;
import org.eclipse.emf.henshin.model.Graph;
import org.eclipse.emf.henshin.model.HenshinPackage;
import org.eclipse.emf.henshin.model.MappingList;
import org.eclipse.emf.henshin.model.Rule;
public class EdgeActionHelper extends GenericActionHelper<Edge,Rule> {
/**
* Static instance.
*/
public static final EdgeActionHelper INSTANCE = new EdgeActionHelper();
/*
* (non-Javadoc)
* @see org.eclipse.emf.henshin.diagram.edit.actions.ActionHelper#getActionElements(java.lang.Object, org.eclipse.emf.henshin.diagram.edit.actions.Action)
*/
public List<Edge> getActionElements(Rule rule, Action action) {
List<Edge> candidates = ActionElementFinder.getRuleElementCandidates(rule, action, HenshinPackage.eINSTANCE.getGraph_Edges());
return filterElementsByAction(candidates, action);
}
/*
* (non-Javadoc)
* @see org.eclipse.emf.henshin.diagram.edit.actions.AbstractActionHelper#getMapEditor(org.eclipse.emf.henshin.model.Graph)
*/
@Override
protected MapEditor<Edge> getMapEditor(Graph target) {
return new EdgeMapEditor(target);
}
/*
* (non-Javadoc)
* @see org.eclipse.emf.henshin.diagram.edit.actions.AbstractActionHelper#getMapEditor(org.eclipse.emf.henshin.model.Graph, org.eclipse.emf.henshin.model.Graph, java.util.List)
*/
@Override
protected MapEditor<Edge> getMapEditor(Graph source, Graph target, MappingList mappings) {
return new EdgeMapEditor(source, target, mappings);
}
/**
* For an arbitrary edge in a rule graph, find the corresponding action edge.
* @param edge Some edge.
* @return The corresponding action edge.
*/
public Edge getActionEdge(Edge edge) {
return ActionElementFinder.getActionElement(edge, INSTANCE);
}
}