From 9485a07bdb07a6cae7397e5e627d31d684421633 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Martin=20Kon=C3=AD=C4=8Dek?= Date: Sun, 1 Aug 2010 13:50:31 +0000 Subject: [PATCH] VBNetLanguageBinding returns LanguageProperties.VBNet, so that Context actions now work also for VB. Context actions and Highlight symbol are enabled only for .cs and .vb files. git-svn-id: svn://svn.sharpdevelop.net/sharpdevelop/trunk@6347 1ccf3a8d-04fe-1044-b7c0-cef0b8235c61 --- .../Project/Src/VBNetLanguageBinding.cs | 5 ++++ .../Src/CaretReferencesRenderer.cs | 24 ++++++++++++------- .../AvalonEdit.AddIn/Src/CodeEditorView.cs | 12 ++++++---- .../Src/ContextActionsRenderer.cs | 14 +++++++++++ .../Editor/Commands/ClassMemberMenuBuilder.cs | 2 ++ .../ContextActionsBulbControl.xaml.cs | 2 +- .../ContextActions/ContextActionsService.cs | 4 ++-- .../ContextActionsHelper.cs | 3 --- 8 files changed, 47 insertions(+), 19 deletions(-) diff --git a/src/AddIns/BackendBindings/VBNetBinding/Project/Src/VBNetLanguageBinding.cs b/src/AddIns/BackendBindings/VBNetBinding/Project/Src/VBNetLanguageBinding.cs index 86c466e08e..ddf1665fbe 100644 --- a/src/AddIns/BackendBindings/VBNetBinding/Project/Src/VBNetLanguageBinding.cs +++ b/src/AddIns/BackendBindings/VBNetBinding/Project/Src/VBNetLanguageBinding.cs @@ -7,6 +7,7 @@ using System; using ICSharpCode.SharpDevelop; +using ICSharpCode.SharpDevelop.Dom; using ICSharpCode.SharpDevelop.Editor; namespace ICSharpCode.VBNetBinding @@ -23,5 +24,9 @@ namespace ICSharpCode.VBNetBinding public override IBracketSearcher BracketSearcher { get { return new VBNetBracketSearcher(); } } + + public override LanguageProperties Properties { + get { return LanguageProperties.VBNet; } + } } } diff --git a/src/AddIns/DisplayBindings/AvalonEdit.AddIn/Src/CaretReferencesRenderer.cs b/src/AddIns/DisplayBindings/AvalonEdit.AddIn/Src/CaretReferencesRenderer.cs index e256860267..7ca0802d98 100644 --- a/src/AddIns/DisplayBindings/AvalonEdit.AddIn/Src/CaretReferencesRenderer.cs +++ b/src/AddIns/DisplayBindings/AvalonEdit.AddIn/Src/CaretReferencesRenderer.cs @@ -38,7 +38,15 @@ namespace ICSharpCode.AvalonEdit.AddIn ExpressionHighlightRenderer highlightRenderer; ResolveResult lastResolveResult; - + + public bool IsEnabled + { + get { + string fileName = this.Editor.FileName; + return CodeEditorOptions.Instance.HighlightSymbol && (fileName.EndsWith(".cs") || fileName.EndsWith(".vb")); + } + } + /// /// In the code editor, highlights all references to the expression under the caret (for better code readability). /// @@ -62,22 +70,22 @@ namespace ICSharpCode.AvalonEdit.AddIn void TimerTick(object sender, EventArgs e) { - if (!CodeEditorOptions.Instance.HighlightSymbol) - return; - this.delayTimer.Stop(); - // almost the same as DebuggerService.HandleToolTipRequest + + if (!IsEnabled) + return; var referencesToBeHighlighted = GetReferencesInCurrentFile(this.lastResolveResult); this.highlightRenderer.SetHighlight(referencesToBeHighlighted); } void TimerMoveTick(object sender, EventArgs e) { - if (!CodeEditorOptions.Instance.HighlightSymbol) - return; - this.delayMoveTimer.Stop(); this.delayTimer.Stop(); + + if (!IsEnabled) + return; + var resolveResult = GetExpressionUnderCaret(); if (resolveResult == null) { this.lastResolveResult = resolveResult; diff --git a/src/AddIns/DisplayBindings/AvalonEdit.AddIn/Src/CodeEditorView.cs b/src/AddIns/DisplayBindings/AvalonEdit.AddIn/Src/CodeEditorView.cs index 1d553b4b95..fcbc9bd162 100755 --- a/src/AddIns/DisplayBindings/AvalonEdit.AddIn/Src/CodeEditorView.cs +++ b/src/AddIns/DisplayBindings/AvalonEdit.AddIn/Src/CodeEditorView.cs @@ -60,7 +60,7 @@ namespace ICSharpCode.AvalonEdit.AddIn this.TextArea.TextView.MouseDown += TextViewMouseDown; this.TextArea.Caret.PositionChanged += HighlightBrackets; - SetUpTabSnippetHandler(); + SetupTabSnippetHandler(); } protected override string FileName { @@ -74,8 +74,10 @@ namespace ICSharpCode.AvalonEdit.AddIn HighlightBrackets(null, e); else if (e.PropertyName == "EnableFolding") UpdateParseInformation(); - else if (e.PropertyName == "HighlightSymbol") - this.caretReferencesRenderer.ClearHighlight(); + else if (e.PropertyName == "HighlightSymbol") { + if (this.caretReferencesRenderer != null) + this.caretReferencesRenderer.ClearHighlight(); + } } #region CaretPositionChanged - Bracket Highlighting @@ -102,7 +104,7 @@ namespace ICSharpCode.AvalonEdit.AddIn #endregion #region Custom Tab command (code snippet expansion) - void SetUpTabSnippetHandler() + void SetupTabSnippetHandler() { var editingKeyBindings = this.TextArea.DefaultInputHandler.Editing.InputBindings.OfType(); var tabBinding = editingKeyBindings.Single(b => b.Key == Key.Tab && b.Modifiers == ModifierKeys.None); @@ -346,7 +348,7 @@ namespace ICSharpCode.AvalonEdit.AddIn #region Ctrl+Click Go To Definition GoToDefinition goToDefinitionCommand; - protected GoToDefinition GotoDefinitionCommand { + protected GoToDefinition GotoDefinitionCommand { get { if (goToDefinitionCommand == null) diff --git a/src/AddIns/DisplayBindings/AvalonEdit.AddIn/Src/ContextActionsRenderer.cs b/src/AddIns/DisplayBindings/AvalonEdit.AddIn/Src/ContextActionsRenderer.cs index 88f383c274..011805e264 100644 --- a/src/AddIns/DisplayBindings/AvalonEdit.AddIn/Src/ContextActionsRenderer.cs +++ b/src/AddIns/DisplayBindings/AvalonEdit.AddIn/Src/ContextActionsRenderer.cs @@ -34,6 +34,18 @@ namespace ICSharpCode.AvalonEdit.AddIn DispatcherTimer delayMoveTimer; const int delayMoveMilliseconds = 100; + public bool IsEnabled + { + get { + try { + string fileName = this.Editor.FileName; + return fileName.EndsWith(".cs") || fileName.EndsWith(".vb"); + } catch { + return false; + } + } + } + public ContextActionsRenderer(CodeEditorView editor) { if (editor == null) @@ -79,6 +91,8 @@ namespace ICSharpCode.AvalonEdit.AddIn void TimerMoveTick(object sender, EventArgs e) { this.delayMoveTimer.Stop(); + if (!IsEnabled) + return; var availableActions = ContextActionsService.Instance.GetAvailableActions(this.Editor); var availableActionsVM = new ObservableCollection( diff --git a/src/Main/Base/Project/Src/Editor/Commands/ClassMemberMenuBuilder.cs b/src/Main/Base/Project/Src/Editor/Commands/ClassMemberMenuBuilder.cs index d8a39e2964..9342f7353a 100644 --- a/src/Main/Base/Project/Src/Editor/Commands/ClassMemberMenuBuilder.cs +++ b/src/Main/Base/Project/Src/Editor/Commands/ClassMemberMenuBuilder.cs @@ -57,6 +57,7 @@ namespace ICSharpCode.SharpDevelop.Editor.Commands if (!FindReferencesAndRenameHelper.IsReadOnly(member.DeclaringType) && !(member is IProperty && ((IProperty)member).IsIndexer)) { cmd = new MenuCommand("${res:SharpDevelop.Refactoring.RenameCommand}", Rename); + cmd.ShortcutKeys = Keys.Control | Keys.R; cmd.Tag = member; list.Add(cmd); } @@ -68,6 +69,7 @@ namespace ICSharpCode.SharpDevelop.Editor.Commands } cmd = new MenuCommand("${res:SharpDevelop.Refactoring.FindReferencesCommand}", FindReferences); + cmd.ShortcutKeys = Keys.F12; cmd.Tag = member; list.Add(cmd); diff --git a/src/Main/Base/Project/Src/Services/RefactoringService/ContextActions/ContextActionsBulbControl.xaml.cs b/src/Main/Base/Project/Src/Services/RefactoringService/ContextActions/ContextActionsBulbControl.xaml.cs index f9401c6d1a..583adcbf55 100644 --- a/src/Main/Base/Project/Src/Services/RefactoringService/ContextActions/ContextActionsBulbControl.xaml.cs +++ b/src/Main/Base/Project/Src/Services/RefactoringService/ContextActions/ContextActionsBulbControl.xaml.cs @@ -38,7 +38,7 @@ namespace ICSharpCode.SharpDevelop.Refactoring get { return isOpen; } set { isOpen = value; - this.Header.Opacity = isOpen ? 1.0 : 1.0; + this.Header.Opacity = isOpen ? 1.0 : 0.7; this.Header.BorderThickness = isOpen ? new Thickness(1, 1, 1, 0) : new Thickness(1); this.ActionsTreeView.Visibility = isOpen ? Visibility.Visible : Visibility.Collapsed; } diff --git a/src/Main/Base/Project/Src/Services/RefactoringService/ContextActions/ContextActionsService.cs b/src/Main/Base/Project/Src/Services/RefactoringService/ContextActions/ContextActionsService.cs index 90c7a0993e..ea10e0d9dd 100644 --- a/src/Main/Base/Project/Src/Services/RefactoringService/ContextActions/ContextActionsService.cs +++ b/src/Main/Base/Project/Src/Services/RefactoringService/ContextActions/ContextActionsService.cs @@ -39,8 +39,8 @@ namespace ICSharpCode.SharpDevelop.Refactoring /// public IEnumerable GetAvailableActions(ITextEditor editor) { - //var parseTask = ParserService.BeginParseCurrentViewContent(); - //parseTask.Wait(); + var parseTask = ParserService.BeginParseCurrentViewContent(); + parseTask.Wait(); var editorContext = new EditorContext(editor); // could run providers in parallel foreach (var provider in this.providers) { diff --git a/src/Main/Base/Project/Src/Services/RefactoringService/ContextActionsHelper.cs b/src/Main/Base/Project/Src/Services/RefactoringService/ContextActionsHelper.cs index 08fe044ca6..149da82fcb 100644 --- a/src/Main/Base/Project/Src/Services/RefactoringService/ContextActionsHelper.cs +++ b/src/Main/Base/Project/Src/Services/RefactoringService/ContextActionsHelper.cs @@ -34,9 +34,6 @@ namespace ICSharpCode.SharpDevelop.Refactoring { var baseClassList = @class.ClassInheritanceTree.Where( baseClass => (baseClass != @class) && (baseClass.CompilationUnit != null) && (baseClass.CompilationUnit.FileName != null)); - // Reverse to show the base classes from the most general to the most derived one - //.Reverse(); - //baseClassList.Sort(new BaseClassComparer()); var popupViewModel = new ContextActionsViewModel { Title = MenuService.ConvertLabel(StringParser.Parse( "${res:SharpDevelop.Refactoring.BaseClassesOf}", new StringTagPair("Name", @class.Name)))}; popupViewModel.Actions = new PopupListViewModelBuilder().BuildListViewModel(baseClassList);