Search in sources :

Example 1 with GroupNodesAddedEvent

use of org.cytoscape.group.events.GroupNodesAddedEvent in project cytoscape-impl by cytoscape.

the class CyGroupImpl method addNodes.

/**
 * @see org.cytoscape.group.CyGroup#addNodes()
 */
@Override
public void addNodes(List<CyNode> nodes) {
    synchronized (lock) {
        // printGroup();
        for (CyNode n : nodes) {
            if (!rootNetwork.containsNode(n))
                throwIllegalArgumentException("Can only add a node in the same network tree");
            addNode(n);
            List<CyEdge> adjacentEdges = new ArrayList<CyEdge>(rootNetwork.getAdjacentEdgeList(n, CyEdge.Type.ANY));
            for (CyEdge edge : adjacentEdges) {
                // System.out.println("Looking at edge: "+edge);
                final CyNode source = edge.getSource();
                final CyNode target = edge.getTarget();
                if (metaEdges.containsValue(edge)) {
                    rootNetwork.removeEdges(Collections.singletonList(edge));
                    continue;
                }
                if (getGroupNetwork().containsNode(source) && getGroupNetwork().containsNode(target)) {
                    addInternalEdge(edge);
                    if (externalEdges.contains(edge)) {
                        // This was an external edge, now it's internal
                        externalEdges.remove(edge);
                    }
                } else if (groupNode != null && (source.equals(groupNode) || target.equals(groupNode)) && !isMeta(edge)) {
                    // System.out.println("Adding "+edge+" as member edge");
                    addMemberEdge(edge);
                } else {
                    addExternalEdge(edge);
                }
            }
        }
        updateMetaEdges(false);
        for (CyNetwork net : networkSet) {
            updateCountAttributes(net);
        }
    // System.out.println("Added nodes: "+nodes+" to group "+this.toString());
    // printGroup();
    }
    cyEventHelper.flushPayloadEvents();
    cyEventHelper.fireEvent(new GroupNodesAddedEvent(CyGroupImpl.this, nodes));
}
Also used : ArrayList(java.util.ArrayList) CyNetwork(org.cytoscape.model.CyNetwork) CyNode(org.cytoscape.model.CyNode) GroupNodesAddedEvent(org.cytoscape.group.events.GroupNodesAddedEvent) CyEdge(org.cytoscape.model.CyEdge)

Aggregations

ArrayList (java.util.ArrayList)1 GroupNodesAddedEvent (org.cytoscape.group.events.GroupNodesAddedEvent)1 CyEdge (org.cytoscape.model.CyEdge)1 CyNetwork (org.cytoscape.model.CyNetwork)1 CyNode (org.cytoscape.model.CyNode)1