Called when node selection changes.
Receives the full set of currently selected node IDs.
void onSelectionChanged(Set<String> selectedNodeIds) { // Default: no-op }