public static void GenerateVisualElementsFromShellEnvAddElements(TreeViewLineCache cache, AdminShell.AdministrationShellEnv env, VisualElementGeneric parent, AdminShell.Referable parentContainer, AdminShell.SubmodelElementWrapper el) { var ti = new VisualElementSubmodelElement(parent, cache, env, parentContainer, el); parent.Members.Add(ti); var elc = el.submodelElement as AdminShell.SubmodelElementCollection; if (elc != null) { foreach (var elcc in elc.value) { GenerateVisualElementsFromShellEnvAddElements(cache, env, ti, elc, elcc); } } }
public static void GenerateVisualElementsFromShellEnvAddElements( TreeViewLineCache cache, AdminShell.AdministrationShellEnv env, VisualElementGeneric parent, AdminShell.Referable parentContainer, AdminShell.SubmodelElementWrapper el) { var ti = new VisualElementSubmodelElement(parent, cache, env, parentContainer, el); parent.Members.Add(ti); // Recurse: SMC if (el.submodelElement is AdminShell.SubmodelElementCollection elc && elc.value != null) { foreach (var elcc in elc.value) { GenerateVisualElementsFromShellEnvAddElements(cache, env, ti, elc, elcc); } } // Recurse: Entity // ReSharper disable ExpressionIsAlwaysNull if (el.submodelElement is AdminShell.Entity ele && ele.statements != null) { foreach (var eles in ele.statements) { GenerateVisualElementsFromShellEnvAddElements(cache, env, ti, ele, eles); } } // ReSharper enable ExpressionIsAlwaysNull // Recurse: Operation if (el.submodelElement is AdminShell.Operation elo) { if (elo.inputVariable != null) { foreach (var vin in elo.inputVariable) { ti.Members.Add( new VisualElementOperationVariable( ti, cache, env, el.submodelElement, vin, AdminShell.OperationVariable.Direction.In)); } } if (elo.outputVariable != null) { foreach (var vout in elo.outputVariable) { ti.Members.Add( new VisualElementOperationVariable( ti, cache, env, el.submodelElement, vout, AdminShell.OperationVariable.Direction.Out)); } } if (elo.inoutputVariable != null) { foreach (var vout in elo.inoutputVariable) { ti.Members.Add( new VisualElementOperationVariable( ti, cache, env, el.submodelElement, vout, AdminShell.OperationVariable.Direction.InOut)); } } } // Recurse: AnnotatedRelationshipElement if (el.submodelElement is AdminShell.AnnotatedRelationshipElement ela && ela.annotations != null) { foreach (var elaa in ela.annotations) { GenerateVisualElementsFromShellEnvAddElements(cache, env, ti, ela, elaa); } } }