ReadStyle
    (
        ExcelTableReader.ExcelTableRow oRow,
        EdgeStyleConverter oEdgeStyleConverter,
        IEdge oEdge
    )
    {
        Debug.Assert(oRow != null);
        Debug.Assert(oEdgeStyleConverter != null);
        AssertValid();

        String sStyle;

        if ( !oRow.TryGetNonEmptyStringFromCell(EdgeTableColumnNames.Style,
            out sStyle) )
        {
            return;
        }

        EdgeStyle eStyle;

        if ( !oEdgeStyleConverter.TryWorkbookToGraph(sStyle, out eStyle) )
        {
            OnWorkbookFormatErrorWithDropDown(oRow, EdgeTableColumnNames.Style,
                "style");
        }

        oEdge.SetValue(ReservedMetadataKeys.PerEdgeStyle, eStyle);
    }
    //*************************************************************************
    //  Constructor: ReadWorkbookContext()
    //
    /// <summary>
    /// Initializes a new instance of the <see cref="ReadWorkbookContext" />
    /// class.
    /// </summary>
    //*************************************************************************

    public ReadWorkbookContext()
    {
        m_bIgnoreVertexLocations = true;
        m_bFillIDColumns = false;
        m_bPopulateVertexWorksheet = false;
        m_bReadEdgeWeights = false;
        m_bReadGroups = false;
        m_bReadVertexColorFromGroups = true;
        m_bReadVertexShapeFromGroups = true;
        m_bReadVertexLabels = false;
        m_bReadEdgeLabels = false;
        m_bReadGroupLabels = false;
        m_bReadVertexImages = false;
        m_oDefaultVertexImageSize = new Nullable<Single>();
        m_eDefaultVertexShape = VertexShape.Disk;
        m_bReadAllEdgeAndVertexColumns = false;
        m_oGraphRectangle = Rectangle.FromLTRB(0, 0, 100, 100);
        m_oColorConverter2 = new ColorConverter2();
        m_oBooleanConverter = new BooleanConverter();
        m_oFontSizeConverter = new FontSizeConverter();
        m_oEdgeWidthConverter = new EdgeWidthConverter();
        m_oEdgeStyleConverter = new EdgeStyleConverter();
        m_oVertexRadiusConverter = new VertexRadiusConverter();

        m_oVertexLocationConverter =
            new VertexLocationConverter(m_oGraphRectangle);

        m_oVertexNameDictionary = new Dictionary<String, IVertex>();
        m_oEdgeRowIDDictionary = new Dictionary<Int32, IIdentityProvider>();
        m_oVertexRowIDDictionary = new Dictionary<Int32, IIdentityProvider>();

        AssertValid();
    }
