BuildObject() private method

private BuildObject ( ) : object
return object
 private void ApplyTemplateProperties(Control control)
 {
     object[] parameters = new object[1];
     foreach (TemplatePropertyEntry entry in base.GetFilteredPropertyEntrySet(this._skinBuilder.TemplatePropertyEntries))
     {
         try
         {
             if (FastPropertyAccessor.GetProperty(control, entry.Name, base.InDesigner) == null)
             {
                 ControlBuilder builder = entry.Builder;
                 builder.SetServiceProvider(base.ServiceProvider);
                 try
                 {
                     object obj3 = builder.BuildObject(true);
                     parameters[0] = obj3;
                 }
                 finally
                 {
                     builder.SetServiceProvider(null);
                 }
                 Util.InvokeMethod(entry.PropertyInfo.GetSetMethod(), control, parameters);
             }
         }
         catch (Exception)
         {
         }
         catch
         {
         }
     }
 }
        public ThemeProvider(IDesignerHost host, string name, string themeDefinition, string[] cssFiles, string themePath)
        {
            this._themeName = name;
            this._themePath = themePath;
            this._cssFiles  = cssFiles;
            this._host      = host;
            ControlBuilder builder = DesignTimeTemplateParser.ParseTheme(host, themeDefinition, themePath);

            this._contentHashCode = themeDefinition.GetHashCode();
            ArrayList subBuilders = builder.SubBuilders;

            this._skinBuilders = new Hashtable();
            for (int i = 0; i < subBuilders.Count; i++)
            {
                ControlBuilder builder2 = subBuilders[i] as ControlBuilder;
                if (builder2 != null)
                {
                    IDictionary dictionary = this._skinBuilders[builder2.ControlType] as IDictionary;
                    if (dictionary == null)
                    {
                        dictionary = new SortedList(StringComparer.OrdinalIgnoreCase);
                        this._skinBuilders[builder2.ControlType] = dictionary;
                    }
                    Control control = builder2.BuildObject() as Control;
                    if (control != null)
                    {
                        dictionary[control.SkinID] = builder2;
                    }
                }
            }
        }
Example #3
0
        private void ApplyTemplateProperties(Control control)
        {
            object[]    parameters = new object[1];
            ICollection entries    = GetFilteredPropertyEntrySet(_skinBuilder.TemplatePropertyEntries);

            foreach (TemplatePropertyEntry entry in entries)
            {
                try {
                    object originalValue = FastPropertyAccessor.GetProperty(control, entry.Name, InDesigner);
                    if (originalValue == null)
                    {
                        ControlBuilder controlBuilder = ((TemplatePropertyEntry)entry).Builder;
                        controlBuilder.SetServiceProvider(ServiceProvider);
                        try {
                            object objectValue = controlBuilder.BuildObject(true);
                            parameters[0] = objectValue;
                        }
                        finally {
                            controlBuilder.SetServiceProvider(null);
                        }

                        MethodInfo methodInfo = entry.PropertyInfo.GetSetMethod();
                        Util.InvokeMethod(methodInfo, control, parameters);
                    }
                }
                catch (Exception e) {
                    Debug.Fail(e.Message);
                }
#pragma warning disable 1058
                catch {
                }
#pragma warning restore 1058
            }
        }
