Example #1
0
        /// <summary>
        /// 解析子panel
        /// </summary>
        /// <param name="node"></param>
        /// <param name="childPanelItems"></param>
        private void ParseNodeBodyChildPanel(XmlNode node, Collection <FanLayoutPanel> childPanelItems)
        {
            XmlNodeList childPanelNodeList = XmlLoader.GetChildNodesByName(node, "subPanel");

            if (childPanelNodeList == null || childPanelNodeList.Count == 0)
            {
                return;
            }
            foreach (XmlNode childPanelNode in childPanelNodeList)
            {
                FanLayoutPanel panel = new FanLayoutPanel();
                panel.Guid          = XmlLoader.ReadAttrValue(childPanelNode, "guid");
                panel.Title         = XmlLoader.ReadAttrValue(childPanelNode, "title");
                panel.Name          = XmlLoader.ReadAttrValue(childPanelNode, "name");
                panel.Width         = XmlLoader.ReadAttrIntValue(childPanelNode, "width", 200);
                panel.Height        = XmlLoader.ReadAttrIntValue(childPanelNode, "height", 300);
                panel.DockPosistion = FanLayoutDockPositionEnumHelper.Parse(XmlLoader.ReadAttrValue(childPanelNode, "position"));
                panel.TabView       = ("true" == XmlLoader.ReadAttrValue(childPanelNode, "tabView"));
                panel.Type          = FanLayoutPanelTypeEnumHelper.Parse(XmlLoader.ReadAttrValue(childPanelNode, "type"));
                panel.Assembly      = XmlLoader.ReadAttrValue(childPanelNode, "assembly");
                panel.AssemblyType  = XmlLoader.ReadAttrValue(childPanelNode, "assembly-type");

                childPanelItems.Add(panel);

                //读取uiView
                //ParseNodeUiView(childPanelNode, ref panel.UiViewControl);
            }
        }
