Пример #1
0
        public void FillSettings(IVisualProviderObject propClass, params string[] groupNames)
        {
            // initialize
            this._currentTopCoord = 0;
            this._processor       = new DynamicPropertiesProcessor(propClass);

            if (groupNames.Length == 0)
            {
                groupNames = this._processor.EnumerateGroupNames().ToArray();
            }

            for (int i = 0; i < groupNames.Length; i++)
            {
                var propertyGroups = this._processor.GetGroupProperties(groupNames[i]);

                bool isLastGroup = i == groupNames.Length - 1;
                var  group       = this.CreateGroup(propClass, groupNames[i], propertyGroups, this.FillLastGroup && isLastGroup);

                this._currentTopCoord += group.Height;
            }
        }
Пример #2
0
 public VisualCheckboxRenderer(IVisualProviderObject provider)
     : base(provider)
 {
 }
Пример #3
0
 public VisualServiceGroupSelectorRenderer(IVisualProviderObject provider)
     : base(provider)
 {
 }
Пример #4
0
 public VisualThemeSelectorRenderer(IVisualProviderObject provider)
     : base(provider)
 {
 }
Пример #5
0
 protected VisualSelectorRenderer(IVisualProviderObject provider)
     : base(provider)
 {
 }
Пример #6
0
 public VisualTextRenderer(IVisualProviderObject provider)
     : base(provider)
 {
 }
 public VisualDirectorySelectorRenderer(IVisualProviderObject provider)
     : base(provider)
 {
 }
Пример #8
0
 public DynamicPropertiesProcessor(IVisualProviderObject dataObject)
 {
     this._dataObject = dataObject;
 }
Пример #9
0
        private Control CreateGroup(IVisualProviderObject propClass, string groupName, IEnumerable <PropertyInfo> props, bool isLastGroup)
        {
            var mainGroupBoxContainer = new WtGroupSeparator
            {
                Text  = groupName,
                Font  = this.GroupTitleFont,
                Width = this._mainPanel.Width
            };

            var panel = new Panel {
                Dock = DockStyle.Fill
            };

            mainGroupBoxContainer.Controls.Add(panel);

            int initTop = 0;

            var properties = props.ToArray();

            Control lastControl = null;

            for (int i = 0; i < properties.Length; i++)
            {
                var prop         = properties[i];
                var rendererAttr = prop.GetCustomAttribute <VisualItemAttribute>();

                if (rendererAttr == null)
                {
                    continue;
                }

                var renderer = Activator.CreateInstance(rendererAttr.RendererType, propClass) as VisualItemRenderer;

                if (renderer?.Control == null)
                {
                    continue;
                }

                var customData = prop.GetCustomAttribute <VisualItemCustomizationAttribute>();

                renderer.Control.Font = this.ControlFont;

                int controlHeight = this.ItemHeight;
                if (customData != null && customData.CustomHeight != -1)
                {
                    controlHeight = customData.CustomHeight;
                }

                renderer.Control.Location = new Point(this.HorizontalItemPadding, initTop);
                renderer.Control.Size     = new Size(panel.Width - this.HorizontalItemPadding * 2, controlHeight);
                renderer.Control.Anchor   = AnchorStyles.Left | AnchorStyles.Top | AnchorStyles.Right;
                renderer.Control.Name     = prop.Name;

                if (i == properties.Length - 1)
                {
                    lastControl = renderer.Control;
                }

                if (this.LabelConfiguration.ShowLables)
                {
                    bool setInternalLabelResult = renderer.SetLabel(rendererAttr.DisplayText, this.LabelConfiguration);

                    if (!setInternalLabelResult)
                    {
                        var label = this.CreateLabel(rendererAttr.DisplayText);
                        label.Location = new Point(this.HorizontalItemPadding, initTop);
                        label.Height   = controlHeight;

                        renderer.Control.Left   = label.Right;
                        renderer.Control.Width  = panel.Width - label.Right - this.HorizontalItemPadding;
                        renderer.Control.Anchor = AnchorStyles.Left | AnchorStyles.Right | AnchorStyles.Top;

                        panel.Controls.Add(label);
                    }
                }

                renderer.SetValue(prop.GetValue(propClass));

                if (renderer is IDependentStateProvider dependentStateProvider)
                {
                    this._dependentProvidersCache.Add(dependentStateProvider);
                }

                void ApplyRendererValue()
                {
                    try { prop.SetValue(propClass, renderer.GetValue()); }
                    catch (Exception) { /* ... */ }
                }

                renderer.Control.Tag = new Action(ApplyRendererValue);

                initTop += controlHeight + this.PaddingBetweenItems;

                panel.Controls.Add(renderer.Control);
            }

            mainGroupBoxContainer.Size   = new Size(this._mainPanel.Width, panel.Top + initTop);
            mainGroupBoxContainer.Anchor = AnchorStyles.Left | AnchorStyles.Right | AnchorStyles.Top;
            mainGroupBoxContainer.Top    = this._currentTopCoord;

            if (lastControl != null && this.FillLastControl)
            {
                lastControl.Anchor |= AnchorStyles.Bottom;
            }

            if (isLastGroup && this._currentTopCoord + initTop < this._mainPanel.Height)
            {
                mainGroupBoxContainer.Height  = this._mainPanel.Height - mainGroupBoxContainer.Top;
                mainGroupBoxContainer.Anchor |= AnchorStyles.Bottom;
            }

            this._mainPanel.Controls.Add(mainGroupBoxContainer);

            this.InitDependentControls();

            return(mainGroupBoxContainer);
        }
Пример #10
0
 protected VisualItemRenderer(IVisualProviderObject provider)
 {
     this.VisualProvider = provider;
     this.Control        = this.CreateControl();
 }
Пример #11
0
 public VisualFilesItemsEditorRenderer(IVisualProviderObject provider)
     : base(provider)
 {
 }
Пример #12
0
 protected VisualItemsEditorRenderer(IVisualProviderObject provider)
     : base(provider)
 {
 }