private static IEnumerable <ModelItem> EnumerateContents(ModelItem start) { if (SelectionImplementation.IsSelectable(start)) { yield return(start); ModelProperty content = start.Content; if (content != (ModelProperty)null && content.IsSet) { if (content.IsCollection) { foreach (ModelItem start1 in content.Collection) { foreach (ModelItem modelItem in SelectionImplementation.EnumerateContents(start1)) { yield return(modelItem); } } } else { ModelItem value = content.Value; if (value != null) { foreach (ModelItem modelItem in SelectionImplementation.EnumerateContents(value)) { yield return(modelItem); } } } } } }
private static ModelItem GetLastChild(ModelItem modelItem, ViewService viewService) { ModelItem modelItem1 = modelItem; bool flag = false; while (modelItem != null && modelItem.Content != (ModelProperty)null && !flag) { if (modelItem.Content.IsCollection) { if (modelItem.Content.Collection.Count > 0) { modelItem = modelItem.Content.Collection[modelItem.Content.Collection.Count - 1]; } else { flag = true; } } else if (modelItem.Content.IsSet) { modelItem = modelItem.Content.Value; } else { flag = true; } if (modelItem != null && SelectionImplementation.IsSelectable(modelItem) && modelItem.View != (ViewItem)null) { modelItem1 = modelItem; } } return(modelItem1); }
private static ModelItem GetPreviousSibling(ModelItem modelItem, ViewService viewService) { ModelItem parent = modelItem.Parent; if (parent == null || parent.Content == (ModelProperty)null || !parent.Content.IsCollection) { return((ModelItem)null); } int num = parent.Content.Collection.IndexOf(modelItem); if (num <= 0) { return((ModelItem)null); } ModelItem modelItem1 = parent.Content.Collection[num - 1]; if (modelItem1.View == (ViewItem)null) { return((ModelItem)null); } if (!SelectionImplementation.IsSelectable(modelItem1)) { return((ModelItem)null); } return(modelItem1); }
private static ModelItem GetFirstChild(ModelItem modelItem, ViewService viewService) { ModelProperty content = modelItem.Content; if (content == (ModelProperty)null) { return((ModelItem)null); } ModelItem modelItem1 = (ModelItem)null; if (content.IsCollection) { if (content.Collection.Count == 0) { return((ModelItem)null); } modelItem1 = content.Collection[0]; } else if (content.IsSet) { modelItem1 = content.Value; } if (modelItem1 == null || !SelectionImplementation.IsSelectable(modelItem1) || modelItem1.View == (ViewItem)null) { return((ModelItem)null); } return(modelItem1); }
private static Selection SelectContent(ModelItem parent) { Selection selection = new Selection(); if (parent.Content.IsCollection) { selection = new Selection((IEnumerable)parent.Content.Collection); } else if (parent.Content.IsDictionary) { selection = new Selection((IEnumerable)parent.Content.Dictionary); } else if (parent.Content.IsSet && SelectionImplementation.IsSelectable(parent) && SelectionImplementation.IsSelectable(parent.Content.Value)) { selection = new Selection(new ModelItem[1] { parent.Content.Value }); } return(selection); }