Example #1
0
        internal int InsertPage(int index, TabListPage page)
        {
            if (_pages == null)
            {
                _pages = new TabListPage[1];
            }
            else if (_pages.Length == this.TabListPageCount)
            {
                // no room left, so resize the array
                TabListPage[] copy;

                copy = new TabListPage[_pages.Length + 1];
                Array.Copy(_pages, copy, _pages.Length);
                _pages = copy;
            }

            // if this is an insert rather than append, move the array around
            if (index < this.TabListPageCount)
            {
                Array.Copy(_pages, index, _pages, index + 1, _pages.Length - index);
            }

            // update the array and page count
            _pages[index] = page;
            this.TabListPageCount++;
            this.UpdatePages();
            this.UpdateSelectedPage();

            // finally trigger a redraw of the control
            this.Invalidate();

            return(index);
        }
Example #2
0
            public bool Contains(TabListPage value)
            {
                if (value == null)
                {
                    throw new ArgumentNullException("value");
                }

                return(this.IndexOf(value) != -1);
            }
Example #3
0
            public void Add(TabListPage value)
            {
                if (value == null)
                {
                    throw new ArgumentNullException("value");
                }

                this.Owner.Controls.Add(value);
            }
Example #4
0
            public void Insert(int index, TabListPage value)
            {
                if (value == null)
                {
                    throw new ArgumentNullException("value");
                }

                this.Owner.InsertPage(index, value);
                this.Owner.Controls.Add(value);
                this.Owner.Controls.SetChildIndex(value, index);
            }
Example #5
0
            public IEnumerator GetEnumerator()
            {
                TabListPage[] tabPages;

                tabPages = this.Owner.GetTabListPages();
                if (tabPages == null)
                {
                    tabPages = new TabListPage[0];
                }

                return(tabPages.GetEnumerator());
            }
Example #6
0
            public TabListPage Add(string text)
            {
                TabListPage page;

                page = new TabListPage()
                {
                    Text = text
                };

                this.Add(page);

                return(page);
            }
Example #7
0
        internal TabListPage[] GetTabListPages()
        {
            TabListPage[] copy;

            copy = new TabListPage[this.TabListPageCount];

            if (this.TabListPageCount > 0)
            {
                Array.Copy(_pages, copy, this.TabListPageCount);
            }

            return(copy);
        }
Example #8
0
        internal int AddPage(TabListPage page)
        {
            int index;

            index = this.InsertPage(this.TabListPageCount, page);

            if (this.SelectedIndex == -1)
            {
                this.SelectedIndex = index;
            }

            return(index);
        }
Example #9
0
            public int IndexOf(TabListPage value)
            {
                int index;

                if (value == null)
                {
                    throw new ArgumentNullException("value");
                }

                index = -1;
                for (int i = 0; i < this.Count; i++)
                {
                    if (this[i] == value)
                    {
                        index = i;
                        break;
                    }
                }

                return(index);
            }
Example #10
0
 internal void UpdatePage(TabListPage page)
 {
     this.Invalidate();
 }
Example #11
0
 public abstract void RenderHeader(Graphics g, TabListPage page, TabListPageState state);
Example #12
0
        public override void RenderHeader(Graphics g, TabListPage page, TabListPageState state)
        {
            Color           fillColor;
            Color           textColor;
            Rectangle       fillBounds;
            Rectangle       textRectangle;
            TextFormatFlags flags;
            int             arrowSize;

            arrowSize         = 6;
            fillBounds        = page.HeaderBounds;
            fillBounds.Width -= arrowSize;
            textRectangle     = Rectangle.Inflate(fillBounds, -4, -4);

            // define the most appropriate colors
            if ((state & TabListPageState.Selected) == TabListPageState.Selected)
            {
                fillColor = SystemColors.Highlight;
                textColor = SystemColors.HighlightText;
            }
            else if ((state & TabListPageState.Hot) == TabListPageState.Hot)
            {
                fillColor = SystemColors.ControlLightLight;
                textColor = page.Owner.ForeColor;
            }
            else
            {
                fillColor = page.Owner.BackColor;
                textColor = page.Owner.ForeColor;
            }

            // fill the background
            using (Brush brush = new SolidBrush(fillColor))
                g.FillRectangle(brush, fillBounds);

            // draw the selection arrow
            if ((state & TabListPageState.Selected) == TabListPageState.Selected)
            {
                int   y;
                int   x;
                Point point1;
                Point point2;
                Point point3;

                y = fillBounds.Top + ((fillBounds.Height - (arrowSize * 2)) / 2);
                x = fillBounds.Right;

                point1 = new Point(x, y);
                point2 = new Point(x + arrowSize, y + arrowSize);
                point3 = new Point(x, y + (arrowSize * 2));

                using (Brush brush = new SolidBrush(fillColor))
                {
                    g.FillPolygon(brush, new Point[] { point1, point2, point3 });
                }
            }

            // draw the text
            flags = TextFormatFlags.VerticalCenter | TextFormatFlags.Left | TextFormatFlags.NoPrefix | TextFormatFlags.SingleLine | TextFormatFlags.WordEllipsis;
            TextRenderer.DrawText(g, page.Text, page.Font, textRectangle, textColor, fillColor, flags);

            // focus
            if ((state & TabListPageState.Focused) == TabListPageState.Focused)
            {
                SizeF textSize;
                int   offset;

                textSize = TextRenderer.MeasureText(g, page.Text, page.Font, textRectangle.Size, flags);
                offset   = 2;

                ControlPaint.DrawFocusRectangle(g, new Rectangle(textRectangle.X, textRectangle.Y, (int)textSize.Width + offset, (int)textSize.Height + offset), textColor, fillColor);
            }
        }