|  | 
| 269 | 269 | 
 | 
| 270 | 270 |         <CollectionViewSource x:Key="ResultsByOutcome" Source="{Binding Model.Tests}"> | 
| 271 | 271 |             <CollectionViewSource.SortDescriptions> | 
| 272 |  | -                <componentModel:SortDescription PropertyName="Result.Outcome" /> | 
|  | 272 | +                <componentModel:SortDescription PropertyName="Declaration.QualifiedName.QualifiedModuleName.Name" /> | 
| 273 | 273 |                 <componentModel:SortDescription PropertyName="Declaration.QualifiedName.MemberName" /> | 
| 274 | 274 |             </CollectionViewSource.SortDescriptions> | 
| 275 | 275 |             <CollectionViewSource.GroupDescriptions> | 
|  | 
| 278 | 278 | 
 | 
| 279 | 279 |             </CollectionViewSource.GroupDescriptions> | 
| 280 | 280 |         </CollectionViewSource> | 
|  | 281 | + | 
|  | 282 | +        <CollectionViewSource x:Key="ResultsByCategory" Source="{Binding Model.Tests}"> | 
|  | 283 | +            <CollectionViewSource.SortDescriptions> | 
|  | 284 | +                <componentModel:SortDescription PropertyName="Declaration.QualifiedName.QualifiedModuleName.Name" /> | 
|  | 285 | +                <componentModel:SortDescription PropertyName="Declaration.QualifiedName.MemberName" /> | 
|  | 286 | +            </CollectionViewSource.SortDescriptions> | 
|  | 287 | +            <CollectionViewSource.GroupDescriptions> | 
|  | 288 | + | 
|  | 289 | +                <PropertyGroupDescription PropertyName="Category.Name" /> | 
|  | 290 | + | 
|  | 291 | +            </CollectionViewSource.GroupDescriptions> | 
|  | 292 | +        </CollectionViewSource> | 
|  | 293 | + | 
| 281 | 294 |         <SolidColorBrush x:Key="ToolBarToggleButtonVerticalBackground" Color="#FFEEF5FD"/> | 
| 282 | 295 |         <SolidColorBrush x:Key="ToolBarButtonHover" Color="#210080FF"/> | 
| 283 | 296 |         <SolidColorBrush x:Key="ToolBarGripper" Color="#FF6D6D6D"/> | 
|  | 
| 504 | 517 |                                 <Image Source="pack://application:,,,/Rubberduck.Resources;component/Icons/Fugue/flask--arrow.png" /> | 
| 505 | 518 |                             </MenuItem.Icon> | 
| 506 | 519 |                         </MenuItem> | 
|  | 520 | +                        <MenuItem Command="{Binding RunSelectedCategoryTestsCommand}" Header="{Resx ResxName=Rubberduck.Resources.UnitTesting.TestExplorer ,Key=TestExplorer_RunSelectedCategoryTests}" > | 
|  | 521 | +                            <MenuItem.Icon> | 
|  | 522 | +                                <Image Source="pack://application:,,,/Rubberduck.Resources;component/Icons/Fugue/flask--arrow.png" /> | 
|  | 523 | +                            </MenuItem.Icon> | 
|  | 524 | +                        </MenuItem> | 
| 507 | 525 |                         <MenuItem Command="{Binding RunInconclusiveTestsCommand}" Header="{Resx ResxName=Rubberduck.Resources.UnitTesting.TestExplorer, Key=TestExplorer_RunInconclusiveTests}" > | 
| 508 | 526 |                             <MenuItem.Icon> | 
| 509 | 527 |                                 <Image Source="pack://application:,,,/Rubberduck.Resources;component/Icons/Fugue/flask--exclamation.png" /> | 
|  | 
| 572 | 590 |                                   Command="{Binding SetLocationGroupingCommand}" | 
| 573 | 591 |                                   CommandParameter="{Binding ElementName=GroupByLocation, Path=IsChecked}" | 
| 574 | 592 |                                   controls:MenuItemGroup.GroupName="TestExplorer_GroupingStyle" /> | 
|  | 593 | +                        <MenuItem x:Name="GroupByCategory" | 
|  | 594 | +                                  Style="{DynamicResource MenuItemStyle}" | 
|  | 595 | +                                  VerticalAlignment="Center"  | 
|  | 596 | +                                  Header="{Resx ResxName=Rubberduck.Resources.RubberduckUI, Key=GroupingStyle_ByCategory}"  | 
|  | 597 | +                                  IsChecked="{Binding GroupByCategory, UpdateSourceTrigger=PropertyChanged}"  | 
|  | 598 | +                                  IsCheckable="True" | 
|  | 599 | +                                  Command="{Binding SetCategoryGroupingCommand}" | 
|  | 600 | +                                  CommandParameter="{Binding ElementName=GroupByCategory, Path=IsChecked}" | 
|  | 601 | +                                  controls:MenuItemGroup.GroupName="TestExplorer_GroupingStyle" /> | 
| 575 | 602 |                     </MenuItem> | 
| 576 | 603 |                 </Menu> | 
| 577 | 604 | 
 | 
