/// <summary>
        /// Changes the group by in OpenCover Test Explorer.
        /// </summary>
        /// <param name="groupingField">The grouping field.</param>
        internal void ChangeGroupBy(TestMethodGroupingField groupingField)
        {
            _currentGroupingField = groupingField;
            TestsExplorerToolbarCommands.UpdateSelectedGroupBy(groupingField);

            UpdateTreeView(Tests);
        }
        /// <summary>
        /// Event handler for Group By Command.
        /// </summary>
        /// <param name="sender">The sender.</param>
        /// <param name="e">The <see cref="EventArgs"/> instance containing the event data.</param>
        private static void Executed(object sender, EventArgs e)
        {
            var clicked = sender as OleMenuCommand;

            UpdateCheckedMethods(clicked);

            // Group tests based on the clicked command
            switch (clicked.CommandID.ID)
            {
            case PkgCmdIDList.OpenCoverTestExplorerToolbarGroupByClassButton:
                CurrentSelectedGroupBy = TestMethodGroupingField.Class;
                break;

            case PkgCmdIDList.OpenCoverTestExplorerToolbarGroupByTraitButton:
                CurrentSelectedGroupBy = TestMethodGroupingField.Trait;
                break;

            case PkgCmdIDList.OpenCoverTestExplorerToolbarGroupByProjectButton:
                CurrentSelectedGroupBy = TestMethodGroupingField.Project;
                break;

            case PkgCmdIDList.OpenCoverTestExplorerToolbarGroupByOutcomeButton:
                CurrentSelectedGroupBy = TestMethodGroupingField.Outcome;
                break;
            }

            OpenCoverUIPackage.Instance.ToolWindows.OfType <TestExplorerToolWindow>().First().TestExplorerControl.ChangeGroupBy(CurrentSelectedGroupBy);
        }
		/// <summary>
		/// Changes the group by in OpenCover Test Explorer.
		/// </summary>
		/// <param name="groupingField">The grouping field.</param>
		internal void ChangeGroupBy(TestMethodGroupingField groupingField)
		{
			_currentGroupingField = groupingField;
			TestsExplorerToolbarCommands.UpdateSelectedGroupBy(groupingField);

			UpdateTreeView(Tests);
		}
        /// <summary>
        /// Initializes a new instance of the <see cref="TestMethodWrapperContainer"/> class.
        /// </summary>
        /// <param name="testMethodsWrapper">The test methods wrapper.</param>
        /// <param name="groupingField">The grouping field.</param>
        internal TestMethodWrapperContainer(string caption, IEnumerable <TestMethodWrapper> testMethodsWrapper, TestMethodGroupingField groupingField, TestType testType)
        {
            _caption       = caption;
            _groupingField = groupingField;

            TestType = testType;

            TestMethodsWrapper = testMethodsWrapper;
            LazyLoading        = true;
        }
		/// <summary>
		/// Initializes a new instance of the <see cref="TestMethodWrapperContainer"/> class.
		/// </summary>
		/// <param name="testMethodsWrapper">The test methods wrapper.</param>
		/// <param name="groupingField">The grouping field.</param>
		internal TestMethodWrapperContainer(string caption, IEnumerable<TestMethodWrapper> testMethodsWrapper, TestMethodGroupingField groupingField, TestType testType)
		{
			_caption = caption;
			_groupingField = groupingField;

			TestType = testType;

			TestMethodsWrapper = testMethodsWrapper;
			LazyLoading = true;
		}
 internal static void UpdateSelectedGroupBy(TestMethodGroupingField field)
 {
     CurrentSelectedGroupBy = field;
     UpdateCheckedMethods(GetCommand());
 }
		internal static void UpdateSelectedGroupBy(TestMethodGroupingField field)
		{
			CurrentSelectedGroupBy = field;
			UpdateCheckedMethods(GetCommand());
		}
		/// <summary>
		/// Event handler for Group By Command.
		/// </summary>
		/// <param name="sender">The sender.</param>
		/// <param name="e">The <see cref="EventArgs"/> instance containing the event data.</param>
		private static void Executed(object sender, EventArgs e)
		{
			var clicked = sender as OleMenuCommand;

			UpdateCheckedMethods(clicked);

			// Group tests based on the clicked command
			switch (clicked.CommandID.ID)
			{
				case PkgCmdIDList.OpenCoverTestExplorerToolbarGroupByClassButton:
					CurrentSelectedGroupBy = TestMethodGroupingField.Class;
					break;
				case PkgCmdIDList.OpenCoverTestExplorerToolbarGroupByTraitButton:
					CurrentSelectedGroupBy = TestMethodGroupingField.Trait;
					break;
				case PkgCmdIDList.OpenCoverTestExplorerToolbarGroupByProjectButton:
					CurrentSelectedGroupBy = TestMethodGroupingField.Project;
					break;
				case PkgCmdIDList.OpenCoverTestExplorerToolbarGroupByOutcomeButton:
					CurrentSelectedGroupBy = TestMethodGroupingField.Outcome;
					break;
			}

			var testExplorerToolWindow = OpenCoverUIPackage.Instance.ToolWindows.OfType<TestExplorerToolWindow>().FirstOrDefault();
			if (testExplorerToolWindow != null)
			{
				testExplorerToolWindow.TestExplorerControl.ChangeGroupBy(CurrentSelectedGroupBy);
			}
		}