Exemplo n.º 1
0
        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;
        }
Exemplo n.º 2
0
        /// <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;
                    }
                }
            }
        }
Exemplo n.º 3
0
        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;
                }
            }
        }
Exemplo n.º 4
0
        /// <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);
        }
Exemplo n.º 5
0
        /// <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;
                    }
                }
            }
        }
Exemplo n.º 6
0
		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;
		}
Exemplo n.º 7
0
		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);
            }
		}
Exemplo n.º 8
0
        /// <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;
        }