Пример #1
0
        public override void Update(PKBoxItem parent, PKBoxItem[] children)
        {
            var items = children.ToList();

            items.ForEach(x =>
            {
                x.X     = parent.Padding;
                x.Width = parent.Width - parent.Padding * 2;
            });

            int total = items
                        .FindAll(x => x.Flex == 0)
                        .Sum(x => x.Height);
            float rem  = parent.Height - total - parent.Padding * 2;
            int   flex = items.Sum(x => x.Flex);

            if (flex > 0)
            {
                items
                .FindAll(x => x.Flex > 0)
                .ForEach(x =>
                {
                    x.Height = (int)Math.Round((x.Flex * rem) / flex);
                });
            }

            int soFar = parent.Padding;

            items.ForEach(x =>
            {
                x.Y    = soFar;
                soFar += x.Height;
            });
        }
Пример #2
0
        public void SelectItem(PKBoxItem item, bool multiSelect)
        {
            if (!multiSelect)
            {
                this.selectedItems.ForEach(x => x.IsSelected = false);
                this.selectedItems.Clear();
            }
            if (item != null)
            {
                if (!this.selectedItems.Exists(x => x.ID == item.ID))
                {
                    this.selectedItems.Add(item);
                }
                item.IsSelected = true;
            }
            this.SelectedItem = item;

            if (this.SelectedChange != null && !multiSelect)
            {
                this.SelectedChange(item);
                if (item != null)
                {
                    item.Activate(item);
                }
            }

            this.resizer.SetItem(item);
            this.infoBox.SetItem(this.selectedItems.FirstOrDefault());
            this.Invalidate();
        }
Пример #3
0
 public override void Activate(PKBoxItem item)
 {
     if (item == Body)
     {
         TabBar.Activate(TabBar);
     }
     base.Activate(item);
 }
Пример #4
0
 public override void Activate(PKBoxItem item)
 {
     this.items.ForEach(x =>
     {
         x.IsSelected = false;
     });
     ActiveItemIndex = (this.Parent as PKTabPanel).Body.ActiveItemIndex;
 }
Пример #5
0
 private Type GetParentLayout(PKBoxItem item)
 {
     if (item.Parent != null && item.Parent.Layout != null)
     {
         return(item.Parent.Layout.GetType());
     }
     return(null);
 }
Пример #6
0
 private TreeNode CreateNode(PKBoxItem item)
 {
     return(new TreeNode
     {
         Text = string.Format("{0} ({1})", item.Name, item.TypeName),
         Tag = item
     });
 }
Пример #7
0
        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);
        }
Пример #8
0
        private TreeNode AddNode(PKBoxItem item, int imageIndex)
        {
            var node = CreateNode(item);

            node.ImageIndex         = imageIndex;
            node.SelectedImageIndex = imageIndex;
            nodes.Add(node);
            return(node);
        }
Пример #9
0
 private void btnOpen_Click(object sender, EventArgs e)
 {
     if (openFileDialog1.ShowDialog() == DialogResult.OK)
     {
         string    strJSON = File.ReadAllText(openFileDialog1.FileName);
         PKBoxItem item    = PKStorage.Deserialize(strJSON);
         pkExtDesigner.SetAppPage(item as PKControl);
     }
 }
Пример #10
0
        private void VisitBase(PKBoxItem item)
        {
            item.ID = flatItem.ID;

            item.Name = flatItem.Name;

            item.Flex    = flatItem.Flex;
            item.Height  = flatItem.Height;
            item.Width   = flatItem.Width;
            item.Padding = flatItem.Padding;
            item.Layout  = (PKLayout)Activator.CreateInstance(Type.GetType(flatItem.LayoutName));
        }
Пример #11
0
        public override void Update(PKBoxItem parent, PKBoxItem[] children)
        {
            PKBoxItem x = children.ToList().FirstOrDefault();

            if (x != null)
            {
                x.X      = parent.Padding;
                x.Y      = parent.Padding;
                x.Width  = parent.Width - parent.Padding * 2;
                x.Height = parent.Height - parent.Padding * 2;
            }
        }
Пример #12
0
        public override void Update(PKBoxItem parent, PKBoxItem[] children)
        {
            var items = children.ToList();

            items.ForEach(x =>
            {
                x.X      = parent.Padding;
                x.Y      = parent.Padding;
                x.Width  = parent.Width - parent.Padding * 2;
                x.Height = parent.Height - parent.Padding * 2;
            });
        }
Пример #13
0
 public override void Activate(PKBoxItem item)
 {
     for (int i = 0; i < this.items.Count; i++)
     {
         if (items[i] == item)
         {
             ActiveItemIndex = i;
             break;
         }
     }
     base.Activate(item);
 }
Пример #14
0
        public void SetItem(PKBoxItem item)
        {
            currentItem = item;
            canResize   = false;
            hide        = true;
            if (item != null)
            {
                hide = false;

                UpdateBox();
            }
        }
