From 0ee8c81933ecc4593c86cb335d7cad1df07195a7 Mon Sep 17 00:00:00 2001 From: Siegfried Pammer Date: Sun, 18 Aug 2013 16:47:37 +0200 Subject: [PATCH] add void ShowContextActionsPopup(ContextActionsPopupViewModel viewModel); to IEditorUIService --- .../AvalonEdit.AddIn/AvalonEdit.AddIn.csproj | 2 -- .../AvalonEdit.AddIn/Src/AvalonEditEditorUIService.cs | 8 ++++++++ .../Src/ContextActions/ContextActionsBulbViewModel.cs | 3 ++- .../Src/ContextActions/ContextActionsPopup.cs | 7 +++---- .../Src/ContextActions/FindBaseClasses.cs | 3 ++- .../ContextActions/FindDerivedClassesOrOverrides.cs | 6 +++--- .../Src/ContextActions/GoToEntityAction.cs | 1 + .../Editor}/ContextActions/ContextActionViewModel.cs | 7 +++---- .../ContextActions/ContextActionsPopupViewModel.cs} | 8 ++++---- src/Main/Base/Project/Editor/IEditorUIService.cs | 10 ++++++++++ src/Main/Base/Project/ICSharpCode.SharpDevelop.csproj | 3 +++ 11 files changed, 39 insertions(+), 19 deletions(-) rename src/{AddIns/DisplayBindings/AvalonEdit.AddIn/Src => Main/Base/Project/Editor}/ContextActions/ContextActionViewModel.cs (94%) rename src/{AddIns/DisplayBindings/AvalonEdit.AddIn/Src/ContextActions/ContextActionsViewModel.cs => Main/Base/Project/Editor/ContextActions/ContextActionsPopupViewModel.cs} (76%) diff --git a/src/AddIns/DisplayBindings/AvalonEdit.AddIn/AvalonEdit.AddIn.csproj b/src/AddIns/DisplayBindings/AvalonEdit.AddIn/AvalonEdit.AddIn.csproj index 687f8cba01..76cd5ff985 100644 --- a/src/AddIns/DisplayBindings/AvalonEdit.AddIn/AvalonEdit.AddIn.csproj +++ b/src/AddIns/DisplayBindings/AvalonEdit.AddIn/AvalonEdit.AddIn.csproj @@ -106,8 +106,6 @@ - - diff --git a/src/AddIns/DisplayBindings/AvalonEdit.AddIn/Src/AvalonEditEditorUIService.cs b/src/AddIns/DisplayBindings/AvalonEdit.AddIn/Src/AvalonEditEditorUIService.cs index 837da33710..5bdf41c02e 100644 --- a/src/AddIns/DisplayBindings/AvalonEdit.AddIn/Src/AvalonEditEditorUIService.cs +++ b/src/AddIns/DisplayBindings/AvalonEdit.AddIn/Src/AvalonEditEditorUIService.cs @@ -8,6 +8,8 @@ using ICSharpCode.AvalonEdit.Rendering; using ICSharpCode.NRefactory.Editor; using ICSharpCode.SharpDevelop; using ICSharpCode.SharpDevelop.Editor; +using ICSharpCode.SharpDevelop.Editor.ContextActions; +using ICSharpCode.AvalonEdit.AddIn.ContextActions; namespace ICSharpCode.AvalonEdit.AddIn { @@ -39,5 +41,11 @@ namespace ICSharpCode.AvalonEdit.AddIn textView.GetVisualPosition(new TextViewPosition(line, column), VisualYPosition.LineBottom) - textView.ScrollOffset); return positionInPixels.TransformFromDevice(textView); } + + /// + public void ShowContextActionsPopup(ContextActionsPopupViewModel viewModel) + { + new ContextActionsPopup { Actions = viewModel }.OpenAtCaretAndFocus(); + } } } diff --git a/src/AddIns/DisplayBindings/AvalonEdit.AddIn/Src/ContextActions/ContextActionsBulbViewModel.cs b/src/AddIns/DisplayBindings/AvalonEdit.AddIn/Src/ContextActions/ContextActionsBulbViewModel.cs index 1ad3ab62c8..126aefb211 100644 --- a/src/AddIns/DisplayBindings/AvalonEdit.AddIn/Src/ContextActions/ContextActionsBulbViewModel.cs +++ b/src/AddIns/DisplayBindings/AvalonEdit.AddIn/Src/ContextActions/ContextActionsBulbViewModel.cs @@ -7,13 +7,14 @@ using System.ComponentModel; using System.Threading; using System.Threading.Tasks; using System.Windows.Input; +using ICSharpCode.SharpDevelop.Editor.ContextActions; namespace ICSharpCode.AvalonEdit.AddIn.ContextActions { /// /// Description of ContextActionsHiddenViewModel. /// - public class ContextActionsBulbViewModel : ContextActionsViewModel, INotifyPropertyChanged + public class ContextActionsBulbViewModel : ContextActionsPopupViewModel, INotifyPropertyChanged { public EditorActionsProvider Model { get; private set; } diff --git a/src/AddIns/DisplayBindings/AvalonEdit.AddIn/Src/ContextActions/ContextActionsPopup.cs b/src/AddIns/DisplayBindings/AvalonEdit.AddIn/Src/ContextActions/ContextActionsPopup.cs index 48e0dfe313..32d76c88fd 100644 --- a/src/AddIns/DisplayBindings/AvalonEdit.AddIn/Src/ContextActions/ContextActionsPopup.cs +++ b/src/AddIns/DisplayBindings/AvalonEdit.AddIn/Src/ContextActions/ContextActionsPopup.cs @@ -6,10 +6,9 @@ using System.Windows.Controls.Primitives; using System.Windows.Input; using System.Windows.Media; -using ICSharpCode.NRefactory.TypeSystem; using ICSharpCode.SharpDevelop; using ICSharpCode.SharpDevelop.Editor; -using ICSharpCode.SharpDevelop.Gui; +using ICSharpCode.SharpDevelop.Editor.ContextActions; namespace ICSharpCode.AvalonEdit.AddIn.ContextActions { @@ -44,9 +43,9 @@ namespace ICSharpCode.AvalonEdit.AddIn.ContextActions set { this.Child = value; } } - public ContextActionsViewModel Actions + public ContextActionsPopupViewModel Actions { - get { return (ContextActionsViewModel)ActionsControl.DataContext; } + get { return (ContextActionsPopupViewModel)ActionsControl.DataContext; } set { ActionsControl.DataContext = value; } diff --git a/src/AddIns/DisplayBindings/AvalonEdit.AddIn/Src/ContextActions/FindBaseClasses.cs b/src/AddIns/DisplayBindings/AvalonEdit.AddIn/Src/ContextActions/FindBaseClasses.cs index dd76cd8d50..3e0627da0b 100644 --- a/src/AddIns/DisplayBindings/AvalonEdit.AddIn/Src/ContextActions/FindBaseClasses.cs +++ b/src/AddIns/DisplayBindings/AvalonEdit.AddIn/Src/ContextActions/FindBaseClasses.cs @@ -12,6 +12,7 @@ using ICSharpCode.NRefactory.Semantics; using ICSharpCode.NRefactory.TypeSystem; using ICSharpCode.SharpDevelop.Editor; using ICSharpCode.SharpDevelop.Editor.Commands; +using ICSharpCode.SharpDevelop.Editor.ContextActions; namespace ICSharpCode.AvalonEdit.AddIn.ContextActions { @@ -30,7 +31,7 @@ namespace ICSharpCode.AvalonEdit.AddIn.ContextActions static ContextActionsPopup MakePopupWithBaseClasses(ITypeDefinition @class) { var baseClassList = @class.GetAllBaseTypeDefinitions().Where(baseClass => baseClass != @class).ToList(); - var popupViewModel = new ContextActionsViewModel(); + var popupViewModel = new ContextActionsPopupViewModel(); popupViewModel.Title = MenuService.ConvertLabel(StringParser.Parse( "${res:SharpDevelop.Refactoring.BaseClassesOf}", new StringTagPair("Name", @class.Name))); popupViewModel.Actions = BuildListViewModel(baseClassList); diff --git a/src/AddIns/DisplayBindings/AvalonEdit.AddIn/Src/ContextActions/FindDerivedClassesOrOverrides.cs b/src/AddIns/DisplayBindings/AvalonEdit.AddIn/Src/ContextActions/FindDerivedClassesOrOverrides.cs index 365b9a887e..bc662fb956 100644 --- a/src/AddIns/DisplayBindings/AvalonEdit.AddIn/Src/ContextActions/FindDerivedClassesOrOverrides.cs +++ b/src/AddIns/DisplayBindings/AvalonEdit.AddIn/Src/ContextActions/FindDerivedClassesOrOverrides.cs @@ -10,8 +10,8 @@ using ICSharpCode.Core.Presentation; using ICSharpCode.NRefactory.Semantics; using ICSharpCode.NRefactory.TypeSystem; using ICSharpCode.SharpDevelop; -using ICSharpCode.SharpDevelop.Editor; using ICSharpCode.SharpDevelop.Editor.Commands; +using ICSharpCode.SharpDevelop.Editor.ContextActions; using ICSharpCode.SharpDevelop.Refactoring; namespace ICSharpCode.AvalonEdit.AddIn.ContextActions @@ -42,7 +42,7 @@ namespace ICSharpCode.AvalonEdit.AddIn.ContextActions static ContextActionsPopup MakePopupWithDerivedClasses(ITypeDefinition baseClass) { var derivedClassesTree = BuildDerivedTypesGraph(baseClass); - var popupViewModel = new ContextActionsViewModel(); + var popupViewModel = new ContextActionsPopupViewModel(); popupViewModel.Title = MenuService.ConvertLabel(StringParser.Parse( "${res:SharpDevelop.Refactoring.ClassesDerivingFrom}", new StringTagPair("Name", baseClass.Name))); popupViewModel.Actions = BuildTreeViewModel(derivedClassesTree.Children); @@ -61,7 +61,7 @@ namespace ICSharpCode.AvalonEdit.AddIn.ContextActions static ContextActionsPopup MakePopupWithOverrides(IMember member) { var derivedClassesTree = BuildDerivedTypesGraph(member.DeclaringTypeDefinition); - var popupViewModel = new ContextActionsViewModel { + var popupViewModel = new ContextActionsPopupViewModel { Title = MenuService.ConvertLabel(StringParser.Parse( "${res:SharpDevelop.Refactoring.OverridesOf}", new StringTagPair("Name", member.FullName)) diff --git a/src/AddIns/DisplayBindings/AvalonEdit.AddIn/Src/ContextActions/GoToEntityAction.cs b/src/AddIns/DisplayBindings/AvalonEdit.AddIn/Src/ContextActions/GoToEntityAction.cs index 2721d2f0d0..d9d7639698 100644 --- a/src/AddIns/DisplayBindings/AvalonEdit.AddIn/Src/ContextActions/GoToEntityAction.cs +++ b/src/AddIns/DisplayBindings/AvalonEdit.AddIn/Src/ContextActions/GoToEntityAction.cs @@ -8,6 +8,7 @@ using System.Threading.Tasks; using ICSharpCode.AvalonEdit.CodeCompletion; using ICSharpCode.NRefactory.TypeSystem; using ICSharpCode.SharpDevelop; +using ICSharpCode.SharpDevelop.Editor.ContextActions; using ICSharpCode.SharpDevelop.Refactoring; namespace ICSharpCode.AvalonEdit.AddIn.ContextActions diff --git a/src/AddIns/DisplayBindings/AvalonEdit.AddIn/Src/ContextActions/ContextActionViewModel.cs b/src/Main/Base/Project/Editor/ContextActions/ContextActionViewModel.cs similarity index 94% rename from src/AddIns/DisplayBindings/AvalonEdit.AddIn/Src/ContextActions/ContextActionViewModel.cs rename to src/Main/Base/Project/Editor/ContextActions/ContextActionViewModel.cs index c26e0fe8df..a7248352db 100644 --- a/src/AddIns/DisplayBindings/AvalonEdit.AddIn/Src/ContextActions/ContextActionViewModel.cs +++ b/src/Main/Base/Project/Editor/ContextActions/ContextActionViewModel.cs @@ -6,13 +6,12 @@ using System.Collections.ObjectModel; using System.Windows.Input; using System.Windows.Media; -using ICSharpCode.SharpDevelop; using ICSharpCode.SharpDevelop.Refactoring; -namespace ICSharpCode.AvalonEdit.AddIn.ContextActions +namespace ICSharpCode.SharpDevelop.Editor.ContextActions { /// - /// Description of ContextActionViewModel. + /// ViewModel for a . /// public class ContextActionViewModel { @@ -95,4 +94,4 @@ namespace ICSharpCode.AvalonEdit.AddIn.ContextActions return true; } } -} +} \ No newline at end of file diff --git a/src/AddIns/DisplayBindings/AvalonEdit.AddIn/Src/ContextActions/ContextActionsViewModel.cs b/src/Main/Base/Project/Editor/ContextActions/ContextActionsPopupViewModel.cs similarity index 76% rename from src/AddIns/DisplayBindings/AvalonEdit.AddIn/Src/ContextActions/ContextActionsViewModel.cs rename to src/Main/Base/Project/Editor/ContextActions/ContextActionsPopupViewModel.cs index 55de265154..d40033e20f 100644 --- a/src/AddIns/DisplayBindings/AvalonEdit.AddIn/Src/ContextActions/ContextActionsViewModel.cs +++ b/src/Main/Base/Project/Editor/ContextActions/ContextActionsPopupViewModel.cs @@ -5,12 +5,12 @@ using System; using System.Collections.ObjectModel; using System.Windows.Media; -namespace ICSharpCode.AvalonEdit.AddIn.ContextActions +namespace ICSharpCode.SharpDevelop.Editor.ContextActions { /// - /// Description of ContextActionsViewModel. + /// ViewModel for a ContextActionsPopup. /// - public class ContextActionsViewModel + public class ContextActionsPopupViewModel { public ImageSource Image { get; set; } @@ -18,4 +18,4 @@ namespace ICSharpCode.AvalonEdit.AddIn.ContextActions public ObservableCollection Actions { get; set; } } -} +} \ No newline at end of file diff --git a/src/Main/Base/Project/Editor/IEditorUIService.cs b/src/Main/Base/Project/Editor/IEditorUIService.cs index 4bc521dd35..e1a9c9d647 100644 --- a/src/Main/Base/Project/Editor/IEditorUIService.cs +++ b/src/Main/Base/Project/Editor/IEditorUIService.cs @@ -2,9 +2,14 @@ // This code is distributed under the GNU LGPL (for details please see \doc\license.txt) using System; +using System.Collections.ObjectModel; using System.Windows; using System.Windows.Controls; +using System.Windows.Input; +using System.Windows.Media; using ICSharpCode.NRefactory.Editor; +using ICSharpCode.SharpDevelop.Editor.ContextActions; +using ICSharpCode.SharpDevelop.Refactoring; namespace ICSharpCode.SharpDevelop.Editor { @@ -17,6 +22,11 @@ namespace ICSharpCode.SharpDevelop.Editor /// Gets the absolute screen position of given position in the document. /// Point GetScreenPosition(int line, int column); + + /// + /// Shows a ContextActionsPopup created from a ViewModel. + /// + void ShowContextActionsPopup(ContextActionsPopupViewModel viewModel); } public interface IInlineUIElement diff --git a/src/Main/Base/Project/ICSharpCode.SharpDevelop.csproj b/src/Main/Base/Project/ICSharpCode.SharpDevelop.csproj index 91f99b9894..7cef0ecbf2 100644 --- a/src/Main/Base/Project/ICSharpCode.SharpDevelop.csproj +++ b/src/Main/Base/Project/ICSharpCode.SharpDevelop.csproj @@ -131,6 +131,8 @@ + + @@ -833,6 +835,7 @@ +