private FrmWizConfigurationCluster(Core core, Peak current)
            : this()
        {
            this._core = core;

            this._chart = new ChartHelperForPeaks(null, core, this.panel1);

            this._ecbFilter    = DataSet.ForObsFilter(core).CreateComboBox(this._lstFilters, this._btnEditFilters, EditableComboBox.EFlags.IncludeAll);
            this._ecbSource    = DataSet.ForMatrixProviders(core).CreateComboBox(this._lstSource, this._btnSource, EditableComboBox.EFlags.IncludeNone);
            this._ecbSeedPeak  = DataSet.ForPeaks(core).CreateComboBox(this._lstSeedPeak, this._btnSeedPeak, EditableComboBox.EFlags.None);
            this._ecbSeedGroup = DataSet.ForGroups(core).CreateComboBox(this._lstGroups, this._btnGroups, EditableComboBox.EFlags.None);
            this._lstGroups.Items.AddRange(NamedItem.GetRange(core.Groups, z => z.DisplayName).ToArray());
            this._lstGroups.SelectedIndex = 0;

            this._ecbPeakFilter = DataSet.ForPeakFilter(core).CreateComboBox(this._lstPeakFilter, this._btnPeakFilter, EditableComboBox.EFlags.IncludeAll);
            this._ecbDistance   = DataSet.ForMetricAlgorithms(core).CreateComboBox(this._lstDistanceMeasure, this._btnDistanceMeasure, EditableComboBox.EFlags.None);
            this._lstDistanceMeasure.SelectedIndexChanged += this._lstDistanceMeasure_SelectedIndexChanged;

            this._ecbSeedPeak.SelectedItem = current;

            this._wizard                = CtlWizard.BindNew(this, this.tabControl1, CtlWizardOptions.DEFAULT | CtlWizardOptions.DialogResultCancel | CtlWizardOptions.HandleBasicChanges);
            this._wizard.OkClicked     += this.wizard_OkClicked;
            this._wizard.TitleHelpText  = Resx.Manual.DKMeansPlusPlus;
            this._wizard.PermitAdvance += this.ValidatePage;
            this._wizard.Revalidate();
        }
        internal FrmEditConfigurationCorrection(Core core, ArgsCorrection def, bool readOnly, Peak previewPeak)
        {
            this.InitializeComponent();
            UiControls.SetIcon(this);

            this._lblPreviewTitle.BackColor   = UiControls.PreviewBackColour;
            this._lblPreviewTitle.ForeColor   = UiControls.PreviewForeColour;
            this._flpPreviewButtons.BackColor = UiControls.PreviewBackColour;
            this._flpPreviewButtons.ForeColor = UiControls.PreviewForeColour;

            this._core         = core;
            this._readOnly     = readOnly;
            this._selectedPeak = previewPeak;

            // Charts
            this._chartOrig    = new ChartHelperForPeaks(null, this._core, this.panel1);
            this._chartChanged = new ChartHelperForPeaks(null, this._core, this.panel2);

            // Choicelists
            this._ecbFilter = DataSet.ForObsFilter(core).CreateComboBox(this._lstFilter, this._btnFilter, EditableComboBox.EFlags.IncludeAll);
            this._ecbMethod = DataSet.ForTrendAndCorrectionAlgorithms(core).CreateComboBox(this._lstMethod, this._btnNewStatistic, EditableComboBox.EFlags.None);
            this._ecbTypes  = DataSet.ForGroups(this._core).CreateComboBox(this._lstTypes, this._btnEditTypes, EditableComboBox.EFlags.None);
            this._ecbSource = DataSet.ForMatrixProviders(this._core).CreateComboBox(this._lstSource, this._btnSource, EditableComboBox.EFlags.None);

            // Buttons
            this.GenerateTypeButtons();

            // Default
            if (def != null)
            {
                this._txtName.Text           = def.OverrideDisplayName;
                this._txtParameters.Text     = AlgoParameterCollection.ParamsToReversableString(def.Parameters, core);
                this._ecbMethod.SelectedItem = def.GetAlgorithmOrNull();
                this._comments = def.Comment;

                if (def.IsUsingTrend)
                {
                    this._radBatch.Checked       = def.Mode == ECorrectionMode.Batch;
                    this._radType.Checked        = def.Mode == ECorrectionMode.Control;
                    this._radDivide.Checked      = def.Method == ECorrectionMethod.Divide;
                    this._radSubtract.Checked    = def.Method == ECorrectionMethod.Subtract;
                    this._ecbTypes.SelectedItem  = def.ControlGroup;
                    this._ecbFilter.SelectedItem = def.Constraint;
                }
            }

            this.CheckAndChange();

            if (readOnly)
            {
                UiControls.MakeReadOnly(this, this._tlpPreview);
            }
        }
        internal FrmEditConfigurationTrend(Core core, Peak previewPeak, ArgsTrend def, bool readOnly)
            : this()
        {
            this._core        = core;
            this._previewPeak = previewPeak;

            this._ecbMethod = DataSet.ForTrendAlgorithms(core).CreateComboBox(this._lstMethod, this._btnNewStatistic, EditableComboBox.EFlags.None);
            this._ecbSource = DataSet.ForMatrixProviders(core).CreateComboBox(this._lstSource, this._btnSource, EditableComboBox.EFlags.None);

            this._chart1 = new ChartHelperForPeaks(null, core, this.panel1);

            if (def != null)
            {
                this._txtName.Text           = def.OverrideDisplayName;
                this._ecbMethod.SelectedItem = (TrendBase)def.GetAlgorithmOrNull();
                this._comments               = def.Comment;
                this._txtParams.Text         = AlgoParameterCollection.ParamsToReversableString(def.Parameters, core);
                this._ecbSource.SelectedItem = def.SourceProvider;
            }

            this.CheckAndChange(null, null);

            this._readOnly = readOnly;

            if (readOnly)
            {
                UiControls.MakeReadOnly(this, this._tlpPreview);

                this._btnComment.Enabled = true;

                this.ctlTitleBar1.Text = "View Trend";
            }
            else if (def != null)
            {
                this.ctlTitleBar1.Text = "Edit Trend";
            }
            else
            {
                this.ctlTitleBar1.Text = "New Trend";
            }

            // UiControls.CompensateForVisualStyles(this);
        }