/// <summary>
        /// Gets the selected results.
        /// </summary>
        /// <seealso cref="VirtualTreeExtensions.GetUniqueRowsInGuiOrder(Row[])"/>
        /// <returns>the selected results</returns>
        private IResultNode[] GetSelectedResults(RowSelectionType rowSelectionType)
        {
            List <IResultNode> selectedResults = new List <IResultNode>();

            foreach (Row row in GetSelectedRows(rowSelectionType))
            {
                IFragment detectable;
                if ((detectable = row.Item as IFragment) != null)
                {
                    try
                    {
                        selectedResults.AddRange(_backgroundDataBlockScanner.GetResults(detectable).Children);
                    }
                    catch (FileNotFoundException fileNotFoundException)
                    {
                        ExceptionHandling.HandleFileNotFoundException(fileNotFoundException);
                    }
                    catch (IOException ioException)
                    {
                        ExceptionHandling.HandleIOException(ioException, detectable.InputFile.Name);
                    }
                    catch (FrameworkException frameworkException)
                    {
                        ExceptionHandling.HandleFrameworkException(frameworkException);
                    }
                }
            }
            return(selectedResults.ToArray());
        }
        private Row[] GetSelectedRows(RowSelectionType rowSelectionType)
        {
            switch (rowSelectionType)
            {
            case RowSelectionType.UniqueInGuiOrder: return(UniqueSelectedRowsInGuiOrder);

            case RowSelectionType.AllInGuiOrder: return(SelectedRowsInGuiOrder);

            default:
                Debug.Fail("No implementation for value '{0}' of enum 'RowSelectionType'", Enum.GetName(typeof(RowSelectionType), rowSelectionType));
                return(null);
            }
        }
 /// <summary>
 /// Gets the data or result selection in the tree.
 /// </summary>
 /// <returns>the selection</returns>
 private ISelection GetSelection(RowSelectionType rowSelectionType)
 {
     return(new Selection(this, rowSelectionType));
 }
 /// <summary>
 /// Creates a new selection.
 /// </summary>
 /// <param name="fileTreeObject">the tree for the selection</param>
 /// <param name="rowSelectionType">make the selection unique and in GUI order</param>
 public Selection(FileTreeObject fileTreeObject, RowSelectionType rowSelectionType)
 {
     _fileTreeObject   = fileTreeObject;
     _rowSelectionType = rowSelectionType;
 }