/// <summary>
        /// Adds columns for the given <paramref name="detector"/>.
        /// </summary>
        /// <param name="detector">the detector to add columns for</param>
        public void AddColumns(IDetector detector)
        {
            Columns.SuspendChangeNotification();

            // Add columns from the given detector that are not yet in this tree
            if (!_detectors.Contains(detector))
            {
                _detectors.Add(detector);

                foreach (IColumnInfo columnInfo in detector.GetColumns())
                {
                    if (Columns[columnInfo.Name] == null)
                    {
                        AddColumn(detector, columnInfo, false);
                    }
                }
            }

            // Check the database for visible columns for the given dectector
            IProject project = _projectManager.Project;

            if (project != null)
            {
                IList <IColumnInfo> visibleColumns = project.GetVisibleColumns(detector);

                foreach (ColumnInfo columnInfo in visibleColumns)
                {
                    Column column = Columns[columnInfo.Name];

                    if (column != null)
                    {
                        column.Width  = columnInfo.Width;
                        column.Active = true;
                    }
                }
            }

            Columns.ResumeChangeNotification();
        }
        /// <summary>
        /// Sets the columns for this tree to the column names of the
        /// given <paramref name="detector"/>.
        /// </summary>
        /// <param name="detector">the detector</param>
        /// <param name="isWorkpad">The column chooser can be called from a workpad or the main dailog</param>
        public void SetColumns(IDetector detector, bool isWorkpad)
        {
            _detectors.Clear();
            Columns.Clear();
            listViewHiddenColumns.Items.Clear();
            listViewVisibleColumns.Items.Clear();

            if (!isWorkpad && detector == null)
            {
                return;
            }
            //if(detector==null && isWorkpad) -> default columns only

            if (detector != null)
            {
                _detectors.Add(detector);
            }

            IList <IColumnInfo> visibleColumns = null;
            IProject            project        = _projectManager.Project;

            if (project != null && detector != null)
            {
                visibleColumns = project.GetVisibleColumns(detector);
            }
            if (visibleColumns == null || visibleColumns.Count == 0)
            {
                // Do not add column 'Detector' / 'Detector Version' and 'File' to the default visible columns
                visibleColumns = new List <IColumnInfo>();
                foreach (IColumnInfo columnInfo in DefaultColumnExtensions.GetHeaderTreeDefaultColumns(DisplayMode))
                {
                    if (columnInfo.Name != Enum.GetName(typeof(DefaultColumnIndex), DefaultColumnIndex.Detector) &&
                        columnInfo.Name != Enum.GetName(typeof(DefaultColumnIndex), DefaultColumnIndex.DetectorVersion) &&
                        columnInfo.Name != Enum.GetName(typeof(DefaultColumnIndex), DefaultColumnIndex.File))
                    {
                        visibleColumns.Add(columnInfo);
                    }
                }

                if (project != null && detector != null)
                {
                    project.SetVisibleColumns(detector, visibleColumns);
                }
            }
            Columns.SuspendChangeNotification();

            // Add the visible columns
            foreach (ColumnInfo columnInfo in visibleColumns)
            {
                AddColumn(detector, GetCorrectCaptionForOffsetAndLength(columnInfo), true);
            }

            // Make the Offset column the default sort column; sort ascending
            Column offsetColumn = Columns[DefaultColumnIndex.Offset.GetName()];

            if (offsetColumn != null)
            {
                offsetColumn.SortDirection = ListSortDirection.Ascending;
                HeaderPanel.SortColumn     = offsetColumn;
            }

            // Add the invisible default columns
            foreach (ColumnInfo defaultColumnInfo in DefaultColumnExtensions.GetHeaderTreeDefaultColumns(DisplayMode))
            {
                if (!IsVisibleColumn(defaultColumnInfo.Name, visibleColumns))
                {
                    AddColumn(detector, defaultColumnInfo, false);
                }
            }

            // Add the invisible custom columns
            foreach (IColumnInfo customColumnInfo in detector.GetColumns())
            {
                if (!IsVisibleColumn(customColumnInfo.Name, visibleColumns))
                {
                    AddColumn(detector, customColumnInfo, false);
                }
            }

            Columns.ResumeChangeNotification();

            CreateColumns();
        }