Esempio n. 1
0
        /// <summary>
        /// 按本地文件夹的结构,复制导入文件夹下的所有文件。
        /// </summary>
        private void copyTheWholeLocalFolder()
        {
            if (String.IsNullOrEmpty(path))
            {
                MessageBox.Show("请选择文件夹");
                return;
            }
            DirectoryInfo folderFullName = new DirectoryInfo(path);

            if (!folderFullName.Exists)
            {
                throw new DirectoryNotFoundException("文件夹不存在: " + folderFullName);
            }

            copyFolderList.Clear();
            copyCodeList.Clear();
            progressBar1.Value = 0;

            if (String.IsNullOrEmpty(this.TreeId))
            {
                CopyAndImportLocalDirectory(folderFullName);
            }
            else
            {
                var tree = new CodeFolder();
                tree.Id = this.TreeId;
                CopyAndImportLocalDirectory(folderFullName, tree);
            }


            db.SaveCodeList(copyCodeList);
            db.SaveFolderList(copyFolderList);
            MessageBox.Show("保存成功");
        }
        // Delay timer for internal parsing
        void InternalParser_Tick(object sender, EventArgs e)
        {
            if (currentTab == null || !currentTab.shouldParse)
            {
                intParserTimer.Stop();
                DEBUGINFO("Stop: Internal Parser");
                return;
            }

            if (DateTime.Now >= intParser_TimeNext && !parserIsRunning)
            {
                intParserTimer.Stop();

                DEBUGINFO("Run: Internal Parser");

                if (!Settings.enableParser)   // Parser off
                {
                    tbOutputParse.Text    = string.Empty;
                    parserLabel.Text      = "Parser: Get only macros";
                    parserLabel.ForeColor = Color.Crimson;

                    new ParserInternal(currentTab, this);
                    CodeFolder.UpdateFolding(currentDocument, currentTab.filename, currentTab.parseInfo.procs);
                    ParserCompleted(currentTab, false);
                }
                else
                {
                    CodeFolder.UpdateFolding(currentDocument, currentTab.filepath);
                    //Quick update procedure data
                    ParserInternal.UpdateProcInfo(ref currentTab.parseInfo, currentDocument.TextContent, currentTab.filepath);
                }
            }
        }
Esempio n. 3
0
        public void GetCodeTreeTest()
        {
            CodeFolder codetree = db.GetFolder("982e36e6-4f22-472d-9daf-e361bcfc55a7");

            Assert.AreEqual(codetree.SubTreeList.Count, 1);
            Assert.AreEqual(3, codetree.CodeList.Count);
        }
Esempio n. 4
0
        public string AddCodeFolderToWebProject(string name)
        {
            Debug.Assert(IsWebProject, "Cannot add code folders to a web project.");
            VSWebSite website      = (VSWebSite)project.Object;
            string    relativePath = string.Format(@"App_Code/{0}", name);

            website.CodeFolders.Add(relativePath);

            CodeFolder appCodeFolder = website.CodeFolders.Item(1);

            return(Path.Combine(appCodeFolder.ProjectItem.get_FileNames(0), name));
        }
