Browse Source

When CodeCompletion window is empty, it shows "Press Ctrl+Space to show items from all namespaces", so that user learns how to use Ctrl+Space naturally.

git-svn-id: svn://svn.sharpdevelop.net/sharpdevelop/trunk@5891 1ccf3a8d-04fe-1044-b7c0-cef0b8235c61
pull/1/head
Martin Koníček 15 years ago
parent
commit
0e27d647a6
  1. 1
      src/AddIns/DisplayBindings/AvalonEdit.AddIn/AvalonEdit.AddIn.csproj
  2. 3
      src/AddIns/DisplayBindings/AvalonEdit.AddIn/Src/SharpDevelopCompletionWindow.cs
  3. 16
      src/AddIns/DisplayBindings/AvalonEdit.AddIn/Src/SharpDevelopCompletionWindow.xaml
  4. 16
      src/Libraries/AvalonEdit/ICSharpCode.AvalonEdit/CodeCompletion/CompletionList.cs
  5. 21
      src/Libraries/AvalonEdit/ICSharpCode.AvalonEdit/CodeCompletion/CompletionList.xaml
  6. 21
      src/Libraries/AvalonEdit/ICSharpCode.AvalonEdit/CodeCompletion/CompletionListBox.cs
  7. 15
      src/Libraries/AvalonEdit/ICSharpCode.AvalonEdit/CodeCompletion/CompletionWindow.cs

1
src/AddIns/DisplayBindings/AvalonEdit.AddIn/AvalonEdit.AddIn.csproj

@ -152,6 +152,7 @@ @@ -152,6 +152,7 @@
<EmbeddedResource Include="Resources\ReverseIncrementalSearchCursor.cur" />
</ItemGroup>
<ItemGroup>
<Page Include="Src\SharpDevelopCompletionWindow.xaml" />
<Page Include="themes\generic.xaml" />
<ProjectReference Include="..\..\..\Libraries\AvalonEdit\ICSharpCode.AvalonEdit\ICSharpCode.AvalonEdit.csproj">
<Project>{6C55B776-26D4-4DB3-A6AB-87E783B2F3D1}</Project>

3
src/AddIns/DisplayBindings/AvalonEdit.AddIn/Src/SharpDevelopCompletionWindow.cs

@ -11,10 +11,10 @@ using System.Windows; @@ -11,10 +11,10 @@ using System.Windows;
using System.Windows.Controls;
using System.Windows.Input;
using System.Windows.Media;
using ICSharpCode.AvalonEdit.CodeCompletion;
using ICSharpCode.AvalonEdit.Document;
using ICSharpCode.AvalonEdit.Editing;
using ICSharpCode.Core;
using ICSharpCode.SharpDevelop;
using ICSharpCode.SharpDevelop.Editor;
using ICSharpCode.SharpDevelop.Editor.CodeCompletion;
@ -84,6 +84,7 @@ namespace ICSharpCode.AvalonEdit.AddIn @@ -84,6 +84,7 @@ namespace ICSharpCode.AvalonEdit.AddIn
this.CompletionList.SelectedItem = adapter;
}
this.StartOffset -= itemList.PreselectionLength;
this.EmptyContent = StringParser.Parse("${res:ICSharpCode.AvalonEdit.AddIn.SharpDevelopCompletionWindow.EmptyText}");
}
protected override void OnSourceInitialized(EventArgs e)

16
src/AddIns/DisplayBindings/AvalonEdit.AddIn/Src/SharpDevelopCompletionWindow.xaml

@ -0,0 +1,16 @@ @@ -0,0 +1,16 @@
<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:core="http://icsharpcode.net/sharpdevelop/core"
xmlns:local="clr-namespace:ICSharpCode.AvalonEdit.AddIn"
>
<!-- Attempt to set SharpDevelopCompletionWindow.EmptyContent in xaml
<Style TargetType="{x:Type local:SharpDevelopCompletionWindow}">
<Setter Property="EmptyContent">
<Setter.Value>
<TextBlock Text="{core:Localize ICSharpCode.AvalonEdit.AddIn.SharpDevelopCompletionWindow.EmptyText}"
FontStyle="Italic" Foreground="Gray"></TextBlock>
</Setter.Value>
</Setter>
</Style>
-->
</ResourceDictionary>

16
src/Libraries/AvalonEdit/ICSharpCode.AvalonEdit/CodeCompletion/CompletionList.cs

