private void UpdateAllWidgets(params Type[] filterDependencyTypes)
{
if (WidgetGroups == null || WidgetGroups.None())
{
// Widget Groups have not yet been initialised and persistent state has not yet been loaded.
return;
}
if (filterDependencyTypes != null && filterDependencyTypes.Length > 0)
{
// targeted update
List<Widget> affectedWidgets = WidgetGroups.SelectMany(group => group.Widgets)
.Where(w => w.Dependencies.Any(filterDependencyTypes.Contains))
.ToList();
affectedWidgets.ForEach(UpdateWidget);
}
else
{
// update all
WidgetGroups.SelectMany(group => group.Widgets).ToList().ForEach(UpdateWidget);
}
}