Beispiel #1
0
        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()));
        }
Beispiel #2
0
        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));
        }
Beispiel #3
0
        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);
        }
Beispiel #4
0
        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());
        }
Beispiel #5
0
 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);
 }
Beispiel #6
0
 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);
 }
Beispiel #7
0
        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);
        }