// enumerate all tables in our database and build a table/column hashtable for code completion void buildDataHT() { sqlConnection1.Open(); DataTable dt = sqlConnection1.GetSchema("Columns"); sqlConnection1.Close(); string lasttbl = (string)dt.Rows[0][2]; ICompletionData[] cd = new ICompletionData[1]; int i = 0; int rc = 0; // rowcount foreach (DataRow dr in dt.Rows) { if ((string)dr[2] == lasttbl) { ICompletionData[] cdtemp = new ICompletionData[rc + 1]; cd.CopyTo(cdtemp, 0); cd = cdtemp; cd[rc] = new DefaultCompletionData((string)dr[3], (string)dr[7] + " " + (string)dr[3], 0); } else { rc = 0; htWordNet.Add(lasttbl, cd); cd = new ICompletionData[1]; cd[rc] = new DefaultCompletionData((string)dr[3], (string)dr[7] + " " + (string)dr[3], 0); lasttbl = (string)dt.Rows[i][2]; } i++; rc++; } }
public void UpdateCodeCompletion(LiteDatabase db) { _codeCompletionData = new List <ICompletionData>(); var item = new DefaultCompletionData(DateTime.Now.Second.ToString(), "segundos", 4) { Priority = double.MaxValue }; _codeCompletionData.Add(item); // getting all BsonExpression methods foreach (var m in BsonExpression.Methods.OrderBy(x => x.Name)) { var text = m.Name; var description = $"Method:\n- {text}({string.Join(", ", m.GetParameters().Select(x => x.Name))})"; var icon = 0; // METHOD _codeCompletionData.Add(new DefaultCompletionData(text, description, icon)); } // get all keywords var words = new List <string>(); using (var stream = typeof(SqlCodeCompletion).Assembly.GetManifestResourceStream( "LiteDB.Studio.ICSharpCode.TextEditor.Resources.SQL-Mode.xshd")) { using (var reader = new StreamReader(stream)) { var content = reader.ReadToEnd(); var xml = new XmlDocument(); xml.LoadXml(content); var nodes = xml.DocumentElement.SelectNodes( "/SyntaxDefinition/RuleSets/RuleSet/KeyWords[@name=\"SqlKeywordsNormal\"]/Key"); words.AddRange(nodes.Cast <XmlNode>().Select(x => x.Attributes["word"].Value)); } } _codeCompletionData.AddRange(words.OrderBy(x => x).Select(x => new DefaultCompletionData(x, null, 3))); if (db == null) { return; } // collections var cols = db.GetCollection("$cols").Query().ToArray(); _codeCompletionData.AddRange(cols.Select(x => new DefaultCompletionData(x["name"].AsString, (x["type"] == "user" ? "User collection:\n- " : "System collection:\n- ") + x["name"].AsString, x["type"] == "user" ? 1 : x["type"] == "system" ? 5 : 4))); }
public override ICompletionData[] GenerateCompletionData(string fileName, TextArea textArea, char charTyped) { ICompletionData[] data = new ICompletionData[texts.Length]; for (int i = 0; i < data.Length; i++) { data[i] = new DefaultCompletionData(texts[i], null, ClassBrowserIconService.GotoArrowIndex); } return(data); }
public void UpdateCodeCompletion(TaosConnection db) { _codeCompletionData = new List <ICompletionData>(); var item = new DefaultCompletionData(DateTime.Now.Second.ToString(), "segundos", 4); item.Priority = double.MaxValue; _codeCompletionData.Add(item); // getting all BsonExpression methods //foreach (var m in BsonExpression.Methods.OrderBy(x => x.Name)) //{ // var text = m.Name; // var description = $"Method:\n- {text}({string.Join(", ", m.GetParameters().Select(x => x.Name))})"; // var icon = 0; // METHOD // _codeCompletionData.Add(new DefaultCompletionData(text, description, icon)); //} // get all keywords var words = new List <string>(); using (var stream = new MemoryStream(ICSharpCode.TextEditor.Properties.Resources.SQL_Mode)) { using (var reader = new StreamReader(stream)) { var content = reader.ReadToEnd(); var xml = new XmlDocument(); xml.LoadXml(content); var nodes = xml.DocumentElement.SelectNodes("/SyntaxDefinition/RuleSets/RuleSet/KeyWords[@name=\"SqlKeywordsNormal\"]/Key"); words.AddRange(nodes.Cast <XmlNode>().Select(x => x.Attributes["word"].Value)); } } _codeCompletionData.AddRange(words.OrderBy(x => x).Select(x => new DefaultCompletionData(x, null, 3))); if (db == null) { return; } // collections var cols = new string[] { };// db.GetSchema("$cols").ToList().Query().ToArray(); //_codeCompletionData.AddRange(cols.Select(x => new DefaultCompletionData(x["name"].AsString, // (x["type"] == "user" ? "User collection:\n- " : "System collection:\n- ") + // x["name"].AsString, // x["type"] == "user" ? 1 : // x["type"] == "system" ? 5 : 4))); }
private void addStaticData(string text, string desc, int imgIndex) { DefaultCompletionData data = new DefaultCompletionData(text, desc, imgIndex); staticData.Add(data); }
private void ShowCompletion(string text) { if (_completionWindow != null) { return; } var lineText = GetLineText(); var dotParts = lineText.Split(new [] { '.' }, StringSplitOptions.None); var words = lineText.Split(new[] { ' ' }, StringSplitOptions.RemoveEmptyEntries) .Select(p => p.Trim()) .ToArray(); // var word = GetWord(TextArea.Caret.Offset - 1); var inCollectionNames = lineText.Equals("db.", StringComparison.OrdinalIgnoreCase); var inCollectionCommands = dotParts.Length == 3 && string.IsNullOrEmpty(dotParts.Last()) && _collections.Any(col => col.Equals(dotParts[1], StringComparison.OrdinalIgnoreCase)); if (inCollectionCommands) { inCollectionNames = false; } var inCollectionFilters = dotParts.Length >= 3 && !string.IsNullOrWhiteSpace(dotParts[2]) && TextArea.Document.GetCharAt(TextArea.Caret.Offset - 1) == ' '; if (inCollectionFilters) { inCollectionCommands = false; } var codeCompletionData = new List <ICompletionData>(); if (string.IsNullOrWhiteSpace(lineText) || lineText.Equals("d") || lineText.Equals("db")) { var emptyData = new DefaultCompletionData("db", "db", 0).SetIcon(PackIconKind.Database); codeCompletionData.Add(emptyData); } // Complete collection names if (inCollectionNames) { var collectionNamesData = _collections.Select(key => new DefaultCompletionData($"db.{key}", key, inCollectionNames ? 0 : 1).SetIcon(PackIconKind.Table) ); codeCompletionData.AddRange(collectionNamesData); } // Complete collection commands if (inCollectionCommands && dotParts.Length > 0) { var collectionName = dotParts[1]; var collectionsCommandsData = _collectionsCommandsKeys.Select(key => new DefaultCompletionData($"db.{collectionName}.{key}", key, inCollectionCommands ? 0: 2).SetIcon(PackIconKind.AppleKeyboardCommand) ); codeCompletionData.AddRange(collectionsCommandsData); } // Complete collection filters if (inCollectionFilters) { var hasFilterExpression = words.Any() && _queryFilterKeys.Any(filterKey => words.Last().Equals(filterKey, StringComparison.OrdinalIgnoreCase)); if (hasFilterExpression) { var logicalOperators = _queryOperatorKeys.Select(key => new DefaultCompletionData(lineText + key, key, 0).SetIcon(PackIconKind.CodeTags) ); codeCompletionData.AddRange(logicalOperators); } var collectionsFiltersData = _queryFilterKeys.Select(key => new DefaultCompletionData(lineText + key, key, 2).SetIcon(PackIconKind.FilterOutline) ); codeCompletionData.AddRange(collectionsFiltersData); var collectionName = dotParts[1]; var collectionFields = _databaseReference?[collectionName]?.GetDistinctKeys(); if (collectionFields != null) { var fieldsData = collectionFields.Select(key => new DefaultCompletionData(lineText + key, key, 1).SetIcon(PackIconKind.LabelOutline) ); codeCompletionData.AddRange(fieldsData); } } if (codeCompletionData.Any()) { ShowCodeCompleteWindow(codeCompletionData); } }