Example #1
0
        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;
            }
        }
Example #3
0
        ShouldCalculateGraphMetrics
        (
            GraphMetrics graphMetrics
        )
        {
            AssertValid();

            return((this.GraphMetricsToCalculate & graphMetrics) != 0);
        }
        ShouldCalculateGraphMetrics
        (
            GraphMetrics graphMetrics
        )
        {
            AssertValid();

            return(m_oGraphMetricUserSettings.ShouldCalculateGraphMetrics(
                       graphMetrics));
        }
Example #5
0
        //*************************************************************************
        //  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);
        }