Example #1
0
 /// <summary>Paint event handler.</summary>
 /// <param name="paintEventArgs">Paint event args.</param>
 protected override void OnPaint(SubItemPaintEventArgs paintEventArgs)
 {
     paintEventArgs.PaintImageOverlayAndText(Image, OverlayImage, Text,
         Font ?? paintEventArgs.Font,
         TextBrush ?? paintEventArgs.Brush,
         TextAlignment ?? paintEventArgs.Alignment);
 }
Example #2
0
        protected virtual void OnPaintItem(TItem item, DrawItemEventArgs e)
        {
            Assert.IsNotNull(item);
            Assert.IsNotNull(e);

            var  itemState  = ItemState.None;
            bool isSelected = false;

            if ((e.State & DrawItemState.Selected) == DrawItemState.Selected)
            {
                itemState |= ItemState.Selected;
                isSelected = true;
            }
            if ((e.State & DrawItemState.Focus) == DrawItemState.Focus)
            {
                itemState |= ItemState.Focused;
            }

            if (isSelected)
            {
                var column = new CustomListBoxColumn(0, string.Empty);
                using (var brush = new SolidBrush(e.ForeColor))
                {
                    column.ContentBrush = brush;
                    var args = new SubItemPaintEventArgs(e.Graphics,
                                                         e.Bounds,
                                                         e.Bounds,
                                                         0,
                                                         itemState,
                                                         0,
                                                         Focused,
                                                         0,
                                                         column);
                    item.PaintSubItem(args);
                }
            }
            else
            {
                var args = new SubItemPaintEventArgs(e.Graphics,
                                                     e.Bounds,
                                                     e.Bounds,
                                                     0,
                                                     itemState,
                                                     0,
                                                     Focused,
                                                     0,
                                                     DropDownControl.Columns[0]);
                item.PaintSubItem(args);
            }
        }
Example #3
0
        public static void OnPaintSubItem(SubItemPaintEventArgs paintEventArgs, DateTime date)
        {
            DateFormat format;
            var        dc = paintEventArgs.Column as DateColumn;

            if (dc != null)
            {
                format = dc.DateFormat;
            }
            else
            {
                format = DateColumn.DefaultDateFormat;
            }
            var strdate = Utility.FormatDate(date, format);

            paintEventArgs.PaintText(strdate);
        }
Example #4
0
 /// <summary>Override this to paint part of your item.</summary>
 /// <param name="paintEventArgs">Paint event args.</param>
 protected abstract void OnPaintSubItem(SubItemPaintEventArgs paintEventArgs);
Example #5
0
 internal void PaintSubItem(SubItemPaintEventArgs paintEventArgs)
 {
     OnPaintSubItem(paintEventArgs);
 }
Example #6
0
 /// <summary>Paint event handler.</summary>
 /// <param name="paintEventArgs">Paint event args.</param>
 protected override void OnPaint(SubItemPaintEventArgs paintEventArgs)
 {
     paintEventArgs.PaintText(Text,
         _font ?? paintEventArgs.Font,
         _textBrush ?? paintEventArgs.Brush,
         _alignment ?? paintEventArgs.Alignment);
 }