|  | 
| 615 | 642 |                         </DataGridTemplateColumn> | 
| 616 | 643 |                         <DataGridTextColumn Header="{Resx ResxName=Rubberduck.Resources.UnitTesting.TestExplorer, Key=TestExplorer_QualifiedModuleName}" Binding="{Binding Declaration.QualifiedName.QualifiedModuleName}" /> | 
| 617 | 644 |                         <DataGridTextColumn Header="{Resx ResxName=Rubberduck.Resources.UnitTesting.TestExplorer, Key=TestExplorer_MethodName}" Binding="{Binding Declaration.IdentifierName}" /> | 
|  | 645 | +                        <DataGridTextColumn Header="{Resx ResxName=Rubberduck.Resources.UnitTesting.TestExplorer, Key=TestExplorer_CategoryName}" Binding="{Binding Category.Name}" /> | 
| 618 | 646 |                         <DataGridTextColumn Header="{Resx ResxName=Rubberduck.Resources.UnitTesting.TestExplorer, Key=TestExplorer_Message}" Binding="{Binding Result.Output}" Width="*" /> | 
| 619 | 647 |                         <DataGridTextColumn Header="{Resx ResxName=Rubberduck.Resources.UnitTesting.TestExplorer, Key=TestExplorer_Duration}" Binding="{Binding Result.Duration, StringFormat={}{0}ms}" /> | 
| 620 | 648 |                     </DataGrid.Columns> | 
|  | 
| 633 | 661 |                         </DataGridTemplateColumn> | 
| 634 | 662 |                         <DataGridTextColumn Header="{Resx ResxName=Rubberduck.Resources.UnitTesting.TestExplorer, Key=TestExplorer_QualifiedModuleName}" Binding="{Binding Declaration.QualifiedName.QualifiedModuleName}" /> | 
| 635 | 663 |                         <DataGridTextColumn Header="{Resx ResxName=Rubberduck.Resources.UnitTesting.TestExplorer, Key=TestExplorer_MethodName}" Binding="{Binding Declaration.QualifiedName.MemberName}" /> | 
|  | 664 | +                        <DataGridTextColumn Header="{Resx ResxName=Rubberduck.Resources.UnitTesting.TestExplorer, Key=TestExplorer_CategoryName}" Binding="{Binding Category.Name}" /> | 
|  | 665 | +                        <DataGridTextColumn Header="{Resx ResxName=Rubberduck.Resources.UnitTesting.TestExplorer, Key=TestExplorer_Message}" Binding="{Binding Result.Output}" Width="*" /> | 
|  | 666 | +                        <DataGridTextColumn Header="{Resx ResxName=Rubberduck.Resources.UnitTesting.TestExplorer, Key=TestExplorer_Duration}" Binding="{Binding Result.Duration, StringFormat={}{0}ms}" /> | 
|  | 667 | +                    </DataGrid.Columns> | 
|  | 668 | +                </controls:GroupingGrid> | 
|  | 669 | +                <controls:GroupingGrid ItemsSource="{Binding Source={StaticResource ResultsByCategory}}" | 
|  | 670 | +                                           SelectedItem="{Binding SelectedTest}" | 
|  | 671 | +                                           ShowGroupingItemCount="True" | 
|  | 672 | +                                           Visibility="{Binding IsChecked, ElementName=GroupByCategory, Converter={StaticResource BoolToVisibility}}"> | 
|  | 673 | +                    <DataGrid.Columns> | 
|  | 674 | +                        <DataGridTemplateColumn Header="{Resx ResxName=Rubberduck.Resources.UnitTesting.TestExplorer, Key=TestExplorer_Outcome}"> | 
|  | 675 | +                            <DataGridTemplateColumn.CellTemplate> | 
|  | 676 | +                                <DataTemplate DataType="unitTesting:TestMethod"> | 
|  | 677 | +                                    <Image Source="{Binding Result.Outcome, Converter={StaticResource OutcomeIconConverter}}" Height="16" /> | 
|  | 678 | +                                </DataTemplate> | 
|  | 679 | +                            </DataGridTemplateColumn.CellTemplate> | 
|  | 680 | +                        </DataGridTemplateColumn> | 
|  | 681 | +                        <DataGridTextColumn Header="{Resx ResxName=Rubberduck.Resources.UnitTesting.TestExplorer, Key=TestExplorer_QualifiedModuleName}" Binding="{Binding Declaration.QualifiedName.QualifiedModuleName}" /> | 
|  | 682 | +                        <DataGridTextColumn Header="{Resx ResxName=Rubberduck.Resources.UnitTesting.TestExplorer, Key=TestExplorer_MethodName}" Binding="{Binding Declaration.QualifiedName.MemberName}" /> | 
|  | 683 | +                        <DataGridTextColumn Header="{Resx ResxName=Rubberduck.Resources.UnitTesting.TestExplorer, Key=TestExplorer_CategoryName}" Binding="{Binding Category.Name}" /> | 
| 636 | 684 |                         <DataGridTextColumn Header="{Resx ResxName=Rubberduck.Resources.UnitTesting.TestExplorer, Key=TestExplorer_Message}" Binding="{Binding Result.Output}" Width="*" /> | 
| 637 | 685 |                         <DataGridTextColumn Header="{Resx ResxName=Rubberduck.Resources.UnitTesting.TestExplorer, Key=TestExplorer_Duration}" Binding="{Binding Result.Duration, StringFormat={}{0}ms}" /> | 
| 638 | 686 |                     </DataGrid.Columns> | 
|  | 
0 commit comments