public void TestCtor() { var canvas = new DataSourceCanvas(TextSettings.Default); canvas.DataSources.Should().BeEmpty(); canvas.DisplayMode.Should().Be(DataSourceDisplayMode.Filename); }
public void TestUpdateLineNumbers3() { var canvas = new DataSourceCanvas(TextSettings.Default); var multiDataSource = new Mock <IMultiDataSource>(); var dataSource0 = new Mock <IDataSource>(); dataSource0.Setup(x => x.FullFileName).Returns(@"A:\foo\bar.txt"); var dataSource1 = new Mock <IDataSource>(); dataSource1.Setup(x => x.FullFileName).Returns(@"B:\a really long file name.log"); multiDataSource.Setup(x => x.OriginalSources).Returns(new[] { dataSource0.Object, dataSource1.Object }); var mergedLogFile = new InMemoryLogSource(Columns.SourceId); mergedLogFile.Add(new Dictionary <IColumnDescriptor, object> { { Columns.SourceId, new LogEntrySourceId(1) }, { Columns.RawContent, "foo" } }); mergedLogFile.Add(new Dictionary <IColumnDescriptor, object> { { Columns.SourceId, new LogEntrySourceId(0) }, { Columns.RawContent, "bar" } }); multiDataSource.Setup(x => x.FilteredLogSource).Returns(mergedLogFile); canvas.UpdateDataSources(multiDataSource.Object, new LogSourceSection(0, 2), 0); canvas.DataSources.Should().HaveCount(2); canvas.DataSources[0].Should().NotBeNull(); canvas.DataSources[0].Text.Should().Be("a really long file nam"); canvas.DataSources[1].Should().NotBeNull(); canvas.DataSources[1].Text.Should().Be("bar.txt"); }
public void TestUpdateLineNumbers1() { var canvas = new DataSourceCanvas(TextSettings.Default); canvas.UpdateDataSources(null, new LogSourceSection(0, 0), 0); canvas.DataSources.Should().BeEmpty(); }
public void TestUpdateLineNumbers4() { var canvas = new DataSourceCanvas(TextSettings.Default) { DisplayMode = DataSourceDisplayMode.CharacterCode }; var multiDataSource = new Mock <IMultiDataSource>(); var dataSource0 = new Mock <IDataSource>(); dataSource0.Setup(x => x.CharacterCode).Returns("FB"); var dataSource1 = new Mock <IDataSource>(); dataSource1.Setup(x => x.CharacterCode).Returns(@"TH"); multiDataSource.Setup(x => x.OriginalSources).Returns(new[] { dataSource0.Object, dataSource1.Object }); var mergedLogFile = new Mock <ILogFile>(); mergedLogFile.Setup(x => x.Count).Returns(2); mergedLogFile.Setup(x => x.GetSection(It.IsAny <LogFileSection>(), It.IsAny <LogLine[]>())) .Callback((LogFileSection section, LogLine[] lines) => { lines[0] = new LogLine(0, 0, 0, new LogLineSourceId(1), "foo", LevelFlags.Trace, null); lines[1] = new LogLine(1, 1, 1, new LogLineSourceId(0), "bar", LevelFlags.Trace, null); }); multiDataSource.Setup(x => x.FilteredLogFile).Returns(mergedLogFile.Object); canvas.UpdateDataSources(multiDataSource.Object, new LogFileSection(0, 2), 0); canvas.DataSources.Should().HaveCount(2); canvas.DataSources[0].Should().NotBeNull(); canvas.DataSources[0].Text.Should().Be("TH"); canvas.DataSources[1].Should().NotBeNull(); canvas.DataSources[1].Text.Should().Be("FB"); }
public void TestUpdateLineNumbers3() { var canvas = new DataSourceCanvas(TextSettings.Default); var multiDataSource = new Mock <IMultiDataSource>(); var dataSource0 = new Mock <IDataSource>(); dataSource0.Setup(x => x.FullFileName).Returns(@"A:\foo\bar.txt"); var dataSource1 = new Mock <IDataSource>(); dataSource1.Setup(x => x.FullFileName).Returns(@"B:\a really long file name.log"); multiDataSource.Setup(x => x.OriginalSources).Returns(new[] { dataSource0.Object, dataSource1.Object }); var mergedLogFile = new Mock <ILogFile>(); mergedLogFile.Setup(x => x.Count).Returns(2); mergedLogFile.Setup(x => x.GetSection(It.IsAny <LogFileSection>(), It.IsAny <LogLine[]>())) .Callback((LogFileSection section, LogLine[] lines) => { lines[0] = new LogLine(0, 0, 0, new LogLineSourceId(1), "foo", LevelFlags.Trace, null); lines[1] = new LogLine(1, 1, 1, new LogLineSourceId(0), "bar", LevelFlags.Trace, null); }); multiDataSource.Setup(x => x.UnfilteredLogFile).Returns(mergedLogFile.Object); canvas.UpdateDataSources(multiDataSource.Object, new LogFileSection(0, 2), 0); canvas.DataSources.Should().HaveCount(2); canvas.DataSources[0].Should().NotBeNull(); canvas.DataSources[0].Text.Should().Be("a really long file nam"); canvas.DataSources[1].Should().NotBeNull(); canvas.DataSources[1].Text.Should().Be("bar.txt"); }
public void TestUpdateLineNumbers1() { var canvas = new DataSourceCanvas(); canvas.UpdateDataSources(null, new LogFileSection(0, 0), 0); canvas.DataSources.Should().BeEmpty(); }
public void TestUpdateLineNumbers2() { var canvas = new DataSourceCanvas(TextSettings.Default); var dataSource = new Mock <IDataSource>(); canvas.UpdateDataSources(dataSource.Object, new LogSourceSection(0, 0), 0); canvas.DataSources.Should().BeEmpty(); }
public void TestUpdateNoSources([Values(DataSourceDisplayMode.Filename, DataSourceDisplayMode.CharacterCode)] DataSourceDisplayMode displayMode) { var canvas = new DataSourceCanvas(TextSettings.Default) { DisplayMode = displayMode }; var folderDataSource = new Mock <IFolderDataSource>(); folderDataSource.Setup(x => x.FilteredLogSource).Returns(new Mock <ILogSource>().Object); var dataSource = new Mock <IDataSource>(); folderDataSource.Setup(x => x.OriginalSources).Returns(new List <IDataSource> { dataSource.Object }); new Action(() => canvas.UpdateDataSources(folderDataSource.Object, new LogSourceSection(0, 2), 0)) .Should().NotThrow(); }
public void TestUpdateLineNumbers4() { var canvas = new DataSourceCanvas(TextSettings.Default) { DisplayMode = DataSourceDisplayMode.CharacterCode }; var multiDataSource = new Mock <IMultiDataSource>(); var dataSource0 = new Mock <IDataSource>(); dataSource0.Setup(x => x.CharacterCode).Returns("FB"); var dataSource1 = new Mock <IDataSource>(); dataSource1.Setup(x => x.CharacterCode).Returns(@"TH"); multiDataSource.Setup(x => x.OriginalSources).Returns(new[] { dataSource0.Object, dataSource1.Object }); var mergedLogFile = new InMemoryLogSource(Columns.SourceId); mergedLogFile.Add(new Dictionary <IColumnDescriptor, object> { { Columns.SourceId, new LogEntrySourceId(1) }, { Columns.RawContent, "foo" } }); mergedLogFile.Add(new Dictionary <IColumnDescriptor, object> { { Columns.SourceId, new LogEntrySourceId(0) }, { Columns.RawContent, "bar" } }); multiDataSource.Setup(x => x.FilteredLogSource).Returns(mergedLogFile); canvas.UpdateDataSources(multiDataSource.Object, new LogSourceSection(0, 2), 0); canvas.DataSources.Should().HaveCount(2); canvas.DataSources[0].Should().NotBeNull(); canvas.DataSources[0].Text.Should().Be("TH"); canvas.DataSources[1].Should().NotBeNull(); canvas.DataSources[1].Text.Should().Be("FB"); }
public LogEntryListView() { var textSettings = new TextSettings(); var textBrushes = new TextBrushes(null); 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 <IColumnDescriptor, Func <TextSettings, AbstractLogColumnPresenter> > { { Columns.DeltaTime, settings => new DeltaTimeColumnPresenter(settings) }, { Columns.ElapsedTime, settings => new ElapsedTimeColumnPresenter(settings) }, { Columns.OriginalLineNumber, settings => new OriginalLineNumberColumnPresenter(settings) }, { Columns.LogLevel, settings => new LogLevelColumnPresenter(settings) }, { Columns.Message, settings => new MessageColumnPresenter(settings) }, { Columns.Timestamp, settings => new TimestampColumnPresenter(settings) } }; _columnPresenters = new Dictionary <IColumnDescriptor, AbstractLogColumnPresenter>(); _columnDefinitionsByColumn = new Dictionary <IColumnDescriptor, ColumnDefinition>(); _columnsByColumnDefinition = new Dictionary <ColumnDefinition, IColumnDescriptor>(); _lineNumberColumn = (OriginalLineNumberColumnPresenter)AddColumn(Columns.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(Columns.DeltaTime); _deltaTimesColumn.Visibility = Visibility.Collapsed; _deltaTimesColumn.SetValue(MarginProperty, new Thickness(left: 0, top: 0, right: 5, bottom: 0)); _elapsedTimeColumn = (ElapsedTimeColumnPresenter)AddColumn(Columns.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, textBrushes); 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; }