Example #7
0
        public static void OnPaintSubItem(SubItemPaintEventArgs paintEventArgs, Revision data, GraphAtom[] graph, IList<PointerBounds> drawnPointers, int hoveredPointer)
        {
            #region get painting options

            bool showLocalBranches;
            bool showRemoteBranches;
            bool showTags;
            bool showStash;
            bool alignToGraph;
            var rsc = paintEventArgs.Column as SubjectColumn;
            if(drawnPointers != null)
            {
                drawnPointers.Clear();
                if(rsc != null)
                {
                    alignToGraph		= rsc.AlignToGraph;
                    showLocalBranches	= rsc.ShowLocalBranches;
                    showRemoteBranches	= rsc.ShowRemoteBranches;
                    showTags			= rsc.ShowTags;
                    showStash			= rsc.ShowStash;
                }
                else
                {
                    alignToGraph		= SubjectColumn.DefaultAlignToGraph;
                    showLocalBranches	= SubjectColumn.DefaultShowLocalBranches;
                    showRemoteBranches	= SubjectColumn.DefaultShowRemoteBranches;
                    showTags			= SubjectColumn.DefaultShowTags;
                    showStash			= SubjectColumn.DefaultShowStash;
                }
            }
            else
            {
                alignToGraph = (rsc != null) ? rsc.AlignToGraph : SubjectColumn.DefaultAlignToGraph;
                showLocalBranches = false;
                showRemoteBranches = false;
                showTags = false;
                showStash = false;
            }
            var graphStyle = GlobalBehavior.GraphStyle;

            #endregion

            #region align to graph column

            var rect = paintEventArgs.Bounds;
            var graphColumn = paintEventArgs.Column.PreviousVisibleColumn;
            int graphColumnX = 0;
            if(graphColumn != null)
            {
                if(graphColumn.Id != (int)ColumnId.Graph)
                {
                    graphColumn = null;
                }
                else
                {
                    graphColumnX = rect.X - graphColumn.Width;
                }
            }
            if(graphColumn != null && alignToGraph)
            {
                int availWidth = graphColumn.Width - GraphCellWidth * graph.Length;
                for(int i = graph.Length - 1; i >= 0; --i)
                {
                    if(graph[i].Elements != GraphElement.Space)
                    {
                        break;
                    }
                    availWidth += GraphCellWidth;
                }
                if(availWidth != 0)
                {
                    rect.X -= availWidth;
                    rect.Width += availWidth;
                }
            }

            #endregion

            #region prepare to draw references

            int drawnRefs = 0;
            int xoffset = 0;
            var font = paintEventArgs.Column.ContentFont;
            SubItemPaintEventArgs.PrepareContentRectangle(ref rect);

            #endregion

            #region paint tag & branch refs

            bool refsPresent;
            lock(data.References.SyncRoot)
            {
                refsPresent = data.References.Count != 0;
                if((showLocalBranches || showRemoteBranches || showTags) && refsPresent)
                {
                    foreach(var reference in data.References)
                    {
                        int w = 0;
                        switch(reference.Type)
                        {
                            case ReferenceType.LocalBranch:
                                if(showLocalBranches)
                                {
                                    w = graphStyle.DrawBranch(
                                        paintEventArgs.Graphics,
                                        font,
                                        GitterApplication.TextRenderer.LeftAlign,
                                        rect.Left + xoffset,
                                        rect.Top,
                                        rect.Right,
                                        rect.Height,
                                        drawnRefs == hoveredPointer,
                                        (Branch)reference);
                                }
                                break;
                            case ReferenceType.RemoteBranch:
                                if(showRemoteBranches)
                                {
                                    w = graphStyle.DrawBranch(
                                        paintEventArgs.Graphics,
                                        font,
                                        GitterApplication.TextRenderer.LeftAlign,
                                        rect.Left + xoffset,
                                        rect.Top,
                                        rect.Right,
                                        rect.Height,
                                        drawnRefs == hoveredPointer,
                                        (RemoteBranch)reference);
                                }
                                break;
                            case ReferenceType.Tag:
                                if(showTags)
                                {
                                    w = graphStyle.DrawTag(
                                        paintEventArgs.Graphics,
                                        font,
                                        GitterApplication.TextRenderer.LeftAlign,
                                        rect.Left + xoffset,
                                        rect.Top,
                                        rect.Right,
                                        rect.Height,
                                        drawnRefs == hoveredPointer,
                                        (Tag)reference);
                                }
                                break;
                        }
                        if(w != 0)
                        {
                            drawnPointers.Add(new PointerBounds(reference, new Rectangle(rect.X + xoffset, rect.Y, w, rect.Height)));
                            xoffset += w + TagSpacing;
                            ++drawnRefs;
                        }
                        if(xoffset >= rect.Width) break;
                    }
                }
            }

            #endregion

            #region paint stash ref

            var stash = data.Repository.Stash.MostRecentState;
            bool stashPresent = (stash != null && data == stash.Revision);
            if(showStash && stashPresent)
            {
                if(xoffset < rect.Width)
                {
                    int w = graphStyle.DrawStash(
                        paintEventArgs.Graphics,
                        font,
                        GitterApplication.TextRenderer.LeftAlign,
                        rect.Left + xoffset,
                        rect.Top,
                        rect.Right,
                        rect.Height,
                        drawnRefs == hoveredPointer,
                        stash);

                    drawnPointers.Add(new PointerBounds(stash, new Rectangle(rect.X + xoffset, rect.Y, w, rect.Height)));
                    xoffset += w + TagSpacing;
                    ++drawnRefs;
                }
            }

            #endregion

            #region paint reference presence indication

            if(drawnRefs != 0)
            {
                if(graph != null && graph.Length != 0)
                {
                    if(graphColumn != null)
                    {
                        graphStyle.DrawReferenceConnector(paintEventArgs.Graphics, graph, graphColumnX, 21, rect.X, rect.Y, rect.Height);
                    }
                }
                xoffset += 2;
            }
            else
            {
                if(refsPresent || stashPresent)
                {
                    if(graph != null && graph.Length != 0 && graphColumn != null)
                    {
                        graphStyle.DrawReferencePresenceIndicator(paintEventArgs.Graphics, graph, graphColumnX, 21, rect.Y, rect.Height);
                    }
                }
            }

            #endregion

            #region paint subject text

            rect.X += xoffset;
            rect.Width -= xoffset;
            if(rect.Width > 1)
            {
                paintEventArgs.PrepareTextRectangle(font, ref rect);
                GitterApplication.TextRenderer.DrawText(
                    paintEventArgs.Graphics, data.Subject, font, paintEventArgs.Brush, rect);
            }

            #endregion
        }
