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));
}
Aggregations