private DocumentBarContainer CreateDocumentBarContainer(Bar bar) { DocumentBarContainer doc=new DocumentBarContainer(bar); return doc; }
internal void SaveLastDockInfo(Bar bar, DocumentBarContainer doc, DockSiteInfo info) { if (bar.m_LastDockSiteInfo == null) return; //bar.m_LastDockSiteInfo.LastRelativeDockToBar = null; //bar.m_LastDockSiteInfo.LastRelativeDocumentId = -1; // Tries to find relative dock-to-bar so un-docked bar can be returned back if (!(doc.Parent is DocumentDockContainer)) return; DocumentDockContainer dockParent = (DocumentDockContainer)doc.Parent; DocumentBaseContainer nextBarDocument = GetNextDocument(dockParent, dockParent.Documents.IndexOf(doc)); if (nextBarDocument == null) { DocumentBaseContainer prevBarDocument = GetPreviousDocument(dockParent, dockParent.Documents.IndexOf(doc)); if (prevBarDocument != null) { Bar prevBar = null; if (prevBarDocument is DocumentBarContainer) { prevBar = ((DocumentBarContainer)prevBarDocument).Bar; bar.m_LastDockSiteInfo.LastRelativeDockToBar = prevBar; prevBar.m_LastDockSiteInfo.LastRelativeDockToBar = bar; prevBar.m_LastDockSiteInfo.LastRelativeDocumentId = doc.Id; } bar.m_LastDockSiteInfo.LastRelativeDocumentId = prevBarDocument.Id; if (dockParent.Orientation == eOrientation.Horizontal) { bar.LastDockSide = eDockSide.Right; if (prevBar != null) prevBar.LastDockSide = eDockSide.Left; } else { bar.LastDockSide = eDockSide.Bottom; if (prevBar != null) prevBar.LastDockSide = eDockSide.Top; } } } else { Bar nextBar = null; if (nextBarDocument is DocumentBarContainer) { nextBar = ((DocumentBarContainer)nextBarDocument).Bar; bar.m_LastDockSiteInfo.LastRelativeDockToBar = nextBar; nextBar.m_LastDockSiteInfo.LastRelativeDockToBar = bar; nextBar.m_LastDockSiteInfo.LastRelativeDocumentId = doc.Id; } bar.m_LastDockSiteInfo.LastRelativeDocumentId = nextBarDocument.Id; if (dockParent.Orientation == eOrientation.Horizontal) { bar.LastDockSide = eDockSide.Left; if (nextBar != null) nextBar.LastDockSide = eDockSide.Right; } else { bar.LastDockSide = eDockSide.Top; if (nextBar != null) nextBar.LastDockSide = eDockSide.Bottom; } } if (GetDockSide(bar) != eDockSide.None) bar.m_LastDockSiteInfo.LastDockSiteSide = GetDockSide(bar); }
private void SerializeDocumentBarContainer(XmlElement parent, DocumentBarContainer instance, bool definitionSerialization) { if(instance.Bar==null || !instance.Bar.SaveLayoutChanges) return; XmlElement barDocument=parent.OwnerDocument.CreateElement(DocumentSerializationXml.BarContainer); parent.AppendChild(barDocument); barDocument.SetAttribute(DocumentSerializationXml.Width,instance.LayoutBounds.Width.ToString()); barDocument.SetAttribute(DocumentSerializationXml.Height,instance.LayoutBounds.Height.ToString()); XmlElement barElement=parent.OwnerDocument.CreateElement(BarSerializationXml.Bar); barDocument.AppendChild(barElement); if(definitionSerialization) instance.Bar.Serialize(barElement); else instance.Bar.SerializeLayout(barElement); }
private bool DeserializeDocumentBarContainer(ItemSerializationContext context, DocumentBarContainer instance, bool deserializeDefinition) { XmlElement docElement = context.ItemXmlElement; if(docElement.Name!=DocumentSerializationXml.BarContainer) return false; instance.SetLayoutBounds(new Rectangle(0,0,XmlConvert.ToInt32(docElement.GetAttribute(DocumentSerializationXml.Width)),XmlConvert.ToInt32(docElement.GetAttribute(DocumentSerializationXml.Height)))); foreach(XmlElement elem in docElement.ChildNodes) { if(elem.Name==BarSerializationXml.Bar) { instance.Bar=m_Container.Owner.Bars[elem.GetAttribute(BarSerializationXml.Name)]; if(deserializeDefinition || instance.Bar==null && elem.HasAttribute(BarSerializationXml.Custom) && XmlConvert.ToBoolean(elem.GetAttribute(BarSerializationXml.Custom))) { // New bar that user has created try to deserialize but if it does not have items ignore it instance.Bar=new Bar(); m_Container.Owner.Bars.Add(instance.Bar); if(deserializeDefinition) instance.Bar.Deserialize(elem, context); else instance.Bar.DeserializeLayout(elem); if(instance.Bar.Items.Count==0 && !deserializeDefinition) { m_Container.Owner.Bars.Remove(instance.Bar); return false; } return true; } if (instance.Bar != null) { instance.Bar.DeserializeLayout(elem); // Restore hidden dock container size so it can be used when bar is shown if (!instance.Bar.IsVisible) { if (instance.LayoutBounds.Height > 0 && (instance.Bar.DockSide == eDockSide.Top || instance.Bar.DockSide == eDockSide.Bottom)) { instance.Bar.Height = instance.LayoutBounds.Height; } else if (instance.LayoutBounds.Width > 0 && (instance.Bar.DockSide == eDockSide.Left || instance.Bar.DockSide == eDockSide.Right)) { instance.Bar.Width = instance.LayoutBounds.Width; } } } else return false; break; } } return true; }
private void OnEnableDocumentDocking(object sender, EventArgs e) { DotNetBarManager m=this.Component as DotNetBarManager; if(m.FillDockSite==null) { IDesignerHost dh=(IDesignerHost)GetService(typeof(IDesignerHost)); if(dh==null) return; System.Windows.Forms.Control parent=dh.RootComponent as System.Windows.Forms.Control; if(parent==null) return; IComponentChangeService cc=(IComponentChangeService)GetService(typeof(IComponentChangeService)); if(cc==null) return; DesignerTransaction trans=dh.CreateTransaction("Document Docking Enabled"); DockSite fillDock=dh.CreateComponent(typeof(DockSite)) as DockSite; fillDock.Dock=System.Windows.Forms.DockStyle.Fill; cc.OnComponentChanging(parent,TypeDescriptor.GetProperties(typeof(System.Windows.Forms.Control))["Controls"]); parent.Controls.Add(fillDock); fillDock.BringToFront(); cc.OnComponentChanged(parent,TypeDescriptor.GetProperties(typeof(System.Windows.Forms.Control))["Controls"],null,null); cc.OnComponentChanging(m,TypeDescriptor.GetProperties(typeof(DotNetBarManager))["FillDockSite"]); m.FillDockSite=fillDock; cc.OnComponentChanged(m,TypeDescriptor.GetProperties(typeof(DotNetBarManager))["FillDockSite"],null,fillDock); DocumentDockContainer dockContainer=new DocumentDockContainer(); cc.OnComponentChanging(fillDock,TypeDescriptor.GetProperties(typeof(DockSite))["DocumentDockContainer"]); fillDock.DocumentDockContainer=dockContainer; cc.OnComponentChanged(fillDock,TypeDescriptor.GetProperties(typeof(DockSite))["DocumentDockContainer"],null,dockContainer); Bar bar=dh.CreateComponent(typeof(Bar)) as Bar; BarUtilities.InitializeDocumentBar(bar); // bar.LayoutType=eLayoutType.DockContainer; // bar.DockTabAlignment=eTabStripAlignment.Top; // bar.AlwaysDisplayDockTab=true; // bar.Stretch=true; // bar.GrabHandleStyle=eGrabHandleStyle.None; TypeDescriptor.GetProperties(bar)["Style"].SetValue(bar,m.Style); // bar.Style=m.Style; // bar.CanDockBottom=false; // bar.CanDockTop=false; // bar.CanDockLeft=false; // bar.CanDockRight=false; // bar.CanDockDocument=true; // bar.CanUndock=false; // bar.CanHide=true; // bar.CanCustomize=false; DockContainerItem item=dh.CreateComponent(typeof(DockContainerItem)) as DockContainerItem; item.Text=item.Name; cc.OnComponentChanging(bar,TypeDescriptor.GetProperties(typeof(Bar))["Items"]); bar.Items.Add(item); PanelDockContainer panel=dh.CreateComponent(typeof(PanelDockContainer)) as PanelDockContainer; cc.OnComponentChanging(bar, TypeDescriptor.GetProperties(typeof(Bar))["Controls"]); item.Control=panel; cc.OnComponentChanged(bar, TypeDescriptor.GetProperties(typeof(Bar))["Controls"], null, null); //bar.Controls.Add(panel); panel.ColorSchemeStyle=m.Style; panel.ApplyLabelStyle(); cc.OnComponentChanged(bar,TypeDescriptor.GetProperties(typeof(Bar))["Items"],null,null); DocumentBarContainer doc=new DocumentBarContainer(bar); dockContainer.Documents.Add(doc); cc.OnComponentChanging(fillDock,TypeDescriptor.GetProperties(typeof(DockSite))["Controls"]); fillDock.Controls.Add(bar); cc.OnComponentChanged(fillDock,TypeDescriptor.GetProperties(typeof(DockSite))["Controls"],null,null); fillDock.RecalcLayout(); trans.Commit(); } }