public virtual void Insert(IEnumerable <IOutlineNode> nodes, IOutlineNode after, bool copy) { using (var moveTransaction = DesignItem.Context.OpenGroup("Item moved in outline view", nodes.Select(n => n.DesignItem).ToList())) { if (copy) { nodes = nodes.Select(n => OutlineNode.Create(n.DesignItem.Clone())).ToList(); } else { foreach (var node in nodes) { node.DesignItem.Remove(); } } var index = after == null ? 0 : Children.IndexOf(after) + 1; var content = DesignItem.ContentProperty; if (content.IsCollection) { foreach (var node in nodes) { content.CollectionElements.Insert(index++, node.DesignItem); } } else { content.SetValue(nodes.First().DesignItem); } moveTransaction.Commit(); } }
protected override void UpdateChildren() { Children.Clear(); foreach (var prp in DesignItem.AllSetProperties) { if (prp.Name != DesignItem.ContentPropertyName) { if (prp.Value != null) { var propertyNode = PropertyOutlineNode.Create(prp.Name); var node = OutlineNode.Create(prp.Value); propertyNode.Children.Add(node); Children.Add(propertyNode); } } } if (DesignItem.ContentPropertyName != null) { var content = DesignItem.ContentProperty; if (content.IsCollection) { UpdateChildrenCore(content.CollectionElements); } else { if (content.Value != null) { UpdateChildrenCore(new[] { content.Value }); } } } }
void UpdateChildrenCore(IEnumerable <DesignItem> items) { foreach (var item in items) { if (ModelTools.CanSelectComponent(item)) { var node = OutlineNode.Create(item); Children.Add(node); } else { var content = item.ContentProperty; if (content != null) { if (content.IsCollection) { UpdateChildrenCore(content.CollectionElements); } else { if (content.Value != null) { UpdateChildrenCore(new[] { content.Value }); } } } } } }
public void Insert(IEnumerable <OutlineNode> nodes, OutlineNode after, bool copy) { if (copy) { nodes = nodes.Select(n => OutlineNode.Create(n.DesignItem.Clone())); } else { foreach (var node in nodes) { node.DesignItem.Remove(); } } var index = after == null ? 0 : Children.IndexOf(after) + 1; var content = DesignItem.ContentProperty; if (content.IsCollection) { foreach (var node in nodes) { content.CollectionElements.Insert(index++, node.DesignItem); } } else { content.SetValue(nodes.First().DesignItem); } }
void UpdateChildrenCore(IEnumerable <DesignItem> items) { foreach (var item in items) { if (ModelTools.CanSelectComponent(item)) { var node = OutlineNode.Create(item); Children.Add(node); } } }
bool UpdateChildrenCore(IEnumerable <DesignItem> items, int index = -1) { var retVal = false; foreach (var item in items) { if (ModelTools.CanSelectComponent(item)) { if (Children.All(x => x.DesignItem != item)) { var node = OutlineNode.Create(item); if (index > -1) { Children.Insert(index++, node); retVal = true; } else { Children.Add(node); retVal = true; } } } else { var content = item.ContentProperty; if (content != null) { if (content.IsCollection) { UpdateChildrenCore(content.CollectionElements); retVal = true; } else { if (content.Value != null) { UpdateChildrenCore(new[] { content.Value }); retVal = true; } } } } } return(retVal); }