Example #8
0
 /// <summary>Override this to paint part of your item.</summary>
 /// <param name="paintEventArgs">Paint event args.</param>
 protected abstract void OnPaintSubItem(SubItemPaintEventArgs paintEventArgs);
Example #9
0
 protected override void OnPaintSubItem(SubItemPaintEventArgs paintEventArgs)
 {
     if(!_cachedInfo)
     {
         _icon = GetIcon();
         if(_icon == null)
         {
             _bmpIcon = GetBitmapIcon();
         }
         _cachedInfo = true;
     }
     Bitmap overlay;
     string data;
     if(_unstaged != null)
     {
         switch(_unstaged.Status)
         {
             case FileStatus.Modified:
                 overlay = CachedResources.Bitmaps["ImgOverlayEdit"];
                 break;
             case FileStatus.Added:
                 overlay = CachedResources.Bitmaps["ImgOverlayAdd"];
                 break;
             case FileStatus.Removed:
                 overlay = CachedResources.Bitmaps["ImgOverlayDel"];
                 break;
             case FileStatus.Unmerged:
                 overlay = CachedResources.Bitmaps["ImgOverlayConflict"];
                 break;
             default:
                 overlay = null;
                 break;
         }
         if((Parent != null) && (Parent is TreeDirectoryListItem))
         {
             data = _unstaged.Name;
         }
         else
         {
             data = _unstaged.RelativePath;
         }
     }
     else if(_staged != null)
     {
         switch(_staged.Status)
         {
             case FileStatus.Modified:
                 overlay = CachedResources.Bitmaps["ImgOverlayEditStaged"];
                 break;
             case FileStatus.Added:
                 overlay = CachedResources.Bitmaps["ImgOverlayAddStaged"];
                 break;
             case FileStatus.Removed:
                 overlay = CachedResources.Bitmaps["ImgOverlayDelStaged"];
                 break;
             case FileStatus.Unmerged:
                 overlay = CachedResources.Bitmaps["ImgOverlayConflict"];
                 break;
             default:
                 overlay = null;
                 break;
         }
         if((Parent != null) && (Parent is TreeDirectoryListItem))
         {
             data = _staged.Name;
         }
         else
         {
             data = _staged.RelativePath;
         }
     }
     else
     {
         data = string.Empty;
         overlay = null;
     }
     switch((ColumnId)paintEventArgs.SubItemId)
     {
         case ColumnId.Name:
             paintEventArgs.PaintImageOverlayAndText(_bmpIcon, overlay, data);
             break;
     }
 }
