DoDataExchange ( Boolean bFromControls ) { AssertValid(); if (bFromControls) { GraphMetrics eGraphMetricsToCalculate = GraphMetrics.None; foreach (Object oCheckedItem in clbGraphMetrics.CheckedItems) { eGraphMetricsToCalculate |= ItemToGraphMetricInformation(oCheckedItem).GraphMetric; } m_oGraphMetricUserSettings.GraphMetricsToCalculate = eGraphMetricsToCalculate; } else { CheckedListBox.ObjectCollection oItems = clbGraphMetrics.Items; Int32 iItems = oItems.Count; for (Int32 i = 0; i < iItems; i++) { clbGraphMetrics.SetItemChecked(i, m_oGraphMetricUserSettings.ShouldCalculateGraphMetrics( ItemToGraphMetricInformation(oItems[i]).GraphMetric)); } } return(true); }
TryCalculateWordMetrics ( IGraph graph, CalculateGraphMetricsContext calculateGraphMetricsContext, String statusColumnName, out GraphMetricColumn [] wordMetricColumns ) { Debug.Assert(graph != null); Debug.Assert(calculateGraphMetricsContext != null); Debug.Assert(!String.IsNullOrEmpty(statusColumnName)); // Use the WordMetricCalculator2() class to calculate word metrics for // all groups. // // This is somewhat wasteful, because we don't actually need all the // word metrics for all groups. A future version might refactor common // code out of WordMetricCalculator2() that can be called by that class // and this one. GraphMetricUserSettings oGraphMetricUserSettings = calculateGraphMetricsContext.GraphMetricUserSettings; WordMetricUserSettings oWordMetricUserSettings = oGraphMetricUserSettings.WordMetricUserSettings; GraphMetrics eOriginalGraphMetricsToCalculate = oGraphMetricUserSettings.GraphMetricsToCalculate; Boolean bOriginalTextColumnIsOnEdgeWorksheet = oWordMetricUserSettings.TextColumnIsOnEdgeWorksheet; String sOriginalTextColumnName = oWordMetricUserSettings.TextColumnName; Boolean bOriginalCountByGroup = oWordMetricUserSettings.CountByGroup; oGraphMetricUserSettings.GraphMetricsToCalculate = GraphMetrics.Words; oWordMetricUserSettings.TextColumnIsOnEdgeWorksheet = true; oWordMetricUserSettings.TextColumnName = statusColumnName; oWordMetricUserSettings.CountByGroup = true; try { return((new WordMetricCalculator2()).TryCalculateGraphMetrics( graph, calculateGraphMetricsContext, out wordMetricColumns)); } finally { oGraphMetricUserSettings.GraphMetricsToCalculate = eOriginalGraphMetricsToCalculate; oWordMetricUserSettings.TextColumnIsOnEdgeWorksheet = bOriginalTextColumnIsOnEdgeWorksheet; oWordMetricUserSettings.TextColumnName = sOriginalTextColumnName; oWordMetricUserSettings.CountByGroup = bOriginalCountByGroup; } }
ShouldCalculateGraphMetrics ( GraphMetrics graphMetrics ) { AssertValid(); return((this.GraphMetricsToCalculate & graphMetrics) != 0); }
ShouldCalculateGraphMetrics ( GraphMetrics graphMetrics ) { AssertValid(); return(m_oGraphMetricUserSettings.ShouldCalculateGraphMetrics( graphMetrics)); }
//************************************************************************* // Constructor: GraphMetricInformation() // /// <summary> /// Initializes a new instance of the <see cref="GraphMetricInformation" /> /// class. /// </summary> /// /// <param name="graphMetric"> /// The graph metric's flag in the GraphMetrics enumeration. /// </param> /// /// <param name="name"> /// The graph metric's friendly name, suitable for display in a dialog box. /// </param> /// /// <param name="hasUserSettings"> /// true if graph metric has user settings. /// </param> //************************************************************************* private GraphMetricInformation ( GraphMetrics graphMetric, String name, Boolean hasUserSettings ) { m_eGraphMetric = graphMetric; m_sName = name; m_bHasUserSettings = hasUserSettings; AssertValid(); }
GetWorkbookSettings ( Microsoft.Office.Interop.Excel.Workbook oWorkbook ) { Debug.Assert(oWorkbook != null); AssertValid(); // Temporarily change some settings. AutomateTasksUserSettings oAutomateTasksUserSettings = new AutomateTasksUserSettings(); AutomationTasks eOriginalTasksToRun = oAutomateTasksUserSettings.TasksToRun; oAutomateTasksUserSettings.TasksToRun = AutomationTasks.CalculateGraphMetrics; oAutomateTasksUserSettings.Save(); GraphMetricUserSettings oGraphMetricUserSettings = new GraphMetricUserSettings(); GraphMetrics eOriginalGraphMetricsToCalculate = oGraphMetricUserSettings.GraphMetricsToCalculate; oGraphMetricUserSettings.GraphMetricsToCalculate = GraphMetrics.OverallMetrics; oGraphMetricUserSettings.Save(); // Get the workbook settings that include the temporary changes. String sWorkbookSettings = (new PerWorkbookSettings(oWorkbook)).WorkbookSettings; // Restore the original settings. oAutomateTasksUserSettings.TasksToRun = eOriginalTasksToRun; oAutomateTasksUserSettings.Save(); oGraphMetricUserSettings.GraphMetricsToCalculate = eOriginalGraphMetricsToCalculate; oGraphMetricUserSettings.Save(); return(sWorkbookSettings); }
ShouldCalculateGraphMetrics ( GraphMetrics graphMetrics ) { AssertValid(); return (m_oGraphMetricUserSettings.ShouldCalculateGraphMetrics( graphMetrics) ); }
//************************************************************************* // Method: ShouldCalculateGraphMetrics // /// <summary> /// Gets a flag specifying whether any one of a set of specified graph /// metrics should be calculated. /// </summary> /// /// <param name="graphMetrics"> /// An ORed combination of GraphMetrics flags. If any of the flags are /// set, true is returned. /// </param> /// /// <returns> /// true if any of the specified graph metrics should be calculated. /// </returns> //************************************************************************* public Boolean ShouldCalculateGraphMetrics( GraphMetrics graphMetrics ) { AssertValid(); return ( (this.GraphMetricsToCalculate & graphMetrics) != 0 ); }
TryCalculateGraphMetrics ( IGraph graph, CalculateGraphMetricsContext calculateGraphMetricsContext, Algorithms.OneDoubleGraphMetricCalculatorBase oneDoubleGraphMetricCalculator, GraphMetrics graphMetric, String columnName, Double columnWidthChars, String style, out GraphMetricColumn [] graphMetricColumns ) { Debug.Assert(graph != null); Debug.Assert(calculateGraphMetricsContext != null); Debug.Assert(oneDoubleGraphMetricCalculator != null); Debug.Assert( !String.IsNullOrEmpty(columnName) ); Debug.Assert(columnWidthChars == ExcelTableUtil.AutoColumnWidth || columnWidthChars > 0); AssertValid(); graphMetricColumns = new GraphMetricColumn[0]; if ( !calculateGraphMetricsContext.ShouldCalculateGraphMetrics( graphMetric) ) { return (true); } // Calculate the graph metrics for each vertex using the // OneDoubleGraphMetricCalculatorBase object, which knows nothing about // Excel. Dictionary<Int32, Double> oGraphMetrics; if ( !oneDoubleGraphMetricCalculator.TryCalculateGraphMetrics(graph, calculateGraphMetricsContext.BackgroundWorker, out oGraphMetrics) ) { // The user cancelled. return (false); } // Transfer the graph metrics to an array of GraphMetricValue objects. List<GraphMetricValueWithID> oGraphMetricValues = new List<GraphMetricValueWithID>(); foreach (IVertex oVertex in graph.Vertices) { // Try to get the row ID stored in the worksheet. Int32 iRowID; if ( TryGetRowID(oVertex, out iRowID) ) { oGraphMetricValues.Add( new GraphMetricValueWithID( iRowID, oGraphMetrics[oVertex.ID] ) ); } } graphMetricColumns = new GraphMetricColumn [] { new GraphMetricColumnWithID( WorksheetNames.Vertices, TableNames.Vertices, columnName, columnWidthChars, NumericFormat, style, oGraphMetricValues.ToArray() ) }; return (true); }
//************************************************************************* // Constructor: GraphMetricInformation() // /// <summary> /// Initializes a new instance of the <see cref="GraphMetricInformation" /> /// class. /// </summary> /// /// <param name="graphMetric"> /// The graph metric's flag in the GraphMetrics enumeration. /// </param> /// /// <param name="name"> /// The graph metric's friendly name, suitable for display in a dialog box. /// </param> /// /// <param name="hasUserSettings"> /// true if graph metric has user settings. /// </param> //************************************************************************* private GraphMetricInformation ( GraphMetrics graphMetric, String name, Boolean hasUserSettings ) { m_eGraphMetric = graphMetric; m_sName = name; m_bHasUserSettings = hasUserSettings; AssertValid(); }
TryCalculateGraphMetrics ( IGraph graph, CalculateGraphMetricsContext calculateGraphMetricsContext, Algorithms.OneDoubleGraphMetricCalculatorBase oneDoubleGraphMetricCalculator, GraphMetrics graphMetric, String columnName, Double columnWidthChars, String style, out GraphMetricColumn [] graphMetricColumns ) { Debug.Assert(graph != null); Debug.Assert(calculateGraphMetricsContext != null); Debug.Assert(oneDoubleGraphMetricCalculator != null); Debug.Assert(!String.IsNullOrEmpty(columnName)); Debug.Assert(columnWidthChars == ExcelTableUtil.AutoColumnWidth || columnWidthChars > 0); AssertValid(); graphMetricColumns = new GraphMetricColumn[0]; if (!calculateGraphMetricsContext.ShouldCalculateGraphMetrics( graphMetric)) { return(true); } // Calculate the graph metrics for each vertex using the // OneDoubleGraphMetricCalculatorBase object, which knows nothing about // Excel. Dictionary <Int32, Double> oGraphMetrics; if (!oneDoubleGraphMetricCalculator.TryCalculateGraphMetrics(graph, calculateGraphMetricsContext.BackgroundWorker, out oGraphMetrics)) { // The user cancelled. return(false); } // Transfer the graph metrics to an array of GraphMetricValue objects. List <GraphMetricValueWithID> oGraphMetricValues = new List <GraphMetricValueWithID>(); foreach (IVertex oVertex in graph.Vertices) { // Try to get the row ID stored in the worksheet. Int32 iRowID; if (TryGetRowID(oVertex, out iRowID)) { oGraphMetricValues.Add(new GraphMetricValueWithID( iRowID, oGraphMetrics[oVertex.ID])); } } graphMetricColumns = new GraphMetricColumn [] { new GraphMetricColumnWithID(WorksheetNames.Vertices, TableNames.Vertices, columnName, columnWidthChars, NumericFormat, style, oGraphMetricValues.ToArray() ) }; return(true); }