private void RevisionsCellFormatting(object sender, DataGridViewCellFormattingEventArgs e)
{
var columnIndex = e.ColumnIndex;
if (e.RowIndex < 0)
return;
if (Revisions.RowCount <= e.RowIndex)
return;
var revision = GetRevision(e.RowIndex);
if (revision == null)
return;
e.FormattingApplied = true;
int graphColIndex = GraphDataGridViewColumn.Index;
int messageColIndex = MessageDataGridViewColumn.Index;
int authorColIndex = AuthorDataGridViewColumn.Index;
int dateColIndex = DateDataGridViewColumn.Index;
int isMsgMultilineColIndex = IsMessageMultilineDataGridViewColumn.Index;
if (columnIndex == graphColIndex)
{
e.Value = revision.Guid;
}
else if (columnIndex == messageColIndex)
{
e.Value = revision.Subject;
}
else if (columnIndex == authorColIndex)
{
e.Value = revision.Author ?? "";
}
else if (columnIndex == dateColIndex)
{
var time = AppSettings.ShowAuthorDate ? revision.AuthorDate : revision.CommitDate;
if (time == DateTime.MinValue || time == DateTime.MaxValue)
e.Value = "";
else
e.Value = string.Format("{0} {1}", time.ToShortDateString(), time.ToLongTimeString());
}
else if (columnIndex == BuildServerWatcher.BuildStatusImageColumnIndex)
{
BuildInfoDrawingLogic.BuildStatusImageColumnCellFormatting(e, Revisions, revision);
}
else if (columnIndex == BuildServerWatcher.BuildStatusMessageColumnIndex)
{
BuildInfoDrawingLogic.BuildStatusMessageCellFormatting(e, revision);
}
else if (AppSettings.ShowIndicatorForMultilineMessage && columnIndex == isMsgMultilineColIndex)
{
if (revision.Body == null && !revision.IsArtificial())
{
var moduleRef = Module;
ThreadPool.QueueUserWorkItem(o => LoadIsMultilineMessageInfo(revision, columnIndex, e.RowIndex, Revisions.RowCount, moduleRef));
}
if (revision.Body != null)
{
e.Value = revision.Body.TrimEnd().Contains("\n") ? MultilineMessageIndicator : "";
}
else
{
e.Value = "";
}
}
else
{
e.FormattingApplied = false;
}
}