use of org.eclipse.n4js.smith.ui.graph.Edge in project n4js by eclipse.
the class ASTGraphProvider method getConnectedEdgesForEObjectSingleCase.
private void getConnectedEdgesForEObjectSingleCase(Node node, final List<Node> allNodes, final List<Edge> result, EReference currRef, final Object target) {
final Node targetNode = GraphUtils.getNodeForElement(target, allNodes);
final String targetNodeExternal;
if (targetNode == null && ((EObject) target).eIsProxy())
targetNodeExternal = EcoreUtil.getURI((EObject) target).toString();
else
targetNodeExternal = null;
if (targetNode != null || targetNodeExternal != null) {
Edge edge = new Edge(currRef.getName(), !currRef.isContainment(), node, asCollection(targetNode), asCollection(targetNodeExternal));
result.add(edge);
}
}
use of org.eclipse.n4js.smith.ui.graph.Edge in project n4js by eclipse.
the class ASTGraphProvider method getConnectedEdgesForResource.
private void getConnectedEdgesForResource(Node node, final List<Node> allNodes, final List<Edge> result, final Resource res) {
final List<EObject> targets = getContentsNoResolve(res);
final List<Node> targetNodes = GraphUtils.getNodesForElements(targets, allNodes);
if (!targetNodes.isEmpty()) {
Edge edge = new Edge("contents", false, node, targetNodes, Collections.emptyList());
result.add(edge);
}
}
use of org.eclipse.n4js.smith.ui.graph.Edge in project n4js by eclipse.
the class ASTGraphProvider method getConnectedEdges.
@Override
public List<Edge> getConnectedEdges(Node node, final List<Node> allNodes) {
final List<Edge> result = new ArrayList<>();
final Object element = node.getElement();
if (element instanceof Resource) {
getConnectedEdgesForResource(node, allNodes, result, (Resource) element);
} else if (element instanceof EObject) {
getConnectedEdgesForEObject(node, allNodes, result, (EObject) element);
}
return result;
}
use of org.eclipse.n4js.smith.ui.graph.Edge in project n4js by eclipse.
the class CFGraphProvider method getConnectedEdges.
@Override
public List<Edge> getConnectedEdges(Node node, List<Node> allNodes) {
ControlFlowElement cfe = (ControlFlowElement) node.getElement();
List<Edge> succs = edgesMap.get(cfe);
if (succs == null) {
return Collections.emptyList();
}
return succs;
}
use of org.eclipse.n4js.smith.ui.graph.Edge in project n4js by eclipse.
the class ASTGraphProvider method getConnectedEdgesForEObjectManyCase.
private void getConnectedEdgesForEObjectManyCase(Node node, final List<Node> allNodes, final List<Edge> result, EReference currRef, final Object targets) {
final List<Node> targetNodes = new ArrayList<>();
final List<String> targetNodesExternal = new ArrayList<>();
for (Object currTarget : (Collection<?>) targets) {
final Node currTargetNode = GraphUtils.getNodeForElement(currTarget, allNodes);
if (currTargetNode != null)
targetNodes.add(currTargetNode);
else if (currTarget instanceof EObject && ((EObject) currTarget).eIsProxy())
targetNodesExternal.add(EcoreUtil.getURI((EObject) currTarget).toString());
}
if (!targetNodes.isEmpty() || !targetNodesExternal.isEmpty()) {
Edge edge = new Edge(currRef.getName(), !currRef.isContainment(), node, targetNodes, targetNodesExternal);
result.add(edge);
}
}
Aggregations