Browse Source

Derived classes popup closes when action used or focus lost.

git-svn-id: svn://svn.sharpdevelop.net/sharpdevelop/trunk@6001 1ccf3a8d-04fe-1044-b7c0-cef0b8235c61
pull/1/head
Martin Koníček 15 years ago
parent
commit
18bbfe2f38
  1. 2
      src/Main/Base/Project/Src/Services/RefactoringService/ContextActions/ContextActionsControl.xaml
  2. 8
      src/Main/Base/Project/Src/Services/RefactoringService/ContextActions/ContextActionsControl.xaml.cs
  3. 8
      src/Main/Base/Project/Src/Services/RefactoringService/ContextActions/ContextActionsPopup.cs
  4. 5
      src/Main/Base/Project/Src/Services/RefactoringService/RefactoringMenuBuilder.cs

2
src/Main/Base/Project/Src/Services/RefactoringService/ContextActions/ContextActionsControl.xaml

@ -60,7 +60,7 @@ @@ -60,7 +60,7 @@
<Setter.Value>
<ControlTemplate TargetType="TreeViewItem">
<StackPanel>
<Button Command="{Binding ActionCommand}" Style="{StaticResource ClearButton}">
<Button Command="{Binding ActionCommand}" Style="{StaticResource ClearButton}" Click="ActionButtonClick">
<Border SnapsToDevicePixels="True">
<ContentPresenter Content="{TemplateBinding HeaderedContentControl.Header}" ContentTemplate="{TemplateBinding HeaderedContentControl.HeaderTemplate}" ContentStringFormat="{TemplateBinding HeaderedItemsControl.HeaderStringFormat}" ContentSource="Header" Name="PART_Header"
HorizontalAlignment="Stretch" SnapsToDevicePixels="{TemplateBinding UIElement.SnapsToDevicePixels}" />

8
src/Main/Base/Project/Src/Services/RefactoringService/ContextActions/ContextActionsControl.xaml.cs

@ -26,6 +26,8 @@ namespace ICSharpCode.SharpDevelop.Refactoring @@ -26,6 +26,8 @@ namespace ICSharpCode.SharpDevelop.Refactoring
InitializeComponent();
}
public event EventHandler ActionExecuted;
public new void Focus()
{
var firstButton = SearchVisualTree<Button>(this);
@ -34,6 +36,12 @@ namespace ICSharpCode.SharpDevelop.Refactoring @@ -34,6 +36,12 @@ namespace ICSharpCode.SharpDevelop.Refactoring
firstButton.Focus();
}
void ActionButtonClick(object sender, RoutedEventArgs e)
{
if (ActionExecuted != null)
ActionExecuted(this, EventArgs.Empty);
}
/// <summary>
/// Returns the first occurence of object of type <paramref name="T" /> in the visual tree of <paramref name="dependencyObject" />.
/// </summary>

8
src/Main/Base/Project/Src/Services/RefactoringService/ContextActions/ContextActionsPopup.cs

@ -17,7 +17,10 @@ namespace ICSharpCode.SharpDevelop.Refactoring @@ -17,7 +17,10 @@ namespace ICSharpCode.SharpDevelop.Refactoring
{
public ContextActionsPopup()
{
this.StaysOpen = false; // Close on lost focus
this.ActionsControl = new ContextActionsControl();
// Close when any action excecuted
this.ActionsControl.ActionExecuted += delegate { this.Close(); };
}
private ContextActionsControl ActionsControl
@ -41,5 +44,10 @@ namespace ICSharpCode.SharpDevelop.Refactoring @@ -41,5 +44,10 @@ namespace ICSharpCode.SharpDevelop.Refactoring
{
this.IsOpen = true;
}
public void Close()
{
this.IsOpen = false;
}
}
}

5
src/Main/Base/Project/Src/Services/RefactoringService/RefactoringMenuBuilder.cs

@ -190,7 +190,7 @@ namespace ICSharpCode.SharpDevelop.Refactoring @@ -190,7 +190,7 @@ namespace ICSharpCode.SharpDevelop.Refactoring
item.Click += delegate {
var derivedClassesTree = RefactoringService.FindDerivedClassesTree(baseClass);
var popupViewModel = BuildDerivedClassesPopupViewModel(baseClass, derivedClassesTree);
var popup = new ContextActionsPopup { DataContext = popupViewModel };
var popup = new ContextActionsPopup { Actions = popupViewModel };
// position popup to caret - how?
popup.Open();
popup.Focus();
@ -200,7 +200,8 @@ namespace ICSharpCode.SharpDevelop.Refactoring @@ -200,7 +200,8 @@ namespace ICSharpCode.SharpDevelop.Refactoring
ContextActionsViewModel BuildDerivedClassesPopupViewModel(IClass baseClass, IEnumerable<ITreeNode<IClass>> derivedClassesTree)
{
var viewModel = new ContextActionsViewModel { Title = "Classes deriving from " + baseClass.Name };
var viewModel = new ContextActionsViewModel { Title = MenuService.ConvertLabel(StringParser.Parse(
"${res:SharpDevelop.Refactoring.ClassesDerivingFrom}", new StringTagPair("Name", baseClass.Name)))};
viewModel.Actions = BuildClassTreeViewModel(derivedClassesTree);
return viewModel;
}

Loading…
Cancel
Save