Esempio n. 5
0
        public void UpdateCodeTreeTest()
        {
            //CodeTree
            CodeFolder codetree = db.GetFolder("f8b46c02-90b5-4561-8de3-3973a8cefa4b");

            Assert.AreEqual(codetree.Id, "f8b46c02-90b5-4561-8de3-3973a8cefa4b");
            codetree.Text = "xxxxxxxx";
            db.SaveTree(codetree);
            codetree.ParentId = "982e36e6-4f22-472d-9daf-e361bcfc55a7";
            db.SaveTree(codetree);
            //CodeTree codetree2 = new SAPINTDB.CodeManager.CodeTree();
            //codetree.Text = "Code";
            //codetree.Type = "Document";
        }
        private void btnImport_Click(object sender, EventArgs e)
        {
            try
            {
                if (!ImportPreCheck())
                {
                    return;
                }


                if (String.IsNullOrEmpty(this.TreeId))
                {
                    var codeTree = new CodeFolder();
                    codeTree.Text = cboxSystemList1.Text + txtSapProgram.Text;
                    if (String.IsNullOrEmpty(codeTree.Text))
                    {
                        codeTree.Text = "Imported_SAP_OBJECT " + DateTime.Now;
                    }

                    codeTree = db.SaveTree(codeTree);

                    this.TreeId = codeTree.Id;
                }

                this.progressBar1.Value   = 0;
                this.progressBar1.Maximum = selectedItems;

                //  backgroundWorker1.RunWorkerAsync();
                this.cbxDbSources.Enabled = false;
                this.backgroundWorker1.RunWorkerAsync(this);
                this.cbxDbSources.Enabled = true;
                //if ()
                //{
                //    MessageBox.Show("导入完成");
                //}
                //else
                //{
                //    MessageBox.Show("导入失败");
                //}
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
        }
        //Force update parser data
        private void ForceParseScript()
        {
            // останавливаем ранее сработавшие таймеры
            intParserTimer.Stop();
            extParserTimer.Stop();

            if (Settings.enableParser && currentTab.parseInfo.parseData)
            {
                parserIsRunning = true; // parse work
                CodeFolder.UpdateFolding(currentDocument, currentTab.filepath);
                bwSyntaxParser.RunWorkerAsync(new WorkerArgs(currentDocument.TextContent, currentTab));
            }
            else
            {
                new ParserInternal(currentTab, this);
                CodeFolder.UpdateFolding(currentDocument, currentTab.filename, currentTab.parseInfo.procs);
                ParserCompleted(currentTab, false);
            }
        }
Esempio n. 8
0
        private void AddNewFolderToTheListViewNode(TreeNode node)
        {
            var        treeNode = node;
            CodeFolder codeTree = null;

            if (treeNode != null)
            {
                codeTree = treeNode.Tag as CodeFolder;
            }


            var folderName = GetFolderName();

            if (String.IsNullOrEmpty(folderName))
            {
                return;
            }
            var nodeTree = new CodeFolder();

            nodeTree.Text = folderName;
            if (codeTree != null && !String.IsNullOrEmpty(codeTree.Id))
            {
                nodeTree.ParentId = codeTree.Id;
            }
            var newNode = db.SaveTree(nodeTree);

            if (newNode != null)
            {
                var treeNode1 = new TreeNode();
                treeNode1.Text = newNode.Text;
                treeNode1.Tag  = newNode;
                if (treeNode != null)
                {
                    treeNode.Nodes.Add(treeNode1);
                }
                else
                {
                    this.treeView1.Nodes.Add(treeNode1);
                }
            }
        }
Esempio n. 9
0
        private void SaveCode()
        {
            try
            {
                _code.Title   = this.txtTitle.Text;
                _code.Content = this.syntaxBoxControl1.Document.Text;
                _code.TreeId  = this.TreeId;
                if (String.IsNullOrEmpty(_code.TreeId))
                {
                    if (!String.IsNullOrEmpty(this.TreeId))
                    {
                        _code.TreeId = this.TreeId;
                    }
                    else
                    {
                        var newFolder = new CodeFolder();
                        newFolder.Text = this.txtTreeText.Text;
                        newFolder      = db.SaveTree(newFolder);
                        _code.TreeId   = newFolder.Id;
                    }
                }

                _code.Category = this.cbxCategory.Text;
                _code.Desc     = this.txtDesc.Text;

                if (db.SaveCode(_code) != null)
                {
                    this.toolStripStatusLabel7.Text = "保存成功!";
                    this.SatustoolStripLabel1.Text  = this.toolStripStatusLabel7.Text;
                    RefreshDisplay();
                }
                else
                {
                    MessageBox.Show("保存失败");
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
        }
        public void SetUpTestData()
        {
            db.BeginTransaction();
            for (int i = 0; i < 10; i++)
            {
                CodeFolder tree = new CodeFolder();
                tree.Text = "Top Folder " + i.ToString();
                var ree = db.SaveTree(tree);

                for (int xx = 0; xx < 10; xx++)
                {
                    Code code1 = new Code();
                    code1.TreeId = ree.Id;
                    code1.Title = tree.Text + " Code " + xx.ToString();
                    db.SaveCode(code1);
                }

                for (int x = 0; x < 10; x++)
                {
                    tree = new CodeFolder();

                    tree.Text = tree.Text + " Sub Folder " + x.ToString();
                    tree.ParentId = ree.Id;
                    var treei = db.SaveTree(tree);

                    for (int j = 0; j < 10; j++)
                    {
                        Code code = new Code();
                        code.TreeId = treei.Id;
                        code.Title = tree.Text + " Code " + j.ToString();
                        db.SaveCode(code);
                    }

                }

            }
            db.Commit();
        }
Esempio n. 11
0
        private bool ImportPreCheck()
        {
            selectedItems = 0;
            foreach (DataRow item in dt.Rows)
            {
                if (String.IsNullOrWhiteSpace(item["Select"].ToString()))
                {
                    continue;
                }
                var isSelect = (bool)item["Select"];
                if (isSelect)
                {
                    selectedItems++;
                }
            }
            if (selectedItems == 0)
            {
                MessageBox.Show("请选择需要需要导入的代码");
                return(false);
            }
            this.progressBar1.Maximum = selectedItems;
            this.txtFilesCount.Text   = selectedItems.ToString();
            this.progressBar1.Value   = 0;

            if (String.IsNullOrEmpty(this.TreeId))
            {
                var codeTree = new CodeFolder();
                codeTree.Text = this.txtFolder.Text;
                if (String.IsNullOrEmpty(codeTree.Text))
                {
                    codeTree.Text = "Import File " + DateTime.Now;
                }

                codeTree    = db.SaveTree(codeTree);
                this.TreeId = codeTree.Id;
            }
            return(true);
        }
Esempio n. 12
0
        public void SetUpTestData()
        {
            db.BeginTransaction();
            for (int i = 0; i < 10; i++)
            {
                CodeFolder tree = new CodeFolder();
                tree.Text = "Top Folder " + i.ToString();
                var ree = db.SaveTree(tree);

                for (int xx = 0; xx < 10; xx++)
                {
                    Code code1 = new Code();
                    code1.TreeId = ree.Id;
                    code1.Title  = tree.Text + " Code " + xx.ToString();
                    db.SaveCode(code1);
                }


                for (int x = 0; x < 10; x++)
                {
                    tree = new CodeFolder();

                    tree.Text     = tree.Text + " Sub Folder " + x.ToString();
                    tree.ParentId = ree.Id;
                    var treei = db.SaveTree(tree);

                    for (int j = 0; j < 10; j++)
                    {
                        Code code = new Code();
                        code.TreeId = treei.Id;
                        code.Title  = tree.Text + " Code " + j.ToString();
                        db.SaveCode(code);
                    }
                }
            }
            db.Commit();
        }
        // Parse first open script
        private void FirstParseScript(TabInfo cTab)
        {
            cTab.textEditor.Document.ExtraWordList = new HighlightExtraWord();

            tbOutputParse.Text = string.Empty;

            firstParse = true;

            GetMacros.GetGlobalMacros(Settings.pathHeadersFiles);

            DEBUGINFO("First Parse...");
            new ParserInternal(cTab, this);

            //while (parserIsRunning) System.Threading.Thread.Sleep(10); // Avoid stomping on files while the parser is running

            var ExtParser = new ParserExternal(firstParse);

            cTab.parseInfo = ExtParser.Parse(cTab.textEditor.Text, cTab.filepath, cTab.parseInfo);
            DEBUGINFO("External first parse status: " + ExtParser.LastStatus);

            HighlightProcedures.AddAllToList(cTab.textEditor.Document, cTab.parseInfo.procs);
            CodeFolder.UpdateFolding(cTab.textEditor.Document, cTab.filename, cTab.parseInfo.procs);
            CodeFolder.GetProceduresCollapse(cTab.textEditor.Document, cTab.filename);

            GetParserErrorLog(cTab);

            if (cTab.parseInfo.parseError)
            {
                tabControl2.SelectedIndex = 2;
                if (WindowState != FormWindowState.Minimized)
                {
                    MaximizeLog();
                }
            }
            firstParse = false;
        }
Esempio n. 14
0
        void listBox1_DoubleClick(object sender, EventArgs e)
        {
            if (listBox1.SelectedItems.Count == 0)
            {
                return;
            }

            CodeFolder _codeFolder = null;

            if (treeView1.SelectedNode != null)
            {
                _codeFolder = treeView1.SelectedNode.Tag as CodeFolder;

                if (_codeFolder != null)
                {
                    this.SelectedFolder = _codeFolder;
                }
            }

            if (this.SelectedFolder == null)
            {
                MessageBox.Show("没有选中的文件夹");
                return;
            }
            _codeFolder = SelectedFolder;

            var _selectCode = listBox1.SelectedItem as Code;


            var list = listBox1.DataSource as List <Code>;

            if (_selectCode != null)
            {
                this.SelectedCode = _selectCode;
                IDockContent content = FindDocument(_selectCode.Title);
                if (content == null)
                {
                    var frm = new FormCodeEditor(this.m_dbName);

                    frm.code = _selectCode;
                    frm.Text = _selectCode.Title;
                    if (_codeFolder != null)
                    {
                        frm.TreeId   = _codeFolder.Id;
                        frm.TreeText = _codeFolder.Text;
                    }
                    //frm.Show();
                    if (this.DockPanel != null)
                    {
                        frm.Show(this.DockPanel);
                    }
                }
                else
                {
                    content.DockHandler.Activate();
                }
            }
            var newCode = db.GetCode(_selectCode.Id);

            if (newCode != null)
            {
                this.toolStripStatusLabel1.Text = string.Empty;
                if (newCode.Content.Length > 3 * 1024 * 1024)
                {
                    this.toolStripStatusLabel1.Text = "文件太大,无法显示";
                    // MessageBox.Show("文件太大,无法显示");
                    return;
                }
                if (this.splitContainer3.Panel2Collapsed == false)
                {
                    syntaxBoxControl1.Document.Text = newCode.Content;
                    // this.textBox1.Text = newCode.Content;
                    webBrowser1.DocumentText = newCode.Content;
                }
            }
            else
            {
                //updateTreeNode(treeView1.SelectedNode);
                list.Remove(_selectCode);
                listBox1.DataSource    = null;
                listBox1.DataSource    = list;
                listBox1.DisplayMember = "Title";

                syntaxBoxControl1.Document.Text = string.Empty;
                //  this.textBox1.Text = string.Empty;
                webBrowser1.DocumentText = string.Empty;
            }
        }
Esempio n. 15
0
        void treeView1_DragDrop(object sender, DragEventArgs e)
        {
            TreeNode   nodeToDropIn       = this.treeView1.GetNodeAt(this.treeView1.PointToClient(new Point(e.X, e.Y)));
            CodeFolder codeFolderToDropIn = null;

            if (nodeToDropIn == null)
            {
                return;
            }
            else
            {
                codeFolderToDropIn = nodeToDropIn.Tag as CodeFolder;
            }
            var formats = e.Data.GetFormats();
            //if (sourceType == typeof(Code))
            //{
            var code = e.Data.GetData(typeof(Code)) as Code;

            if (code == null)
            { //return;
            }
            else
            {
                if (codeFolderToDropIn != null)
                {
                    code.TreeId = codeFolderToDropIn.Id;
                    db.SaveCode(code);
                    if (codeFolderToDropIn.CodeList == null)
                    {
                        codeFolderToDropIn.CodeList = new List <Code>();
                    }
                    codeFolderToDropIn.CodeList.Add(code);
                }
                var codelist = listBox1.DataSource as List <Code>;
                if (codelist != null)
                {
                    if (codelist.Contains(code))
                    {
                        codelist.Remove(code);
                    }
                }
                listBox1.DataSource    = null;
                listBox1.DataSource    = codelist;
                listBox1.DisplayMember = "Title";
            }

            var treeNode = e.Data.GetData(typeof(TreeNode)) as TreeNode;

            if (treeNode == null)
            {
                //  return;
            }
            else
            {
                var folder = treeNode.Tag as CodeFolder;
                if (codeFolderToDropIn != null && folder != null)
                {
                    folder.ParentId = codeFolderToDropIn.Id;
                    folder          = db.SaveTree(folder);

                    var newTreeNode = this.treeView1.SelectedNode;
                    newTreeNode.Tag = folder;
                    newTreeNode.Parent.Nodes.Remove(newTreeNode);
                    // this.treeView1.SelectedNode.Remove();
                    nodeToDropIn.Nodes.Add(newTreeNode);
                }
            }
        }
        private void btnImport_Click(object sender, EventArgs e)
        {
            try
            {
                if (!ImportPreCheck())
                {
                    return;
                }

                if (String.IsNullOrEmpty(this.TreeId))
                {
                    var codeTree = new CodeFolder();
                    codeTree.Text = cboxSystemList1.Text + txtSapProgram.Text;
                    if (String.IsNullOrEmpty(codeTree.Text))
                    {
                        codeTree.Text = "Imported_SAP_OBJECT " + DateTime.Now;
                    }

                    codeTree = db.SaveTree(codeTree);

                    this.TreeId = codeTree.Id;
                }

                this.progressBar1.Value = 0;
                this.progressBar1.Maximum = selectedItems;

                //  backgroundWorker1.RunWorkerAsync();
                this.cbxDbSources.Enabled = false;
                this.backgroundWorker1.RunWorkerAsync(this);
                this.cbxDbSources.Enabled = true;
                //if ()
                //{
                //    MessageBox.Show("导入完成");
                //}
                //else
                //{
                //    MessageBox.Show("导入失败");
                //}
            }
            catch (Exception ex)
            {

                MessageBox.Show(ex.Message);
            }
        }
Esempio n. 17
0
        /// <summary>
        /// 删除一个文件夹。
        /// 同时会删除子节点的所有文件夹
        /// 同时会删除所有文件夹下面的代码。
        /// </summary>
        /// <param name="codeFolder"></param>
        /// <returns></returns>
        public bool DeleteFolder(CodeFolder codeFolder)
        {
            if (codeFolder == null)
            {
                return false;
            }
            var id = codeFolder.Id;

            var tree = Db.Get<CodeFolder>(id);
            if (tree == null)
            {
                throw new Exception("Id is not valid");
            }
            _wholeFolderList.Clear();
            _wholeCodeList.Clear();
            _wholeFolderList.Add(tree);

            Db.BeginTransaction();
            GetWholeCodeFolder(tree.Id);
            Db.Commit();

            Db.BeginTransaction();
            foreach (var item in _wholeFolderList)
            {
                Db.Delete(item);
            }
            Db.Commit();

            this.DeleteCodeList2(_wholeCodeList);

            return true;
        }
Esempio n. 18
0
        /// <summary>
        /// 这个方法会被递归调用,所以要小心调用。
        /// </summary>
        /// <param name="folderFullName"></param>
        /// <param name="parentTree"></param>
        private void CopyAndImportLocalDirectory(DirectoryInfo folderFullName, CodeFolder parentTree = null)
        {
            var codeTree = new CodeFolder();

            codeTree.Id   = Guid.NewGuid().ToString();
            codeTree.Text = folderFullName.Name;
            if (parentTree != null)
            {
                codeTree.ParentId = parentTree.Id;
            }
            copyFolderList.Add(folderFullName.FullName, codeTree);

            FileSystemInfo[] subFiles = folderFullName.GetFiles();


            var count = 0;

            foreach (FileInfo item in subFiles)
            {
                if (!item.Exists)
                {
                    continue;
                }

                if (!SAPINT.Gui.Util.FileUtil.IsTextFile(item.FullName))
                {
                    continue;
                }
                StreamReader sr = new StreamReader(item.FullName, Encoding.Default);
                String       s  = sr.ReadToEnd();
                sr.Close();
                //if (s.Length > 3*1024 * 1024)
                //{
                //    continue;
                //}
                var code = new Code();
                code.Title   = item.Name;
                code.Content = s;
                // code.Content = s.Replace("UTF-8", "GB2312");
                code.TreeId = codeTree.Id;
                copyCodeList.Add(code);
                count++;
                setProcessBar(subFiles.Count(), count, folderFullName.FullName, item.Name);

                //为了提高性能,每超过100个文档就保存一次。
                //因为每个文档内容都包含内容,如果文档的大小超过1M,那100
                //个文档会就100M的内存消耗。
                //如果没有超过100个文档在方法递归完成后再保存。
                if (copyCodeList.Count == 100)
                {
                    db.SaveCodeList(copyCodeList);
                    db.SaveFolderList(copyFolderList);
                    copyCodeList.Clear();
                    copyFolderList.Clear();
                }
            }

            var subDirectories = folderFullName.GetDirectories();

            if (subDirectories.Count() > 0)
            {
                foreach (var item in subDirectories)
                {
                    if (item.Exists)
                    {
                        CopyAndImportLocalDirectory(item, codeTree);
                    }
                }
            }
        }
Esempio n. 19
0
        /// <summary>
        /// 保存一个树节点
        /// </summary>
        /// <param name="p_folder"></param>
        /// <returns></returns>
        public CodeFolder SaveTree(CodeFolder p_folder)
        {
            if (String.IsNullOrEmpty(p_folder.Id))
            {
                p_folder.Id = Guid.NewGuid().ToString();
                var id = Db.Insert(p_folder);
                p_folder.Id = id;
            }
            else
            {
                var x = Db.Get<CodeFolder>(p_folder.Id);
                if (x == null)
                {
                    Db.Insert(p_folder);
                }
                else
                {
                    if (Db.Update(p_folder))
                    {
                        return p_folder;
                    }
                    else
                    {
                        return null;
                    }
                }

            }
            return p_folder;
        }
        private void SaveCode()
        {
            try
            {
                _code.Title = this.txtTitle.Text;
                _code.Content = this.syntaxBoxControl1.Document.Text;
                _code.TreeId = this.TreeId;
                if (String.IsNullOrEmpty(_code.TreeId))
                {
                    if (!String.IsNullOrEmpty(this.TreeId))
                    {

                        _code.TreeId = this.TreeId;
                    }
                    else
                    {
                        var newFolder = new CodeFolder();
                        newFolder.Text = this.txtTreeText.Text;
                        newFolder = db.SaveTree(newFolder);
                        _code.TreeId = newFolder.Id;
                    }
                }

                _code.Category = this.cbxCategory.Text;
                _code.Desc = this.txtDesc.Text;

                if (db.SaveCode(_code) != null)
                {
                    this.toolStripStatusLabel7.Text = "保存成功!";
                    this.SatustoolStripLabel1.Text = this.toolStripStatusLabel7.Text;
                    RefreshDisplay();
                }
                else
                {
                    MessageBox.Show("保存失败");
                }
            }
            catch (Exception ex)
            {

                MessageBox.Show(ex.Message);
            }
        }
        /// <summary>
        /// 这个方法会被递归调用,所以要小心调用。
        /// </summary>
        /// <param name="folderFullName"></param>
        /// <param name="parentTree"></param>
        private void CopyAndImportLocalDirectory(DirectoryInfo folderFullName, CodeFolder parentTree = null)
        {
            var codeTree = new CodeFolder();
            codeTree.Id = Guid.NewGuid().ToString();
            codeTree.Text = folderFullName.Name;
            if (parentTree != null)
            {
                codeTree.ParentId = parentTree.Id;
            }
            copyFolderList.Add(folderFullName.FullName, codeTree);

            FileSystemInfo[] subFiles = folderFullName.GetFiles();

            var count = 0;
            foreach (FileInfo item in subFiles)
            {
                if (!item.Exists)
                {
                    continue;
                }

                if (!SAPINT.Gui.Util.FileUtil.IsTextFile(item.FullName))
                {
                    continue;
                }
                StreamReader sr = new StreamReader(item.FullName, Encoding.Default);
                String s = sr.ReadToEnd();
                sr.Close();
                //if (s.Length > 3*1024 * 1024)
                //{
                //    continue;
                //}
                var code = new Code();
                code.Title = item.Name;
                code.Content = s;
                // code.Content = s.Replace("UTF-8", "GB2312");
                code.TreeId = codeTree.Id;
                copyCodeList.Add(code);
                count++;
                setProcessBar(subFiles.Count(), count, folderFullName.FullName, item.Name);

                //为了提高性能,每超过100个文档就保存一次。
                //因为每个文档内容都包含内容,如果文档的大小超过1M,那100
                //个文档会就100M的内存消耗。
                //如果没有超过100个文档在方法递归完成后再保存。
                if (copyCodeList.Count == 100)
                {
                    db.SaveCodeList(copyCodeList);
                    db.SaveFolderList(copyFolderList);
                    copyCodeList.Clear();
                    copyFolderList.Clear();
                }

            }

            var subDirectories = folderFullName.GetDirectories();

            if (subDirectories.Count() > 0)
            {

                foreach (var item in subDirectories)
                {
                    if (item.Exists)
                    {
                        CopyAndImportLocalDirectory(item, codeTree);

                    }

                }
            }
        }
        private bool ImportPreCheck()
        {
            selectedItems = 0;
            foreach (DataRow item in dt.Rows)
            {
                if (String.IsNullOrWhiteSpace(item["Select"].ToString()))
                {
                    continue;
                }
                var isSelect = (bool)item["Select"];
                if (isSelect)
                {
                    selectedItems++;
                }
            }
            if (selectedItems == 0)
            {
                MessageBox.Show("请选择需要需要导入的代码");
                return false;
            }
            this.progressBar1.Maximum = selectedItems;
            this.txtFilesCount.Text = selectedItems.ToString();
            this.progressBar1.Value = 0;

            if (String.IsNullOrEmpty(this.TreeId))
            {
                var codeTree = new CodeFolder();
                codeTree.Text = this.txtFolder.Text;
                if (String.IsNullOrEmpty(codeTree.Text))
                {
                    codeTree.Text = "Import File " + DateTime.Now;
                }

                codeTree = db.SaveTree(codeTree);
                this.TreeId = codeTree.Id;
            }
            return true;
        }
        /// <summary>
        /// 按本地文件夹的结构,复制导入文件夹下的所有文件。
        /// </summary>
        private void copyTheWholeLocalFolder()
        {
            if (String.IsNullOrEmpty(path))
            {
                MessageBox.Show("请选择文件夹");
                return;
            }
            DirectoryInfo folderFullName = new DirectoryInfo(path);
            if (!folderFullName.Exists)
            {
                throw new DirectoryNotFoundException("文件夹不存在: " + folderFullName);

            }

            copyFolderList.Clear();
            copyCodeList.Clear();
            progressBar1.Value = 0;

            if (String.IsNullOrEmpty(this.TreeId))
            {
                CopyAndImportLocalDirectory(folderFullName);
            }
            else
            {
                var tree = new CodeFolder();
                tree.Id = this.TreeId;
                CopyAndImportLocalDirectory(folderFullName, tree);
            }

            db.SaveCodeList(copyCodeList);
            db.SaveFolderList(copyFolderList);
            MessageBox.Show("保存成功");
        }