private void CollectCachesToRefresh(Control c, HashSet<IRefreshCache> cacheCollector, HashSet<RecordClerk> clerkCollector)
{
var rootSite = c as IVwRootSite;
if (rootSite != null && rootSite.RootBox != null)
{
var sda = rootSite.RootBox.DataAccess;
while (sda != null)
{
if (sda is IRefreshCache)
cacheCollector.Add((IRefreshCache)sda);
if (sda is DomainDataByFlidDecoratorBase)
sda = ((DomainDataByFlidDecoratorBase)sda).BaseSda;
else
break;
}
}
var clerkView = c as XWorksViewBase;
if (clerkView != null && clerkView.ExistingClerk != null)
clerkCollector.Add(clerkView.ExistingClerk);
foreach (Control child in c.Controls)
CollectCachesToRefresh(child, cacheCollector, clerkCollector);
}