/// <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); } } }
public void GetCodeTreeTest() { CodeFolder codetree = db.GetFolder("982e36e6-4f22-472d-9daf-e361bcfc55a7"); Assert.AreEqual(codetree.SubTreeList.Count, 1); Assert.AreEqual(3, codetree.CodeList.Count); }
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)); }
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); } }
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); } } }
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(); }
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); }
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; }
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; } }
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); } }
/// <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; }
/// <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); } } } }
/// <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("保存成功"); }