Search in sources :

Example 1 with Edge

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);
    }
}
Also used : ILeafNode(org.eclipse.xtext.nodemodel.ILeafNode) ICompositeNode(org.eclipse.xtext.nodemodel.ICompositeNode) Node(org.eclipse.n4js.smith.ui.graph.Node) EObject(org.eclipse.emf.ecore.EObject) Edge(org.eclipse.n4js.smith.ui.graph.Edge)

Example 2 with 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);
    }
}
Also used : EObject(org.eclipse.emf.ecore.EObject) ILeafNode(org.eclipse.xtext.nodemodel.ILeafNode) ICompositeNode(org.eclipse.xtext.nodemodel.ICompositeNode) Node(org.eclipse.n4js.smith.ui.graph.Node) Edge(org.eclipse.n4js.smith.ui.graph.Edge)

Example 3 with 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;
}
Also used : EObject(org.eclipse.emf.ecore.EObject) ArrayList(java.util.ArrayList) Resource(org.eclipse.emf.ecore.resource.Resource) EObject(org.eclipse.emf.ecore.EObject) Edge(org.eclipse.n4js.smith.ui.graph.Edge)

Example 4 with Edge

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;
}
Also used : ControlFlowElement(org.eclipse.n4js.n4JS.ControlFlowElement) Edge(org.eclipse.n4js.smith.ui.graph.Edge) CFEdge(org.eclipse.n4js.smith.ui.graph.CFEdge) FlowEdge(org.eclipse.n4js.flowgraphs.FlowEdge)

Example 5 with Edge

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);
    }
}
Also used : ILeafNode(org.eclipse.xtext.nodemodel.ILeafNode) ICompositeNode(org.eclipse.xtext.nodemodel.ICompositeNode) Node(org.eclipse.n4js.smith.ui.graph.Node) EObject(org.eclipse.emf.ecore.EObject) ArrayList(java.util.ArrayList) Collection(java.util.Collection) EObject(org.eclipse.emf.ecore.EObject) Edge(org.eclipse.n4js.smith.ui.graph.Edge)

Aggregations

Edge (org.eclipse.n4js.smith.ui.graph.Edge)6 EObject (org.eclipse.emf.ecore.EObject)5 Node (org.eclipse.n4js.smith.ui.graph.Node)4 ICompositeNode (org.eclipse.xtext.nodemodel.ICompositeNode)4 ILeafNode (org.eclipse.xtext.nodemodel.ILeafNode)4 ArrayList (java.util.ArrayList)2 Collection (java.util.Collection)2 EReference (org.eclipse.emf.ecore.EReference)1 Resource (org.eclipse.emf.ecore.resource.Resource)1 FlowEdge (org.eclipse.n4js.flowgraphs.FlowEdge)1 ControlFlowElement (org.eclipse.n4js.n4JS.ControlFlowElement)1 CFEdge (org.eclipse.n4js.smith.ui.graph.CFEdge)1