Пример #1
0
		private DocumentBarContainer CreateDocumentBarContainer(Bar bar)
		{
			DocumentBarContainer doc=new DocumentBarContainer(bar);
			return doc;
		}
Пример #2
0
 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);
 }
Пример #3
0
		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);
		}
Пример #4
0
		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;
		}
Пример #5
0
		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();
			}
		}