public List <Widget> FindWidgetsByClass(string className) { List <Widget> widgets = new List <Widget>(); foreach (Widget widget in _widgets) { if (widget.Classes.Contains(className)) { widgets.Add(widget); } IParentWidget parent = widget as IParentWidget; if (parent != null) { widgets.AddRange(parent.FindWidgetsByClass(className)); } } return(widgets); }
public ISelectableWidget FindSelectedWidget() { foreach (Widget widget in _widgets) { ISelectableWidget selectableWidget = widget as ISelectableWidget; if (selectableWidget != null && selectableWidget.isSelected) { return(selectableWidget); } IParentWidget parentWidget = widget as IParentWidget; if (parentWidget != null) { ISelectableWidget resultWidget = parentWidget.FindSelectedWidget(); if (resultWidget != null) { return(resultWidget); } } } return(null); }