private static AsyncDataViewModel CreateModel() { var idPreset = new ColumnViewModelPreset { Id = new Guid("A27E5F00-BCA0-4BFE-B43D-EAA4B3F20D42"), Name = "Id", IsVisible = true, Width = 80 }.EnsureFrozen(); var namePreset = new ColumnViewModelPreset { Id = new Guid("3050F05D-FDCC-43AC-AA63-72CF17E5B7FF"), Name = "Name", IsVisible = true, Width = 200 }.EnsureFrozen(); var template = new AsyncDataViewModelPreset(); var table = new DataTable("Design"); AddColumn(table, template, idPreset, DataColumn.Create(x => x)); AddColumn(table, template, namePreset, DataColumn.Create(x => "Name" + x)); var dataView = new DataView(table, new DefaultFormatProviderSource()); return(new AsyncDataViewModel( dataView, template, template, new AdvmPresetCollection())); }
public AsyncDataViewModel( IDataView dataView, AsyncDataViewModelPreset templatePreset, AsyncDataViewModelPreset defaultPreset, AdvmPresetCollection presetCollection) { if (dataView == null) { throw new ArgumentNullException(nameof(dataView)); } if (templatePreset == null) { throw new ArgumentNullException(nameof(templatePreset)); } uiTaskFactory = new TaskFactory(TaskScheduler.FromCurrentSynchronizationContext()); DataView = dataView; PresetCollection = presetCollection; TemplatePreset = templatePreset.EnsureFrozen(); GridViewModel = new AsyncDataGridViewModel(this); dataView.RowCountChanged += OnRowCountChanged; Preset = defaultPreset; throttledRaiseUpdate = new ThrottledAction( TimeSpan.FromMilliseconds(100), () => uiTaskFactory.StartNew(RaiseUpdate)); }
public void MapViewPresetCollection() { var preset = new AsyncDataViewModelPreset { Name = "Foo", ConfigurableColumns = { new ColumnViewModelPreset { Id = new Guid("C6B4A55A-72BB-4235-8F3C-5EDABC4DBA52"), Name = "Col", Width = 123, CellFormat = "F0", IsVisible = true, TextAlignment = TextAlignment.Right } } }; var presets = new AdvmPresetCollection(); presets.PersistedPresets.Add(preset); var mapper = SettingsSerializer.Mapper; var serialized = mapper.Map <ViewPreset>(preset); var unserialized = mapper.Map <AsyncDataViewModelPreset>(serialized); Assert.Equal(preset.Name, serialized.Name); Assert.Equal(preset.LeftFrozenColumnCount, serialized.LeftFrozenColumnCount); Assert.Equal(preset.RightFrozenColumnCount, serialized.RightFrozenColumnCount); Assert.Equal(preset.ConfigurableColumns.Count, serialized.Columns.Count); Assert.Equal(preset.Name, unserialized.Name); Assert.Equal(preset.LeftFrozenColumnCount, unserialized.LeftFrozenColumnCount); Assert.Equal(preset.RightFrozenColumnCount, unserialized.RightFrozenColumnCount); Assert.Equal(preset.ConfigurableColumns.Count, unserialized.ConfigurableColumns.Count); Assert.Equal(preset.ConfigurableColumns, unserialized.ConfigurableColumns); }
public void SerializeViewPreset() { var preset = new AsyncDataViewModelPreset(); preset.Name = "Foo Preset"; preset.ConfigurableColumns.Add(new ColumnViewModelPreset { Id = new Guid("C6B4A55A-72BB-4235-8F3C-5EDABC4DBA52"), Name = "Id", Width = 50, IsVisible = true, TextAlignment = TextAlignment.Right }); preset.ConfigurableColumns.Add(new ColumnViewModelPreset { Id = new Guid("B6875CD8-AE93-4DC7-943D-8406FE406073"), Name = "Name", Width = 142, CellFormat = "F0", IsVisible = true, }); var collection = new AdvmPresetCollection(); collection.UserPresets.Add(preset); var stream = new MemoryStream(); new SettingsSerializer().Save(collection, stream); var doc = XDocument.Parse(stream.ReadFullyAsString()); output.WriteLine(doc.ToString()); }
public void Foo() { var dataTable = new DataTable("Foo"); var dataView = new DataView(dataTable, new DefaultFormatProviderSource()); var templatePreset = new AsyncDataViewModelPreset(); var presetCollection = new AdvmPresetCollection(); var adv = new AsyncDataViewModel(dataView, templatePreset, templatePreset, presetCollection); var viewModel = new PresetManagerViewModel(adv); }
private static void AddColumn( DataTable table, AsyncDataViewModelPreset preset, ColumnViewModelPreset columnPreset, DataColumn column) { column.Id = columnPreset.Id; column.Name = columnPreset.Name; column.Width = columnPreset.Width; column.IsVisible = columnPreset.IsVisible; column.IsResizable = true; column.TextAlignment = columnPreset.TextAlignment; preset.ConfigurableColumns.Add(columnPreset); table.Add(column); }
public void Setup() { var dataTable = new DataTable("Stub"); var templatePreset = new AsyncDataViewModelPreset(); for (int i = 0; i < 8; ++i) { int columnId = i + 1; var preset = new ColumnViewModelPreset { Id = new Guid($"{columnId:X8}-0000-0000-0000-000000000000"), Name = $"Column{columnId}", IsVisible = true, Width = 200 }.EnsureFrozen(); var column = DataColumn.Create(x => (x << 16 | columnId)); column.Id = preset.Id; column.Name = preset.Name; column.IsVisible = preset.IsVisible; column.Width = preset.Width; dataTable.Columns.Add(column); templatePreset.ConfigurableColumns.Add(preset); } dataView = new DataView(dataTable, new DefaultFormatProviderSource()); var defaultPreset = templatePreset.Clone(); var presetCollection = new AdvmPresetCollection(); advModel = new AsyncDataViewModel( dataView, templatePreset, defaultPreset, presetCollection); presenterViewModel = new AsyncDataGridCellsPresenterViewModel(advModel); presenter = new AsyncDataGridCellsPresenter(); presenter.ViewModel = presenterViewModel; presenter.VisibleColumns = advModel.GridViewModel.ColumnsModel.VisibleColumns; presenter.HorizontalGridLinesThickness = 0; presenter.VerticalGridLinesThickness = 0; presenter.AutoScroll = true; presenter.Arrange(new Rect(0, 0, 1200, 200)); while (!advModel.IsReady) { Dispatcher.CurrentDispatcher.DoEvents(); } }
public Tuple <DataTable, AsyncDataViewModelPreset> CreateTable( IEventInfoSource eventInfoSource, EventSymbolSource symbolSource = null) { var formatterPool = new ObjectPool <IMessageFormatter>(() => new NativeTdhFormatter(), 10); var info = new CrimsonEventsInfo(eventInfoSource, formatterPool, symbolSource); var table = new DataTable("Generic Events"); var templatePreset = new AsyncDataViewModelPreset(); AddColumn(table, templatePreset, timePointGeneratorPreset, DataColumn.Create(info.ProjectTimePoint)); AddColumn(table, templatePreset, timeAbsoluteGeneratorPreset, DataColumn.Create(info.ProjectTimeAbsolute)); AddColumn(table, templatePreset, timeRelativeGeneratorPreset, DataColumn.Create(info.ProjectTimeRelative)); AddColumn(table, templatePreset, providerIdPreset, DataColumn.Create(info.ProjectProviderId)); AddColumn(table, templatePreset, providerNamePreset, DataColumn.Create(info.ProjectProviderName)); AddColumn(table, templatePreset, idPreset, DataColumn.Create(info.ProjectId)); AddColumn(table, templatePreset, versionPreset, DataColumn.Create(info.ProjectVersion)); AddColumn(table, templatePreset, symbolPreset, DataColumn.Create(info.ProjectSymbol)); AddColumn(table, templatePreset, channelPreset, DataColumn.Create(info.ProjectChannel)); AddColumn(table, templatePreset, channelNamePreset, DataColumn.Create(info.ProjectChannelName)); AddColumn(table, templatePreset, taskPreset, DataColumn.Create(info.ProjectTask)); AddColumn(table, templatePreset, taskNamePreset, DataColumn.Create(info.ProjectTaskName)); AddColumn(table, templatePreset, opcodeOrTypePreset, DataColumn.Create(info.ProjectOpCode)); AddColumn(table, templatePreset, opcodeNamePreset, DataColumn.Create(info.ProjectOpCodeName)); AddColumn(table, templatePreset, levelPreset, DataColumn.Create(info.ProjectLevel)); AddColumn(table, templatePreset, levelNamePreset, DataColumn.Create(info.ProjectLevelName)); AddColumn(table, templatePreset, keywordPreset, DataColumn.Create(info.ProjectKeyword)); AddColumn(table, templatePreset, keywordNamePreset, DataColumn.Create(info.ProjectKeywordName)); AddColumn(table, templatePreset, processIdPreset, DataColumn.Create(info.ProjectProcessId)); AddColumn(table, templatePreset, threadIdPreset, DataColumn.Create(info.ProjectThreadId)); AddColumn(table, templatePreset, messagePreset, DataColumn.Create(info.ProjectMessage)); AddColumn(table, templatePreset, eventNamePreset, DataColumn.Create(info.ProjectEventName)); AddColumn(table, templatePreset, eventTypePreset, DataColumn.Create(info.ProjectEventType)); AddColumn(table, templatePreset, cpuPreset, DataColumn.Create(info.ProjectCpu)); AddColumn(table, templatePreset, userDataPreset, DataColumn.Create(info.ProjectUserData)); AddColumn(table, templatePreset, userDataLengthPreset, DataColumn.Create(info.ProjectUserDataLength)); AddColumn(table, templatePreset, activityIdPreset, DataColumn.Create(info.ProjectActivityId)); AddColumn(table, templatePreset, relatedActivityIdPreset, DataColumn.Create(info.ProjectRelatedActivityId)); AddColumn(table, templatePreset, userSecurityIdentifierPreset, DataColumn.Create(info.ProjectUserSecurityIdentifier)); AddColumn(table, templatePreset, sessionIdPreset, DataColumn.Create(info.ProjectSessionId)); AddColumn(table, templatePreset, eventKeyPreset, DataColumn.Create(info.ProjectEventKey)); AddColumn(table, templatePreset, decodingSourcePreset, DataColumn.Create(info.ProjectDecodingSource)); //AddColumn(table, templatePreset, modernProcessDataPreset, DataColumn.Create<object>()); //AddColumn(table, templatePreset, processNamePreset, DataColumn.Create<string>()); //AddColumn(table, templatePreset, stackTopPreset, DataColumn.Create<object>()); //AddColumn(table, templatePreset, threadStartModulePreset, DataColumn.Create<string>()); //AddColumn(table, templatePreset, threadStartFunctionPreset, DataColumn.Create<string>()); return(Tuple.Create(table, templatePreset)); }
public static AsyncDataViewModelPreset CreateDefaultPreset() { var providerIdPreset = new ColumnViewModelPreset { Id = ProviderIdColumnId, Name = "Provider Id", IsVisible = false, Width = 100 }.EnsureFrozen(); var providerNamePreset = new ColumnViewModelPreset { Id = ProviderNameColumnId, Name = "Provider", IsVisible = true, Width = 150 }.EnsureFrozen(); var idPreset = new ColumnViewModelPreset { Id = IdColumnId, Name = "Id", IsVisible = true, Width = 50 }.EnsureFrozen(); var versionPreset = new ColumnViewModelPreset { Id = VersionColumnId, Name = "Version", IsVisible = false, Width = 80 }.EnsureFrozen(); var channelPreset = new ColumnViewModelPreset { Id = ChannelColumnId, Name = "Channel", IsVisible = false, Width = 80 }.EnsureFrozen(); var channelNamePreset = new ColumnViewModelPreset { Id = ChannelNameColumnId, Name = "Channel Name", IsVisible = false, Width = 80 }.EnsureFrozen(); var levelPreset = new ColumnViewModelPreset { Id = LevelColumnId, Name = "Level", IsVisible = false, Width = 80 }.EnsureFrozen(); var levelNamePreset = new ColumnViewModelPreset { Id = LevelNameColumnId, Name = "Level Name", IsVisible = false, Width = 80 }.EnsureFrozen(); var taskPreset = new ColumnViewModelPreset { Id = TaskColumnId, Name = "Task", IsVisible = false, Width = 80 }.EnsureFrozen(); var taskNamePreset = new ColumnViewModelPreset { Id = TaskNameColumnId, Name = "Task Name", IsVisible = true, Width = 80 }.EnsureFrozen(); var opcodeOrTypePreset = new ColumnViewModelPreset { Id = OpcodeColumnId, Name = "Opcode/Type", IsVisible = false, Width = 80 }.EnsureFrozen(); var opcodeNamePreset = new ColumnViewModelPreset { Id = OpcodeNameColumnId, Name = "Opcode Name", IsVisible = true, Width = 80 }.EnsureFrozen(); var keywordPreset = new ColumnViewModelPreset { Id = KeywordColumnId, Name = "Keywords", IsVisible = false, Width = 115, TextAlignment = TextAlignment.Right, CellFormat = "X" }.EnsureFrozen(); var messagePreset = new ColumnViewModelPreset { Id = MessageColumnId, Name = "Message", IsVisible = true, Width = 500 }.EnsureFrozen(); var processIdPreset = new ColumnViewModelPreset { Id = ProcessIdColumnId, Name = "PID", IsVisible = true, Width = 40, TextAlignment = TextAlignment.Right, HelpText = "Process ID", CellFormat = NumericalFormatProvider.Decimal }.EnsureFrozen(); var threadIdPreset = new ColumnViewModelPreset { Id = ThreadIdColumnId, Name = "TID", IsVisible = true, Width = 40, TextAlignment = TextAlignment.Right, HelpText = "Thread ID", CellFormat = NumericalFormatProvider.Decimal }.EnsureFrozen(); var timeAbsoluteGeneratorPreset = new ColumnViewModelPreset { Id = TimeAbsoluteColumnId, Name = "Time", IsVisible = false, Width = 120, CellFormat = "HH:mm:ss.fffffff" }.EnsureFrozen(); var timeRelativeGeneratorPreset = new ColumnViewModelPreset { Id = TimeRelativeColumnId, Name = "Time Elapsed", IsVisible = true, Width = 120, CellFormat = "G" }.EnsureFrozen(); var preset = new AsyncDataViewModelPreset { Name = "Default", LeftFrozenColumnCount = 2, ConfigurableColumns = { timeAbsoluteGeneratorPreset, timeRelativeGeneratorPreset, providerIdPreset, providerNamePreset, idPreset, versionPreset, channelPreset, channelNamePreset, taskPreset, taskNamePreset, opcodeNamePreset, opcodeOrTypePreset, levelPreset, levelNamePreset, keywordPreset, processIdPreset, threadIdPreset, messagePreset, } }; preset.Freeze(); return(preset); }