From 0d742ce90f9eea664e85e226b99bf965767c81b6 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Martin=20Kon=C3=AD=C4=8Dek?= <martin.konicek@gmail.com>
Date: Wed, 2 Jun 2010 18:25:32 +0000
Subject: [PATCH] Commented out the style for SharpDevelopCompletionWindow so
 that the "Set property 'System.Windows.Setter.Property' threw an exception.'
 Value cannot be null."  crash in ctor of CompletionWindow dissapears.

git-svn-id: svn://svn.sharpdevelop.net/sharpdevelop/trunk@5896 1ccf3a8d-04fe-1044-b7c0-cef0b8235c61
---
 .../Src/SharpDevelopCompletionWindow.cs          |  6 ++++++
 .../Src/SharpDevelopCompletionWindow.xaml        |  9 +--------
 .../AvalonEdit.AddIn/themes/generic.xaml         | 16 ++++++++++++++++
 .../CodeCompletion/CompletionList.cs             | 12 ++++++------
 .../CodeCompletion/CompletionList.xaml           | 16 ++++------------
 .../CodeCompletion/CompletionListBox.cs          |  6 +++---
 .../CodeCompletion/CompletionWindow.cs           |  6 +++---
 7 files changed, 39 insertions(+), 32 deletions(-)

diff --git a/src/AddIns/DisplayBindings/AvalonEdit.AddIn/Src/SharpDevelopCompletionWindow.cs b/src/AddIns/DisplayBindings/AvalonEdit.AddIn/Src/SharpDevelopCompletionWindow.cs
index b48f1273df..3454af814b 100644
--- a/src/AddIns/DisplayBindings/AvalonEdit.AddIn/Src/SharpDevelopCompletionWindow.cs
+++ b/src/AddIns/DisplayBindings/AvalonEdit.AddIn/Src/SharpDevelopCompletionWindow.cs
@@ -26,6 +26,12 @@ namespace ICSharpCode.AvalonEdit.AddIn
 	/// </summary>
 	public class SharpDevelopCompletionWindow : CompletionWindow, ICompletionListWindow
 	{
+		/*static SharpDevelopCompletionWindow()
+		{
+			DefaultStyleKeyProperty.OverrideMetadata(typeof(SharpDevelopCompletionWindow),
+			                                         new FrameworkPropertyMetadata(typeof(SharpDevelopCompletionWindow)));
+		}*/
+		
 		public ICompletionItem SelectedItem {
 			get {
 				return ((CodeCompletionDataAdapter)this.CompletionList.SelectedItem).Item;
diff --git a/src/AddIns/DisplayBindings/AvalonEdit.AddIn/Src/SharpDevelopCompletionWindow.xaml b/src/AddIns/DisplayBindings/AvalonEdit.AddIn/Src/SharpDevelopCompletionWindow.xaml
index 8407b3e69a..9d49864cb6 100644
--- a/src/AddIns/DisplayBindings/AvalonEdit.AddIn/Src/SharpDevelopCompletionWindow.xaml
+++ b/src/AddIns/DisplayBindings/AvalonEdit.AddIn/Src/SharpDevelopCompletionWindow.xaml
@@ -3,12 +3,5 @@
 	xmlns:core="http://icsharpcode.net/sharpdevelop/core"
 	xmlns:local="clr-namespace:ICSharpCode.AvalonEdit.AddIn"
 >
-	<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>
\ No newline at end of file
diff --git a/src/AddIns/DisplayBindings/AvalonEdit.AddIn/themes/generic.xaml b/src/AddIns/DisplayBindings/AvalonEdit.AddIn/themes/generic.xaml
index 3124eeebfa..3c2470e03a 100644
--- a/src/AddIns/DisplayBindings/AvalonEdit.AddIn/themes/generic.xaml
+++ b/src/AddIns/DisplayBindings/AvalonEdit.AddIn/themes/generic.xaml
@@ -2,10 +2,26 @@
 	xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
 	xmlns:local="clr-namespace:ICSharpCode.AvalonEdit.AddIn"
 	xmlns:widgets="http://icsharpcode.net/sharpdevelop/widgets"
+	xmlns:core="http://icsharpcode.net/sharpdevelop/core"
 >
+	<!--  
 	<ResourceDictionary.MergedDictionaries>
       <ResourceDictionary Source="/ICSharpCode.AvalonEdit.AddIn;component/Src/SharpDevelopCompletionWindow.xaml"/>
     </ResourceDictionary.MergedDictionaries>
+	-->
+	
+	<!-- 
+	<Style TargetType="{x:Type local:SharpDevelopCompletionWindow}">
+		<Setter Property="EmptyTemplate">
+			<Setter.Value>
+				<ControlTemplate TargetType="{x:Type local:SharpDevelopCompletionWindow}">
+					<TextBlock Text="{core:Localize ICSharpCode.AvalonEdit.AddIn.SharpDevelopCompletionWindow.EmptyText}"
+							FontStyle="Italic" Foreground="Gray"></TextBlock>
+				</ControlTemplate>
+			</Setter.Value>
+		</Setter>
+	</Style>
+	-->
 	
 	<Style TargetType="{x:Type local:SharpDevelopTextEditor}">
 		<Setter Property="Background" Value="{DynamicResource {x:Static SystemColors.WindowBrushKey}}" />
diff --git a/src/Libraries/AvalonEdit/ICSharpCode.AvalonEdit/CodeCompletion/CompletionList.cs b/src/Libraries/AvalonEdit/ICSharpCode.AvalonEdit/CodeCompletion/CompletionList.cs
index 8f13d6a7bf..3e0e5bf572 100644
--- a/src/Libraries/AvalonEdit/ICSharpCode.AvalonEdit/CodeCompletion/CompletionList.cs
+++ b/src/Libraries/AvalonEdit/ICSharpCode.AvalonEdit/CodeCompletion/CompletionList.cs
@@ -39,19 +39,19 @@ namespace ICSharpCode.AvalonEdit.CodeCompletion
 		}
 		
 		/// <summary>
-		/// Dependency property for <see cref="EmptyContent" />.
+		/// Dependency property for <see cref="EmptyTemplate" />.
 		/// </summary>
-		public static readonly DependencyProperty EmptyContentProperty =
-			DependencyProperty.Register("EmptyContent", typeof(object), typeof(CompletionList),
+		public static readonly DependencyProperty EmptyTemplateProperty =
+			DependencyProperty.Register("EmptyTemplate", typeof(ControlTemplate), 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); }
+		public ControlTemplate EmptyTemplate {
+			get { return (ControlTemplate)GetValue(EmptyTemplateProperty); }
+			set { SetValue(EmptyTemplateProperty, value); }
 		}
 		
 		/// <summary>
diff --git a/src/Libraries/AvalonEdit/ICSharpCode.AvalonEdit/CodeCompletion/CompletionList.xaml b/src/Libraries/AvalonEdit/ICSharpCode.AvalonEdit/CodeCompletion/CompletionList.xaml
index 48b2bdf0c6..61d7fa2acf 100644
--- a/src/Libraries/AvalonEdit/ICSharpCode.AvalonEdit/CodeCompletion/CompletionList.xaml
+++ b/src/Libraries/AvalonEdit/ICSharpCode.AvalonEdit/CodeCompletion/CompletionList.xaml
@@ -40,13 +40,7 @@
             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>
+            <Setter Property="Template" Value="{Binding EmptyTemplate}" />
         </DataTrigger>
     </Style.Triggers>
 	</Style>
@@ -55,7 +49,9 @@
 		<Setter Property="Template">
 			<Setter.Value>
 				<ControlTemplate TargetType="{x:Type cc:CompletionList}">
-					<cc:CompletionListBox x:Name="PART_ListBox" ItemContainerStyle="{StaticResource CompletionListBoxItem}">
+					<cc:CompletionListBox x:Name="PART_ListBox" 
+							ItemContainerStyle="{StaticResource CompletionListBoxItem}" 
+							EmptyTemplate="{TemplateBinding EmptyTemplate}">
 						<ItemsControl.ItemTemplate>
 							<DataTemplate>
 								<StackPanel Orientation="Horizontal">
@@ -64,10 +60,6 @@
 								</StackPanel>
 							</DataTemplate>
 						</ItemsControl.ItemTemplate>
-						<cc:CompletionListBox.EmptyTemplate>
-							    <!-- EmptyContent provided by user will be displayed in case the list is empty -->
-								<ContentPresenter Content="{TemplateBinding EmptyContent}"></ContentPresenter>
-						</cc:CompletionListBox.EmptyTemplate>
 					</cc:CompletionListBox>
 				</ControlTemplate>
 			</Setter.Value>
diff --git a/src/Libraries/AvalonEdit/ICSharpCode.AvalonEdit/CodeCompletion/CompletionListBox.cs b/src/Libraries/AvalonEdit/ICSharpCode.AvalonEdit/CodeCompletion/CompletionListBox.cs
index 7ca2c2a8be..76077b66ba 100644
--- a/src/Libraries/AvalonEdit/ICSharpCode.AvalonEdit/CodeCompletion/CompletionListBox.cs
+++ b/src/Libraries/AvalonEdit/ICSharpCode.AvalonEdit/CodeCompletion/CompletionListBox.cs
@@ -29,14 +29,14 @@ namespace ICSharpCode.AvalonEdit.CodeCompletion
 		/// Dependency property for <see cref="EmptyTemplate" />.
 		/// </summary>
 		public static readonly DependencyProperty EmptyTemplateProperty =
-			DependencyProperty.Register("EmptyTemplate", typeof(object), typeof(CompletionListBox),
+			DependencyProperty.Register("EmptyTemplate", typeof(ControlTemplate), 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); }
+		public ControlTemplate EmptyTemplate {
+			get { return (ControlTemplate)GetValue(EmptyTemplateProperty); }
 			set { SetValue(EmptyTemplateProperty, value); }
 		}
 		
diff --git a/src/Libraries/AvalonEdit/ICSharpCode.AvalonEdit/CodeCompletion/CompletionWindow.cs b/src/Libraries/AvalonEdit/ICSharpCode.AvalonEdit/CodeCompletion/CompletionWindow.cs
index 7998df060e..1eeda222d2 100644
--- a/src/Libraries/AvalonEdit/ICSharpCode.AvalonEdit/CodeCompletion/CompletionWindow.cs
+++ b/src/Libraries/AvalonEdit/ICSharpCode.AvalonEdit/CodeCompletion/CompletionWindow.cs
@@ -53,12 +53,12 @@ namespace ICSharpCode.AvalonEdit.CodeCompletion
 		/// <summary>
 		/// Content that will be shown when the CompletionWindow contains no items.
 		/// </summary>
-		public object EmptyContent {
+		public ControlTemplate EmptyTemplate {
 			get { 
-				return this.completionList.EmptyContent;
+				return this.completionList.EmptyTemplate;
 			}
 			set { 
-				this.completionList.EmptyContent = value;
+				this.completionList.EmptyTemplate = value;
 			}
 		}