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; }
private 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.workingScreen = Screen.GetWorkingArea(base.Location); this.startOffset = control.ActiveTextAreaControl.Caret.Offset + 1; this.endOffset = this.startOffset; if (completionDataProvider.PreSelection != null) { CodeCompletionWindow length = this; length.startOffset = length.startOffset - (completionDataProvider.PreSelection.Length + 1); this.endOffset--; } this.codeCompletionListView = new CodeCompletionListView(completionData) { ImageList = completionDataProvider.ImageList, Dock = DockStyle.Fill }; this.codeCompletionListView.SelectedItemChanged += new EventHandler(this.CodeCompletionListViewSelectedItemChanged); this.codeCompletionListView.DoubleClick += new EventHandler(this.CodeCompletionListViewDoubleClick); this.codeCompletionListView.Click += new EventHandler(this.CodeCompletionListViewClick); base.Controls.Add(this.codeCompletionListView); if ((int)completionData.Length > 10) { this.vScrollBar.Dock = DockStyle.Right; this.vScrollBar.Minimum = 0; this.vScrollBar.Maximum = (int)completionData.Length - 1; this.vScrollBar.SmallChange = 1; this.vScrollBar.LargeChange = 10; this.codeCompletionListView.FirstItemChanged += new EventHandler(this.CodeCompletionListViewFirstItemChanged); base.Controls.Add(this.vScrollBar); } this.drawingSize = this.GetListViewSize(); this.SetLocation(); if (this.declarationViewWindow == null) { this.declarationViewWindow = new DeclarationViewWindow(parentForm); } this.SetDeclarationViewLocation(); this.declarationViewWindow.ShowDeclarationViewWindow(); this.declarationViewWindow.MouseMove += new MouseEventHandler(this.ControlMouseMove); control.Focus(); this.CodeCompletionListViewSelectedItemChanged(this, EventArgs.Empty); if (completionDataProvider.DefaultIndex >= 0) { this.codeCompletionListView.SelectIndex(completionDataProvider.DefaultIndex); } if (completionDataProvider.PreSelection != null) { this.CaretOffsetChanged(this, EventArgs.Empty); } this.vScrollBar.ValueChanged += new EventHandler(this.VScrollBarValueChanged); this.document.DocumentAboutToBeChanged += new DocumentEventHandler(this.DocumentAboutToBeChanged); }
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(); }
protected override void OnClosed(EventArgs e) { base.OnClosed(e); Dispose(); codeCompletionListView.Dispose(); codeCompletionListView = null; declarationViewWindow.Dispose(); declarationViewWindow = null; }
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); }
AutoCompleteWindow(ICompletionDataProvider completionDataProvider, Form parentForm, TextEditorControl control, string fileName, bool showDeclarationWindow) : base(parentForm, control) { this.showDeclarationWindow = showDeclarationWindow; 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 = GetListViewSize(); SetLocation(); 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); }
protected override void Dispose(bool disposing) { if (disposing) { document.DocumentAboutToBeChanged -= DocumentAboutToBeChanged; if (codeCompletionListView != null) { codeCompletionListView.Dispose(); codeCompletionListView = null; } if (declarationViewWindow != null) { declarationViewWindow.Dispose(); declarationViewWindow = null; } } base.Dispose(disposing); }
protected override void Dispose(bool disposing) { if (disposing) { this.document.DocumentAboutToBeChanged -= new DocumentEventHandler(this.DocumentAboutToBeChanged); if (this.codeCompletionListView != null) { this.codeCompletionListView.Dispose(); this.codeCompletionListView = null; } if (this.declarationViewWindow != null) { this.declarationViewWindow.Dispose(); this.declarationViewWindow = null; } } base.Dispose(disposing); }
private void SetDeclarationViewLocation() { Point point; int left = base.Bounds.Left - this.workingScreen.Left; if ((this.workingScreen.Right - base.Bounds.Right) * 2 <= left) { DeclarationViewWindow requiredLeftHandSideWidth = this.declarationViewWindow; DeclarationViewWindow declarationViewWindow = this.declarationViewWindow; int num = base.Bounds.Left; Rectangle bounds = base.Bounds; requiredLeftHandSideWidth.Width = declarationViewWindow.GetRequiredLeftHandSideWidth(new Point(num, bounds.Top)); this.declarationViewWindow.FixedWidth = true; if (base.Bounds.Left >= this.declarationViewWindow.Width) { Rectangle rectangle = base.Bounds; point = new Point(rectangle.Left - this.declarationViewWindow.Width, base.Bounds.Top); } else { point = new Point(0, base.Bounds.Top); } if (this.declarationViewWindow.Location != point) { this.declarationViewWindow.Location = point; } this.declarationViewWindow.Refresh(); } else { this.declarationViewWindow.FixedWidth = false; point = new Point(base.Bounds.Right, base.Bounds.Top); if (this.declarationViewWindow.Location != point) { this.declarationViewWindow.Location = point; return; } } }
void SetToolTip(string text, int lineNumber) { if (toolTip == null || toolTip.IsDisposed) toolTip = new DeclarationViewWindow(this.FindForm()); if (oldToolTip == text) return; if (text == null) { toolTip.Hide(); } else { Point p = Control.MousePosition; Point cp = PointToClient(p); if (lineNumber >= 0) { lineNumber = this.Document.GetVisibleLine(lineNumber); p.Y = (p.Y - cp.Y) + (lineNumber * this.TextView.FontHeight) - this.virtualTop.Y; } p.Offset(3, 3); toolTip.Location = p; toolTip.Description = text; toolTip.HideOnClick = true; toolTip.Show(); } oldToolTip = text; }
// DC (this code was in the constructor of this method which was not working on a multithread environment public void loadGui() { var completionDataProvider = this.dataProvider; workingScreen = Screen.GetWorkingArea(Location); // startOffset = control.ActiveTextAreaControl.Caret.Offset;// +1; // endOffset = startOffset; endOffset = control.ActiveTextAreaControl.Caret.Offset; if (completionDataProvider.PreSelection != null) { startOffset -= completionDataProvider.PreSelection.Length + 1; endOffset--; } guiLoaded = true; 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 > 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; }
public static void ToolTipService_TextAreaToolTipRequest(object sender, ToolTipRequestEventArgs e) { if (!VisualPABCSingleton.MainForm.UserOptions.CodeCompletionHint) return; if (CodeCompletion.CodeCompletionController.CurrentParser == null) return; try { TextArea textArea = sender as TextArea; if (dvw != null && dvw.Description != null) { hideToolTip(); return; } if (e.ToolTipShown && dvw != null) { hideToolTip(); return; } if (e.InDocument) { if (dvw == null) { dvw = new DeclarationWindow(VisualPABCSingleton.MainForm); dvw.Font = new System.Drawing.Font(Constants.CompletionWindowDeclarationViewWindowFontName, dvw.Font.Size); dvw.HideOnClick = true; //dvw.ShowDeclarationViewWindow(); } int ypos = (textArea.Document.GetVisibleLine(e.LogicalPosition.Y) + 1) * textArea.TextView.FontHeight - textArea.VirtualTop.Y; System.Drawing.Point p = new System.Drawing.Point(0, ypos); p = textArea.PointToScreen(p); p.X = Control.MousePosition.X + 3; p.Y += 5; string txt = GetPopupHintText(textArea, e); dvw.Location = choose_location(p, txt); dvw.Description = txt; _hint_hide_d = dvw.Font.Height / 2; _mouse_hint_x = e.MousePosition.X; _mouse_hint_y = e.MousePosition.Y; toolTipVisible = true; } } catch (System.Exception ex) { //VisualPABCSingleton.MainForm.WriteToOutputBox(ex.Message);// ICSharpCode.Core.MessageService.ShowError(ex); } finally { } }
void SetToolTip(string text, int lineNumber) { try { if (toolTip == null || toolTip.IsDisposed) toolTip = new DeclarationViewWindow(this.FindForm()); if (toolTip.Owner == null) { PublicDI.log.error("in TextArea.SetToolTip, toolTip.Owner was null"); } else if (toolTip.Owner.InvokeRequired) PublicDI.log.error("in TextArea.SetToolTip, aborting method due to CrossThread Problem"); else { if (oldToolTip == text) return; if (text == null) { toolTip.Hide(); } else { Point p = Control.MousePosition; Point cp = PointToClient(p); if (lineNumber >= 0) { lineNumber = this.Document.GetVisibleLine(lineNumber); p.Y = (p.Y - cp.Y) + (lineNumber * this.TextView.FontHeight) - this.virtualTop.Y; } p.Offset(3, 3); var form = this.FindForm(); // DC if (form.InvokeRequired || toolTip.Owner.InvokeRequired) PublicDI.log.error("in TextArea.SetToolTip, aborting method due to CrossThread Problem"); else { toolTip.Owner = form; // this.FindForm(); toolTip.Location = p; toolTip.Description = text; toolTip.HideOnClick = true; toolTip.Show(); } } oldToolTip = text; } } catch (Exception ex) { PublicDI.log.error("Exception in TextArea.SetToolTip: {0}" + ex.Message); } }