private static bool ApplyBackColor(DataGridViewCellFormattingEventArgs e, LogEventItem item, params int[] textColumns) { Assert.ArgumentNotNull(e, nameof(e)); Assert.ArgumentNotNull(item, nameof(item)); Color backColor = GetBackColor(item); if (backColor.IsEmpty) { return(false); } // assigning back color requires correct type of cell value if (IsContained(textColumns, e.ColumnIndex)) { if (e.Value is string) { // do nothing } else if (e.Value is DateTime) { // TODO cleaner solution needed e.Value = ((DateTime)e.Value).ToLongTimeString(); } else { e.Value = $"{e.Value}"; } } e.CellStyle.BackColor = backColor; return(true); }
public static void HandleCellFormattingEvent( [NotNull] DataGridViewCellFormattingEventArgs e, [NotNull] DataGridViewRow row, [CanBeNull] LogEventItem item, int messageColumnIndex, params int[] textColumns) { if (item == null) { return; } var formatted = false; if (e.ColumnIndex == messageColumnIndex) { if (ApplyPadding(e, item)) { formatted = true; } } if (ApplyBackColor(e, item, textColumns)) { formatted = true; } e.FormattingApplied = formatted; }
private static Padding GetCellPadding([NotNull] LogEventItem logEventItem, Padding defaultPadding) { return(new Padding(logEventItem.Indentation * _indentPixelPerCharacter, defaultPadding.Top, defaultPadding.Right, defaultPadding.Bottom)); }
private void AddRow([NotNull] LogEventItem logEventItem) { Assert.ArgumentNotNull(logEventItem, nameof(logEventItem)); if (_dataGridView.RowCount > _maxDisplayedLogMessages) { DataGridViewRow firstRow = _dataGridView.Rows[0]; firstRow.Tag = null; _dataGridView.Rows.Remove(firstRow); firstRow.Dispose(); } int rowIndex = _dataGridView.Rows.Add( logEventItem.LogLevelImage, logEventItem.LogNummer, logEventItem.LogDateTime, logEventItem.LogMessage); DataGridViewRow row = _dataGridView.Rows[rowIndex]; row.Tag = logEventItem; DataGridViewCell newMessageCell = row.Cells[_columnLogMessage.Index]; // set as current cell --> scrolls _dataGridView.CurrentCell = newMessageCell; _dataGridView.CurrentCell.Selected = false; }
private static string FormatLogEventItem(LogEventItem logEventItem) { var s = new StringBuilder(); s.AppendFormat("Level: {0}", logEventItem.LogLevel); s.AppendLine(); s.AppendFormat("Date: {0}", logEventItem.LogDateTime.ToShortDateString()); s.AppendLine(); s.AppendFormat("Time: {0}", logEventItem.LogDateTime.ToLongTimeString()); s.AppendLine(); s.AppendFormat("User: {0}", EnvironmentUtils.UserDisplayName); s.AppendLine(); s.AppendFormat("Source: {0}", logEventItem.LoggerName); s.AppendLine(); s.AppendLine(); s.AppendLine("Message:"); s.AppendLine(logEventItem.LogMessage); if (logEventItem.Exception != null) { s.AppendLine(); s.AppendLine("Exception details:"); WriteInnerException(s, logEventItem.Exception.InnerException); s.Append(logEventItem.Exception); } return(s.ToString()); }
public void ShowDialog(LogEventItem logEventItem) { _logEventItem = logEventItem; // TODO ShowDialog(); // UIEnvironment.ShowDialog(this); }
private static void ShowItemDetailsDialog([NotNull] LogEventItem item) { Assert.ArgumentNotNull(item, nameof(item)); using (var form = new LogEventItemDetailsForm()) { form.ShowDialog(item); } }
private void AddBackupEventItem([NotNull] LogEventItem logEventItem) { Assert.ArgumentNotNull(logEventItem, nameof(logEventItem)); if (_logMessages.Count >= _maxLogMessages) { _logMessages.RemoveRange(0, _fullListRemoveCount); } _logMessages.Add(logEventItem); }
private static string FormatToolTip([NotNull] LogEventItem logEventItem) { if (logEventItem.Exception == null) { return(logEventItem.LogMessage); } return(string.Format(@"{0}<br><br>{1}", logEventItem.LogMessage, logEventItem.Exception)); }
private void ShowLastClickedRowDetails() { LogEventItem item = GetLastClickedRowLogEventItem(); if (item == null) { return; } ShowItemDetailsDialog(item); }
private void RefreshDetails() { textBoxDetails.Text = string.Empty; LogEventItem eventItem = GetCurrentRowLogEventItem(); if (eventItem != null) { textBoxDetails.Text = FormatLogEventItem(eventItem); } EnableCopyButton(); }
public static void SetBackColor([NotNull] DataGridViewBand band, [NotNull] LogEventItem item) { Assert.ArgumentNotNull(band, nameof(band)); Assert.ArgumentNotNull(item, nameof(item)); Color backColor = GetBackColor(item); if (backColor.IsEmpty) { return; } SetBackColor(band, backColor); }
private void _dataGridView_CellFormatting(object sender, DataGridViewCellFormattingEventArgs e) { DataGridViewRow row = _dataGridView.Rows[e.RowIndex]; LogEventItem logEventItem = GetLogEventItem(row); if (logEventItem == null) { return; } LogWindowUtils.HandleCellFormattingEvent(e, row, logEventItem, _columnLogMessage.Index, _textColumnIndices); }
public static void SetIndentation([NotNull] DataGridViewCell cell, [NotNull] LogEventItem item, Padding defaultPadding) { Assert.ArgumentNotNull(cell, nameof(cell)); Assert.ArgumentNotNull(item, nameof(item)); if (item.Indentation <= 0) { return; } DataGridViewCellStyle style = cell.Style; style.Padding = GetCellPadding(item, defaultPadding); }
private void _dataGridView_CellToolTipTextNeeded(object sender, DataGridViewCellToolTipTextNeededEventArgs e) { if (e.RowIndex < 0) { return; } DataGridViewRow row = _dataGridView.Rows[e.RowIndex]; LogEventItem logEventItem = GetLogEventItem(row); if (logEventItem != null) { e.ToolTipText = FormatToolTip(logEventItem); } }
private void _dataGridView_CellDoubleClick(object sender, DataGridViewCellEventArgs e) { if (e.RowIndex < 0) { // ignore click on header return; } LogEventItem item = GetCurrentRowLogEventItem(); if (item == null) { return; } ShowItemDetailsDialog(item); }
private static Color GetBackColor([NotNull] LogEventItem item) { Assert.ArgumentNotNull(item, nameof(item)); switch (item.Level) { case LogLevel.Warn: return(LogWindowColors.Warning); case LogLevel.Error: return(LogWindowColors.Error); case LogLevel.Fatal: return(LogWindowColors.Fatal); default: return(Color.Empty); } }
private static bool ApplyPadding([NotNull] DataGridViewCellFormattingEventArgs e, [NotNull] LogEventItem item) { Assert.ArgumentNotNull(e, nameof(e)); Assert.ArgumentNotNull(item, nameof(item)); if (item.Indentation <= 0) { return(false); } Padding padding = e.CellStyle.Padding; e.CellStyle.Padding = new Padding(item.Indentation * _indentPixelPerCharacter, padding.Top, padding.Right, padding.Bottom); return(true); }
private void AddLoggingEventCore([NotNull] LoggingEvent loggingEvent) { Assert.ArgumentNotNull(loggingEvent, nameof(loggingEvent)); // guards if (IsDisposed) { return; } if (_logLevelImages.Images.Count == 0) { // seems to happen during shutdown return; } Image levelImage = GetLevelImage(loggingEvent.Level); _logCount++; var logItem = new LogEventItem(_logCount, levelImage, loggingEvent); AddRow(logItem); AddBackupEventItem(logItem); // refresh the grid after some time. Handles the fact that tick count // wraps around after a few weeks. int tickCount = Environment.TickCount; bool forceRefresh = tickCount < _lastRefreshTickCount || (_lastRefreshTickCount + _refreshIntervalMs) < tickCount; if (forceRefresh) { // not sufficient to refresh: //_dataGridView.InvalidateRow(_dataGridView.Rows.Count - 1); _dataGridView.Refresh(); } }