GetUIFormControlName() public method

Get the name to use for a control representing a IUIForm.
public GetUIFormControlName ( IUIForm uiForm ) : string
uiForm IUIForm The to represent with the name.
return string
Beispiel #1
0
        ///<summary>
        /// Builds a Panel for a single Tab as defined in the <see cref="UIForm"/>.
        ///   There will be one <see cref="IPanelInfo"/> for the defined uiForm.<br/>
        /// If there are multiple tabs defined for the <paramref name="uiForm"/> then
        ///  an actual <see cref="ITabPage"/> is created for each <see cref="UIFormTab"/>
        ///  and the <see cref="IPanel"/> created by <see cref="BuildPanelForTab"/> will
        ///  be placed on this TabPage.<br></br>
        /// Else the <see cref="IPanel"/> is placed on the form directly.
        ///</summary>
        /// <param name="uiForm">The UIForm object that indicates which controls
        /// to create and how the controls are laid out</param>
        ///<param name="groupControlCreator">The <see cref="GroupControlCreator"/></param>
        /// <returns>Returns an IPanelInfo object that contains access to the
        /// BusinessObject instance, the created panel, and all the controls,
        /// mappers, labels and error providers that were created.
        /// </returns>
        public IPanelInfo BuildPanelForForm(IUIForm uiForm, GroupControlCreator groupControlCreator)
        {
            if (uiForm == null)
            {
                throw new ArgumentNullException("uiForm");
            }
            if (groupControlCreator == null)
            {
                throw new ArgumentNullException("groupControlCreator");
            }
            var panelInfo = new PanelInfo();

            // generic interface
            foreach (UIFormTab formTab in uiForm)
            {
                var tabPagePanelInfo = BuildPanelForTab(formTab);
                panelInfo.PanelInfos.Add(tabPagePanelInfo);
                foreach (PanelInfo.FieldInfo fieldInfo in tabPagePanelInfo.FieldInfos)
                {
                    panelInfo.FieldInfos.Add(fieldInfo);
                }
                if (tabPagePanelInfo.MinimumPanelHeight > panelInfo.MinimumPanelHeight)
                {
                    panelInfo.MinimumPanelHeight = tabPagePanelInfo.MinimumPanelHeight;
                }
            }

            IPanel mainPanel;

            if (panelInfo.PanelInfos.Count == 0)
            {
                mainPanel = ControlFactory.CreatePanel();
            }
            else if (panelInfo.PanelInfos.Count == 1)
            {
                mainPanel = panelInfo.PanelInfos[0].Panel;
                int lesserHeight = panelInfo.MinimumPanelHeight;
                if (uiForm.Height < lesserHeight)
                {
                    lesserHeight = uiForm.Height;
                }
                mainPanel.MinimumSize = new Size(uiForm.Width, lesserHeight);
            }
            else
            {
                var groupControl = groupControlCreator();
                foreach (var childPanelInfo in panelInfo.PanelInfos)
                {
                    var uiFormTab  = childPanelInfo.UIFormTab;
                    var childPanel = childPanelInfo.Panel;
                    groupControl.AddControl(childPanel, uiFormTab.Name, childPanel.Height, childPanel.Width);
                }

                var panel = ControlFactory.CreatePanel();
                groupControl.Dock = DockStyle.Fill;
                panel.MinimumSize = groupControl.Size;
                panel.Controls.Add(groupControl);
                mainPanel = panel;
            }
            panelInfo.Panel  = mainPanel;
            mainPanel.Name   = _controlNamingStrategy.GetUIFormControlName(uiForm);
            mainPanel.Size   = new Size(uiForm.Width, uiForm.Height);
            panelInfo.UIForm = uiForm;
            return(panelInfo);
        }