private static List <PKFlatItem> ConvertToFlatItems(PKBoxItem item) { PKFlatElementCreateVisitor visitor = new PKFlatElementCreateVisitor(); item.Accept(visitor); visitor.FlatItems.Find(x => x.ID == item.ID).ParentID = null; return(visitor.FlatItems); }
private void UpdateFromBase(PKBoxItem item) { for (int i = 0; i < contextMenuStrip.Items.Count; i++) { var box = contextMenuStrip.Items[i].Tag as PKBoxItem; if (box != null) { PKItemCanAddVisitor visitor = new PKItemCanAddVisitor(box); item.Accept(visitor); contextMenuStrip.Items[i].Visible = visitor.CanAdd; } } }
private static PKBoxItem ConvertToBoxItem(List <PKFlatItem> items, bool newId) { if (newId) { items.ForEach(x => { string oldId = x.ID; x.ID = PKSequenceGenerator.GetNextId(); x.Name = "cmp" + PKSequenceGenerator.GetNextGUIId(); items.FindAll(y => y.ParentID == oldId).ForEach(y => y.ParentID = x.ID); }); } items.ForEach(x => { PKBoxItem item = null; if (x.IsComponent) { string strCmp = File.ReadAllText(Path.Combine(Path.Combine(Directory.GetCurrentDirectory(), "Components"), x.ComponentFileName)); item = Deserialize(strCmp, true); } else { item = (PKBoxItem)Activator.CreateInstance(Type.GetType(x.ClassName)); } if (item != null) { PKElementCreateVisitor visitor = new PKElementCreateVisitor(x); item.Accept(visitor); x.BoxItem = item; } }); items.ForEach(x => { x.ParentItem = items.Find(y => y.ID == x.ParentID); if (x.ParentItem != null) { PKElementParentVistor visitor = new PKElementParentVistor(items, x.BoxItem); x.ParentItem.BoxItem.Accept(visitor); } }); return(items.Find(x => x.ParentID == null).BoxItem); }