Example #4
0
        public ThemeProvider(IDesignerHost host, string name, string themeDefinition, string[] cssFiles, string themePath)
        {
            _themeName = name;
            _themePath = themePath;
            _cssFiles  = cssFiles;
            _host      = host;

            ControlBuilder themeBuilder = DesignTimeTemplateParser.ParseTheme(host, themeDefinition, themePath);

            _contentHashCode = themeDefinition.GetHashCode();

            ArrayList subBuilders = themeBuilder.SubBuilders;

            _skinBuilders = new Hashtable();
            for (int i = 0; i < subBuilders.Count; ++i)
            {
                ControlBuilder builder = subBuilders[i] as ControlBuilder;
                if (builder != null)
                {
                    IDictionary skins = _skinBuilders[builder.ControlType] as IDictionary;
                    if (skins == null)
                    {
                        skins = new SortedList(StringComparer.OrdinalIgnoreCase);
                        _skinBuilders[builder.ControlType] = skins;
                    }
                    Control builtControl = builder.BuildObject() as Control;
                    if (builtControl != null)
                    {
                        skins[builtControl.SkinID] = builder;
                    }
                }
            }
        }
        private static Control[] ParseControlsInternalHelper(DesignTimeParseData data, bool returnFirst)
        {
            TemplateParser parser = new PageParser {
                FInDesigner  = true,
                DesignerHost = data.DesignerHost,
                DesignTimeDataBindHandler = data.DataBindingHandler,
                Text = data.ParseText
            };

            parser.Parse();
            ArrayList list        = new ArrayList();
            ArrayList subBuilders = parser.RootBuilder.SubBuilders;

            if (subBuilders != null)
            {
                IEnumerator enumerator = subBuilders.GetEnumerator();
                for (int i = 0; enumerator.MoveNext(); i++)
                {
                    object current = enumerator.Current;
                    if ((current is ControlBuilder) && !(current is CodeBlockBuilder))
                    {
                        ControlBuilder   builder         = (ControlBuilder)current;
                        IServiceProvider serviceProvider = null;
                        if (data.DesignerHost != null)
                        {
                            serviceProvider = data.DesignerHost;
                        }
                        else
                        {
                            ServiceContainer container = new ServiceContainer();
                            container.AddService(typeof(IFilterResolutionService), new SimpleDesignTimeFilterResolutionService(data.Filter));
                            serviceProvider = container;
                        }
                        builder.SetServiceProvider(serviceProvider);
                        try
                        {
                            Control control = (Control)builder.BuildObject(data.ShouldApplyTheme);
                            list.Add(control);
                        }
                        finally
                        {
                            builder.SetServiceProvider(null);
                        }
                        if (!returnFirst)
                        {
                            continue;
                        }
                        break;
                    }
                    if (!returnFirst && (current is string))
                    {
                        LiteralControl control2 = new LiteralControl(current.ToString());
                        list.Add(control2);
                    }
                }
            }
            data.SetUserControlRegisterEntries(parser.UserControlRegisterEntries, parser.TagRegisterEntries);
            return((Control[])list.ToArray(typeof(Control)));
        }
        private static Control[] ParseControlsInternalHelper(DesignTimeParseData data, bool returnFirst)
        {
            TemplateParser parser = new PageParser();

            parser.FInDesigner  = true;
            parser.DesignerHost = data.DesignerHost;
            parser.DesignTimeDataBindHandler = data.DataBindingHandler;
            parser.Text = data.ParseText;
            parser.Parse();

            ArrayList parsedControls = new ArrayList();
            ArrayList subBuilders    = parser.RootBuilder.SubBuilders;

            if (subBuilders != null)
            {
                // Look for the first control builder
                IEnumerator en = subBuilders.GetEnumerator();

                for (int i = 0; en.MoveNext(); i++)
                {
                    object cur = en.Current;

                    if ((cur is ControlBuilder) && !(cur is CodeBlockBuilder))
                    {
                        // Instantiate the control
                        ControlBuilder controlBuilder = (ControlBuilder)cur;

                        System.Diagnostics.Debug.Assert(controlBuilder.CurrentFilterResolutionService == null);

                        IServiceProvider builderServiceProvider = null;

                        // If there's a designer host, use it as the service provider
                        if (data.DesignerHost != null)
                        {
                            builderServiceProvider = data.DesignerHost;
                        }
                        // If it doesn't exist, use a default ---- filter resolution service
                        else
                        {
                            ServiceContainer serviceContainer = new ServiceContainer();
                            serviceContainer.AddService(typeof(IFilterResolutionService), new SimpleDesignTimeFilterResolutionService(data.Filter));
                            builderServiceProvider = serviceContainer;
                        }

                        controlBuilder.SetServiceProvider(builderServiceProvider);
                        try {
                            Control control = (Control)controlBuilder.BuildObject(data.ShouldApplyTheme);
                            parsedControls.Add(control);
                        }
                        finally {
                            controlBuilder.SetServiceProvider(null);
                        }
                        if (returnFirst)
                        {
                            break;
                        }
                    }
                    // To preserve backwards compatibility, we don't add LiteralControls
                    // to the control collection when parsing for a single control
                    else if (!returnFirst && (cur is string))
                    {
                        LiteralControl literalControl = new LiteralControl(cur.ToString());
                        parsedControls.Add(literalControl);
                    }
                }
            }

            data.SetUserControlRegisterEntries(parser.UserControlRegisterEntries, parser.TagRegisterEntries);

            return((Control[])parsedControls.ToArray(typeof(Control)));
        }