private void AddColumn(
     DataTable table, AsyncDataViewModelPreset templatePreset,
     ColumnViewModelPreset preset, DataColumn column)
 {
     column.Id            = preset.Id;
     column.Name          = preset.Name;
     column.Width         = preset.Width;
     column.IsVisible     = preset.IsVisible;
     column.TextAlignment = preset.TextAlignment;
     column.IsResizable   = true;
     table.Add(column);
     templatePreset.ConfigurableColumns.Add(preset);
 }
 public GenericEventsViewModelSource()
 {
     providerIdPreset =
         new ColumnViewModelPreset {
         Id        = ProviderIdColumnId,
         Name      = "Provider Id",
         IsVisible = false,
         Width     = 100
     }.EnsureFrozen();
     providerNamePreset =
         new ColumnViewModelPreset {
         Id        = ProviderNameColumnId,
         Name      = "Provider",
         IsVisible = true,
         Width     = 150
     }.EnsureFrozen();
     idPreset =
         new ColumnViewModelPreset {
         Id        = IdColumnId,
         Name      = "Id",
         IsVisible = true,
         Width     = 50
     }.EnsureFrozen();
     versionPreset =
         new ColumnViewModelPreset {
         Id        = VersionColumnId,
         Name      = "Version",
         IsVisible = false,
         Width     = 80
     }.EnsureFrozen();
     channelPreset =
         new ColumnViewModelPreset {
         Id        = ChannelColumnId,
         Name      = "Channel",
         IsVisible = false,
         Width     = 80
     }.EnsureFrozen();
     channelNamePreset =
         new ColumnViewModelPreset {
         Id        = ChannelNameColumnId,
         Name      = "Channel Name",
         IsVisible = false,
         Width     = 80
     }.EnsureFrozen();
     levelPreset =
         new ColumnViewModelPreset {
         Id        = LevelColumnId,
         Name      = "Level",
         IsVisible = false,
         Width     = 80
     }.EnsureFrozen();
     levelNamePreset =
         new ColumnViewModelPreset {
         Id        = LevelNameColumnId,
         Name      = "Level Name",
         IsVisible = false,
         Width     = 80
     }.EnsureFrozen();
     taskPreset =
         new ColumnViewModelPreset {
         Id        = TaskColumnId,
         Name      = "Task",
         IsVisible = false,
         Width     = 80
     }.EnsureFrozen();
     taskNamePreset =
         new ColumnViewModelPreset {
         Id        = TaskNameColumnId,
         Name      = "Task Name",
         IsVisible = true,
         Width     = 80
     }.EnsureFrozen();
     opcodeOrTypePreset =
         new ColumnViewModelPreset {
         Id        = OpcodeColumnId,
         Name      = "Opcode/Type",
         IsVisible = false,
         Width     = 80
     }.EnsureFrozen();
     opcodeNamePreset =
         new ColumnViewModelPreset {
         Id        = OpcodeNameColumnId,
         Name      = "Opcode Name",
         IsVisible = true,
         Width     = 80
     }.EnsureFrozen();
     keywordPreset =
         new ColumnViewModelPreset {
         Id            = KeywordColumnId,
         Name          = "Keywords",
         IsVisible     = false,
         Width         = 115,
         TextAlignment = TextAlignment.Right,
         CellFormat    = "X"
     }.EnsureFrozen();
     keywordNamePreset =
         new ColumnViewModelPreset {
         Id        = KeywordNameColumnId,
         Name      = "Keywords Name",
         IsVisible = false,
         Width     = 115,
     }.EnsureFrozen();
     messagePreset =
         new ColumnViewModelPreset {
         Id        = MessageColumnId,
         Name      = "Message",
         IsVisible = true,
         Width     = 500
     }.EnsureFrozen();
     eventNamePreset =
         new ColumnViewModelPreset {
         Id        = new Guid(0xB82277B9, 0x7066, 0x4938, 0xA9, 0x59, 0xEA, 0xBF, 0x0C, 0x68, 0x90, 0x87),
         Name      = "Event Name",
         IsVisible = false,
         Width     = 100
     }.EnsureFrozen();
     eventTypePreset =
         new ColumnViewModelPreset {
         Id        = new Guid(0xAC2A6011, 0xBCB3, 0x4721, 0xBE, 0xF1, 0xE1, 0xDE, 0xC5, 0x0C, 0x07, 0x3D),
         Name      = "Event Type",
         IsVisible = false,
         Width     = 100
     }.EnsureFrozen();
     symbolPreset =
         new ColumnViewModelPreset {
         Id        = new Guid(0x79423887, 0x739E, 0x4DFF, 0x90, 0x45, 0x3D, 0xCF, 0x24, 0x3E, 0x29, 0x22),
         Name      = "Symbol",
         IsVisible = false,
         Width     = 100
     }.EnsureFrozen();
     cpuPreset =
         new ColumnViewModelPreset {
         Id        = new Guid(0x452A05E3, 0xA1C0, 0x4686, 0xBB, 0x6B, 0xC3, 0x9A, 0xFF, 0x2F, 0x24, 0xBE),
         Name      = "CPU",
         IsVisible = false,
         Width     = 30
     }.EnsureFrozen();
     threadIdPreset =
         new ColumnViewModelPreset {
         Id            = ThreadIdColumnId,
         Name          = "TID",
         IsVisible     = true,
         Width         = 40,
         TextAlignment = TextAlignment.Right,
         HelpText      = "Thread ID",
         CellFormat    = NumericalFormatProvider.Decimal
     }.EnsureFrozen();
     processIdPreset =
         new ColumnViewModelPreset {
         Id            = ProcessIdColumnId,
         Name          = "PID",
         IsVisible     = true,
         Width         = 40,
         TextAlignment = TextAlignment.Right,
         HelpText      = "Process ID (0 = PID Not Found)",
         CellFormat    = NumericalFormatProvider.Decimal
     }.EnsureFrozen();
     userDataPreset =
         new ColumnViewModelPreset {
         Id        = new Guid(0x2E47C924, 0x663F, 0x422A, 0x92, 0x32, 0xB1, 0xBC, 0xB1, 0x60, 0x22, 0x80),
         Name      = "UserData",
         IsVisible = false,
         Width     = 200
     }.EnsureFrozen();
     userDataLengthPreset =
         new ColumnViewModelPreset {
         Id        = new Guid(0x813F4638, 0x8D41, 0x4EAD, 0x94, 0xDD, 0x9A, 0x4A, 0xFF, 0xEF, 0xA7, 0x01),
         Name      = "UserData (Bytes)",
         IsVisible = false,
         Width     = 30
     }.EnsureFrozen();
     activityIdPreset =
         new ColumnViewModelPreset {
         Id        = new Guid(0x21695563, 0xAC1B, 0x4953, 0x9B, 0x9B, 0x99, 0x13, 0x53, 0xDB, 0xC0, 0x82),
         Name      = "etw:ActivityId",
         IsVisible = false,
         Width     = 60
     }.EnsureFrozen();
     relatedActivityIdPreset =
         new ColumnViewModelPreset {
         Id        = new Guid(0x83B1BF6F, 0x5E8D, 0x4143, 0xA8, 0x4B, 0x8C, 0x16, 0xED, 0x1E, 0xF6, 0xBD),
         Name      = "etw:Related ActivityId",
         IsVisible = false,
         Width     = 60
     }.EnsureFrozen();
     userSecurityIdentifierPreset =
         new ColumnViewModelPreset {
         Id        = new Guid(0xF979E52D, 0xEE1B, 0x4A7E, 0x95, 0x0F, 0x28, 0x10, 0x39, 0x90, 0xD1, 0x1B),
         Name      = "etw:UserSid",
         IsVisible = false,
         Width     = 60
     }.EnsureFrozen();
     sessionIdPreset =
         new ColumnViewModelPreset {
         Id        = new Guid(0x84FC6D0C, 0x5FFD, 0x40D9, 0x8C, 0x3B, 0xF0, 0xEB, 0x8F, 0x8F, 0x2D, 0x1B),
         Name      = "etw:SessionId",
         IsVisible = false,
         Width     = 60
     }.EnsureFrozen();
     eventKeyPreset =
         new ColumnViewModelPreset {
         Id        = new Guid(0x4F0679D2, 0xB5E7, 0x4AB1, 0xAD, 0xF7, 0xFC, 0xDE, 0xBE, 0xEF, 0x80, 0x1B),
         Name      = "etw:EventKey",
         IsVisible = false,
         Width     = 80
     }.EnsureFrozen();
     timePointGeneratorPreset =
         new ColumnViewModelPreset {
         Id            = new Guid(0x9C75AA69, 0x046E, 0x42AE, 0xB5, 0x94, 0xB4, 0xAD, 0x24, 0x33, 0x5A, 0x0A),
         Name          = "Time (Raw)",
         IsVisible     = false,
         Width         = 145,
         TextAlignment = TextAlignment.Right,
         CellFormat    = TimePointFormatter.FormatSecondsGrouped
     }.EnsureFrozen();
     timeAbsoluteGeneratorPreset =
         new ColumnViewModelPreset {
         Id         = TimeAbsoluteColumnId,
         Name       = "Time",
         IsVisible  = false,
         Width      = 100,
         CellFormat = "HH:mm:ss.fffffff"
     }.EnsureFrozen();
     timeRelativeGeneratorPreset =
         new ColumnViewModelPreset {
         Id         = TimeRelativeColumnId,
         Name       = "Time Elapsed",
         IsVisible  = true,
         Width      = 120,
         CellFormat = "HH:mm:ss.fffffff"
     }.EnsureFrozen();
     decodingSourcePreset =
         new ColumnViewModelPreset {
         Id    = DecodingSourceColumnId,
         Name  = "Decoding Source",
         Width = 150,
     }.EnsureFrozen();
     modernProcessDataPreset =
         new ColumnViewModelPreset {
         Id        = new Guid(0xDC7E68B0, 0xE753, 0x47DF, 0x83, 0x57, 0x61, 0xBE, 0xC0, 0x93, 0xE4, 0x05),
         Name      = "Process",
         IsVisible = true,
         Width     = 150
     }.EnsureFrozen();
     processNamePreset =
         new ColumnViewModelPreset {
         Id        = new Guid(0xBB09F706, 0xFE79, 0x43AA, 0xA1, 0x03, 0x12, 0x08, 0x01, 0xDA, 0xC2, 0x8F),
         Name      = "Process Name",
         IsVisible = true,
         Width     = 150
     }.EnsureFrozen();
     stackTopPreset =
         new ColumnViewModelPreset {
         Id        = new Guid(0xD55383F4, 0xD0ED, 0x404B, 0x98, 0xA8, 0xDC, 0x9C, 0xF4, 0x53, 0x3F, 0xBF),
         Name      = "Stack",
         IsVisible = false,
         Width     = 100
     }.EnsureFrozen();
     threadStartModulePreset =
         new ColumnViewModelPreset {
         Id        = new Guid(0xD58C42B0, 0x818D, 0x4D83, 0xBD, 0x99, 0x9D, 0xA8, 0x72, 0xE7, 0x7B, 0x54),
         Name      = "Thread Start Module",
         IsVisible = false,
         Width     = 100
     }.EnsureFrozen();
     threadStartFunctionPreset =
         new ColumnViewModelPreset {
         Id        = new Guid(0x125BB527, 0x34C6, 0x4A33, 0x82, 0xB8, 0x05, 0xE3, 0xB0, 0xC7, 0xA5, 0x91),
         Name      = "Thread Start Function",
         IsVisible = false,
         Width     = 100
     }.EnsureFrozen();
 }
        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);
        }