//************************************************************************* // Method: AutoFillWorkbookInternal() // /// <summary> /// Runs the application's AutoFill feature on a workbook. /// </summary> /// /// <param name="oWorkbook"> /// The workbook to autofill. /// </param> /// /// <param name="oAutoFillUserSettings"> /// Specifies one or more source-to-destination column mappings. /// </param> //************************************************************************* private static void AutoFillWorkbookInternal( Microsoft.Office.Interop.Excel.Workbook oWorkbook, AutoFillUserSettings oAutoFillUserSettings ) { Debug.Assert(oWorkbook != null); Debug.Assert(oAutoFillUserSettings != null); // Populate the vertex worksheet with the name of each unique vertex in // the edge worksheet. ( new VertexWorksheetPopulator() ).PopulateVertexWorksheet( oWorkbook, false); ListObject oTable; ExcelHiddenColumns oHiddenColumns; AutoFillWorkbookResults oAutoFillWorkbookResults = new AutoFillWorkbookResults(); if ( ExcelUtil.TryGetTable(oWorkbook, WorksheetNames.Edges, TableNames.Edges, out oTable) ) { // The TableColumnMapper class that does the actual autofilling // fills only visible cells. Temporarily show all hidden columns // in the table. oHiddenColumns = ExcelColumnHider.ShowHiddenColumns(oTable); try { AutoFillEdgeTable(oTable, oAutoFillUserSettings, oAutoFillWorkbookResults); } finally { ExcelColumnHider.RestoreHiddenColumns(oTable, oHiddenColumns); } } if ( ExcelUtil.TryGetTable(oWorkbook, WorksheetNames.Vertices, TableNames.Vertices, out oTable) ) { oHiddenColumns = ExcelColumnHider.ShowHiddenColumns(oTable); try { AutoFillVertexTable(oTable, oAutoFillUserSettings, oAutoFillWorkbookResults); } finally { ExcelColumnHider.RestoreHiddenColumns(oTable, oHiddenColumns); } } // Save the results. ( new PerWorkbookSettings(oWorkbook) ).AutoFillWorkbookResults = oAutoFillWorkbookResults; }
//************************************************************************* // Method: AutoFillVertexTable() // /// <summary> /// Runs the application's AutoFill feature on the vertex table. /// </summary> /// /// <param name="oVertexTable"> /// The table to autofill. /// </param> /// /// <param name="oAutoFillUserSettings"> /// Specifies one or more source-to-destination column mappings. /// </param> /// /// <param name="oAutoFillWorkbookResults"> /// Stores the autofill results. /// </param> //************************************************************************* private static void AutoFillVertexTable( ListObject oVertexTable, AutoFillUserSettings oAutoFillUserSettings, AutoFillWorkbookResults oAutoFillWorkbookResults ) { Debug.Assert(oVertexTable != null); Debug.Assert(oAutoFillUserSettings != null); Debug.Assert(oAutoFillWorkbookResults != null); Double dSourceCalculationNumber1, dSourceCalculationNumber2; Int32 iDecimalPlaces; if ( TryAutoFillColorColumn(oVertexTable, oAutoFillUserSettings.VertexColorSourceColumnName, VertexTableColumnNames.Color, oAutoFillUserSettings.VertexColorDetails, out dSourceCalculationNumber1, out dSourceCalculationNumber2, out iDecimalPlaces ) ) { oAutoFillWorkbookResults.VertexColorResults = new AutoFillColorColumnResults( oAutoFillUserSettings.VertexColorSourceColumnName, dSourceCalculationNumber1, dSourceCalculationNumber2, iDecimalPlaces, oAutoFillUserSettings.VertexColorDetails.DestinationColor1, oAutoFillUserSettings.VertexColorDetails.DestinationColor2 ); } AutoFillNumericComparisonColumn(oVertexTable, oAutoFillUserSettings.VertexShapeSourceColumnName, VertexTableColumnNames.Shape, oAutoFillUserSettings.VertexShapeDetails ); if ( TryAutoFillNumericRangeColumn(oVertexTable, oAutoFillUserSettings.VertexRadiusSourceColumnName, VertexTableColumnNames.Radius, oAutoFillUserSettings.VertexRadiusDetails, out dSourceCalculationNumber1, out dSourceCalculationNumber2, out iDecimalPlaces ) ) { oAutoFillWorkbookResults.VertexRadiusResults = new AutoFillNumericRangeColumnResults( oAutoFillUserSettings.VertexRadiusSourceColumnName, dSourceCalculationNumber1, dSourceCalculationNumber2, iDecimalPlaces, oAutoFillUserSettings.VertexRadiusDetails. DestinationNumber1, oAutoFillUserSettings.VertexRadiusDetails. DestinationNumber2 ); } if ( TryAutoFillNumericRangeColumn(oVertexTable, oAutoFillUserSettings.VertexAlphaSourceColumnName, CommonTableColumnNames.Alpha, oAutoFillUserSettings.VertexAlphaDetails, out dSourceCalculationNumber1, out dSourceCalculationNumber2, out iDecimalPlaces ) ) { oAutoFillWorkbookResults.VertexAlphaResults = new AutoFillNumericRangeColumnResults( oAutoFillUserSettings.VertexAlphaSourceColumnName, dSourceCalculationNumber1, dSourceCalculationNumber2, iDecimalPlaces, oAutoFillUserSettings.VertexAlphaDetails.DestinationNumber1, oAutoFillUserSettings.VertexAlphaDetails.DestinationNumber2 ); } AutoFillColumnViaCopy(oVertexTable, oAutoFillUserSettings.VertexLabelSourceColumnName, VertexTableColumnNames.Label ); TryAutoFillColorColumn(oVertexTable, oAutoFillUserSettings.VertexLabelFillColorSourceColumnName, VertexTableColumnNames.LabelFillColor, oAutoFillUserSettings.VertexLabelFillColorDetails, out dSourceCalculationNumber1, out dSourceCalculationNumber2, out iDecimalPlaces ); AutoFillColumnViaCopy(oVertexTable, oAutoFillUserSettings.VertexToolTipSourceColumnName, VertexTableColumnNames.ToolTip ); AutoFillNumericComparisonColumn(oVertexTable, oAutoFillUserSettings.VertexVisibilitySourceColumnName, CommonTableColumnNames.Visibility, oAutoFillUserSettings.VertexVisibilityDetails ); TryAutoFillNumericRangeColumn(oVertexTable, oAutoFillUserSettings.VertexLayoutOrderSourceColumnName, VertexTableColumnNames.LayoutOrder, oAutoFillUserSettings.VertexLayoutOrderDetails, out dSourceCalculationNumber1, out dSourceCalculationNumber2, out iDecimalPlaces ); Boolean bXAutoFilled = TryAutoFillNumericRangeColumn(oVertexTable, oAutoFillUserSettings.VertexXSourceColumnName, VertexTableColumnNames.X, oAutoFillUserSettings.VertexXDetails, out dSourceCalculationNumber1, out dSourceCalculationNumber2, out iDecimalPlaces ); Double dYSourceCalculationNumber1, dYSourceCalculationNumber2; Boolean bYAutoFilled = TryAutoFillNumericRangeColumn(oVertexTable, oAutoFillUserSettings.VertexYSourceColumnName, VertexTableColumnNames.Y, oAutoFillUserSettings.VertexYDetails, out dYSourceCalculationNumber1, out dYSourceCalculationNumber2, out iDecimalPlaces ); if (bXAutoFilled && bYAutoFilled) { // (Note that the decimal places for the Y column take precedence // here.) oAutoFillWorkbookResults.VertexXResults = new AutoFillNumericRangeColumnResults( oAutoFillUserSettings.VertexXSourceColumnName, dSourceCalculationNumber1, dSourceCalculationNumber2, iDecimalPlaces, oAutoFillUserSettings.VertexXDetails.DestinationNumber1, oAutoFillUserSettings.VertexXDetails.DestinationNumber2 ); oAutoFillWorkbookResults.VertexYResults = new AutoFillNumericRangeColumnResults( oAutoFillUserSettings.VertexYSourceColumnName, dYSourceCalculationNumber1, dYSourceCalculationNumber2, iDecimalPlaces, oAutoFillUserSettings.VertexYDetails.DestinationNumber1, oAutoFillUserSettings.VertexYDetails.DestinationNumber2 ); } TryAutoFillNumericRangeColumn(oVertexTable, oAutoFillUserSettings.VertexPolarRSourceColumnName, VertexTableColumnNames.PolarR, oAutoFillUserSettings.VertexPolarRDetails, out dSourceCalculationNumber1, out dSourceCalculationNumber2, out iDecimalPlaces ); TryAutoFillNumericRangeColumn(oVertexTable, oAutoFillUserSettings.VertexPolarAngleSourceColumnName, VertexTableColumnNames.PolarAngle, oAutoFillUserSettings.VertexPolarAngleDetails, out dSourceCalculationNumber1, out dSourceCalculationNumber2, out iDecimalPlaces ); }
//************************************************************************* // Method: AutoFillEdgeTable() // /// <summary> /// Runs the application's AutoFill feature on the edge table. /// </summary> /// /// <param name="oEdgeTable"> /// The table to autofill. /// </param> /// /// <param name="oAutoFillUserSettings"> /// Specifies one or more source-to-destination column mappings. /// </param> /// /// <param name="oAutoFillWorkbookResults"> /// Stores the autofill results. /// </param> //************************************************************************* private static void AutoFillEdgeTable( ListObject oEdgeTable, AutoFillUserSettings oAutoFillUserSettings, AutoFillWorkbookResults oAutoFillWorkbookResults ) { Debug.Assert(oEdgeTable != null); Debug.Assert(oAutoFillUserSettings != null); Debug.Assert(oAutoFillWorkbookResults != null); Double dSourceCalculationNumber1, dSourceCalculationNumber2; Int32 iDecimalPlaces; if ( TryAutoFillColorColumn(oEdgeTable, oAutoFillUserSettings.EdgeColorSourceColumnName, EdgeTableColumnNames.Color, oAutoFillUserSettings.EdgeColorDetails, out dSourceCalculationNumber1, out dSourceCalculationNumber2, out iDecimalPlaces ) ) { oAutoFillWorkbookResults.EdgeColorResults = new AutoFillColorColumnResults( oAutoFillUserSettings.EdgeColorSourceColumnName, dSourceCalculationNumber1, dSourceCalculationNumber2, iDecimalPlaces, oAutoFillUserSettings.EdgeColorDetails.DestinationColor1, oAutoFillUserSettings.EdgeColorDetails.DestinationColor2 ); } if ( TryAutoFillNumericRangeColumn(oEdgeTable, oAutoFillUserSettings.EdgeWidthSourceColumnName, EdgeTableColumnNames.Width, oAutoFillUserSettings.EdgeWidthDetails, out dSourceCalculationNumber1, out dSourceCalculationNumber2, out iDecimalPlaces ) ) { oAutoFillWorkbookResults.EdgeWidthResults = new AutoFillNumericRangeColumnResults( oAutoFillUserSettings.EdgeWidthSourceColumnName, dSourceCalculationNumber1, dSourceCalculationNumber2, iDecimalPlaces, oAutoFillUserSettings.EdgeWidthDetails.DestinationNumber1, oAutoFillUserSettings.EdgeWidthDetails.DestinationNumber2 ); } if ( TryAutoFillNumericRangeColumn(oEdgeTable, oAutoFillUserSettings.EdgeAlphaSourceColumnName, CommonTableColumnNames.Alpha, oAutoFillUserSettings.EdgeAlphaDetails, out dSourceCalculationNumber1, out dSourceCalculationNumber2, out iDecimalPlaces ) ) { oAutoFillWorkbookResults.EdgeAlphaResults = new AutoFillNumericRangeColumnResults( oAutoFillUserSettings.EdgeAlphaSourceColumnName, dSourceCalculationNumber1, dSourceCalculationNumber2, iDecimalPlaces, oAutoFillUserSettings.EdgeAlphaDetails.DestinationNumber1, oAutoFillUserSettings.EdgeAlphaDetails.DestinationNumber2 ); } AutoFillNumericComparisonColumn(oEdgeTable, oAutoFillUserSettings.EdgeVisibilitySourceColumnName, CommonTableColumnNames.Visibility, oAutoFillUserSettings.EdgeVisibilityDetails ); AutoFillColumnViaCopy(oEdgeTable, oAutoFillUserSettings.EdgeLabelSourceColumnName, EdgeTableColumnNames.Label ); }
//************************************************************************* // Method: Update() // /// <overloads> /// Updates the graph legend. /// </overloads> /// /// <summary> /// Updates the graph legend with results for the autofill feature. /// </summary> /// /// <param name="autoFillWorkbookResults"> /// The results of the autofill. /// </param> //************************************************************************* public void Update( AutoFillWorkbookResults autoFillWorkbookResults ) { Debug.Assert(autoFillWorkbookResults != null); AssertValid(); Update( autoFillWorkbookResults, new AutoFillWorkbookWithSchemeResults() ); }
//************************************************************************* // Method: Update() // /// <summary> /// Updates the graph legend. /// </summary> /// /// <param name="oAutoFillWorkbookResults"> /// The results of the autofill. /// </param> /// /// <param name="oAutoFillWorkbookWithSchemeResults"> /// The results of the "autofill with scheme." /// </param> //************************************************************************* protected void Update( AutoFillWorkbookResults oAutoFillWorkbookResults, AutoFillWorkbookWithSchemeResults oAutoFillWorkbookWithSchemeResults ) { Debug.Assert(oAutoFillWorkbookResults != null); Debug.Assert(oAutoFillWorkbookWithSchemeResults != null); AssertValid(); m_oAutoFillWorkbookResults = oAutoFillWorkbookResults; m_oAutoFillWorkbookWithSchemeResults = oAutoFillWorkbookWithSchemeResults; this.Height = CalculateHeight(); Invalidate(); }
//************************************************************************* // Constructor: AutoFillResultsLegendControl() // /// <summary> /// Initializes a new instance of the <see /// cref="AutoFillResultsLegendControl" /> class. /// </summary> //************************************************************************* public AutoFillResultsLegendControl() { m_iLastResizeWidth = Int32.MinValue; // Start with empty (but not null) objects. m_oAutoFillWorkbookResults = new AutoFillWorkbookResults(); m_oAutoFillWorkbookWithSchemeResults = new AutoFillWorkbookWithSchemeResults(); this.DoubleBuffered = true; this.BackColor = SystemColors.Window; AssertValid(); }