예제 #1
0
        /// <summary>
        /// One of the two recursives
        /// </summary>
        /// <param name="tr"></param>
        /// <returns></returns>
        private static SerializableTreeNode fnPrepareTreeNode(TreeNodeExtended tr)
        {
            SerializableTreeNode strRet = new SerializableTreeNode();

            SerializeTreeNode(tr, strRet);
            strRet.Nodes = fnPrepareChildNode(tr);
            return(strRet);
        }
예제 #2
0
        private static List <TreeNodeExtended> RfnPrepareChildNodes(SerializableTreeNode str)
        {
            List <TreeNodeExtended> retTreeNode = new List <TreeNodeExtended>();
            TreeNodeExtended        tnc;

            foreach (SerializableTreeNode strc in str.Nodes)
            {
                tnc = RfnPrepareTreeNode(strc);
                retTreeNode.Add(tnc);
            }
            return(retTreeNode);
        }
예제 #3
0
 /// <summary>
 /// This functions returns the treeView for which it has been written
 /// </summary>
 /// <returns></returns>
 public static TreeNodeExtended fnPrepareToRead(SerializableTreeNode sTreeNode)
 {
     try
     {
         TreeNodeExtended FinalTreeNode = RfnPrepareTreeNode(sTreeNode);
         return(FinalTreeNode);
     }
     catch (Exception ex)
     {
         throw new Exception(ex.Message);
     }
 }
예제 #4
0
 private static void SerializeTreeNode(TreeNodeExtended source, SerializableTreeNode destination)
 {
     destination.Name               = source.Name;
     destination.ToolTipText        = source.ToolTipText;
     destination.ImageIndex         = source.ImageIndex;
     destination.Text               = source.Text.ToString();
     destination.SelectedImageIndex = source.SelectedImageIndex;
     destination.MasterListFilesDir.AddRange(source.MasterListFilesDir.ToArray());
     destination.FolderType          = source.FolderType;
     destination.IsRootNode          = source.IsRootNode;
     destination.FolderFilterRuleObj = source.FolderFilterRuleObj;
     destination.Tag = (source.Tag == null) ? null : source.Tag.ToString();
 }
예제 #5
0
 private static void UnserializeTreeNode(SerializableTreeNode source, TreeNodeExtended destination)
 {
     //destination.IsRootNode = source.IsRootNode; //no need
     destination.Name        = source.Name;
     destination.Tag         = source.Tag;
     destination.ToolTipText = source.ToolTipText;
     destination.Text        = source.Text;
     destination.MasterListFilesDir.AddRange(source.MasterListFilesDir.ToArray());
     destination.ImageIndex          = source.ImageIndex;
     destination.SelectedImageIndex  = source.SelectedImageIndex;
     destination.FolderType          = source.FolderType;
     destination.FolderFilterRuleObj = source.FolderFilterRuleObj;
     destination.ResetIconImageIndex();
 }
예제 #6
0
        private static TreeNodeExtended RfnPrepareTreeNode(SerializableTreeNode str)
        {
            TreeNodeExtended trnRet = new TreeNodeExtended();

            UnserializeTreeNode(str, trnRet);
            #region Building NodeCollection
            List <TreeNodeExtended> retTempTreeNodeList = RfnPrepareChildNodes(str);
            foreach (TreeNodeExtended tempTr in retTempTreeNodeList)
            {
                trnRet.Nodes.Add(tempTr);
            }
            #endregion
            return(trnRet);
        }
예제 #7
0
 /// <summary>
 /// This function prepares an StreeNode Similar to the treeView
 /// </summary>
 public static SerializableTreeNode fnPrepareToWrite(TreeNodeExtended treeNodeExtended)
 {
     try
     {
         TreeNodeExtended treeNodeDestination = (TreeNodeExtended)treeNodeExtended.Clone();
         treeNodeDestination.Nodes.Clear();
         foreach (TreeNodeExtended treeNodeItr in treeNodeExtended.Nodes)
         {
             treeNodeDestination.Nodes.Add((TreeNodeExtended)treeNodeItr.Clone());
         }
         SerializableTreeNode FinalStr = fnPrepareTreeNode(treeNodeDestination);
         return(FinalStr);
     }
     catch (Exception ex)
     {
         throw new Exception(ex.Message);
     }
 }
