ReadFilteredAlpha ( DynamicFilterDialog dynamicFilterDialog, NodeXLControl nodeXLControl, Boolean forceRedraw ) { Debug.Assert(dynamicFilterDialog != null); Debug.Assert(nodeXLControl != null); nodeXLControl.FilteredAlpha = (new AlphaConverter()).WorkbookToGraphAsByte( dynamicFilterDialog.FilteredAlpha); if (forceRedraw) { nodeXLControl.DrawGraph(); } }
ReadDynamicFilterColumn ( DynamicFilterDialog oDynamicFilterDialog, Microsoft.Office.Interop.Excel.Workbook oWorkbook, NodeXLControl oNodeXLControl, String sWorksheetName, String sTableName, Dictionary <Int32, IIdentityProvider> oRowIDDictionary, HashSet <Int32> oFilteredIDs, EdgeOrVertexCanBeMadeVisibleHandler oOnEdgeOrVertexCanBeMadeVisible, EdgeOrVertexFilteredHandler oOnEdgeOrVertexFiltered, Boolean bForceRedraw ) { Debug.Assert(oDynamicFilterDialog != null); Debug.Assert(oWorkbook != null); Debug.Assert(oNodeXLControl != null); Debug.Assert(!String.IsNullOrEmpty(sWorksheetName)); Debug.Assert(!String.IsNullOrEmpty(sTableName)); Debug.Assert(oRowIDDictionary != null); Debug.Assert(oFilteredIDs != null); Debug.Assert(oOnEdgeOrVertexCanBeMadeVisible != null); Debug.Assert(oOnEdgeOrVertexFiltered != null); if (oNodeXLControl.IsLayingOutGraph) { return; } oFilteredIDs.Clear(); // The dynamic filter column on the edge or vertex table contains // Booleans indicating whether the edge or vertex should be made // visible. // Get the data in the ID and dynamic filter columns. Object [,] oIDColumnValues, oDynamicFilterColumnValues; if (!TryGetIDAndDynamicFilterValues(oWorkbook, sWorksheetName, sTableName, out oIDColumnValues, out oDynamicFilterColumnValues)) { return; } HashSet <Int32> oFilteredVertexIDs = GetFilteredVertexIDs(oDynamicFilterDialog); Int32 iRows = oIDColumnValues.GetUpperBound(0); Debug.Assert(iRows == oDynamicFilterColumnValues.GetUpperBound(0)); for (Int32 iOneBasedRow = 1; iOneBasedRow <= iRows; iOneBasedRow++) { Object oID = oIDColumnValues[iOneBasedRow, 1]; Object oDynamicFilter = oDynamicFilterColumnValues[iOneBasedRow, 1]; IIdentityProvider oEdgeOrVertex; if ( oID is Double && oRowIDDictionary.TryGetValue((Int32)(Double)oID, out oEdgeOrVertex) && oDynamicFilter is Boolean ) { Debug.Assert(oEdgeOrVertex is IMetadataProvider); IMetadataProvider oEdgeOrVertex2 = (IMetadataProvider)oEdgeOrVertex; Boolean bMakeVisible = (Boolean)oDynamicFilter; if (!bMakeVisible) { oFilteredIDs.Add(oEdgeOrVertex.ID); } else if (!oOnEdgeOrVertexCanBeMadeVisible( oEdgeOrVertex, GetFilteredEdgeIDs(oDynamicFilterDialog), oFilteredVertexIDs )) { bMakeVisible = false; } // Filter or make visible the edge or vertex, then call the // handler specified by the caller. DynamicallyFilterEdgeOrVertex(oEdgeOrVertex2, bMakeVisible); oOnEdgeOrVertexFiltered(oEdgeOrVertex2, bMakeVisible, oDynamicFilterDialog); } } if (bForceRedraw) { oNodeXLControl.DrawGraph(); } }