private void ShowRepeatableOption(ISyntaxNodeViewModel repetableNode) { if (!repetableNode.IsVisible) { repetableNode.IsVisible = true; } RepeatableOptionViewModel option = null; foreach (var line in repetableNode.Lines) { foreach (var node in line.Nodes) { if (node is RepeatableOptionViewModel) { option = (RepeatableOptionViewModel)node; option.ResetHideOptionAnimation(); } } } if (option != null) { return; } option = new RepeatableOptionViewModel((RepeatableViewModel)repetableNode) { Presentation = $"[{repetableNode.PropertyBinding}]" }; repetableNode.Add(option); option.StartHideOptionAnimation(); }
private void InitializeRepeatableViewModel(ISyntaxNodeViewModel repeatableNode) { ISyntaxNodeViewModel parentNode = repeatableNode.Owner; ISyntaxNode concept = parentNode.SyntaxNode; string propertyBinding = repeatableNode.PropertyBinding; IList conceptChildren; PropertyInfo property = concept.GetPropertyInfo(propertyBinding); if (property.IsOptional()) { IOptional optional = (IOptional)property.GetValue(concept); if (optional == null || !optional.HasValue) { return; } conceptChildren = (IList)optional.Value; } else { conceptChildren = (IList)property.GetValue(concept); } if (conceptChildren == null || conceptChildren.Count == 0) { return; } foreach (var child in conceptChildren) { if (!(child is SyntaxNode)) { continue; } ConceptNodeViewModel conceptViewModel = CreateSyntaxNode(repeatableNode, (ISyntaxNode)child); if (conceptViewModel == null) { continue; } repeatableNode.Add(conceptViewModel); } }