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; } }
public VisualCheckboxRenderer(IVisualProviderObject provider) : base(provider) { }
public VisualServiceGroupSelectorRenderer(IVisualProviderObject provider) : base(provider) { }
public VisualThemeSelectorRenderer(IVisualProviderObject provider) : base(provider) { }
protected VisualSelectorRenderer(IVisualProviderObject provider) : base(provider) { }
public VisualTextRenderer(IVisualProviderObject provider) : base(provider) { }
public VisualDirectorySelectorRenderer(IVisualProviderObject provider) : base(provider) { }
public DynamicPropertiesProcessor(IVisualProviderObject dataObject) { this._dataObject = dataObject; }
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); }
protected VisualItemRenderer(IVisualProviderObject provider) { this.VisualProvider = provider; this.Control = this.CreateControl(); }
public VisualFilesItemsEditorRenderer(IVisualProviderObject provider) : base(provider) { }
protected VisualItemsEditorRenderer(IVisualProviderObject provider) : base(provider) { }