@ -38,6 +38,22 @@ namespace ICSharpCode.AvalonEdit.CodeCompletion @@ -38,6 +38,22 @@ namespace ICSharpCode.AvalonEdit.CodeCompletion
set { isFiltering = value; }
}
/// <summary>
/// Dependency property for <see cref="EmptyContent" />.
/// </summary>
public static readonly DependencyProperty EmptyContentProperty =
DependencyProperty.Register("EmptyContent", typeof(object), typeof(CompletionList),
new FrameworkPropertyMetadata());
/// <summary>
/// Content of EmptyTemplate will be shown when CompletionList contains no items.
/// If EmptyTemplate is null, nothing will be shown.
/// </summary>
public object EmptyContent {
get { return (object)GetValue(EmptyContentProperty); }
set { SetValue(EmptyContentProperty, value); }
}
/// <summary>
/// Is raised when the completion list indicates that the user has chosen
/// an entry to be completed.

21
src/Libraries/AvalonEdit/ICSharpCode.AvalonEdit/CodeCompletion/CompletionList.xaml

@ -34,6 +34,23 @@ @@ -34,6 +34,23 @@
</Setter>
</Style>
<Style TargetType="cc:CompletionListBox" BasedOn="{StaticResource {x:Type ListBox}}">
<Style.Triggers>
<DataTrigger
Binding="{Binding RelativeSource={x:Static RelativeSource.Self}, Path=HasItems}"
Value="False"
>
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type cc:CompletionListBox}">
<ContentPresenter Content="{TemplateBinding EmptyTemplate}"></ContentPresenter>
</ControlTemplate>
</Setter.Value>
</Setter>
</DataTrigger>
</Style.Triggers>
</Style>
<Style TargetType="{x:Type cc:CompletionList}">
<Setter Property="Template">
<Setter.Value>
@ -47,6 +64,10 @@ @@ -47,6 +64,10 @@
</StackPanel>
</DataTemplate>
</ItemsControl.ItemTemplate>
<cc:CompletionListBox.EmptyTemplate>
<!-- This could be a ContentPresenter showing any content, not just TextBlock -->
<TextBlock Text="{TemplateBinding EmptyContent}" TextWrapping="Wrap" FontStyle="Italic" Foreground="Gray"></TextBlock>
</cc:CompletionListBox.EmptyTemplate>
</cc:CompletionListBox>
</ControlTemplate>
</Setter.Value>

21
src/Libraries/AvalonEdit/ICSharpCode.AvalonEdit/CodeCompletion/CompletionListBox.cs

@ -17,8 +17,29 @@ namespace ICSharpCode.AvalonEdit.CodeCompletion @@ -17,8 +17,29 @@ namespace ICSharpCode.AvalonEdit.CodeCompletion
/// </summary>
public class CompletionListBox : ListBox
{
static CompletionListBox()
{
DefaultStyleKeyProperty.OverrideMetadata(typeof(CompletionListBox),
new FrameworkPropertyMetadata(typeof(CompletionListBox)));
}
internal ScrollViewer scrollViewer;
/// <summary>
/// Dependency property for <see cref="EmptyTemplate" />.
/// </summary>
public static readonly DependencyProperty EmptyTemplateProperty =
DependencyProperty.Register("EmptyTemplate", typeof(object), typeof(CompletionListBox),
new FrameworkPropertyMetadata());
/// <summary>
/// Content of EmptyTemplate will be shown when CompletionListBox contains no items.
/// If EmptyTemplate is null, nothing will be shown.
/// </summary>
public object EmptyTemplate {
get { return (object)GetValue(EmptyTemplateProperty); }
set { SetValue(EmptyTemplateProperty, value); }
}
/// <inheritdoc/>
public override void OnApplyTemplate()
{

15
src/Libraries/AvalonEdit/ICSharpCode.AvalonEdit/CodeCompletion/CompletionWindow.cs

@ -10,9 +10,9 @@ using System.Diagnostics; @@ -10,9 +10,9 @@ using System.Diagnostics;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Controls.Primitives;
using System.Windows.Data;
using System.Windows.Input;
using System.Windows.Threading;
using ICSharpCode.AvalonEdit.Document;
using ICSharpCode.AvalonEdit.Editing;
@ -40,6 +40,7 @@ namespace ICSharpCode.AvalonEdit.CodeCompletion @@ -40,6 +40,7 @@ namespace ICSharpCode.AvalonEdit.CodeCompletion
// prevent user from resizing window to 0x0
this.MinHeight = 15;
this.MinWidth = 30;
this.EmptyContent = null;
toolTip.PlacementTarget = this;
toolTip.Placement = PlacementMode.Right;
@ -50,6 +51,18 @@ namespace ICSharpCode.AvalonEdit.CodeCompletion @@ -50,6 +51,18 @@ namespace ICSharpCode.AvalonEdit.CodeCompletion
AttachEvents();
}
/// <summary>
/// Content that will be shown when the CompletionWindow contains no items.
/// </summary>
public object EmptyContent {
get {
return this.completionList.EmptyContent;
}
set {
this.completionList.EmptyContent = value;
}
}
#region ToolTip handling
void toolTip_Closed(object sender, RoutedEventArgs e)
{

Loading…
Cancel
Save