Example #3
0
    ThisWorkbook_AttributesEditedInGraph
    (
        Object sender,
        AttributesEditedEventArgs e
    )
    {
        Debug.Assert(e != null);
        AssertValid();

        // The key is the row ID stored in the table's ID column and the value
        // is the one-based row number relative to the worksheet.

        Dictionary<Int32, Int32> oRowIDDictionary;

        if (
            e.EditedEdgeAttributes == null
            ||
            !m_oSheets1And2Helper.TableExists
            ||
            !m_oSheets1And2Helper.TryGetAllRowIDs(out oRowIDDictionary)
            )
        {
            return;
        }

        Microsoft.Office.Interop.Excel.ListObject oEdgeTable =
            Edges.InnerObject;

        Globals.ThisWorkbook.ShowWaitCursor = true;

        // Get the columns that might need to be updated.  These columns are
        // not required.

        Microsoft.Office.Interop.Excel.Range oColorColumnData,
            oWidthColumnData, oStyleColumnData, oAlphaColumnData,
            oVisibilityColumnData, oLabelColumnData,
            oLabelTextColorColumnData, oLabelFontSizeColumnData;

        Object [,] aoColorValues = null;
        Object [,] aoWidthValues = null;
        Object [,] aoStyleValues = null;
        Object [,] aoAlphaValues = null;
        Object [,] aoVisibilityValues = null;
        Object [,] aoLabelValues = null;
        Object [,] aoLabelTextColorValues = null;
        Object [,] aoLabelFontSizeValues = null;

        ExcelTableUtil.TryGetTableColumnDataAndValues(oEdgeTable,
            EdgeTableColumnNames.Color, out oColorColumnData,
            out aoColorValues);

        ExcelTableUtil.TryGetTableColumnDataAndValues(oEdgeTable,
            EdgeTableColumnNames.Width, out oWidthColumnData,
            out aoWidthValues);

        ExcelTableUtil.TryGetTableColumnDataAndValues(oEdgeTable,
            EdgeTableColumnNames.Style, out oStyleColumnData,
            out aoStyleValues);

        ExcelTableUtil.TryGetTableColumnDataAndValues(oEdgeTable,
            CommonTableColumnNames.Alpha, out oAlphaColumnData,
            out aoAlphaValues);

        ExcelTableUtil.TryGetTableColumnDataAndValues(oEdgeTable,
            CommonTableColumnNames.Visibility, out oVisibilityColumnData,
            out aoVisibilityValues);

        ExcelTableUtil.TryGetTableColumnDataAndValues(oEdgeTable,
            EdgeTableColumnNames.Label, out oLabelColumnData,
            out aoLabelValues);

        ExcelTableUtil.TryGetTableColumnDataAndValues(oEdgeTable,
            EdgeTableColumnNames.LabelTextColor, out oLabelTextColorColumnData,
            out aoLabelTextColorValues);

        ExcelTableUtil.TryGetTableColumnDataAndValues(oEdgeTable,
            EdgeTableColumnNames.LabelFontSize, out oLabelFontSizeColumnData,
            out aoLabelFontSizeValues);

        ColorConverter2 oColorConverter2 = new ColorConverter2();
        EdgeStyleConverter oEdgeStyleConverter = new EdgeStyleConverter();

        EdgeVisibilityConverter oEdgeVisibilityConverter =
            new EdgeVisibilityConverter();

        // Loop through the IDs of the edges whose attributes were edited
        // in the graph.

        EditedEdgeAttributes oEditedEdgeAttributes = e.EditedEdgeAttributes;

        foreach (Int32 iID in e.EdgeIDs)
        {
            // Look for the row that contains the ID.

            Int32 iRowOneBased;

            if ( !oRowIDDictionary.TryGetValue(iID, out iRowOneBased) )
            {
                continue;
            }

            iRowOneBased -= oEdgeTable.Range.Row;

            if (oEditedEdgeAttributes.Color.HasValue && aoColorValues != null)
            {
                aoColorValues[iRowOneBased, 1] =
                    oColorConverter2.GraphToWorkbook(
                        oEditedEdgeAttributes.Color.Value);
            }

            if (oEditedEdgeAttributes.Width.HasValue && aoWidthValues != null)
            {
                aoWidthValues[iRowOneBased, 1] =
                    oEditedEdgeAttributes.Width.Value.ToString();
            }

            if (oEditedEdgeAttributes.Style.HasValue && aoStyleValues != null)
            {
                aoStyleValues[iRowOneBased, 1] =
                    oEdgeStyleConverter.GraphToWorkbook(
                        oEditedEdgeAttributes.Style.Value);
            }

            if (oEditedEdgeAttributes.Alpha.HasValue && aoAlphaValues != null)
            {
                aoAlphaValues[iRowOneBased, 1] =
                    oEditedEdgeAttributes.Alpha.Value.ToString();
            }

            if (oEditedEdgeAttributes.Visibility.HasValue &&
                aoVisibilityValues != null)
            {
                aoVisibilityValues[iRowOneBased, 1] =
                    oEdgeVisibilityConverter.GraphToWorkbook(
                        oEditedEdgeAttributes.Visibility.Value);
            }

            if ( !String.IsNullOrEmpty(oEditedEdgeAttributes.Label) )
            {
                aoLabelValues[iRowOneBased, 1] = oEditedEdgeAttributes.Label;
            }

            if (oEditedEdgeAttributes.LabelTextColor.HasValue &&
                aoLabelTextColorValues != null)
            {
                aoLabelTextColorValues[iRowOneBased, 1] =
                    oColorConverter2.GraphToWorkbook(
                        oEditedEdgeAttributes.LabelTextColor.Value);
            }

            if (oEditedEdgeAttributes.LabelFontSize.HasValue &&
                aoLabelFontSizeValues != null)
            {
                aoLabelFontSizeValues[iRowOneBased, 1] =
                    oEditedEdgeAttributes.LabelFontSize.Value.ToString();
            }
        }

        // Activate this worksheet first, because writing to an inactive
        // worksheet causes problems with the selection in Excel.

        ExcelActiveWorksheetRestorer oExcelActiveWorksheetRestorer =
            m_oSheets1And2Helper.GetExcelActiveWorksheetRestorer();

        ExcelActiveWorksheetState oExcelActiveWorksheetState =
            oExcelActiveWorksheetRestorer.ActivateWorksheet(this.InnerObject);

        try
        {
            m_oSheets1And2Helper.SetColumnDataValues(
                oColorColumnData, aoColorValues,
                oWidthColumnData, aoWidthValues,
                oStyleColumnData, aoStyleValues,
                oAlphaColumnData, aoAlphaValues,
                oVisibilityColumnData, aoVisibilityValues,
                oLabelColumnData, aoLabelValues,
                oLabelTextColorColumnData, aoLabelTextColorValues,
                oLabelFontSizeColumnData, aoLabelFontSizeValues
                );
        }
        finally
        {
            oExcelActiveWorksheetRestorer.Restore(oExcelActiveWorksheetState);
        }

        Globals.ThisWorkbook.ShowWaitCursor = false;
    }