public static Grid CreateComplexGrid(BcsComplexNode complex) { var grid = new Grid(); int componentRowIndex = 0; if(complex.Components.Count > 1) { AddRowControlToGrid(grid, new Label { Content = "Complex:" }); AddEmptyRow(grid); componentRowIndex = 1; } foreach (var component in complex.Components) { AddColumnControlToGrid(grid, CreateEntityGrid(component), componentRowIndex); } return grid; }
private static string GetComplexFullName(BcsComplexNode complex) { if (complex == null) { return "[]"; } var componentNames = complex.Components .Select(c => { return (c is BcsLocationNode) ? ((c as BcsLocationNode).Resident?.Name ?? "<error>") : c.Name; }); return $"[{string.Join(".", componentNames)}]"; }
protected override void VisitComplex(BcsComplexNode bcsComplex) { var item = new MenuItem() { Title = $"Complex: {GetComplexFullName(bcsComplex)}" }; AddToTree(bcsComplex, item); }
protected override void VisitComplex(BcsComplexNode bcsComplex) { ResolveFromParent(bcsComplex); }
protected abstract void VisitComplex(BcsComplexNode bcsComplex);
public void CreateComplexes() { var complexes = DefinitionFile.Entities.Where(e => e.States.SourceText.IsEmptyOrWhitespace() && e.Composition.SourceText.Contains(".")); foreach (var complex in complexes) { var complexNode = new BcsComplexNode() { Name = complex.Name }; var compoennts = complex.Composition.SourceText.Split('.').Select(name => { name = name.Trim(); var matchingComponent = DefinitionFile.Components.SingleOrDefault(component => component.Name == name); if (matchingComponent == null) { complexNode.Errors.Add(new NodeError($"Failed to find matching component named {name} in the definition file.")); var dummyComponent = new BcsComponentNode() { Name = name }; DefinitionFile.Components.Add(dummyComponent); return dummyComponent; } return matchingComponent; }).ToList(); complexNode.Components.AddRange(compoennts); DefinitionFile.Complexes.Add(complexNode); } }