bool InsertSelectedItem(char ch) { _document.DocumentAboutToBeChanged -= DocumentAboutToBeChanged; ICompletionData data = _completionListView.SelectedItem; bool result = false; if (data != null) { TextEditorControl.BeginUpdate(); try { // Remove already typed text if (_endOffset - _startOffset > 0) { TextEditorControl.Document.Remove(_startOffset, _endOffset - _startOffset); } Debug.Assert(_startOffset <= _document.TextLength); // Insert text from completion data result = _dataProvider.InsertAction(data, TextEditorControl.ActiveTextAreaControl.TextArea, _startOffset, ch); } finally { TextEditorControl.EndUpdate(); } } Close(); return(result); }
/// <summary> /// Called when entry should be inserted. Forward to the insertion action of the completion data. /// </summary> public bool InsertAction(ICompletionData data, TextArea textArea, int insertionOffset, char key) { textArea.Caret.Position = textArea.Document.OffsetToPosition(insertionOffset); var res = data.InsertAction(textArea, key); return(res); }
public override bool InsertAction(ICompletionData data, ICSharpCode.TextEditor.TextArea textArea, int insertionOffset, char key) { CodeCompletionData ccData = data as CodeCompletionData; if (IsAttributeCompletion && ccData != null) { textArea.Caret.Position = textArea.Document.OffsetToPosition(insertionOffset); textArea.InsertString(ccData.Text + "=\"\""); textArea.Caret.Column -= 1; SharpDevelopTextAreaControl editor = textArea.MotherTextEditorControl as SharpDevelopTextAreaControl; if (editor != null) { WorkbenchSingleton.SafeThreadAsyncCall( delegate { XamlCompletionDataProvider provider = new XamlCompletionDataProvider(); provider.AllowCompleteExistingExpression = true; editor.ShowCompletionWindow(provider, '\0'); } ); } return(false); } else { return(base.InsertAction(data, textArea, insertionOffset, key)); } }
void InsertSelectedItem() { ICompletionData data = codeCompletionListView.SelectedCompletionData; if (data != null) { control.BeginUpdate(); if (endOffset - startOffset > 0) { try { int dif = endOffset - startOffset; int startOffset2 = control.Document.PositionToOffset(control.ActiveTextAreaControl.Caret.Position); control.Document.Remove(startOffset2 - dif, dif); startOffset = startOffset2 - dif; // control.Document.Insert(startOffset2, " "); } finally { control.ActiveTextAreaControl.Caret.Position = control.Document.OffsetToPosition(startOffset); } } data.InsertAction(control.ActiveTextAreaControl.TextArea, '\0'); control.EndUpdate(); } Close(); }
protected virtual void OnCompletionDataRemoved(ICompletionData obj) { if (CompletionDataRemoved != null) { CompletionDataRemoved(this, new CompletionDataRemovedEventArgs(obj)); } }
private void TextArea_TextEntered(object sender, System.Windows.Input.TextCompositionEventArgs e) { completionWindow = new CompletionWindow(textEditor.TextArea); SelectedContentArgs args = new SelectedContentArgs(); args.TextEditor = textEditor; //TODO: fill the rest of the args List <ICompletionData> data = mTextEditor.GetCompletionData(e.Text, args); if (data != null && data.Count() > 0) { IList <ICompletionData> cdata = completionWindow.CompletionList.CompletionData; foreach (ICompletionData TCD in data) { cdata.Add(TCD); } completionWindow.Width = completionWindow.Width + (Gherkin.GherkinDcoumentEditor.CompletionWindowSize * 2.5); completionWindow.CloseAutomatically = true; completionWindow.Show(); completionWindow.Closed += delegate { ICompletionData ICD = (ICompletionData)completionWindow.CompletionList.ListBox.SelectedItem; completionWindow = null; }; } }
void CodeCompletionListViewSelectedItemChanged(object sender, EventArgs e) { if (codeCompletionListView != null) { ICompletionData data = codeCompletionListView.SelectedCompletionData; if (showDeclarationWindow && data != null && data.Description != null && data.Description.Length > 0) { declarationViewWindow.Description = data.Description; if (data is O2.External.SharpDevelop.Ascx.CodeCompletionData) { lastCodeCompleteData = (O2.External.SharpDevelop.Ascx.CodeCompletionData)data; if (lastCodeCompleteData.member.notNull()) { var memberSignature = lastCodeCompleteData.member.str().remove("[DefaultMethod: ").removeLastChar(); declarationViewWindow.Description = (declarationViewWindow.Description + memberSignature).trim(); } if (lastCodeCompleteData.c.notNull()) { var classDescription = lastCodeCompleteData.c.str().remove("[DefaultClass: ").removeLastChar().line(); foreach (var method in lastCodeCompleteData.c.Methods) { classDescription += " - {0}".info(method.str()).line(); } declarationViewWindow.Description = (declarationViewWindow.Description + classDescription).trim(); } } SetDeclarationViewLocation(); } else { declarationViewWindow.Description = null; } } }
} // for deserialisation public AutoCompleteResponse(ICompletionData d) { DisplayText = d.DisplayText; CompletionText = d.CompletionText; Description = d.Description; RequiredNamespaceImport = d is CompletionData ? ((CompletionData)d).RequiredNamespaceImport : (string)null; }
public void Add(PascalABCCompiler.Parsers.SymInfo si, ICompletionData data) { if (!dict.ContainsKey(si)) { dict[si] = data; } }
private void completionList_SelectionChanged(object sender, System.Windows.Controls.SelectionChangedEventArgs e) { ICompletionData item = this.completionList.SelectedItem; if (item != null) { object description = item.Description; if (description != null) { string descriptionText = description as string; if (descriptionText != null) { this.toolTip.Content = new TextBlock { Text = descriptionText, TextWrapping = TextWrapping.Wrap }; } else { this.toolTip.Content = description; } this.toolTip.IsOpen = true; } else { this.toolTip.IsOpen = false; } } }
public ICompletionData CreateTypeCompletionData(IType type, bool showFullName, bool isInAttributeContext) { if (!type.Name.IsValidCompletionFor(_partialWord)) { return(new CompletionData("~~")); } var completion = new CompletionData(type.Name); if (_instantiating) { foreach (var constructor in type.GetConstructors()) { if (type.TypeParameterCount > 0) { GenerateGenericMethodSignature(constructor); ICompletionData completionData = CompletionData(constructor); completion.AddOverload(completionData); } else { completion.AddOverload(CreateEntityCompletionData(constructor)); } } } else { completion.AddOverload(completion); } return(completion); }
/// <summary> /// 属性名リストを取得する /// </summary> /// <param name="info">現在位置の入力情報</param> /// <param name="macroList">マクロ情報リスト</param> /// <returns>マクロ名リスト</returns> ICompletionData[] getAttrNameList(KagTagKindInfo info, KagMacro[] macroList) { KagMacro macro = KagUtility.GetKagMacro(info.TagName, macroList); if (macro == null) { return(null); //マクロが見つからない } //属性を取得 resetReverseCount(); Dictionary <string, ICompletionData> table = new Dictionary <string, ICompletionData>(); table = getAttrNameListFromMacro(macro, macroList, table); //すでに書いているものは削除する foreach (string deleteAttrName in info.AttrTable.Keys) { table.Remove(deleteAttrName); } //出力用にリストを変換 ICompletionData[] list = new ICompletionData[table.Count]; int i = 0; foreach (ICompletionData data in table.Values) { list[i++] = data; } return(list); }
public AutoCompleteResponse(ICompletionData d) { DisplayText = d.DisplayText; CompletionText = d.CompletionText; Description = d.Description; RequiredNamespaceImport = d is CompletionData ? ((CompletionData)d).RequiredNamespaceImport : (string)null; }
public static void AddLastUsedItem(ICompletionData item) { if (item != null && item.Text != null && item.Text.Length > 0) { dict[item.Text[0].ToString()] = item; } }
Image GetImageFor(ICompletionData item) { switch (item.CompletionType) { case CompletionType.none: return(null); case CompletionType.snippet: return(Res.Images.snippet); case CompletionType.constructor: return(Res.Images.constructor); case CompletionType.extension_method: return(Res.Images.extension_method); case CompletionType.method: return(Res.Images.method); case CompletionType._event: return(Res.Images._event); case CompletionType.field: return(Res.Images.field); case CompletionType.type: return(Res.Images.constructor); case CompletionType.property: return(Res.Images.property); case CompletionType._namespace: return(Res.Images._namespace); case CompletionType.unresolved: return(Res.Images.unresolved); } return(null); }
public ICompletionData CreateEntityCompletionData(IEntity entity) { _completionText = _signature = entity.Name; _completionText = _ambience.ConvertEntity(entity).Replace(";", ""); if (!_completionText.IsValidCompletionFor(_partialWord)) { return(new CompletionData("~~")); } if (entity is IMethod) { var method = entity as IMethod; GenerateMethodSignature(method); } if (entity is IField || entity is IProperty) { _signature = _signatureAmbience.ConvertEntity(entity).Replace(";", ""); } ICompletionData completionData = CompletionData(entity); Debug.Assert(completionData != null); return(completionData); }
public static int Compare(ICompletionData a, ICompletionData b) { if (a == null) throw new ArgumentNullException("a"); if (b == null) throw new ArgumentNullException("b"); return string.Compare(a.Text, b.Text, StringComparison.InvariantCultureIgnoreCase); }
public static int Compare(ICompletionData a, ICompletionData b) { var result = ((a.DisplayFlags & DisplayFlags.Obsolete) == (b.DisplayFlags & DisplayFlags.Obsolete)) ? StringComparer.OrdinalIgnoreCase.Compare(a.DisplayText, b.DisplayText) : (a.DisplayFlags & DisplayFlags.Obsolete) != 0 ? 1 : -1; if (result == 0) { var aIsImport = (a.DisplayFlags & DisplayFlags.IsImportCompletion) != 0; var bIsImport = (b.DisplayFlags & DisplayFlags.IsImportCompletion) != 0; if (!aIsImport && bIsImport) { return(-1); } if (aIsImport && !bIsImport) { return(1); } if (aIsImport && bIsImport) { return(StringComparer.Ordinal.Compare(a.Description, b.Description)); } var ca = a as CompletionData; var cb = b as CompletionData; if (ca != null && cb != null && !ca.Icon.IsNull && !cb.Icon.IsNull) { return(cb.Icon.Name.CompareTo(ca.Icon.Name)); } } return(result); }
public override ICompletionData[] GenerateCompletionData(string fileName, TextArea textArea, char charTyped) { var resultList = new List <ICompletionData>(); var document = FEditor.TextDocument as CSDocument; var parseInfo = document.ParseInfo; var finder = document.ExpressionFinder; var text = textArea.Document.GetText(0, textArea.Caret.Offset); var expressionResult = finder.FindExpression(text, textArea.Caret.Offset); if (expressionResult.Region.IsEmpty) { expressionResult.Region = new Dom.DomRegion(textArea.Caret.Line + 1, textArea.Caret.Column + 1); } var resolver = new NRefactoryResolver(LanguageProperties.CSharp); Debug.WriteLine(string.Format("Generating C# CTRL space completion data for expression result {0}", expressionResult)); PreSelection = string.Empty; var completionData = resolver.CtrlSpace(textArea.Caret.Line + 1, textArea.Caret.Column + 1, parseInfo, textArea.Document.TextContent, expressionResult.Context); var result = Enumerable.Empty <ICompletionData>(); if (completionData != null) { // Add the async keyword result = new ICompletionData[] { new DefaultCompletionData("async", 5) } }
// 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++; } }
bool InsertSelectedItem(char ch) { document.DocumentAboutToBeChanged -= DocumentAboutToBeChanged; ICompletionData data = codeCompletionListView.SelectedCompletionData; if (VisualPascalABC.VisualPABCSingleton.MainForm.UserOptions.EnableSmartIntellisense) { VisualPascalABC.CompletionDataDispatcher.AddLastUsedItem(data); VisualPascalABC.CompletionDataDispatcher.BindMember(data); } bool result = false; if (data != null) { control.BeginUpdate(); try { if (endOffset - startOffset > 0) { control.Document.Remove(startOffset, endOffset - startOffset); } Debug.Assert(startOffset <= document.TextLength); result = dataProvider.InsertAction(data, control.ActiveTextAreaControl.TextArea, startOffset, ch); } finally { control.EndUpdate(); } } Close(); return(result); }
bool InsertSelectedItem(char ch) { document.DocumentAboutToBeChanged -= DocumentAboutToBeChanged; ICompletionData data = codeCompletionListView.SelectedCompletionData; bool result = false; if (data != null) { control.BeginUpdate(); try { if (endOffset - startOffset > 0) { control.Document.Remove(startOffset, endOffset - startOffset); } Debug.Assert(startOffset <= document.TextLength); result = dataProvider.InsertAction(data, control.ActiveTextAreaControl.TextArea, startOffset, ch); } finally { control.EndUpdate(); } } Close(); return(result); }
public int Compare(object x, object y) { ICompletionData d1 = x as ICompletionData; ICompletionData d2 = y as ICompletionData; return(String.Compare(d1.Text[0], d2.Text[0], true)); }
bool InsertSelectedItem(char ch) { ICompletionData data = codeCompletionListView.SelectedCompletionData; bool result = false; if (data != null) { control.BeginUpdate(); if (endOffset - startOffset > 0) { control.Document.Remove(startOffset, endOffset - startOffset); } if (dataProvider.InsertSpace) { control.Document.Insert(startOffset++, " "); } control.ActiveTextAreaControl.Caret.Position = control.Document.OffsetToPosition(startOffset); result = data.InsertAction(control.ActiveTextAreaControl.TextArea, ch); control.EndUpdate(); } Close(); return(result); }
private bool InsertSelectedItem(char ch) { this.document.DocumentAboutToBeChanged -= new DocumentEventHandler(this.DocumentAboutToBeChanged); ICompletionData selectedCompletionData = this.codeCompletionListView.SelectedCompletionData; bool flag = false; if (selectedCompletionData != null) { this.control.BeginUpdate(); try { if (this.endOffset - this.startOffset > 0) { this.control.Document.Remove(this.startOffset, this.endOffset - this.startOffset); } flag = this.dataProvider.InsertAction(selectedCompletionData, this.control.ActiveTextAreaControl.TextArea, this.startOffset, ch); } finally { this.control.EndUpdate(); } } base.Close(); return(flag); }
public bool InsertAction(ICompletionData data, TextArea textArea, int insertionOffset, char key) { textArea.Caret.Position = textArea.Document.OffsetToPosition( Math.Min(insertionOffset, textArea.Document.TextLength)); return data.InsertAction(textArea, key); }
/// <summary> /// Generates the completion data. This method is called by the text editor control. /// </summary> /// <param name="fileName">the name of the file.</param> /// <param name="textArea">The text area.</param> /// <param name="charTyped">The character typed.</param> /// <returns>The completion data.</returns> public override ICompletionData[] GenerateCompletionData(string fileName, TextArea textArea, char charTyped) { ICompletionData[] completionData = new ICompletionData[_texts.Length]; for (int i = 0; i < completionData.Length; i++) completionData[i] = new DefaultCompletionData(_texts[i], null, _imageIndex); return completionData; }
/// <summary> /// Called when entry should be inserted. Forward to the insertion action of the completion data. /// </summary> public bool InsertAction(ICompletionData data, TextArea textArea, int insertionOffset, char key) { textArea.Caret.Position = textArea.Document.OffsetToPosition( Math.Min(insertionOffset, textArea.Document.TextLength) ); return(data.InsertAction(textArea, key)); }
/// <summary> /// Called when entry should be inserted. Forward to the insertion action of the completion data. /// </summary> public bool InsertAction(ICompletionData data, TextArea textArea, int insertionOffset, char key) { textArea.SelectionManager.SetSelection(textArea.Document.OffsetToPosition( Math.Min(insertionOffset - ((AEGISCompletionData)data).Expression.Length, textArea.Document.TextLength) ), textArea.Caret.Position); return data.InsertAction(textArea, key); }
protected void AddCompletionData(ICompletionData data) { if (this._c != null) { this._c.CompletionList.CompletionData.Add(data); } }
CodeCompletionWindow(ICompletionDataProvider completionDataProvider, ICompletionData[] completionData, Form parentForm, TextEditorControl control, bool showDeclarationWindow, bool fixedListViewWidth) : base(parentForm, control) { this.dataProvider = completionDataProvider; this.completionData = completionData; this.document = control.Document; this.showDeclarationWindow = showDeclarationWindow; this.fixedListViewWidth = fixedListViewWidth; workingScreen = Screen.GetWorkingArea(Location); startOffset = control.ActiveTextAreaControl.Caret.Offset + 1; endOffset = startOffset; if (completionDataProvider.PreSelection != null) { startOffset -= completionDataProvider.PreSelection.Length + 1; endOffset--; } codeCompletionListView = new CodeCompletionListView(completionData); codeCompletionListView.Font = new System.Drawing.Font(FontFamily.GenericMonospace, codeCompletionListView.Font.Size); codeCompletionListView.ImageList = completionDataProvider.ImageList; codeCompletionListView.Dock = DockStyle.Fill; codeCompletionListView.SelectedItemChanged += new EventHandler(CodeCompletionListViewSelectedItemChanged); codeCompletionListView.DoubleClick += new EventHandler(CodeCompletionListViewDoubleClick); codeCompletionListView.Click += new EventHandler(CodeCompletionListViewClick); Controls.Add(codeCompletionListView); if (completionData.Length > MaxListLength) { vScrollBar.Dock = DockStyle.Right; vScrollBar.Minimum = 0; vScrollBar.Maximum = completionData.Length - 1; vScrollBar.SmallChange = 1; vScrollBar.LargeChange = MaxListLength; codeCompletionListView.FirstItemChanged += new EventHandler(CodeCompletionListViewFirstItemChanged); Controls.Add(vScrollBar); } this.drawingSize = GetListViewSize(); SetLocation(); if (declarationViewWindow == null) { declarationViewWindow = new DeclarationViewWindow(parentForm); } SetDeclarationViewLocation(); declarationViewWindow.ShowDeclarationViewWindow(); declarationViewWindow.MouseMove += ControlMouseMove; control.Focus(); CodeCompletionListViewSelectedItemChanged(this, EventArgs.Empty); if (completionDataProvider.DefaultIndex >= 0) { codeCompletionListView.SelectIndex(completionDataProvider.DefaultIndex); } if (completionDataProvider.PreSelection != null) { CaretOffsetChanged(this, EventArgs.Empty); } vScrollBar.ValueChanged += VScrollBarValueChanged; document.DocumentAboutToBeChanged += DocumentAboutToBeChanged; }
bool DelayedTooltipShow() { var selectedItem = List.SelectedItem; if (selectedItem < 0 || selectedItem >= completionDataList.Count) { return(false); } var data = completionDataList [selectedItem]; IEnumerable <ICompletionData> filteredOverloads; if (data.HasOverloads) { filteredOverloads = data.OverloadedData; } else { filteredOverloads = new ICompletionData[] { data }; } EnsureDeclarationViewWindow(); if (data != currentData) { declarationviewwindow.Clear(); var overloads = new List <ICompletionData> (filteredOverloads); foreach (var overload in overloads) { declarationviewwindow.AddOverload((CompletionData)overload); } currentData = data; if (data.HasOverloads) { for (int i = 0; i < overloads.Count; i++) { if (!overloads[i].DisplayFlags.HasFlag(DisplayFlags.Obsolete)) { declarationviewwindow.CurrentOverload = i; break; } } } } if (declarationviewwindow.Overloads == 0) { HideDeclarationView(); return(false); } if (declarationViewHidden && Visible) { RepositionDeclarationViewWindow(); } declarationViewTimer = 0; return(false); }
public static void BindMember(ICompletionData item) { if (cur_sc != null && item != null) { ht[cur_sc.GetFullName()] = item.Text; } cur_sc = null; }
public void AddOverload(ICompletionData data) { if (overloadedData.Count == 0) { overloadedData.Add(this); } overloadedData.Add(data); }
/// <summary> /// Called when entry should be inserted. Forward to the insertion action of the completion data. /// </summary> public bool InsertAction(ICompletionData data, TextArea textArea, int insertionOffset, char key) { textArea.Caret.Position = textArea.Document.OffsetToPosition(insertionOffset); bool temp = data.InsertAction(textArea, key); textArea.Refresh(); return(temp); }
public ListItem(ICompletionData CompletionData, int type) { CodeCompletionData = CompletionData; Text = CompletionData.Text; Type = type; //ToolTip = tooltip; InsertText = Text; }
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; }
void ReleaseObjects() { CompletionWidget = null; CompletionDataList = null; CodeCompletionContext = null; currentData = null; Extension = null; }
/// <summary> /// Initializes a new instance of the <see cref="CompletionListView"/> class. /// </summary> /// <param name="completionData">The completion data.</param> public CompletionListView(ICompletionData[] completionData) { if (completionData == null) throw new ArgumentNullException("completionData"); _fullCompletionData = completionData; Array.Sort(_fullCompletionData, DefaultCompletionData.Compare); _filteredCompletionData = new List<ICompletionData>(_fullCompletionData); }
protected IdeBridgeCodeCompletionWindow(ICompletionDataProvider completionDataProvider, ICompletionData[] completionData, Form parentForm, TextEditorControl control, bool showDeclarationWindow, bool fixedListViewWidth) : base(completionDataProvider, completionData, parentForm, control, showDeclarationWindow, fixedListViewWidth) { TopMost = true; declarationViewWindow.Dispose(); declarationViewWindow = new DeclarationViewWindow(null); declarationViewWindow.TopMost = true; SetDeclarationViewLocation(); }
public virtual bool InsertAction(ICompletionData data, TextArea textArea, int insertionOffset, char key) { if (InsertSpace) { textArea.Document.Insert(insertionOffset++, " "); } textArea.Caret.Position = textArea.Document.OffsetToPosition(insertionOffset); return data.InsertAction(textArea, key); }
public CodeCompletionListView(ICompletionData[] completionData) { Array.Sort(completionData, DefaultCompletionData.Compare); this.completionData = completionData; // this.KeyDown += new System.Windows.Forms.KeyEventHandler(OnKey); // SetStyle(ControlStyles.Selectable, false); // SetStyle(ControlStyles.UserPaint, true); // SetStyle(ControlStyles.DoubleBuffer, false); }
private static int CompareTo(ICompletionData a, ICompletionData b) { if (a.CompletionCategory == null && b.CompletionCategory == null) return 0; if (a.CompletionCategory == null) return -1; if (b.CompletionCategory == null) return 1; return a.CompletionCategory.CompareTo(b.CompletionCategory); }
public int CompareTo(ICompletionData other) { int c = this.Priority.CompareTo(other.Priority); if (c == 0) { return this.InsertionText.CompareTo(other.InsertionText); } else { return c; } }
CodeCompletionWindow(ICompletionDataProvider completionDataProvider, ICompletionData[] completionData, Form parentForm, TextEditorControl control, string fileName) : base(parentForm, control, fileName) { this.dataProvider = completionDataProvider; this.completionData = completionData; workingScreen = Screen.GetWorkingArea(Location); startOffset = control.ActiveTextAreaControl.Caret.Offset + 1; endOffset = startOffset; if (completionDataProvider.PreSelection != null) { startOffset -= completionDataProvider.PreSelection.Length + 1; endOffset--; } codeCompletionListView = new CodeCompletionListView(completionData); codeCompletionListView.ImageList = completionDataProvider.ImageList; codeCompletionListView.Dock = DockStyle.Fill; codeCompletionListView.SelectedItemChanged += new EventHandler(CodeCompletionListViewSelectedItemChanged); codeCompletionListView.DoubleClick += new EventHandler(CodeCompletionListViewDoubleClick); codeCompletionListView.Click += new EventHandler(CodeCompletionListViewClick); Controls.Add(codeCompletionListView); if (completionData.Length > 10) { vScrollBar.Dock = DockStyle.Right; vScrollBar.Minimum = 0; vScrollBar.Maximum = completionData.Length - 8; vScrollBar.SmallChange = 1; vScrollBar.LargeChange = 3; codeCompletionListView.FirstItemChanged += new EventHandler(CodeCompletionListViewFirstItemChanged); Controls.Add(vScrollBar); } this.drawingSize = new Size(codeCompletionListView.ItemHeight * 10, codeCompletionListView.ItemHeight * Math.Min(10, completionData.Length)); SetLocation(); if (declarationViewWindow == null) { declarationViewWindow = new DeclarationViewWindow(parentForm); } SetDeclarationViewLocation(); declarationViewWindow.ShowDeclarationViewWindow(); control.Focus(); CodeCompletionListViewSelectedItemChanged(this, EventArgs.Empty); if (completionDataProvider.DefaultIndex >= 0) { codeCompletionListView.SelectIndex(completionDataProvider.DefaultIndex); } if (completionDataProvider.PreSelection != null) { CaretOffsetChanged(this, EventArgs.Empty); } vScrollBar.Scroll += new ScrollEventHandler(DoScroll); }
/// <summary> /// Called when entry should be inserted. Forward to the insertion action of the completion data. /// </summary> public bool InsertAction(ICompletionData data, TextArea textArea, int insertionOffset, char key) { textArea.Caret.Position = textArea.Document.OffsetToPosition(insertionOffset); if (!(data as UserDefaultCompletionData).IsOnOverrideWindow) { int ind = data.Text.IndexOf('<'); if (ind != -1 && data.Text.Length > ind + 1 && data.Text[ind + 1] == '>') data.Text = data.Text.Substring(0, ind); } else data.Text = data.Description; return data.InsertAction(textArea, key); }
/// <summary> /// Checks whether the specified name exists in the completion data. /// </summary> public static bool Contains(ICompletionData[] items, string name) { bool Contains = false; foreach (ICompletionData data in items) { if (data.Text == name) { Contains = true; break; } } return Contains; }
public static CodeCompletionWindow ShowCompletionWindow(Form parent, TextEditorControl control, string fileName, ICompletionDataProvider completionDataProvider, char firstChar, bool showDeclarationWindow, bool fixedListViewWidth) { if (busy) // DC to prevent multiple calls { "CodeCompletionWindow.ShowCompletionWindow was busy, skipping ShowCompletionWindow calculation".info(); return null; } busy = true; return (CodeCompletionWindow)parent.invokeOnThread( () => { try { var tempCompletionData = new ICompletionData[] { }; CodeCompletionWindow codeCompletionWindow = new CodeCompletionWindow(completionDataProvider, tempCompletionData, parent, control, showDeclarationWindow, fixedListViewWidth); codeCompletionWindow.CloseWhenCaretAtBeginning = firstChar == '\0'; codeCompletionWindow.ShowCompletionWindow(); O2Thread.mtaThread( // run in on a separate thread for performance reasons () => { try { ICompletionData[] completionData = completionDataProvider.GenerateCompletionData(fileName, control.ActiveTextAreaControl.TextArea, firstChar); if (completionData == null || completionData.Length == 0) { //return null; } else codeCompletionWindow.setCodeCompletionData(completionData); busy = false; } catch (Exception ex) { ex.log("in CodeCompletionWindow.ShowCompletionWindow "); } }); return codeCompletionWindow; } catch (Exception ex) { busy = false; return null; } }); }
CodeCompletionWindow(ICompletionDataProvider completionDataProvider, ICompletionData[] completionData, Form parentForm, TextEditorControl control, bool showDeclarationWindow, bool fixedListViewWidth) : base(parentForm, control) { this.dataProvider = completionDataProvider; this.completionData = completionData; this.document = control.Document; this.showDeclarationWindow = showDeclarationWindow; this.fixedListViewWidth = fixedListViewWidth; this.guiLoaded = false; startOffset = control.ActiveTextAreaControl.Caret.Offset +1; endOffset = startOffset; //startOffset = -1; //endOffset = -1; }
public CodeCompletionListView(ICompletionData[] completionData) { if (this.completionData != null) { Array.Clear(this.completionData, 0, completionData.Length); } Array.Sort(completionData); this.completionData = completionData; // this.KeyDown += new System.Windows.Forms.KeyEventHandler(OnKey); // SetStyle(ControlStyles.Selectable, false); // SetStyle(ControlStyles.UserPaint, true); // SetStyle(ControlStyles.DoubleBuffer, false); }
/// <summary> /// Checks whether the completion data specified by name has /// the correct description. /// </summary> public static bool ContainsDescription(ICompletionData[] items, string name, string description) { bool Contains = false; foreach (ICompletionData data in items) { if (data.Text[0] == name) { if (data.Description == description) { Contains = true; break; } } } return Contains; }
public void SetUpFixture() { Form parentForm = new Form(); parentForm.CreateControl(); XmlSchemaCompletionData schema = new XmlSchemaCompletionData(ResourceManager.GetXhtmlStrictSchema()); XmlSchemaCompletionDataCollection schemas = new XmlSchemaCompletionDataCollection(); schemas.Add(schema); provider = new XmlCompletionDataProvider(schemas, schema, String.Empty); TextEditorControl textEditor = new TextEditorControl(); completionDataItems = provider.GenerateCompletionData(@"C:\Test.xml", textEditor.ActiveTextAreaControl.TextArea, '<'); using (CodeCompletionWindow completionWindow = CodeCompletionWindow.ShowCompletionWindow(parentForm, textEditor, @"C:\Test.xml", provider, '<')) { CodeCompletionListView listView = (CodeCompletionListView)completionWindow.Controls[0]; selectedCompletionData = listView.SelectedCompletionData; completionWindow.Close(); } }
public static CodeCompletionWindow ShowCompletionWindow_Thread(Form parent,TextEditorControl control, string fileName, ICompletionDataProvider completionDataProvider, char firstChar, bool showDeclarationWindow, bool fixedListViewWidth) { try { var tempCompletionData = new ICompletionData[] { }; CodeCompletionWindow codeCompletionWindow = new CodeCompletionWindow(completionDataProvider, tempCompletionData, parent, control, showDeclarationWindow, fixedListViewWidth); codeCompletionWindow.CloseWhenCaretAtBeginning = firstChar == '\0'; codeCompletionWindow.ShowCompletionWindow(); codeCompletionWindow.AfterWindowOpen.invoke(); O2Thread.mtaThread( // run in on a separate thread for performance reasons () => { try { ICompletionData[] completionData = completionDataProvider.GenerateCompletionData(fileName, control.ActiveTextAreaControl.TextArea, firstChar); if (completionData == null || completionData.Length == 0) { //"There was no CompleteData".error(); //return null; } else codeCompletionWindow.setCodeCompletionData(completionData); } catch (Exception ex) { ex.log("in CodeCompletionWindow.ShowCompletionWindow "); } busy = false; }); return codeCompletionWindow; } catch// (Exception ex) { busy = false; return null; } }
/// <summary> /// Called when entry should be inserted. Forward to the insertion action of the completion data. /// </summary> public bool InsertAction(ICompletionData data, TextArea textArea, int insertionOffset, char key) { int endOffset = insertionOffset; LineSegment line = textArea.Document.GetLineSegment(textArea.Caret.Line); // Try to find the last word and replace it if (insertionOffset != 0) { // insertionOffset represent the current Caret, so this isnt needed // But just in case.. if (textArea.Caret.Column > 0) { TextWord word = line.GetWord(textArea.Caret.Column - 1); if (word != null) { // Nothing todo? if (word.Word == data.Text) { data.Text = ""; } else { // cap insert data data.Text = data.Text.Substring(word.Length); } } } } return data.InsertAction(textArea, key); }
public virtual void AddOverload (ICompletionData data) { throw new System.InvalidOperationException (); }
public static void AddLastUsedItem(ICompletionData item) { if (item != null && item.Text != null && item.Text.Length > 0) dict[item.Text[0].ToString()] = item; }
public void AddOverload (ICompletionData data) { throw new NotImplementedException (); }
public static void BindMember(ICompletionData item) { if (cur_sc != null && item != null) ht[cur_sc.GetFullName()] = item.Text; cur_sc = null; }
/// <summary> /// Inserts the selected completion value. /// </summary> /// <remarks> /// If we are closing a tag, we request a reformatting of the line. /// </remarks> /// <param name="p_cdtData">The code completion selection that was chosen.</param> /// <param name="p_txaTextArea">The area containing the document being edited.</param> /// <param name="p_intInsertionOffset">Where the selection should be inserted into the document.</param> /// <param name="p_chrKey">The character that was used to choose this completion selection.</param> /// <returns><lang cref="true"/> if the insertion of <paramref name="p_chrKey"/> was handled; /// <lang cref="false"/> otherwise.</returns> public bool InsertAction(ICompletionData p_cdtData, TextArea p_txaTextArea, int p_intInsertionOffset, char p_chrKey) { p_txaTextArea.Caret.Position = p_txaTextArea.Document.OffsetToPosition(p_intInsertionOffset); bool booInserted = p_cdtData.InsertAction(p_txaTextArea, p_chrKey); if (p_cdtData.Text.StartsWith("/")) { p_txaTextArea.Document.FormattingStrategy.IndentLine(p_txaTextArea, p_txaTextArea.Caret.Position.Line); if (p_chrKey == '/') return true; } return booInserted; }
public void Add(PascalABCCompiler.Parsers.SymInfo si, ICompletionData data) { if (!dict.ContainsKey(si)) dict[si] = data; }