コード例 #1
0
        private DockWindow CreateDockWindow(RadDockComponentFactory componentFactory)
        {
            DockWindow dockWindow = null;

            if (this.Type == XmlDockable.DocumentPaneType)
            {
                dockWindow = componentFactory.CreateDocumentPane();
            }
            else if (this.Type == XmlDockable.ToolPaneType)
            {
                dockWindow = componentFactory.CreateToolPane();
            }
            else
            {
                DockState dockState = XmlDockable.ParseDockState(this.DockState);
                switch (dockState)
                {
                case Docking.DockState.TabbedDocument:
                    dockWindow = componentFactory.CreateDocumentPane();
                    break;

                case Docking.DockState.Floating:
                case Docking.DockState.Docked:
                case Docking.DockState.AutoHide:
                case Docking.DockState.Hidden:
                default:
                    dockWindow = componentFactory.CreateToolPane();
                    break;
                }
            }

            return(dockWindow);
        }
コード例 #2
0
        private RadSplitContainer CreateSplitContainer(RadDock dock, RadDockComponentFactory componentFactory)
        {
            bool bothChildrenAreDocumentTabStrips =
                this.Left.IsDocumentTabStrip() && this.Right.IsDocumentTabStrip();

            if (bothChildrenAreDocumentTabStrips)
            {
                return(this.CreateMainDocumentContainer(dock, componentFactory));
            }
            return(componentFactory.CreateSplitContainer());
        }
コード例 #3
0
 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);
         }
     }
 }
コード例 #4
0
        private DocumentContainer CreateMainDocumentContainer(RadDock dock, RadDockComponentFactory componentFactory)
        {
            if (XmlDockingManager.MainDocumentTabStripAdded)
            {
                return(null);
            }
            DocumentContainer documentContainer = componentFactory.CreateDocumentContainer();

            dock.MainDocumentContainer = documentContainer;
            XmlDockingManager.MainDocumentTabStripAdded = true;

            return(documentContainer);
        }
コード例 #5
0
        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);
        }
コード例 #6
0
        public List <SplitPanel> Deserialize(RadDock dock, RadDockComponentFactory componentFactory)
        {
            List <SplitPanel> splitPanelList = this.RootNode.DeserializeNode(dock, dock, componentFactory);

            //TODO: take into account the floating position (if serialized in the XML)
            //if (FloatingLocation != null && site is DockSite)
            //{
            //    ((DockSite)site).Location = new Point(int.Parse(FloatingLocation.Split(';')[0]), int.Parse(FloatingLocation.Split(';')[1]));
            //}

            if (this.Visible != null)
            {
                bool visible = true;
                bool.TryParse(this.Visible, out visible);
                foreach (SplitPanel splitPanel in splitPanelList)
                {
                    splitPanel.Collapsed = visible;
                }
            }

            return(splitPanelList);
        }
コード例 #7
0
        private TabStripPanel CreateDockableContainer(List <XmlDockable> dockables, RadDockComponentFactory componentFactory)
        {
            DockState?dockState = this.GetFirstDockableState(dockables);

            if (dockState == null)
            {
                return(null);
            }

            switch (dockState)
            {
            case DockState.TabbedDocument:
                return(componentFactory.CreateDocumentTabStrip());;

            case DockState.Floating:
            case DockState.Docked:
            case DockState.AutoHide:
            case DockState.Hidden:
            default:
                return(componentFactory.CreateToolTabStrip());
            }
        }
コード例 #8
0
        private DockWindow GetDockWindow(RadDock dock, Guid guid, RadDockComponentFactory componentFactory)
        {
            DockWindow dockWindow = null;

            string name = dock.GuidToNameMappings.FindNameByGuid(guid);

            if (!string.IsNullOrEmpty(name))
            {
                dockWindow = dock[name];
            }

            if (dockWindow == null)
            {
                dockWindow = this.CreateDockWindow(componentFactory);
                XmlDockingManager.NewDockWindowsDictionary.Add(guid, dockWindow);
            }
            else
            {
                XmlDockingManager.OldContainers.Add(dockWindow.TabStrip);
            }

            return(dockWindow);
        }
コード例 #9
0
        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);
        }
コード例 #10
0
        private void ProcessDockableContainer(TabStripPanel dockableContainer, RadDock dock, List <SplitPanel> splitPanelList, RadDockComponentFactory componentFactory)
        {
            DocumentTabStrip documentTabStrip = dockableContainer as DocumentTabStrip;

            if (documentTabStrip == null)
            {
                splitPanelList.Add(dockableContainer);
                return;
            }

            DocumentContainer documentContainer = this.CreateMainDocumentContainer(dock, componentFactory);

            if (documentContainer != null)
            {
                splitPanelList.Add(documentContainer);
            }

            dock.MainDocumentContainer.SplitPanels.Add(documentTabStrip);
        }
コード例 #11
0
        public DockWindow Deserialize(RadDock dock, RadSplitContainer splitContainer, RadDockComponentFactory componentFactory)
        {
            Guid       guid       = new Guid(this.DockGuid);
            DockWindow dockWindow = this.GetDockWindow(dock, guid, componentFactory);

            if (dockWindow != null)
            {
                this.ApplyDockWindowSettings(dockWindow);
                if (dock != null)
                {
                    dock.OnDockableDeserialized(new Telerik.WinControls.Interfaces.DockableDeserializedEventArgs(
                                                    dockWindow, guid));
                }
            }


            return(dockWindow);


            //(window as IToolWindowLayoutController).CaptionVisible = bool.Parse(CaptionVisible);
            //(window as IToolWindowLayoutController).TabStripVisible = bool.Parse(TabStripVisible);
            //(window as IToolWindowLayoutController).CloseButtonVisible = bool.Parse(CloseButtonVisible);
            //(window as IToolWindowLayoutController).HideButtonVisible = bool.Parse(HideButtonVisible);
            //(window as IToolWindowLayoutController).DropDownButtonVisible = bool.Parse(DropDownButtonVisible);

            //((ISupportDockingInternal)window).SetDockManager(manager);
            ////host.CreateComponent

            //window.PreferredFloatSize = new Size(int.Parse(this.PreferredFloatSize.Split(';')[0]), int.Parse(this.PreferredFloatSize.Split(';')[1]));
            //window.DockPosition = (DockPosition)Enum.Parse(typeof(DockPosition), DockPosition);
        }