Esempio n. 1
0
        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);
        }
Esempio n. 2
0
        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;
        }
Esempio n. 3
0
 private static Padding GetCellPadding([NotNull] LogEventItem logEventItem,
                                       Padding defaultPadding)
 {
     return(new Padding(logEventItem.Indentation * _indentPixelPerCharacter,
                        defaultPadding.Top, defaultPadding.Right,
                        defaultPadding.Bottom));
 }
Esempio n. 4
0
        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;
        }
Esempio n. 5
0
        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);
        }
Esempio n. 7
0
        private static void ShowItemDetailsDialog([NotNull] LogEventItem item)
        {
            Assert.ArgumentNotNull(item, nameof(item));

            using (var form = new LogEventItemDetailsForm())
            {
                form.ShowDialog(item);
            }
        }
Esempio n. 8
0
        private void AddBackupEventItem([NotNull] LogEventItem logEventItem)
        {
            Assert.ArgumentNotNull(logEventItem, nameof(logEventItem));

            if (_logMessages.Count >= _maxLogMessages)
            {
                _logMessages.RemoveRange(0, _fullListRemoveCount);
            }

            _logMessages.Add(logEventItem);
        }
Esempio n. 9
0
        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));
        }
Esempio n. 10
0
        private void ShowLastClickedRowDetails()
        {
            LogEventItem item = GetLastClickedRowLogEventItem();

            if (item == null)
            {
                return;
            }

            ShowItemDetailsDialog(item);
        }
Esempio n. 11
0
        private void RefreshDetails()
        {
            textBoxDetails.Text = string.Empty;

            LogEventItem eventItem = GetCurrentRowLogEventItem();

            if (eventItem != null)
            {
                textBoxDetails.Text = FormatLogEventItem(eventItem);
            }

            EnableCopyButton();
        }
Esempio n. 12
0
        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);
        }
Esempio n. 13
0
        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);
        }
Esempio n. 14
0
        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);
        }
Esempio n. 15
0
        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);
            }
        }
Esempio n. 16
0
        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);
        }
Esempio n. 17
0
        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);
            }
        }
Esempio n. 18
0
        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);
        }
Esempio n. 19
0
        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();
            }
        }