Example #10
0
        public static void OnPaintSubItem(SubItemPaintEventArgs paintEventArgs, HashStringCache data)
        {
            Assert.IsNotNull(paintEventArgs);
            Assert.IsNotNull(data);

            bool abbreviate = IsAbbreviateEnabled(paintEventArgs.Column);
            paintEventArgs.PaintText(data.GetValue(abbreviate ? HashColumn.DefaultAbbrevLength : 40));
        }
Example #11
0
 public void Paint(SubItemPaintEventArgs paintEventArgs)
 {
     OnPaint(paintEventArgs);
 }
Example #12
0
 public static void OnPaintSubItem(SubItemPaintEventArgs paintEventArgs, string value)
 {
     paintEventArgs.PaintText(value);
 }
Example #13
0
 public static void OnPaintSubItem(SubItemPaintEventArgs paintEventArgs, DateTime date)
 {
     DateFormat format;
     var dc = paintEventArgs.Column as DateColumn;
     if(dc != null)
     {
         format = dc.DateFormat;
     }
     else
     {
         format = DateColumn.DefaultDateFormat;
     }
     var strdate = Utility.FormatDate(date, format);
     paintEventArgs.PaintText(strdate);
 }
Example #14
0
 public static void OnPaintSubItem(SubItemPaintEventArgs paintEventArgs, GraphAtom[] graph, RevisionGraphItemType itemType)
 {
     if(graph != null)
     {
         bool showColors;
         var rgc = paintEventArgs.Column as GraphColumn;
         if(rgc != null)
         {
             showColors = rgc.ShowColors;
         }
         else
         {
             showColors = GraphColumn.DefaultShowColors;
         }
         GlobalBehavior.GraphStyle.DrawGraph(
             paintEventArgs.Graphics,
             graph,
             paintEventArgs.Bounds,
             GraphCellWidth,
             itemType,
             showColors);
     }
 }
Example #15
0
 protected override void OnPaintSubItem(SubItemPaintEventArgs paintEventArgs)
 {
     switch((ColumnId)paintEventArgs.SubItemId)
     {
         case ColumnId.Name:
             paintEventArgs.PaintImageAndText(_image, _text);
             break;
     }
 }
Example #16
0
 protected override void OnPaintSubItem(SubItemPaintEventArgs paintEventArgs)
 {
     switch(paintEventArgs.SubItemId)
     {
         case 0:
             if(_repository == null)
                 paintEventArgs.PaintText("<no repository>");
             else
                 paintEventArgs.PaintImageAndText(ImgRepository, _repository);
             break;
     }
 }
Example #17
0
 /// <summary>Paint event handler.</summary>
 /// <param name="paintEventArgs">Paint event args.</param>
 protected override void OnPaint(SubItemPaintEventArgs paintEventArgs)
 {
     paintEventArgs.PaintImage(Image, OverlayImage);
 }
Example #18
0
        public static void OnPaintSubItem(SubItemPaintEventArgs paintEventArgs, string data, Brush brush)
        {
            Assert.IsNotNull(paintEventArgs);
            Assert.IsNotNull(data);

            bool abbreviate = IsAbbreviateEnabled(paintEventArgs.Column);
            paintEventArgs.PaintText(
                abbreviate ? data.Substring(0, HashColumn.DefaultAbbrevLength) : (data), paintEventArgs.Font, brush);
        }
Example #19
0
 internal void PaintSubItem(SubItemPaintEventArgs paintEventArgs)
 {
     OnPaintSubItem(paintEventArgs);
 }
Example #20
0
 public void Paint(SubItemPaintEventArgs paintEventArgs)
 {
     OnPaint(paintEventArgs);
 }
Example #21
0
 public static void OnPaintSubItem(SubItemPaintEventArgs paintEventArgs, Revision data, GraphAtom[] graph)
 {
     OnPaintSubItem(paintEventArgs, data, graph, null, -1);
 }
Example #22
0
 /// <summary>Paint event handler.</summary>
 /// <param name="paintEventArgs">Paint event args.</param>
 protected override void OnPaint(SubItemPaintEventArgs paintEventArgs)
 {
     paintEventArgs.PaintImage(Image, OverlayImage);
 }