selectNodes method
Selects multiple nodes in the graph.
Automatically clears selections of other element types (connections, annotations).
Example:
// Replace selection with multiple nodes
controller.selectNodes(['node1', 'node2', 'node3']);
// Toggle multiple nodes (for multi-select)
controller.selectNodes(['node4', 'node5'], toggle: true);
Implementation
void selectNodes(List<String> nodeIds, {bool toggle = false}) {
runInAction(() {
// Clear other element types' selections
clearConnectionSelection();
annotations.clearAnnotationSelection();
if (toggle) {
for (final nodeId in nodeIds) {
final node = _nodes[nodeId];
if (node != null) {
if (_selectedNodeIds.contains(nodeId)) {
_selectedNodeIds.remove(nodeId);
node.selected.value = false;
} else {
_selectedNodeIds.add(nodeId);
node.selected.value = true;
}
}
}
} else {
clearNodeSelection();
for (final nodeId in nodeIds) {
_selectedNodeIds.add(nodeId);
final node = _nodes[nodeId];
if (node != null) {
node.selected.value = true;
}
}
}
});
if (!canvasFocusNode.hasFocus) {
canvasFocusNode.requestFocus();
}
}