public static System.Windows.Forms.Orientation GetReversedOrientation(XmlDockNode node)
        {
            Orientation orientation = (Orientation)Enum.Parse(typeof(Orientation), node.Orientation);

            if (orientation == System.Windows.Forms.Orientation.Horizontal)
            {
                return(System.Windows.Forms.Orientation.Vertical);
            }
            return(System.Windows.Forms.Orientation.Horizontal);
        }
 private void DeserializeChildNode(XmlDockNode node, RadSplitContainer splitContainer, RadSplitContainer childSplitContainer,
                                   IList <SplitPanel> panelList, RadDockComponentFactory componentFactory, RadDock dock)
 {
     if (node != null)
     {
         RadSplitContainer container   = (childSplitContainer != null) ? childSplitContainer : splitContainer;
         List <SplitPanel> splitPanels = node.DeserializeNode(dock, container, componentFactory);
         foreach (SplitPanel panel in splitPanels)
         {
             panelList.Add(panel);
         }
     }
 }
        public List <SplitPanel> Deserialize(RadDock dock, RadDockComponentFactory componentFactory)
        {
            MainDocumentTabStripAdded = false;
            NewDockWindowsDictionary  = new Dictionary <Guid, DockWindow>();
            OldContainers             = new List <TabStripPanel>();

            List <SplitPanel> list = new List <SplitPanel>();

            if (dock == null)
            {
                return(list);
            }

            if (this.Sites != null)
            {
                int siteCount = this.Sites.Count;
                if (siteCount > 0)
                {
                    XmlDockNode dockNode = this.Sites[0].RootNode;
                    while (dockNode != null)
                    {
                        if (XmlDockNode.HasBothChildren(dockNode))
                        {
                            dock.Orientation = XmlDockNode.GetReversedOrientation(dockNode);
                            break;
                        }
                        dockNode = dockNode.Left;
                    }
                }

                for (int i = 0; i < siteCount; i++)
                {
                    list.AddRange(this.Sites[i].Deserialize(dock, componentFactory));
                }
            }

            dock.SplitPanels.AddRange(list);

            this.ProcessNewDockWindowDictionary(dock);
            this.RemoveOldContainers(dock);

            return(list);
        }
        public List <SplitPanel> DeserializeNode(RadDock dock, RadSplitContainer splitContainer, RadDockComponentFactory componentFactory)
        {
            List <SplitPanel> splitPanelList = new List <SplitPanel>();

            TabStripPanel dockableContainer = this.CreateDockableContainer(this.Dockables, componentFactory);

            if (dockableContainer != null)
            {
                foreach (XmlDockable dockable in this.Dockables)
                {
                    TabPanel panel = dockable.Deserialize(dock, splitContainer, componentFactory);
                    dockableContainer.TabPanels.Add(panel);
                }
                this.ProcessDockableContainer(dockableContainer, dock, splitPanelList, componentFactory);
            }

            RadSplitContainer  childSplitContainer = null;
            IList <SplitPanel> tempList            = splitPanelList;

            if (XmlDockNode.HasBothChildren(this))
            {
                Orientation orientation = XmlDockNode.GetReversedOrientation(this);
                if (orientation != splitContainer.Orientation)
                {
                    childSplitContainer = this.CreateSplitContainer(dock, componentFactory);
                    if (childSplitContainer != null)
                    {
                        childSplitContainer.Orientation = orientation;
                        splitPanelList.Add(childSplitContainer);
                        tempList = childSplitContainer.SplitPanels;
                    }
                }
            }

            this.DeserializeChildNode(this.Left, splitContainer, childSplitContainer, tempList, componentFactory, dock);
            this.DeserializeChildNode(this.Right, splitContainer, childSplitContainer, tempList, componentFactory, dock);

            return(splitPanelList);
        }
 public static bool HasBothChildren(XmlDockNode node)
 {
     return(node.Left != null && node.Right != null);
 }