public ReportSettings GetReportSettings(IWin32Window owner, string[] experimentStatColumns, string[] itemStatColumns, DataServer dServer, bool forStreaming)
        {
            ReportSettings settings;

            bool []        markerColumnFlags, itemColumnFlags;
            object[]       selectedAnnotationTypeObjects;
            Identifiable[] selectedAnnotationTypes;

            MyOKFlag       = false;
            MyForStreaming = forStreaming;

            MyMarkerColumnsForm   = new CheckedListForm();
            MyItemColumnsForm     = new CheckedListForm();
            MyAnnotationTypesForm = new CheckedListForm();

            //Prepare column selection forms.
            MyMarkerColumnsForm.LoadItems(experimentStatColumns);
            MyItemColumnsForm.LoadItems(itemStatColumns);
            MyAnnotationTypesForm.LoadItems(this.GetAnnotationTypes(dServer));

            //Check all columns.
            MyMarkerColumnsForm.SetAllCheckState(true);
            MyItemColumnsForm.SetAllCheckState(true);
            MyAnnotationTypesForm.SetAllCheckState(true);

            //Uncheck item success rate over nonfailed experiments, because should not be in the report by default.
            MyItemColumnsForm.SetItemChecked(2, false);

            PathTextBox.Text = Environment.GetFolderPath(Environment.SpecialFolder.MyComputer);

            this.SetEnabledStatus();
            this.ShowDialog(owner);
            settings = new ReportSettings();

            //Set included sections.
            settings.Set(ReportSettings.Bools.IncludeAnnotations, MarkerAnnotationsCheckBox.Checked);
            settings.Set(ReportSettings.Bools.IncludeControlItemStat, ControlItemStatisticsCheckBox.Checked);
            settings.Set(ReportSettings.Bools.IncludeExperimentStat, ExperimentStatisticsCheckBox.Checked);
            settings.Set(ReportSettings.Bools.IncludeItemStat, ItemStatisticsCheckBox.Checked);
            settings.Set(ReportSettings.Bools.IncludeSourceInfo, SourceInfoCheckBox.Checked);
            settings.Set(ReportSettings.Bools.IncludeResults, ResultsCheckBox.Checked);
            settings.Set(ReportSettings.Bools.IncludeSelectedPlates, SelectionPlatesCheckBox.Checked);
            settings.Set(ReportSettings.Bools.IncludeSelectedGroups, SelectionGroupsCheckBox.Checked);
            settings.Set(ReportSettings.Bools.IncludeSelectedDetailedFilter, SelectionDetailedFilterCheckBox.Checked);

            //Set empty result string.
            settings.Set(ReportSettings.Strings.EmptyResultString, NoResultTextBox.Text);
            //Set report type.
            settings.Set(ReportSettings.Strings.ReportType, (TextFileRadioButton.Checked ? ReportSettings.ReportTypeText : ReportSettings.ReportTypeXML));
            if (TableExperimentRowRadioButton.Checked)
            {
                settings.Set(ReportSettings.Strings.ResultTableType, ReportSettings.ResultTableTypeExpmRows);
            }
            else if (TableExperimentColumnRadioButton.Checked)
            {
                settings.Set(ReportSettings.Strings.ResultTableType, ReportSettings.ResultTableTypeExpmCol);
            }
            else if (PairwiseAllRadioButton.Checked)
            {
                settings.Set(ReportSettings.Strings.ResultTableType, ReportSettings.ResultTableTypePairAll);
            }
            else if (PairwiseApprovedRadioButton.Checked)
            {
                settings.Set(ReportSettings.Strings.ResultTableType, ReportSettings.ResultTableTypePairApp);
            }

            //Set selected columns for experiments.
            markerColumnFlags = new Boolean[MyMarkerColumnsForm.GetItems().GetLength(0)];
            for (int i = 0; i < markerColumnFlags.GetLength(0); i++)
            {
                markerColumnFlags[i] = MyMarkerColumnsForm.GetItemChecked(i);
            }
            settings.Set(ReportSettings.BoolArrays.ExperimentStatFlags, markerColumnFlags);

            //Set selected columns for items.
            itemColumnFlags = new Boolean[MyItemColumnsForm.GetItems().GetLength(0)];
            for (int i = 0; i < itemColumnFlags.GetLength(0); i++)
            {
                itemColumnFlags[i] = MyItemColumnsForm.GetItemChecked(i);
            }
            settings.Set(ReportSettings.BoolArrays.ItemStatFlags, itemColumnFlags);

            //Set selected columns for annotations.
            selectedAnnotationTypeObjects = MyAnnotationTypesForm.GetCheckedItems();
            selectedAnnotationTypes       = new Identifiable[selectedAnnotationTypeObjects.GetLength(0)];
            for (int i = 0; i < selectedAnnotationTypeObjects.GetLength(0); i++)
            {
                selectedAnnotationTypes[i] = (Identifiable)selectedAnnotationTypeObjects[i];
            }
            settings.Set(ReportSettings.Identifiables.AnnotationTypes, selectedAnnotationTypes);

            //Set split file flag.
            settings.Set(ReportSettings.Bools.SplitFile, SplitFileCheckBox.Checked);

            //Set file path.
            settings.Set(ReportSettings.Strings.FilePath, MyFilePath);

            //Set destination file name.
            settings.Set(ReportSettings.Strings.FileName, MyFileName);

            return(MyOKFlag ? settings : null);
        }