Smrf.NodeXL.ExcelTemplate.DynamicFilterSettings.SetSettings C# (CSharp) Method

SetSettings() public method

public SetSettings ( String tableName, String columnName, Decimal selectedMinimum, Decimal selectedMaximum, String &selectedMinimumAddress, String &selectedMaximumAddress ) : void
tableName String
columnName String
selectedMinimum Decimal
selectedMaximum Decimal
selectedMinimumAddress String
selectedMaximumAddress String
return void
    SetSettings
    (
        String tableName,
        String columnName,
        Decimal selectedMinimum,
        Decimal selectedMaximum,
        out String selectedMinimumAddress,
        out String selectedMaximumAddress
    )
    {
        Debug.Assert( !String.IsNullOrEmpty(tableName) );
        Debug.Assert( !String.IsNullOrEmpty(columnName) );
        Debug.Assert(selectedMaximum >= selectedMinimum);
        AssertValid();

        CheckOpen();

        selectedMinimumAddress = selectedMaximumAddress = null;

        SettingsForOneFilter oSettingsForOneFilter;
        String sDictionaryKey = GetDictionaryKey(tableName, columnName);
        Range oSelectedMinimumCell, oSelectedMaximumCell;

        if ( m_oDynamicFilterSettingsDictionary.TryGetValue(
            sDictionaryKey, out oSettingsForOneFilter) )
        {
            // The settings are already in the table.  Update the table row.

            Debug.Assert(m_oDynamicFilterSettingsTable.Parent is Worksheet);

            Worksheet oWorksheet =
                (Worksheet)m_oDynamicFilterSettingsTable.Parent;

            oSelectedMinimumCell = oWorksheet.get_Range(
                oSettingsForOneFilter.SelectedMinimumAddress, Missing.Value);

            oSelectedMinimumCell.set_Value(Missing.Value, selectedMinimum);

            oSelectedMaximumCell = oWorksheet.get_Range(
                oSettingsForOneFilter.SelectedMaximumAddress, Missing.Value);

            oSelectedMaximumCell.set_Value(Missing.Value, selectedMaximum);

            // Update the dictionary entry.

            oSettingsForOneFilter.SelectedMinimum = selectedMinimum;
            oSettingsForOneFilter.SelectedMaximum = selectedMaximum;
        }
        else
        {
            // The settings aren't in the table yet.  Add a row to the table.

            Range oNewRowRange = ExcelTableUtil.AddTableRow(
                m_oDynamicFilterSettingsTable,

                DynamicFilterSettingsTableColumnNames.TableName,
                    tableName,

                DynamicFilterSettingsTableColumnNames.ColumnName,
                    columnName,

                DynamicFilterSettingsTableColumnNames.SelectedMinimum,
                    selectedMinimum,

                DynamicFilterSettingsTableColumnNames.SelectedMaximum,
                    selectedMaximum
                );

            oSelectedMinimumCell = (Range)oNewRowRange.Cells[ 1,
                GetTableColumnIndex(m_oDynamicFilterSettingsTable,
                DynamicFilterSettingsTableColumnNames.SelectedMinimum, true) ];

            oSelectedMaximumCell = (Range)oNewRowRange.Cells[ 1,
                GetTableColumnIndex(m_oDynamicFilterSettingsTable,
                DynamicFilterSettingsTableColumnNames.SelectedMaximum, true) ];

            // Add a dictionary entry.

            oSettingsForOneFilter = new SettingsForOneFilter();

            oSettingsForOneFilter.SelectedMinimum = selectedMinimum;
            oSettingsForOneFilter.SelectedMaximum = selectedMaximum;

            oSettingsForOneFilter.SelectedMinimumAddress =
                ExcelUtil.GetRangeAddressAbsolute(oSelectedMinimumCell);

            oSettingsForOneFilter.SelectedMaximumAddress =
                ExcelUtil.GetRangeAddressAbsolute(oSelectedMaximumCell);

            m_oDynamicFilterSettingsDictionary.Add(sDictionaryKey,
                oSettingsForOneFilter);
        }

        selectedMinimumAddress = oSettingsForOneFilter.SelectedMinimumAddress;
        selectedMaximumAddress = oSettingsForOneFilter.SelectedMaximumAddress;

        Debug.Assert( !String.IsNullOrEmpty(selectedMinimumAddress) );
        Debug.Assert( !String.IsNullOrEmpty(selectedMaximumAddress) );
    }