예제 #8
0
 public static void SerializeTreeNodeShallowCopy(SerializableTreeNode source, SerializableTreeNode destination)
 {
     if (!String.IsNullOrEmpty(source.Name))
     {
         destination.Name = source.Name;
     }
     if (!String.IsNullOrEmpty(source.ToolTipText))
     {
         destination.ToolTipText = source.ToolTipText;
     }
     destination.ImageIndex = source.ImageIndex;
     if (!String.IsNullOrEmpty(source.Text))
     {
         destination.Text = source.Text.ToString();
     }
     destination.SelectedImageIndex = source.SelectedImageIndex;
     destination.MasterListFilesDir.AddRange(source.MasterListFilesDir.ToArray());
     destination.FolderType          = source.FolderType;
     destination.IsRootNode          = source.IsRootNode;
     destination.FolderFilterRuleObj = source.FolderFilterRuleObj;
     destination.Tag = (source.Tag == null) ? null : source.Tag.ToString();
     destination.Nodes.AddRange(source.Nodes);
 }
        private void CrawlTreeStructure(SerializableTreeNode serializableTreeNode, String directoryPath)
        {
            if (IsStopGenerating())
            {
                return;
            }

            //first step. Check the files
            FileInfo[] filesInfoArr = FileSystemUtilities.GetFiles(directoryPath);
            if (filesInfoArr != null)
            {
                foreach (FileInfo fileInfo in filesInfoArr)
                {
                    if (ApplyFilterRule(fileInfo, false, out String hitFilterRule))
                    {
                        UpdateSequenceInfo("Added File", fileInfo.FullName, hitFilterRule);
                        RaiseEventRuleEnforcementStatus(GeneratingSerializeTreeNodeProcessingStage.ENFORCING_RULE_TO_FILE);
                        serializableTreeNode.AddItem(new CustomFileItem(fileInfo.Name, fileInfo));
                    }
                    Application.DoEvents();
                    if (IsStopGenerating())
                    {
                        return;
                    }
                }
            }

            //second step
            DirectoryInfo[] dirInfoArr = FileSystemUtilities.GetDirectories(directoryPath);
            if (dirInfoArr != null)
            {
                foreach (DirectoryInfo dInfo in dirInfoArr)
                {
                    Application.DoEvents();
                    if (ApplyFilterRule(dInfo, true, out String hitFilterRule))
                    {
                        SerializableTreeNode stree = new SerializableTreeNode
                        {
                            Name               = dInfo.Name,
                            ToolTipText        = String.Empty,
                            ImageIndex         = -1,
                            Text               = dInfo.Name,
                            SelectedImageIndex = -1,
                            FolderType         = FolderType.TreeView
                        };

                        //recursive traversal
                        CrawlTreeStructure(stree, dInfo.FullName);

                        bool includeFoldersWithSubFoldersOrFiles = (!FolderFilterRuleObj.IncludeEmptyFolder && stree.MasterListFilesDir.Count > 0);
                        if (FolderFilterRuleObj.IncludeEmptyFolder || includeFoldersWithSubFoldersOrFiles)
                        {
                            serializableTreeNode.AddItem(new CustomFileItem(dInfo.Name, dInfo));
                            UpdateSequenceInfo("Added Folder", dInfo.FullName, hitFilterRule);
                            RaiseEventRuleEnforcementStatus(GeneratingSerializeTreeNodeProcessingStage.ENFORCING_RULE_TO_FOLDER);
                            serializableTreeNode.Nodes.Add(stree);
                        }
                    }
                    else
                    {
                        CrawlTreeStructure(serializableTreeNode, dInfo.FullName);
                    }
                }
            }
        }