protected virtual IContentLayout GetContentLayout() { if (m_LayoutManager == null) { m_LayoutManager = new SerialContentLayoutManager(); m_LayoutManager.BlockSpacing = 1; m_LayoutManager.FitContainerOversize = false; m_LayoutManager.FitContainer = false; m_LayoutManager.BeforeNewBlockLayout += new LayoutManagerLayoutEventHandler(LayoutManager_BeforeNewBlockLayout); } m_LayoutManager.MultiLine = m_MultiLine; m_LayoutManager.EvenHeight = m_ResizeItemsToFit; if (m_MinimumSize.Width > 0 && m_LayoutOrientation == eOrientation.Vertical) m_LayoutManager.VerticalFitContainerWidth = true; else m_LayoutManager.VerticalFitContainerWidth = false; if (m_MinimumSize.Height > 0 && m_LayoutOrientation == eOrientation.Horizontal) m_LayoutManager.HorizontalFitContainerHeight = true; else m_LayoutManager.HorizontalFitContainerHeight = false; m_LayoutManager.BlockLineAlignment = eContentVerticalAlignment.Top; //if(m_LineAlignment==eContainerVerticalAlignment.Middle) // m_LayoutManager.BlockLineAlignment = eContentVerticalAlignment.Middle; //else if (m_LineAlignment == eContainerVerticalAlignment.Bottom) // m_LayoutManager.BlockLineAlignment = eContentVerticalAlignment.Bottom; m_LayoutManager.ContentAlignment = GetContentAlignment(); m_LayoutManager.ContentVerticalAlignment = GetVerticalContentAlignment(); // eContentVerticalAlignment.Top; m_LayoutManager.ContentOrientation = (this.LayoutOrientation == eOrientation.Horizontal ? eContentOrientation.Horizontal : eContentOrientation.Vertical); m_LayoutManager.RightToLeft = false; Control containerControl = this.ContainerControl as Control; if (containerControl != null && containerControl.RightToLeft == RightToLeft.Yes) m_LayoutManager.RightToLeft = true; else m_LayoutManager.RightToLeft = false; m_LayoutManager.BlockSpacing = m_ItemSpacing - (this.IsGroupingContainer ? 1 : 0); return m_LayoutManager; }
/// <summary> /// Process item BeginBreaks /// </summary> /// <param name="info"></param> /// <param name="count"></param> /// <param name="span"></param> /// <param name="vertical"></param> private void ProcessBreaks(SerialContentLayoutManager.BlockLineInfo info, int count, int span, bool vertical) { int dcnt = 0; float delta = 0; float n = (float) span / count; for (int i = 0; i < info.Blocks.Count; i++) { BaseItem item = info.Blocks[i] as BaseItem; if (item != null && item.Displayed == true) { if (item.BeginGroup == true) delta = (++dcnt == count) ? span : delta + n; if (delta > 0) { if (vertical == true) item.TopInternal += (int) delta; else item.LeftInternal += (int) delta; } } } }
private void ResizeSingleLine2( SerialContentLayoutManager.BlockLineInfo info, int dx, int dy, int dw, int dh) { for (int i = 0; i < info.Blocks.Count; i++) { BaseItem item = info.Blocks[i] as BaseItem; if (item != null) { Rectangle r = item.Bounds; SuperTabItem tab = info.Blocks[i] as SuperTabItem; r.X += dx; r.Y += dy; if (tab == null || tab.IsSelected == false) { r.Width += dw; r.Height += dh; } item.Bounds = r; } } }
/// <summary> /// Gets the count of BeginBreak groups /// </summary> /// <param name="info"></param> /// <param name="size"></param> /// <returns></returns> private int GetBreakCount( SerialContentLayoutManager.BlockLineInfo info, out Size size) { int cnt = 0; size = Size.Empty; for (int i = 0; i < info.Blocks.Count; i++) { BaseItem item = info.Blocks[i] as BaseItem; if (item != null) { if (item.Displayed == true) { size.Width = item.Bounds.Right; size.Height = item.Bounds.Bottom; if (item.BeginGroup == true) cnt++; } } } return (cnt); }
/// <summary> /// Adjusts the individual blocks within a given line /// </summary> /// <param name="info"></param> /// <param name="pt"></param> private void AdjustBlocks(SerialContentLayoutManager.BlockLineInfo info, Point pt) { for (int i = 0; i < info.Blocks.Count; i++) { BaseItem item = info.Blocks[i] as BaseItem; if (item != null) { switch (_TabStripItem.TabAlignment) { case eTabStripAlignment.Top: case eTabStripAlignment.Bottom: item.TopInternal = pt.Y; break; default: item.LeftInternal = pt.X; break; } } } }
internal IContentLayout GetContentLayout() { if(m_LayoutManager==null) { m_LayoutManager=new SerialContentLayoutManager(); m_LayoutManager.BlockSpacing=1; m_LayoutManager.ContentAlignment=eContentAlignment.Left; m_LayoutManager.ContentLineAlignment=eContentLineAlignment.Top; m_LayoutManager.ContentOrientation=(this.LayoutOrientation==eOrientation.Horizontal?eContentOrientation.Horizontal:eContentOrientation.Vertical); m_LayoutManager.EvenHeight=(this.LayoutOrientation==eOrientation.Horizontal?true:false); m_LayoutManager.FitContainer=false; m_LayoutManager.FitContainerOversize=false; m_LayoutManager.MultiLine=false; } return m_LayoutManager; }
private void RecalcSizeContentManager(Graphics g, Rectangle dispRect) { if (this.Tabs.Count == 0) { if (this.IsRightToLeft) RecalcSizeTabSystemBox(dispRect, Rectangle.Empty); else RecalcSizeTabSystemBox(dispRect, Rectangle.Empty); return; } SerialContentLayoutManager m=new SerialContentLayoutManager(); TabItemLayoutManager blockManager=new TabItemLayoutManager(this); blockManager.FixedTabSize = m_FixedTabSize; blockManager.CloseButtonOnTabs = m_CloseButtonOnTabs; blockManager.CloseButtonSize = m_CloseButtonSize; m.RightToLeft = this.IsRightToLeft; if(m_Style==eTabStripStyle.RoundHeader) { m.ContentAlignment=eContentAlignment.Center; m.EvenHeight=true; m.FitContainerOversize=true; } else if (m_Style == eTabStripStyle.Office2007Document) { m.EvenHeight = true; if (m_Alignment == eTabStripAlignment.Bottom) { m.ContentAlignment = eContentAlignment.Left; m.ContentVerticalAlignment = eContentVerticalAlignment.Top; m.BlockLineAlignment = eContentVerticalAlignment.Top; m.ContentOrientation = eContentOrientation.Horizontal; } else if (m_Alignment == eTabStripAlignment.Top) { m.ContentAlignment = eContentAlignment.Left; m.ContentVerticalAlignment = eContentVerticalAlignment.Bottom; m.BlockLineAlignment = eContentVerticalAlignment.Bottom; m.ContentOrientation = eContentOrientation.Horizontal; } else if (m_Alignment == eTabStripAlignment.Left) { m.ContentAlignment = eContentAlignment.Right; m.ContentVerticalAlignment = eContentVerticalAlignment.Top; m.BlockLineAlignment = eContentVerticalAlignment.Top; m.ContentOrientation = eContentOrientation.Vertical; } else if (m_Alignment == eTabStripAlignment.Right) { m.ContentAlignment = eContentAlignment.Left; m.ContentVerticalAlignment = eContentVerticalAlignment.Top; m.BlockLineAlignment = eContentVerticalAlignment.Top; m.ContentOrientation = eContentOrientation.Vertical; } m.BlockSpacing = 0; if (m_Alignment == eTabStripAlignment.Top || m_Alignment == eTabStripAlignment.Bottom) { //dispRect.X += 4; dispRect.Width -= 2; } else { //dispRect.Y += 4; dispRect.Height -= 2; } blockManager.PaddingHeight = 6; } else if (m_Style == eTabStripStyle.Office2007Dock) { m.EvenHeight = true; if (m_Alignment == eTabStripAlignment.Bottom) { m.ContentAlignment = eContentAlignment.Left; m.ContentVerticalAlignment = eContentVerticalAlignment.Top; m.BlockLineAlignment = eContentVerticalAlignment.Top; m.ContentOrientation = eContentOrientation.Horizontal; } else if (m_Alignment == eTabStripAlignment.Top) { m.ContentAlignment = eContentAlignment.Left; m.ContentVerticalAlignment = eContentVerticalAlignment.Bottom; m.BlockLineAlignment = eContentVerticalAlignment.Bottom; m.ContentOrientation = eContentOrientation.Horizontal; } else if (m_Alignment == eTabStripAlignment.Left) { m.ContentAlignment = eContentAlignment.Right; m.ContentVerticalAlignment = eContentVerticalAlignment.Top; m.BlockLineAlignment = eContentVerticalAlignment.Top; m.ContentOrientation = eContentOrientation.Vertical; } else if (m_Alignment == eTabStripAlignment.Right) { m.ContentAlignment = eContentAlignment.Left; m.ContentVerticalAlignment = eContentVerticalAlignment.Top; m.BlockLineAlignment = eContentVerticalAlignment.Top; m.ContentOrientation = eContentOrientation.Vertical; } m.BlockSpacing = 2; if (m_Alignment == eTabStripAlignment.Top || m_Alignment == eTabStripAlignment.Bottom) { dispRect.X += 2; dispRect.Width -= 2; } else { dispRect.Y += 2; dispRect.Height -= 2; } blockManager.PaddingHeight = 6; } else if(m_Style==eTabStripStyle.VS2005Dock) { m.EvenHeight = true; if(m_Alignment==eTabStripAlignment.Bottom) { m.ContentAlignment=eContentAlignment.Left; m.ContentVerticalAlignment=eContentVerticalAlignment.Top; m.BlockLineAlignment=eContentVerticalAlignment.Top; m.ContentOrientation=eContentOrientation.Horizontal; } else if(m_Alignment==eTabStripAlignment.Top) { m.ContentAlignment=eContentAlignment.Left; m.ContentVerticalAlignment=eContentVerticalAlignment.Bottom; m.BlockLineAlignment=eContentVerticalAlignment.Bottom; m.ContentOrientation=eContentOrientation.Horizontal; } else if(m_Alignment==eTabStripAlignment.Left) { m.ContentAlignment=eContentAlignment.Right; m.ContentVerticalAlignment=eContentVerticalAlignment.Top; m.BlockLineAlignment=eContentVerticalAlignment.Top; m.ContentOrientation=eContentOrientation.Vertical; } else if(m_Alignment==eTabStripAlignment.Right) { m.ContentAlignment=eContentAlignment.Left; m.ContentVerticalAlignment=eContentVerticalAlignment.Top; m.BlockLineAlignment=eContentVerticalAlignment.Top; m.ContentOrientation=eContentOrientation.Vertical; } m.BlockSpacing=8; if(m_Alignment==eTabStripAlignment.Top || m_Alignment==eTabStripAlignment.Bottom) { dispRect.X+=4; dispRect.Width-=8; } else { dispRect.Y+=4; dispRect.Height-=8; } } else if(m_Style==eTabStripStyle.SimulatedTheme) { if(m_Alignment==eTabStripAlignment.Top || m_Alignment==eTabStripAlignment.Bottom) { //dispRect.X+=3; dispRect.Width-=3; } else { //dispRect.Y+=3; dispRect.Height-=3; } if(m_Alignment==eTabStripAlignment.Bottom) { m.ContentAlignment=eContentAlignment.Left; m.ContentVerticalAlignment=eContentVerticalAlignment.Top; m.BlockLineAlignment=eContentVerticalAlignment.Top; m.ContentOrientation=eContentOrientation.Horizontal; m.EvenHeight = true; } else if(m_Alignment==eTabStripAlignment.Top) { m.ContentAlignment=eContentAlignment.Left; m.ContentVerticalAlignment=eContentVerticalAlignment.Bottom; m.BlockLineAlignment=eContentVerticalAlignment.Bottom; m.ContentOrientation=eContentOrientation.Horizontal; m.EvenHeight = true; } else if(m_Alignment==eTabStripAlignment.Left) { m.ContentAlignment=eContentAlignment.Right; m.ContentVerticalAlignment=eContentVerticalAlignment.Top; m.BlockLineAlignment=eContentVerticalAlignment.Top; m.ContentOrientation=eContentOrientation.Vertical; m.EvenHeight=true; } else if(m_Alignment==eTabStripAlignment.Right) { m.ContentAlignment=eContentAlignment.Left; m.ContentVerticalAlignment=eContentVerticalAlignment.Top; m.BlockLineAlignment=eContentVerticalAlignment.Top; m.ContentOrientation=eContentOrientation.Vertical; m.EvenHeight=true; } blockManager.HorizontalText=true; //blockManager.SelectedPaddingWidth=1; blockManager.PaddingHeight=10; blockManager.PaddingWidth=2; } if(m_Alignment==eTabStripAlignment.Left || m_Alignment==eTabStripAlignment.Right) m.ContentOrientation=eContentOrientation.Vertical; else m.ContentOrientation=eContentOrientation.Horizontal; if(m_Style!=eTabStripStyle.RoundHeader) { if(m_TabLayoutType==eTabLayoutType.FitContainer) { m.FitContainerOversize=true; m.OversizeDistribute = true; m.MultiLine=false; } else if(m_TabLayoutType==eTabLayoutType.FixedWithNavigationBox) { m.FitContainerOversize=false; m.MultiLine=false; } else if(m_TabLayoutType==eTabLayoutType.MultilineNoNavigationBox || m_TabLayoutType==eTabLayoutType.MultilineWithNavigationBox) { m.FitContainerOversize=false; m.MultiLine=true; } } blockManager.Graphics=g; TabItem[] blocks= new TabItem[this.Tabs.Count]; this.Tabs.CopyTo(blocks,0); Rectangle tabArea=dispRect; if(m_ScrollOffset!=0) { if(m_Alignment==eTabStripAlignment.Left || m_Alignment==eTabStripAlignment.Right) tabArea.Y-=m_ScrollOffset; else tabArea.X-=m_ScrollOffset; } if (this.IsRightToLeft) { if (this.HasNavigationBox && m_TabSystemBox.Visible) { tabArea.X += m_TabSystemBox.DefaultWidth; } m_TabItemsBounds = m.Layout(tabArea, blocks, blockManager); RecalcSizeTabSystemBox(dispRect, tabArea); } else { m_TabItemsBounds = m.Layout(tabArea, blocks, blockManager); RecalcSizeTabSystemBox(dispRect, m_TabItemsBounds); } }
/// <summary> /// Creates new instance of the control. /// </summary> public BubbleBar() { if (!ColorFunctions.ColorsLoaded) { NativeFunctions.RefreshSettings(); NativeFunctions.OnDisplayChange(); ColorFunctions.LoadColors(); } this.SetStyle(ControlStyles.UserPaint, true); this.SetStyle(ControlStyles.AllPaintingInWmPaint, true); this.SetStyle(ControlStyles.Opaque, true); this.SetStyle(ControlStyles.ResizeRedraw, true); this.SetStyle(DisplayHelp.DoubleBufferFlag, true); this.SetStyle(ControlStyles.SupportsTransparentBackColor, true); this.SetStyle(ControlStyles.ContainerControl, false); this.SetStyle(ControlStyles.Selectable, false); m_Tabs = new BubbleBarTabCollection(this); m_ButtonBackAreaStyle.StyleChanged += new EventHandler(ElementStyleChanged); m_BackgroundStyle.StyleChanged += new EventHandler(ElementStyleChanged); m_ContentManager.BlockSpacing = 0; m_ContentManager.ContentVerticalAlignment = eContentVerticalAlignment.Bottom; m_ContentManager.BlockLineAlignment = eContentVerticalAlignment.Bottom; m_ContentManager.ContentOrientation = eContentOrientation.Horizontal; m_TabLayoutManager = new SimpleTabLayoutManager(); m_TabDisplay = new SimpleTabDisplay(); m_TabContentManager = new SerialContentLayoutManager(); //m_Buttons=new BubbleButtonCollection(this); m_BubbleButtonDisplayInfo.BubbleBar = this; // Make sure this is JIT-ed m_Overlay = new BubbleBarOverlay(this); m_Overlay = null; if (!OSFeature.Feature.IsPresent(OSFeature.LayeredWindows)) m_EnableOverlay = false; ApplyButtonAlignment(); // m_SelectedTabColors.BorderColor=Color.Black; // m_MouseOverTabColors.BorderColor=SystemColors.Highlight; }