Beispiel #1
0
        /// <summary>
        /// 将源分支合并到目标分支
        /// </summary>
        /// <param name="folder">源</param>
        /// <param name="over">是否覆盖元件数据</param>
        internal void Merge(PartFolder folder, bool over)
        {
            PartFolder subFolder;

            if (HasFolder(folder.Name))
            {
                subFolder = GetFolder(folder.Name);
            }
            else
            {
                subFolder = new PartFolder {
                    Name = folder.Name
                };
                Add(subFolder);
            }

            foreach (var index in folder.GetPartIndexs())
            {
                if (!subFolder.HasPartIndex(index))
                {
                    subFolder.Add(index);
                }
            }

            foreach (var f in folder.Folders)
            {
                subFolder.Merge(f, over);
            }
        }
Beispiel #2
0
 public void Remove(PartFolder folder)
 {
     _folders.Remove(folder);
     if (PartRemoving != null)
     {
         PartRemoving(this, new PartEventArgs(folder));
     }
 }
Beispiel #3
0
 public PartNode(PartFolder part, bool createImageNodes)
 {
     Part             = part;
     CreateImageNodes = createImageNodes;
     Node             = new TreeNode(part.Name, 0, 1);
     Node.Tag         = this;
     MakeNode();
     part.PartAdding   += partAdding;
     part.PartRemoving += partRemoving;
     part.PartRenaming += partRenaming;
 }
Beispiel #4
0
 private PartNode(PartFolder part, PartNode parent, bool createImageNodes)
 {
     Part             = part;
     CreateImageNodes = createImageNodes;
     Node             = new TreeNode(part.Name, 0, 1);
     Node.Tag         = this;
     Parent           = parent;
     parent.Node.Nodes.Add(Node);
     part.PartAdding   += partAdding;
     part.PartRemoving += partRemoving;
     part.PartRenaming += partRenaming;
 }
Beispiel #5
0
        public override Part Copy()
        {
            PartFolder folder = new PartFolder {
                Name = Name
            };

            foreach (var f in _folders)
            {
                folder._folders.Add(f.Copy() as PartFolder);
            }
            foreach (var i in _partIndexs)
            {
                folder._partIndexs.Add(i);
            }
            return(folder);
        }
Beispiel #6
0
 public void Add(PartFolder folder)
 {
     if (HasFolder(folder.Name))
     {
         MessageBox.Show(
             string.Format("无法新建文件夹\"{0}\":与现有文件夹重名", folder.Name),
             "新建文件夹时出错");
         return;
     }
     folder.Parent   = this;
     folder.Database = Database;
     _folders.Add(folder);
     if (PartAdding != null)
     {
         PartAdding(this, new PartEventArgs(folder));
     }
 }
Beispiel #7
0
        public void Dispose()
        {
            if (Part.IsFolder)
            {
                foreach (var pnode in Nodes)
                {
                    pnode.Dispose();
                }
                PartFolder folder = Part as PartFolder;
                folder.PartAdding   -= partAdding;
                folder.PartRemoving -= partRemoving;
                folder.PartRenaming -= partRenaming;
            }
            else
            {
                ImagePart part = Part as ImagePart;
                part.PartRenaming -= partRenaming;
            }

            Parent = null;
            Part   = null;
            Nodes  = null;
            Node   = null;
        }