public void SetUp() { _keyboard = new TestKeyboard(); _mouse = new TestMouse(); _control = new LogEntryListView { Width = 1024, Height = 768 }; var availableSize = new Size(1024, 768); _control.Measure(availableSize); _control.Arrange(new Rect(new Point(), availableSize)); DispatcherExtensions.ExecuteAllEvents(); _logSource = new InMemoryLogSource(Columns.Minimum.Concat(new[] { PageBufferedLogSource.RetrievalState })); _deltaTimesColumn = (DeltaTimeColumnPresenter)typeof(LogEntryListView).GetField("_deltaTimesColumn", BindingFlags.NonPublic | BindingFlags.Instance).GetValue(_control); }
public void SetUp() { _keyboard = new TestKeyboard(); _mouse = new TestMouse(); _control = new LogEntryListView { Width = 1024, Height = 768 }; var availableSize = new Size(1024, 768); _control.Measure(availableSize); _control.Arrange(new Rect(new Point(), availableSize)); DispatcherExtensions.ExecuteAllEvents(); _lines = new List <LogLine>(); _listeners = new List <ILogFileListener>(); _logFile = new Mock <ILogFile>(); _logFile.Setup(x => x.Count).Returns(() => _lines.Count); _logFile.Setup(x => x.GetSection(It.IsAny <LogFileSection>(), It.IsAny <LogLine[]>())) .Callback((LogFileSection section, LogLine[] dest) => _lines.CopyTo((int)section.Index, dest, 0, section.Count)); _logFile.Setup(x => x.GetLine(It.IsAny <int>())).Returns((int index) => _lines[index]); _logFile.Setup(x => x.AddListener(It.IsAny <ILogFileListener>(), It.IsAny <TimeSpan>(), It.IsAny <int>())) .Callback((ILogFileListener listener, TimeSpan maximumTimeout, int maximumLines) => { _listeners.Add(listener); listener.OnLogFileModified(_logFile.Object, new LogFileSection(0, _lines.Count)); }); _deltaTimesColumn = (DeltaTimeColumnPresenter)typeof(LogEntryListView).GetField("_deltaTimesColumn", BindingFlags.NonPublic | BindingFlags.Instance).GetValue(_control); }
public LogEntryListView() { ColumnDefinitions.Add(new ColumnDefinition { Width = new GridLength(value: 1, type: GridUnitType.Auto) }); ColumnDefinitions.Add(new ColumnDefinition { Width = new GridLength(value: 1, type: GridUnitType.Auto) }); ColumnDefinitions.Add(new ColumnDefinition { Width = new GridLength(value: 1, type: GridUnitType.Auto) }); ColumnDefinitions.Add(new ColumnDefinition { Width = new GridLength(value: 1, type: GridUnitType.Auto) }); ColumnDefinitions.Add(new ColumnDefinition { Width = new GridLength(value: 1, type: GridUnitType.Auto) }); ColumnDefinitions.Add(new ColumnDefinition { Width = new GridLength(value: 1, type: GridUnitType.Star) }); ColumnDefinitions.Add(new ColumnDefinition { Width = new GridLength(value: 1, type: GridUnitType.Auto) }); RowDefinitions.Add(new RowDefinition { Height = new GridLength(value: 1, type: GridUnitType.Star) }); RowDefinitions.Add(new RowDefinition { Height = new GridLength(value: 1, type: GridUnitType.Auto) }); _verticalScrollBar = new FlatScrollBar { Name = "PART_VerticalScrollBar", Thickness = 18 }; _verticalScrollBar.ValueChanged += VerticalScrollBarOnValueChanged; _verticalScrollBar.Scroll += VerticalScrollBarOnScroll; _verticalScrollBar.SetValue(RowProperty, value: 0); _verticalScrollBar.SetValue(ColumnProperty, value: 6); _verticalScrollBar.SetValue(RangeBase.SmallChangeProperty, TextHelper.LineHeight); _verticalScrollBar.SetValue(RangeBase.LargeChangeProperty, 10 * TextHelper.LineHeight); _horizontalScrollBar = new FlatScrollBar { Name = "PART_HorizontalScrollBar", Orientation = Orientation.Horizontal, Thickness = 18 }; _horizontalScrollBar.SetValue(RowProperty, value: 1); _horizontalScrollBar.SetValue(ColumnProperty, value: 0); _horizontalScrollBar.SetValue(ColumnSpanProperty, value: 6); _horizontalScrollBar.SetValue(RangeBase.SmallChangeProperty, TextHelper.LineHeight); _horizontalScrollBar.SetValue(RangeBase.LargeChangeProperty, 10 * TextHelper.LineHeight); _lineNumberColumn = new OriginalLineNumberColumnPresenter(); _lineNumberColumn.SetValue(RowProperty, value: 0); _lineNumberColumn.SetValue(ColumnProperty, value: 0); _lineNumberColumn.SetValue(MarginProperty, new Thickness(left: 5, top: 0, right: 5, bottom: 0)); _dataSourceCanvas = new DataSourceCanvas(); _dataSourceCanvas.SetValue(RowProperty, value: 0); _dataSourceCanvas.SetValue(ColumnProperty, value: 1); _dataSourceCanvas.SetValue(MarginProperty, new Thickness(left: 0, top: 0, right: 5, bottom: 0)); _deltaTimesColumn = new DeltaTimeColumnPresenter(); _deltaTimesColumn.Visibility = Visibility.Collapsed; _deltaTimesColumn.SetValue(RowProperty, value: 0); _deltaTimesColumn.SetValue(ColumnProperty, value: 2); _dataSourceCanvas.SetValue(MarginProperty, new Thickness(left: 0, top: 0, right: 5, bottom: 0)); _elapsedTimeColumn = new ElapsedTimeColumnPresenter(); _elapsedTimeColumn.Visibility = Visibility.Collapsed; _elapsedTimeColumn.SetValue(RowProperty, value: 0); _elapsedTimeColumn.SetValue(ColumnProperty, value: 3); _dataSourceCanvas.SetValue(MarginProperty, new Thickness(left: 0, top: 0, right: 5, bottom: 0)); PartTextCanvas = new TextCanvas(_horizontalScrollBar, _verticalScrollBar); PartTextCanvas.SetValue(RowProperty, value: 0); PartTextCanvas.SetValue(ColumnProperty, value: 5); PartTextCanvas.MouseWheelDown += TextCanvasOnMouseWheelDown; PartTextCanvas.MouseWheelUp += TextCanvasOnMouseWheelUp; PartTextCanvas.SizeChanged += TextCanvasOnSizeChanged; PartTextCanvas.VisibleLinesChanged += TextCanvasOnVisibleLinesChanged; PartTextCanvas.RequestBringIntoView += TextCanvasOnRequestBringIntoView; PartTextCanvas.VisibleSectionChanged += TextCanvasOnVisibleSectionChanged; PartTextCanvas.OnSelectionChanged += TextCanvasOnOnSelectionChanged; var separator = new Rectangle { Fill = new SolidColorBrush(Color.FromRgb(225, 228, 232)), Width = 2 }; separator.SetValue(RowProperty, value: 0); separator.SetValue(ColumnProperty, value: 4); separator.SetValue(MarginProperty, new Thickness(left: 0, top: 0, right: 5, bottom: 0)); Children.Add(_lineNumberColumn); Children.Add(_dataSourceCanvas); Children.Add(_deltaTimesColumn); Children.Add(_elapsedTimeColumn); Children.Add(separator); Children.Add(PartTextCanvas); Children.Add(_verticalScrollBar); Children.Add(_horizontalScrollBar); _timer = new DispatcherTimer(DispatcherPriority.Normal) { Interval = MaximumRefreshInterval, }; _timer.Tick += OnTimer; Loaded += OnLoaded; Unloaded += OnUnloaded; }
public LogEntryListView() { var textSettings = TextSettings.Default; RowDefinitions.Add(new RowDefinition { Height = new GridLength(value: 1, type: GridUnitType.Star) }); RowDefinitions.Add(new RowDefinition { Height = new GridLength(value: 1, type: GridUnitType.Auto) }); _verticalScrollBar = new FlatScrollBar { Name = "PART_VerticalScrollBar", Thickness = 18 }; _verticalScrollBar.ValueChanged += VerticalScrollBarOnValueChanged; _verticalScrollBar.Scroll += VerticalScrollBarOnScroll; _verticalScrollBar.SetValue(RowProperty, value: 0); _verticalScrollBar.SetValue(ColumnProperty, value: 6); _horizontalScrollBar = new FlatScrollBar { Name = "PART_HorizontalScrollBar", Orientation = Orientation.Horizontal, Thickness = 18 }; _horizontalScrollBar.SetValue(RowProperty, value: 1); _horizontalScrollBar.SetValue(ColumnProperty, value: 0); _horizontalScrollBar.SetValue(ColumnSpanProperty, value: 6); _columnPresenterFactories = new Dictionary <ILogFileColumn, Func <TextSettings, AbstractLogColumnPresenter> > { { LogFileColumns.DeltaTime, settings => new DeltaTimeColumnPresenter(settings) }, { LogFileColumns.ElapsedTime, settings => new ElapsedTimeColumnPresenter(settings) }, { LogFileColumns.OriginalLineNumber, settings => new OriginalLineNumberColumnPresenter(settings) }, { LogFileColumns.LogLevel, settings => new LogLevelColumnPresenter(settings) }, { LogFileColumns.Message, settings => new MessageColumnPresenter(settings) }, { LogFileColumns.Timestamp, settings => new TimestampColumnPresenter(settings) } }; _columnPresenters = new Dictionary <ILogFileColumn, AbstractLogColumnPresenter>(); _columnDefinitionsByColumn = new Dictionary <ILogFileColumn, ColumnDefinition>(); _columnsByColumnDefinition = new Dictionary <ColumnDefinition, ILogFileColumn>(); _lineNumberColumn = (OriginalLineNumberColumnPresenter)AddColumn(LogFileColumns.OriginalLineNumber); _lineNumberColumn.SetValue(MarginProperty, new Thickness(left: 5, top: 0, right: 5, bottom: 0)); _dataSourceCanvas = new DataSourceCanvas(textSettings); _dataSourceCanvas.SetValue(RowProperty, value: 0); _dataSourceCanvas.SetValue(ColumnProperty, value: 1); _dataSourceCanvas.SetValue(MarginProperty, new Thickness(left: 0, top: 0, right: 5, bottom: 0)); ColumnDefinitions.Add(new ColumnDefinition { Width = new GridLength(value: 1, type: GridUnitType.Auto) }); _deltaTimesColumn = (DeltaTimeColumnPresenter)AddColumn(LogFileColumns.DeltaTime); _deltaTimesColumn.Visibility = Visibility.Collapsed; _deltaTimesColumn.SetValue(MarginProperty, new Thickness(left: 0, top: 0, right: 5, bottom: 0)); _elapsedTimeColumn = (ElapsedTimeColumnPresenter)AddColumn(LogFileColumns.ElapsedTime); _elapsedTimeColumn.Visibility = Visibility.Collapsed; _elapsedTimeColumn.SetValue(MarginProperty, new Thickness(left: 0, top: 0, right: 5, bottom: 0)); _fixedColumns = _columnPresenters.Keys.ToList(); _messageColumnDefinition = new ColumnDefinition { Width = new GridLength(value: 1, type: GridUnitType.Star) }; ColumnDefinitions.Add(_messageColumnDefinition); var messageColumnIndex = ColumnDefinitions.IndexOf(_messageColumnDefinition); PartTextCanvas = new TextCanvas(_horizontalScrollBar, _verticalScrollBar, textSettings); PartTextCanvas.SetValue(RowProperty, value: 0); PartTextCanvas.SetValue(ColumnProperty, value: messageColumnIndex); PartTextCanvas.MouseWheelDown += TextCanvasOnMouseWheelDown; PartTextCanvas.MouseWheelUp += TextCanvasOnMouseWheelUp; PartTextCanvas.SizeChanged += TextCanvasOnSizeChanged; PartTextCanvas.VisibleLinesChanged += TextCanvasOnVisibleLinesChanged; PartTextCanvas.RequestBringIntoView += TextCanvasOnRequestBringIntoView; PartTextCanvas.VisibleSectionChanged += TextCanvasOnVisibleSectionChanged; PartTextCanvas.OnSelectionChanged += TextCanvasOnOnSelectionChanged; ChangeTextSettings(textSettings); var separator = new Rectangle { Fill = new SolidColorBrush(Color.FromRgb(225, 228, 232)), Width = 2 }; separator.SetValue(RowProperty, value: 0); separator.SetValue(ColumnProperty, value: messageColumnIndex); separator.SetValue(MarginProperty, new Thickness(left: 0, top: 0, right: 5, bottom: 0)); ColumnDefinitions.Add(new ColumnDefinition { Width = new GridLength(value: 1, type: GridUnitType.Auto) }); Children.Add(_lineNumberColumn); Children.Add(_dataSourceCanvas); Children.Add(_deltaTimesColumn); Children.Add(_elapsedTimeColumn); Children.Add(separator); Children.Add(PartTextCanvas); Children.Add(_verticalScrollBar); Children.Add(_horizontalScrollBar); _timer = new DispatcherTimer(DispatcherPriority.Normal) { Interval = MaximumRefreshInterval, }; _timer.Tick += OnTimer; Loaded += OnLoaded; Unloaded += OnUnloaded; }
public void Setup() { _column = new DeltaTimeColumnPresenter(); _logFile = new Mock <ILogFile>(); }
public void Setup() { _column = new DeltaTimeColumnPresenter(TextSettings.Default); _logFile = new Mock <ILogFile>(); }