Пример #15
0
        public override void Update(PKBoxItem parent, PKBoxItem[] children)
        {
            int y = parent.Padding;

            children.ToList().ForEach(x =>
            {
                x.X     = parent.Padding;
                x.Y     = y;
                x.Width = parent.Width - 2 * parent.Padding;
                //x.Height = 25;
                y += x.Height;
            });
        }
Пример #16
0
 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 void UpdateFromBase(PKBoxItem item, PKFlatItem flatItem)
        {
            flatItem.ClassName = item.GetType().FullName;
            flatItem.ID        = item.ID;
            flatItem.Name      = item.Name;
            flatItem.ParentID  = item.Parent != null ? item.Parent.ID : null;

            flatItem.Flex    = item.Flex;
            flatItem.Height  = item.Height;
            flatItem.Width   = item.Width;
            flatItem.Padding = item.Padding;

            flatItem.LayoutName = item.Layout.GetType().FullName;
        }
Пример #18
0
 private void PasteSelected()
 {
     try
     {
         string tempObject = Clipboard.GetText();
         if (tempObject != null)
         {
             PKBoxItem obj = PKStorage.Deserialize(tempObject, true);
             pkExtDesigner.AddItem(obj);
         }
     }
     catch
     {
     }
 }
Пример #19
0
 private bool SelectNode(TreeNodeCollection treeNodeCollection, PKBoxItem obj)
 {
     foreach (TreeNode node in treeNodeCollection)
     {
         if (node.Tag == obj)
         {
             node.Text = string.Format("{0} ({1})", obj.Name, obj.TypeName);
             treeView1.SelectedNode = node;
             return(true);
         }
         if (SelectNode(node.Nodes, obj))
         {
             return(true);
         }
     }
     return(false);
 }
Пример #20
0
        public void AddItem(PKBoxItem item)
        {
            if (this.SelectedItem != null)
            {
                var visitor = new PKItemAddVisitor(item);
                this.SelectedItem.Accept(visitor);
                if (visitor.Added)
                {
                    this.appPage.DoLayout();

                    if (this.ItemAdded != null)
                    {
                        this.ItemAdded(item);
                    }
                }
            }
        }
Пример #21
0
        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);
        }
Пример #22
0
        public override void Update(PKBoxItem parent, PKBoxItem[] children)
        {
            var items = children.ToList();

            items.ForEach(x =>
            {
                x.Y      = parent.Padding;
                x.Height = parent.Height - parent.Padding * 2;
            });

            int total = items
                        .FindAll(x => x.Flex == 0)
                        .Sum(x => x.Width);
            float  rem = parent.Width - total - parent.Padding * 2;
            int    flex = items.Sum(x => x.Flex);
            double delta = 0, r = 0;

            if (flex > 0)
            {
                items
                .FindAll(x => x.Flex > 0)
                .ForEach(x =>
                {
                    delta  += Math.Round(r) - r;
                    r       = (x.Flex * rem) / flex;
                    x.Width = (int)Math.Round(r);
                });
            }

            if (items.Count > 0)
            {
                items.LastOrDefault().Width -= (int)Math.Round(delta);
            }

            int soFar = parent.Padding;

            items.ForEach(x =>
            {
                x.X    = soFar;
                soFar += x.Width;
            });
        }
Пример #23
0
 private void pkExtDesigner1_SelectedChange(PKBoxItem obj)
 {
     SelectNode(treeView1.Nodes, obj);
     propertyGrid1.SelectedObject = obj;
 }
Пример #24
0
 public override void Remove(PKBoxItem item)
 {
     this.cells.Remove(item as PKColumn);
 }
Пример #25
0
        public static string Serialize(PKBoxItem item)
        {
            JavaScriptSerializer serializer = new JavaScriptSerializer();

            return(serializer.Serialize(ConvertToFlatItems(item)));
        }
Пример #26
0
 public PKItemAddVisitor(PKBoxItem newItem)
 {
     this.newItem = newItem;
     this.Added   = false;
 }
Пример #27
0
 /// <summary>
 ///
 /// </summary>
 /// <param name="item"></param>
 public override void Remove(PKBoxItem item)
 {
     this.Parent.Remove(this);
 }
Пример #28
0
 private void UpdateSize(PKBoxItem item)
 {
     item.Width  = width >= 0?width:item.Width;
     item.Height = height >= 0?height:item.Height;
     item.Flex   = flex >= 0?flex:item.Flex;
 }
Пример #29
0
 public void SetItem(PKBoxItem item)
 {
     this.currentItem = item;
 }
Пример #30
0
 private void pkExtDesigner1_ItemAdded(PKBoxItem obj)
 {
     UpdateTree();
     pkExtDesigner.SelectItem(obj, false);
     this.DesignChange();
 }