/// <summary> /// Restore docking layout reading a xml string which is previously generated by a call to GetLayoutState /// </summary> /// <param name="xml">Xml containing layout state</param> /// <param name="getContentHandler">Delegate used by serializer to get user defined dockable contents</param> public void RestoreLayoutFromXml(string xml, GetContentFromTypeString getContentHandler) { XmlDocument doc = new XmlDocument(); doc.LoadXml(xml); gridDocking.Deserialize(this, doc.ChildNodes[0], getContentHandler); List <Pane> addedPanes = new List <Pane>(); foreach (DockableContent content in Contents) { DockablePane pane = content.ContainerPane as DockablePane; if (pane != null && !addedPanes.Contains(pane)) { if (pane.State == PaneState.AutoHide) { addedPanes.Add(pane); AddPaneDockingButtons(pane); } } } _currentButton = null; }
/// <summary> /// Deserialize layout /// </summary> /// <param name="manager">Dock manager for initing objects</param> /// <param name="node">Node to parse</param> /// <param name="handlerObject">Delegate used to get user defined dockable contents</param> public void Deserialize(DockManager manager, XmlNode node, GetContentFromTypeString handlerObject) { _size = (Size)TypeDescriptor.GetConverter(typeof(Size)).ConvertFromInvariantString(node.Attributes[ATTRIBUTE_NAME_SIZE].Value); _dockType = (Dock)Enum.Parse(typeof(Dock), node.Attributes[ATTRIBUTE_NAME_DOCK].Value); PaneState state = (PaneState)Enum.Parse(typeof(PaneState), node.Attributes[ATTRIBUTE_NAME_STATE].Value); State = (PaneState.FloatingWindow == state) ? PaneState.DockableWindow : state; // NOTE: for support old versions _ptFloatingWindow = (Point)System.ComponentModel.TypeDescriptor.GetConverter(typeof(Point)).ConvertFromInvariantString(node.Attributes[ATTRIBUTE_NAME_PTFLOATWND].Value); _szFloatingWindow = (Size)System.ComponentModel.TypeDescriptor.GetConverter(typeof(Size)).ConvertFromInvariantString(node.Attributes[ATTRIBUTE_NAME_SZFLOATWND].Value); DockableContent content = handlerObject(node.ChildNodes[0].Name); // set state content.DockManager = manager; _SetContent(content); if ((PaneState.Docked == State) || (PaneState.Hidden == State)) { Show(); } else { tbTitle.Text = _content.Title; cpClientWindowContent.Content = _content.Content; cpClientWindowContent.Visibility = Visibility.Visible; _CreateFloatingWindow(_state); _InitFloatingWindowPosition(); } }
/// <summary> /// Deserialize layout /// </summary> /// <param name="manager">Dock manager for initing objects</param> /// <param name="node">Node to parse</param> /// <param name="handlerObject">Delegate used to get user defined dockable contents</param> public void Deserialize(DockManager manager, XmlNode node, GetContentFromTypeString handlerObject) { _type = (CompositionType)Enum.Parse(typeof(CompositionType), node.Attributes[ATTRIBUTE_NAME_TYPE].Value); _spaceFactor = double.Parse(node.Attributes[ATTRIBUTE_NAME_SFACTOR].Value, CultureInfo.GetCultureInfo(STORAGE_CULTURE)); if (_type == CompositionType.Terminal) { Debug.Assert(node.ChildNodes[0].Name == ELEMENT_NAME_DOCKPANE); DockablePane pane = new DockablePane(); pane.Deserialize(manager, node.ChildNodes[0], handlerObject); _attachedPane = pane; if (pane.IsDragSupported) { manager.DragPaneServices.Register(pane); } } else { Debug.Assert(node.ChildNodes[0].Name == ELEMENT_NAME_CHILDGROUPS); foreach (XmlNode nodeChild in node.ChildNodes[0].ChildNodes) { Composition composition = new Composition(); composition.Deserialize(manager, nodeChild, handlerObject); _children.Add(composition); } } _isInited = true; }
public void Deserialize(DockManager managerToAttach, XmlNode node, GetContentFromTypeString getObjectHandler) { _rootGroup = new DockablePaneGroup(); _rootGroup.Deserialize(managerToAttach, node, getObjectHandler); //_docsPane = FindDocumentsPane(_rootGroup); ArrangeLayout(); }
public virtual void Deserialize(DockManager managerToAttach, XmlNode node, GetContentFromTypeString getObjectHandler) { _dockManager = managerToAttach; PaneWidth = double.Parse(node.Attributes["Width"].Value); PaneHeight = double.Parse(node.Attributes["Height"].Value); foreach (XmlNode nodeDockableContent in node.ChildNodes) { DockableContent content = getObjectHandler(nodeDockableContent.Name); Add(content); Show(content); } DockManager.DragPaneServices.Register(this); }
/// <summary> /// Deserialize layout. /// </summary> /// <param name="manager">Dock manager for initing objects.</param> /// <param name="rootNode">Node to parse.</param> /// <param name="handlerObject">Delegate used to get user defined dockable contents.</param> public void Deserialize(DockManager manager, XmlNode rootNode, GetContentFromTypeString handlerObject) { if (null != _root) { Debug.Assert(_root.Type == CompositionType.Terminal); _root.AttachedPane.Close(); _root = null; } if (0 == rootNode.ChildNodes.Count) { _root = null; } else { _root = new Composition(); _root.Deserialize(manager, rootNode.ChildNodes[0], handlerObject); _ArrangeLayout(); } }
public override void Deserialize(DockManager managerToAttach, XmlNode node, GetContentFromTypeString getObjectHandler) { base.Deserialize(managerToAttach, node, getObjectHandler); _dock = (Dock)Enum.Parse(typeof(Dock), node.Attributes["Dock"].Value); _state = (PaneState)Enum.Parse(typeof(PaneState), node.Attributes["State"].Value); _lastState = (PaneState)Enum.Parse(typeof(PaneState), node.Attributes["LastState"].Value); ptFloatingWindow = (Point)System.ComponentModel.TypeDescriptor.GetConverter(typeof(Point)).ConvertFromInvariantString(node.Attributes["ptFloatingWindow"].Value); sizeFloatingWindow = (Size)System.ComponentModel.TypeDescriptor.GetConverter(typeof(Size)).ConvertFromInvariantString(node.Attributes["sizeFloatingWindow"].Value); if (State == PaneState.FloatingWindow) { FloatingWindow(); } else if (State == PaneState.DockableWindow) { DockableWindow(); } DockManager.AttachPaneEvents(this); }
/// <summary> /// Restore docking layout reading a xml string which is previously generated by a call /// to GetLayoutState. /// </summary> /// <param name="xml">Xml containing layout state.</param> /// <param name="getContentHandler">Delegate used by serializer to get user defined /// dockable contents.</param> public void RestoreLayoutFromXml(string xml, GetContentFromTypeString getContentHandler) { var doc = new XmlDocument(); doc.LoadXml(xml); _ResetInternalState(); foreach (XmlNode nodeChild in doc.ChildNodes[0]) { if (ELEMENT_NAME_ROOT == nodeChild.Name) { gridDocking.Deserialize(this, nodeChild, getContentHandler); } else if (ELEMENT_NAME_FLTWNDS == nodeChild.Name) { foreach (XmlNode node in nodeChild.ChildNodes) { var pane = new DockablePane(); pane.Deserialize(this, node, getContentHandler); } } } }
/// <summary> /// Deserialize layout. /// </summary> /// <param name="manager">Dock manager for initing objects.</param> /// <param name="rootNode">Node to parse.</param> /// <param name="handlerObject">Delegate used to get user defined dockable contents.</param> public void Deserialize(DockManager manager, XmlNode rootNode, GetContentFromTypeString handlerObject) { if (null != _root) { Debug.Assert(_root.Type == CompositionType.Terminal); _root.AttachedPane.Close(); _root = null; } if (0 == rootNode.ChildNodes.Count) _root = null; else { _root = new Composition(); _root.Deserialize(manager, rootNode.ChildNodes[0], handlerObject); _ArrangeLayout(); } }
public void Deserialize(DockManager managerToAttach, System.Xml.XmlNode node, GetContentFromTypeString getObjectHandler) { _dock = (Dock)Enum.Parse(typeof(Dock), node.Attributes["Dock"].Value); if (node.ChildNodes[0].Name == "DockablePane") { DockablePane pane = new DockablePane(managerToAttach); pane.Deserialize(managerToAttach, node.ChildNodes[0], getObjectHandler); _attachedPane = pane; } else if (node.ChildNodes[0].Name == "DocumentsPane") { DocumentsPane pane = managerToAttach.GetDocumentsPane(); pane.Deserialize(managerToAttach, node.ChildNodes[0], getObjectHandler); _attachedPane = pane; } else { _firstChildGroup = new DockablePaneGroup(); _firstChildGroup._parentGroup = this; _firstChildGroup.Deserialize(managerToAttach, node.ChildNodes[0].ChildNodes[0], getObjectHandler); _secondChildGroup = new DockablePaneGroup(); _secondChildGroup._parentGroup = this; _secondChildGroup.Deserialize(managerToAttach, node.ChildNodes[0].ChildNodes[1], getObjectHandler); } }
/// <summary> /// Loads default docking layout. /// </summary> private void _LoadDefaultLayout() { // Use default layout (from local const) to init. var contentHandler = new GetContentFromTypeString(this._GetContentByTypeName); DockManager1.RestoreLayoutFromXml(DEFAULT_DOCKING_LAYOUT, contentHandler); // Store changes. SaveLayout(); }
/// <summary> /// Restore docking layout reading a xml string which is previously generated by a call /// to GetLayoutState. /// </summary> /// <param name="xml">Xml containing layout state.</param> /// <param name="getContentHandler">Delegate used by serializer to get user defined /// dockable contents.</param> public void RestoreLayoutFromXml(string xml, GetContentFromTypeString getContentHandler) { var doc = new XmlDocument(); doc.LoadXml(xml); _ResetInternalState(); foreach (XmlNode nodeChild in doc.ChildNodes[0]) { if (ELEMENT_NAME_ROOT == nodeChild.Name) gridDocking.Deserialize(this, nodeChild, getContentHandler); else if (ELEMENT_NAME_FLTWNDS == nodeChild.Name) { foreach (XmlNode node in nodeChild.ChildNodes) { var pane = new DockablePane(); pane.Deserialize(this, node, getContentHandler); } } } }
/// <summary> /// Restore docking layout reading a xml string which is previously generated by a call to GetLayoutState /// </summary> /// <param name="xml">Xml containing layout state</param> /// <param name="getContentHandler">Delegate used by serializer to get user defined dockable contents</param> public void RestoreLayoutFromXml(string xml, GetContentFromTypeString getContentHandler) { XmlDocument doc = new XmlDocument(); doc.LoadXml(xml); gridDocking.Deserialize(this, doc.ChildNodes[0], getContentHandler); List<Pane> addedPanes = new List<Pane>(); foreach (DockableContent content in Contents) { DockablePane pane = content.ContainerPane as DockablePane; if (pane != null && !addedPanes.Contains(pane)) { if (pane.State == PaneState.AutoHide) { addedPanes.Add(pane); AddPaneDockingButtons(pane); } } } _currentButton = null; }
/// <summary> /// Deserialize layout /// </summary> /// <param name="manager">Dock manager for initing objects</param> /// <param name="node">Node to parse</param> /// <param name="handlerObject">Delegate used to get user defined dockable contents</param> public void Deserialize(DockManager manager, XmlNode node, GetContentFromTypeString handlerObject) { _type = (CompositionType)Enum.Parse(typeof(CompositionType), node.Attributes[ATTRIBUTE_NAME_TYPE].Value); _spaceFactor = double.Parse(node.Attributes[ATTRIBUTE_NAME_SFACTOR].Value, CultureInfo.GetCultureInfo(STORAGE_CULTURE)); if (_type == CompositionType.Terminal) { Debug.Assert(node.ChildNodes[0].Name == ELEMENT_NAME_DOCKPANE); DockablePane pane = new DockablePane(); pane.Deserialize(manager, node.ChildNodes[0], handlerObject); _attachedPane = pane; if (pane.IsDragSupported) manager.DragPaneServices.Register(pane); } else { Debug.Assert(node.ChildNodes[0].Name == ELEMENT_NAME_CHILDGROUPS); foreach (XmlNode nodeChild in node.ChildNodes[0].ChildNodes) { Composition composition = new Composition(); composition.Deserialize(manager, nodeChild, handlerObject); _children.Add(composition); } } _isInited = true; }
public override void Deserialize(DockManager managerToAttach, XmlNode node, GetContentFromTypeString getObjectHandler) { base.Deserialize(managerToAttach, node, getObjectHandler); _dock = (Dock)Enum.Parse(typeof(Dock), node.Attributes["Dock"].Value); _state = (PaneState)Enum.Parse(typeof(PaneState), node.Attributes["State"].Value); _lastState = (PaneState)Enum.Parse(typeof(PaneState), node.Attributes["LastState"].Value); ptFloatingWindow = (Point)System.ComponentModel.TypeDescriptor.GetConverter(typeof(Point)).ConvertFromInvariantString(node.Attributes["ptFloatingWindow"].Value); sizeFloatingWindow = (Size)System.ComponentModel.TypeDescriptor.GetConverter(typeof(Size)).ConvertFromInvariantString(node.Attributes["sizeFloatingWindow"].Value); if (State == PaneState.FloatingWindow) FloatingWindow(); else if (State == PaneState.DockableWindow) DockableWindow(); DockManager.AttachPaneEvents(this); }
/// <summary> /// Deserialize layout /// </summary> /// <param name="manager">Dock manager for initing objects</param> /// <param name="node">Node to parse</param> /// <param name="handlerObject">Delegate used to get user defined dockable contents</param> public void Deserialize(DockManager manager, XmlNode node, GetContentFromTypeString handlerObject) { _size = (Size)TypeDescriptor.GetConverter(typeof(Size)).ConvertFromInvariantString(node.Attributes[ATTRIBUTE_NAME_SIZE].Value); _dockType = (Dock)Enum.Parse(typeof(Dock), node.Attributes[ATTRIBUTE_NAME_DOCK].Value); PaneState state = (PaneState)Enum.Parse(typeof(PaneState), node.Attributes[ATTRIBUTE_NAME_STATE].Value); State = (PaneState.FloatingWindow == state) ? PaneState.DockableWindow : state; // NOTE: for support old versions _ptFloatingWindow = (Point)System.ComponentModel.TypeDescriptor.GetConverter(typeof(Point)).ConvertFromInvariantString(node.Attributes[ATTRIBUTE_NAME_PTFLOATWND].Value); _szFloatingWindow = (Size)System.ComponentModel.TypeDescriptor.GetConverter(typeof(Size)).ConvertFromInvariantString(node.Attributes[ATTRIBUTE_NAME_SZFLOATWND].Value); DockableContent content = handlerObject(node.ChildNodes[0].Name); // set state content.DockManager = manager; _SetContent(content); if ((PaneState.Docked == State) || (PaneState.Hidden == State)) Show(); else { tbTitle.Text = _content.Title; cpClientWindowContent.Content = _content.Content; cpClientWindowContent.Visibility = Visibility.Visible; _CreateFloatingWindow(_state); _InitFloatingWindowPosition(); } }