Smrf.NodeXL.ExcelTemplate.MotifUserSettingsDialog.DoDataExchange C# (CSharp) Method

DoDataExchange() protected method

protected DoDataExchange ( System.Boolean bFromControls ) : System.Boolean
bFromControls System.Boolean
return System.Boolean
    DoDataExchange
    (
        Boolean bFromControls
    )
    {
        if (bFromControls)
        {
            Motifs eMotifsToCalculate = Motifs.None;

            if (chkFan.Checked)
            {
                eMotifsToCalculate |= Motifs.Fan;
            }

            if (chkDConnector.Checked)
            {
                eMotifsToCalculate |= Motifs.DConnector;

                Int32 iDConnectorMinimumAnchorVertices,
                    iDConnectorMaximumAnchorVertices;

                if (
                    !ValidateNumericUpDown(nudDConnectorMinimumAnchorVertices,
                        "the minimum number of anchor vertices",
                        out iDConnectorMinimumAnchorVertices)
                    ||
                    !ValidateNumericUpDown(nudDConnectorMaximumAnchorVertices,
                        "the maximum number of anchor vertices",
                        out iDConnectorMaximumAnchorVertices)
                    )
                {
                    return (false);
                }
                else
                {
                    // Don't require the minimum and maximum to be in the
                    // typical order.

                    m_oMotifUserSettings.DConnectorMinimumAnchorVertices =
                        Math.Min(iDConnectorMinimumAnchorVertices,
                            iDConnectorMaximumAnchorVertices);

                    m_oMotifUserSettings.DConnectorMaximumAnchorVertices =
                        Math.Max(iDConnectorMinimumAnchorVertices,
                            iDConnectorMaximumAnchorVertices);
                }
            }

            if (chkClique.Checked)
            {
                eMotifsToCalculate |= Motifs.Clique;

                Int32 iCliqueMinimumMemberVertices,
                    iCliqueMaximumMemberVertices;

                if (
                    !ValidateNumericUpDown(nudCliqueMinimumMemberVertices,
                        "the minimum number of member vertices",
                        out iCliqueMinimumMemberVertices)
                    ||
                    !ValidateNumericUpDown(nudCliqueMaximumMemberVertices,
                        "the maximum number of member vertices",
                        out iCliqueMaximumMemberVertices)
                    )
                {
                    return (false);
                }
                else
                {
                    // Don't require the minimum and maximum to be in the
                    // typical order.

                    m_oMotifUserSettings.CliqueMinimumMemberVertices =
                        Math.Min(iCliqueMinimumMemberVertices,
                            iCliqueMaximumMemberVertices);

                    m_oMotifUserSettings.CliqueMaximumMemberVertices =
                        Math.Max(iCliqueMinimumMemberVertices,
                            iCliqueMaximumMemberVertices);
                }
            }

            m_oMotifUserSettings.MotifsToCalculate = eMotifsToCalculate;
        }
        else
        {
            chkFan.Checked = ShouldGroupByMotif(Motifs.Fan);
            chkDConnector.Checked = ShouldGroupByMotif(Motifs.DConnector);
            chkClique.Checked = ShouldGroupByMotif(Motifs.Clique);

            nudDConnectorMinimumAnchorVertices.Value =
                m_oMotifUserSettings.DConnectorMinimumAnchorVertices;

            nudDConnectorMaximumAnchorVertices.Value =
                m_oMotifUserSettings.DConnectorMaximumAnchorVertices;

            nudCliqueMinimumMemberVertices.Value =
                m_oMotifUserSettings.CliqueMinimumMemberVertices;

            nudCliqueMaximumMemberVertices.Value =
                m_oMotifUserSettings.CliqueMaximumMemberVertices;

            EnableControls();
        }

        return (true);
    }