Представленное свойство openNodes: IHierarchicalCollectionView, кажется, то, что я искал. Передача корневого узла этому, кажется, делает свое дело. Я уверен, что есть более элегантный способ написать это; -)
function recurse(o:Object):uint
{
// grab the general list, for commodity
var view:IHierarchicalCollectionView = adg.dataProvider as IHierarchicalCollectionView;
// I count as 1 if we're recursing through me
var total:uint = 1;
// check if I'm open
for each (var e:Object in view.openNodes)
{
if (e == o)
{
// if so I need to add my children and their families
for each (var c:Object in o.children)
total += recurse(c);
}
}
// if not I'm done, just counting myself
return total
}
Примечание: мне показалось интересным то, что openNodes возвращает список открытых узлов, даже если они не видны, как в случае таких узлов, живущих внутри закрытого узла.