Example #2
0
        /// <summary>
        /// 解析Panel
        /// </summary>
        /// <param name="node"></param>
        /// <param name="layoutBody"></param>
        private void ParseNodeBodyPanel(XmlNode node, FanLayoutBody layoutBody)
        {
            XmlNodeList panelNodeList = XmlLoader.GetChildNodesByName(node, "panel");

            if (panelNodeList == null || panelNodeList.Count == 0)
            {
                return;
            }
            foreach (XmlNode panelNode in panelNodeList)
            {
                if (layoutBody is FanLayoutDock)
                {
                    FanLayoutDock bodyDock = (FanLayoutDock)layoutBody;

                    FanLayoutPanel panel = new FanLayoutPanel();
                    panel.Guid          = XmlLoader.ReadAttrValue(panelNode, "guid");
                    panel.Title         = XmlLoader.ReadAttrValue(panelNode, "title");
                    panel.Name          = XmlLoader.ReadAttrValue(panelNode, "name");
                    panel.Width         = XmlLoader.ReadAttrIntValue(panelNode, "width", 200);
                    panel.Height        = XmlLoader.ReadAttrIntValue(panelNode, "height", 300);
                    panel.DockPosistion = FanLayoutDockPositionEnumHelper.Parse(XmlLoader.ReadAttrValue(panelNode, "position"));
                    panel.TabView       = ("true" == XmlLoader.ReadAttrValue(panelNode, "tabView"));
                    panel.Type          = FanLayoutPanelTypeEnumHelper.Parse(XmlLoader.ReadAttrValue(panelNode, "type"));
                    panel.Assembly      = XmlLoader.ReadAttrValue(panelNode, "assembly");
                    panel.AssemblyType  = XmlLoader.ReadAttrValue(panelNode, "assembly-type");

                    //子Panel
                    ParseNodeBodyChildPanel(panelNode, panel.ChildPanelItems);

                    bodyDock.Panels.Add(panel);

                    //读取uiView
                    //ParseNodeUiView(panelNode, ref panel.UiViewControl);
                }
            }
        }
        private void GenerateLayoutBodyDock(FanLayoutDock body)
        {
            Container.GetDockManager().BeginInit();
            DockPanel[] list = new DockPanel[body.Panels.Count];

            int index = 0;

            foreach (FanLayoutPanel panel in body.Panels)
            {
                DockPanel dockPanel = new DockPanel();
                dockPanel.Options.ShowCloseButton    = true;
                dockPanel.Options.ShowAutoHideButton = true;
                dockPanel.Options.ShowMaximizeButton = true;
                dockPanel.ClosingPanel += dockPanel_ClosingPanel;
                if (panel.TabView) //是否属于TabView面板
                {
                    //生成DockPanel对象
                    dockPanel.DockedAsTabbedDocument = true;
                    dockPanel.ID       = new System.Guid(panel.Guid);
                    dockPanel.Location = new System.Drawing.Point(0, 200);
                    dockPanel.Name     = panel.Name;
                    dockPanel.Width    = panel.Width;
                    dockPanel.Height   = panel.Height;
                    dockPanel.Text     = panel.Title;

                    ControlContainer container = new ControlContainer();
                    container.Location = new System.Drawing.Point(0, 0);
                    container.Dock     = DockStyle.Fill;
                    container.Name     = panel.Name + "_Container";
                    container.Size     = new System.Drawing.Size(493, 242);
                    container.TabIndex = 0;

                    dockPanel.Controls.Add(container);

                    //加载UiView界面
                    LoadAssemblyToPanel(dockPanel, container, panel.Assembly, panel.AssemblyType);


                    //将Panel加载到TabbedView中
                    DevExpress.XtraBars.Docking2010.Views.Tabbed.Document document = new DevExpress.XtraBars.Docking2010.Views.Tabbed.Document(Container.GetComponents());
                    document.Caption               = panel.Title;
                    document.ControlName           = panel.Name;
                    document.FloatLocation         = new System.Drawing.Point(0, 0);
                    document.FloatSize             = new System.Drawing.Size(200, 200);
                    document.Properties.AllowClose = DevExpress.Utils.DefaultBoolean.True;
                    document.Properties.AllowFloat = DevExpress.Utils.DefaultBoolean.True;
                    document.Properties.AllowFloatOnDoubleClick = DevExpress.Utils.DefaultBoolean.True;
                    //Container.GetTabbedView().AddDocument(dockPanel);
                    //Container.GetTabbedView().ActivateDocument(dockPanel);

                    Container.GetTabbedView().Documents.Add(document);
                }
                else
                {
                    //生成DockPanel对象
                    dockPanel.Dock         = FanLayoutDockPositionEnumHelper.toDockingStyle(panel.DockPosistion);
                    dockPanel.ID           = new System.Guid(panel.Guid);
                    dockPanel.Location     = new System.Drawing.Point(0, 200);
                    dockPanel.Name         = panel.Name;
                    dockPanel.OriginalSize = new System.Drawing.Size(panel.Width, panel.Height);
                    dockPanel.Width        = panel.Width;
                    dockPanel.Height       = panel.Height;
                    dockPanel.Text         = panel.Title;

                    if (panel.ChildPanelItems.Count == 0) //没有子面板
                    {
                        ControlContainer container = new ControlContainer();
                        container.Location     = new System.Drawing.Point(0, 0);
                        container.Dock         = DockStyle.Fill;
                        container.Name         = panel.Name + "_Container";
                        dockPanel.OriginalSize = new System.Drawing.Size(dockPanel.Width, dockPanel.Height);
                        dockPanel.Width        = dockPanel.Width;
                        dockPanel.Height       = dockPanel.Height;
                        container.TabIndex     = 0;

                        dockPanel.Controls.Add(container);

                        //将Assembly加载到面板中,构建面板内容
                        LoadAssemblyToPanel(dockPanel, container, panel.Assembly, panel.AssemblyType);
                    }
                    else  //有子面板
                    {
                        //生成子Panel
                        GenerateLayoutChildPanels(panel.ChildPanelItems, dockPanel);
                    }
                }
                list[index++] = dockPanel;

                //将面板句柄注册到寻址服务中
                this.GetAddressService().Register(dockPanel.Name, dockPanel, ControlTypeEnum.Panel);
            }
            Container.GetDockManager().RootPanels.AddRange(list);
            Container.Controls.AddRange(list);

            Container.GetDockManager().EndInit();

            //GenerateLayoutDocumentContainer(body);
        }