protected List <XControl> FindControls(Control seed, bool searchOnly, StringBuilder sb, List <Icon> icons)
{
if (seed == null)
{
return(null);
}
ResourceManager manager = ResourceManager.GetInstance(HttpContext.Current);
if (icons == null)
{
icons = new List <Icon>();
}
if (sb != null && !searchOnly && manager != null)
{
try
{
List <UserControl> userControls = ControlUtils.FindControls <UserControl>(this.Control);
foreach (UserControl userControl in userControls)
{
manager.AddDirectMethodControl(userControl, true);
}
string proxies = manager.BuildDirectMethodProxies(true);
foreach (UserControl userControl in userControls)
{
manager.RemoveDirectMethodControl(userControl, true);
}
if (!string.IsNullOrEmpty(proxies))
{
sb.Append(proxies);
}
}
catch (Exception e)
{
}
}
if (ReflectionUtils.IsTypeOf(seed, typeof(XControl), false))
{
XControl ctrl = (XControl)seed;
if (!searchOnly)
{
this.CheckIcon(ctrl, icons);
this.CheckResources(ctrl);
}
ctrl.IsDynamic = true;
ctrl.EnsureChildControlsInternal();
if (!searchOnly)
{
ctrl.CallOnPreRender();
ctrl.RegisterStyles(manager);
ctrl.RegisterScripts(manager);
}
}
List <XControl> foundControls = new List <XControl>();
foreach (Control control in seed.Controls)
{
if (this.ExcludeControl(seed, control))
{
continue;
}
if (ReflectionUtils.IsTypeOf(control, typeof(XControl), false))
{
XControl ctrl = (XControl)control;
if (!searchOnly)
{
this.CheckIcon(ctrl, icons);
this.CheckResources(ctrl);
}
foundControls.Add(ctrl);
ctrl.IsDynamic = true;
ctrl.EnsureChildControlsInternal();
if (!searchOnly)
{
ctrl.CallOnPreRender();
ctrl.RegisterStyles(manager);
ctrl.RegisterScripts(manager);
}
}
if (ControlUtils.HasControls(control))
{
foundControls.AddRange(this.FindControls(control, searchOnly, null, icons));
}
}
if (sb != null && !searchOnly && icons.Count > 0)
{
string[] arr = new string[icons.Count];
for (int i = 0; i < icons.Count; i++)
{
arr[i] = icons[i].ToString();
}
sb.Append("Ext.net.ResourceMgr.registerIcon(");
sb.Append(JSON.Serialize(arr));
sb.Append(");");
sb.Append(script);
}
return(foundControls);
}