SIL.FieldWorks.XWorks.FwXWindow.CollectCachesToRefresh C# (CSharp) Method

CollectCachesToRefresh() private method

Collect refreshable caches from the specified control and its subcontrols. We currently handle controls that are rootsites, and check their own SDAs as well as any base SDAs that those SDAs wrap.
private CollectCachesToRefresh ( Control c, HashSet cacheCollector, HashSet clerkCollector ) : void
c System.Windows.Forms.Control
cacheCollector HashSet
clerkCollector HashSet
return void
		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);
		}
FwXWindow