ReadGroupVertexTable
(
ListObject oGroupVertexTable,
ReadWorkbookContext oReadWorkbookContext,
Dictionary<String, ExcelTemplateGroupInfo> oGroupNameDictionary,
IGraph oGraph
)
{
Debug.Assert(oGroupVertexTable != null);
Debug.Assert(oReadWorkbookContext != null);
Debug.Assert(oGroupNameDictionary != null);
Debug.Assert(oGraph != null);
AssertValid();
Dictionary<String, IVertex> oVertexNameDictionary =
oReadWorkbookContext.VertexNameDictionary;
ExcelTableReader oExcelTableReader =
new ExcelTableReader(oGroupVertexTable);
foreach ( ExcelTableReader.ExcelTableRow oRow in
oExcelTableReader.GetRows() )
{
// Get the group vertex information from the row.
String sGroupName, sVertexName;
if (
!oRow.TryGetNonEmptyStringFromCell(
GroupVertexTableColumnNames.GroupName, out sGroupName)
||
!oRow.TryGetNonEmptyStringFromCell(
GroupVertexTableColumnNames.VertexName, out sVertexName)
)
{
continue;
}
// Get the group information for the vertex.
ExcelTemplateGroupInfo oExcelTemplateGroupInfo;
IVertex oVertex;
if (
!oGroupNameDictionary.TryGetValue(sGroupName,
out oExcelTemplateGroupInfo)
||
!oVertexNameDictionary.TryGetValue(sVertexName,
out oVertex)
)
{
continue;
}
// If the vertex should get its color or shape from the group, set
// the vertex's color or shape.
Boolean bReadColorFromGroup, bReadShapeFromGroup;
GetReadColorAndShapeFlags(oVertex, oExcelTemplateGroupInfo,
oReadWorkbookContext, out bReadColorFromGroup,
out bReadShapeFromGroup);
if (bReadColorFromGroup)
{
oVertex.SetValue(ReservedMetadataKeys.PerColor,
oExcelTemplateGroupInfo.VertexColor);
}
if (bReadShapeFromGroup)
{
oVertex.SetValue(ReservedMetadataKeys.PerVertexShape,
oExcelTemplateGroupInfo.VertexShape);
}
oExcelTemplateGroupInfo.Vertices.AddLast(oVertex);
}
}