From 3fd8c5dc720cd0ca55c6215b24bb559111cc0d23 Mon Sep 17 00:00:00 2001 From: Ivan Shumilin Date: Mon, 8 Sep 2008 16:15:20 +0000 Subject: [PATCH] Default sizes, some initializers git-svn-id: svn://svn.sharpdevelop.net/sharpdevelop/branches/3.0@3518 1ccf3a8d-04fe-1044-b7c0-cef0b8235c61 --- .../Project/BasicMetadata.cs | 15 ++++++ .../ContentControlDefaultInitializer.cs | 28 ---------- .../Project/Extensions/Initializers.cs | 52 +++++++++++++++++++ .../WpfDesign.Designer/Project/ModelTools.cs | 9 +++- .../Project/WpfDesign.Designer.csproj | 3 +- .../WpfDesign/WpfDesign/Project/Metadata.cs | 23 ++++++++ 6 files changed, 99 insertions(+), 31 deletions(-) delete mode 100644 src/AddIns/DisplayBindings/WpfDesign/WpfDesign.Designer/Project/Extensions/ContentControlDefaultInitializer.cs create mode 100644 src/AddIns/DisplayBindings/WpfDesign/WpfDesign.Designer/Project/Extensions/Initializers.cs diff --git a/src/AddIns/DisplayBindings/WpfDesign/WpfDesign.Designer/Project/BasicMetadata.cs b/src/AddIns/DisplayBindings/WpfDesign/WpfDesign.Designer/Project/BasicMetadata.cs index 99478cdf4f..18eb7ff0c6 100644 --- a/src/AddIns/DisplayBindings/WpfDesign/WpfDesign.Designer/Project/BasicMetadata.cs +++ b/src/AddIns/DisplayBindings/WpfDesign/WpfDesign.Designer/Project/BasicMetadata.cs @@ -225,6 +225,21 @@ namespace ICSharpCode.WpfDesign.Designer Metadata.AddPopularControl(typeof(Viewbox)); Metadata.AddPopularControl(typeof(Viewport3D)); Metadata.AddPopularControl(typeof(WrapPanel)); + + Metadata.AddDefaultSize(typeof(UIElement), new Size(120, 100)); + Metadata.AddDefaultSize(typeof(ContentControl), new Size(double.NaN, double.NaN)); + Metadata.AddDefaultSize(typeof(Button), new Size(75, 23)); + + var s1 = new Size(120, double.NaN); + Metadata.AddDefaultSize(typeof(Slider), s1); + Metadata.AddDefaultSize(typeof(TextBox), s1); + Metadata.AddDefaultSize(typeof(PasswordBox), s1); + Metadata.AddDefaultSize(typeof(ComboBox), s1); + Metadata.AddDefaultSize(typeof(ProgressBar), s1); + + var s2 = new Size(120, 20); + Metadata.AddDefaultSize(typeof(ToolBar), s2); + Metadata.AddDefaultSize(typeof(Menu), s2); } } } diff --git a/src/AddIns/DisplayBindings/WpfDesign/WpfDesign.Designer/Project/Extensions/ContentControlDefaultInitializer.cs b/src/AddIns/DisplayBindings/WpfDesign/WpfDesign.Designer/Project/Extensions/ContentControlDefaultInitializer.cs deleted file mode 100644 index 5609eb138b..0000000000 --- a/src/AddIns/DisplayBindings/WpfDesign/WpfDesign.Designer/Project/Extensions/ContentControlDefaultInitializer.cs +++ /dev/null @@ -1,28 +0,0 @@ -// -// -// -// -// $Revision: 2667$ -// - -using System; -using System.Windows.Controls; -using ICSharpCode.WpfDesign.Extensions; - -namespace ICSharpCode.WpfDesign.Designer.Extensions -{ - /// - /// Description of ContentControlDefaultInitializer. - /// - [ExtensionFor(typeof(ContentControl))] - public sealed class ContentControlDefaultInitializer : DefaultInitializer - { - public override void InitializeDefaults(DesignItem item) - { - DesignItemProperty contentProperty = item.Properties["Content"]; - if (contentProperty.ValueOnInstance == null) { - contentProperty.SetValue(item.ComponentType.Name); - } - } - } -} diff --git a/src/AddIns/DisplayBindings/WpfDesign/WpfDesign.Designer/Project/Extensions/Initializers.cs b/src/AddIns/DisplayBindings/WpfDesign/WpfDesign.Designer/Project/Extensions/Initializers.cs new file mode 100644 index 0000000000..4df3dd8482 --- /dev/null +++ b/src/AddIns/DisplayBindings/WpfDesign/WpfDesign.Designer/Project/Extensions/Initializers.cs @@ -0,0 +1,52 @@ +// +// +// +// +// $Revision: 2667$ +// + +using System; +using System.Windows.Controls; +using ICSharpCode.WpfDesign.Extensions; +using System.Windows; +using System.Windows.Shapes; +using System.Windows.Media; + +namespace ICSharpCode.WpfDesign.Designer.Extensions.Initializers +{ + [ExtensionFor(typeof(ContentControl))] + public class ContentControlInitializer : DefaultInitializer + { + public override void InitializeDefaults(DesignItem item) + { + DesignItemProperty contentProperty = item.Properties["Content"]; + if (contentProperty.ValueOnInstance == null) { + contentProperty.SetValue(item.ComponentType.Name); + } + } + } + + [ExtensionFor(typeof(HeaderedContentControl))] + public class HeaderedContentControlInitializer : DefaultInitializer + { + public override void InitializeDefaults(DesignItem item) + { + DesignItemProperty headerProperty = item.Properties["Header"]; + if (headerProperty.ValueOnInstance == null) { + headerProperty.SetValue(item.ComponentType.Name); + } + } + } + + [ExtensionFor(typeof(Shape))] + public class ShapeInitializer : DefaultInitializer + { + public override void InitializeDefaults(DesignItem item) + { + DesignItemProperty fillProperty = item.Properties["Fill"]; + if (fillProperty.ValueOnInstance == null) { + fillProperty.SetValue(Brushes.YellowGreen); + } + } + } +} diff --git a/src/AddIns/DisplayBindings/WpfDesign/WpfDesign.Designer/Project/ModelTools.cs b/src/AddIns/DisplayBindings/WpfDesign/WpfDesign.Designer/Project/ModelTools.cs index 889d187a04..003eaf9f75 100644 --- a/src/AddIns/DisplayBindings/WpfDesign/WpfDesign.Designer/Project/ModelTools.cs +++ b/src/AddIns/DisplayBindings/WpfDesign/WpfDesign.Designer/Project/ModelTools.cs @@ -98,7 +98,14 @@ namespace ICSharpCode.WpfDesign.Designer internal static Size GetDefaultSize(DesignItem createdItem) { - return new Size(GetWidth(createdItem.View), GetHeight(createdItem.View)); + var s = Metadata.GetDefaultSize(createdItem.ComponentType); + if (double.IsNaN(s.Width)) { + s.Width = GetWidth(createdItem.View); + } + if (double.IsNaN(s.Height)) { + s.Height = GetHeight(createdItem.View); + } + return s; } internal static double GetWidth(UIElement element) diff --git a/src/AddIns/DisplayBindings/WpfDesign/WpfDesign.Designer/Project/WpfDesign.Designer.csproj b/src/AddIns/DisplayBindings/WpfDesign/WpfDesign.Designer/Project/WpfDesign.Designer.csproj index aaf27660a8..f177785c82 100644 --- a/src/AddIns/DisplayBindings/WpfDesign/WpfDesign.Designer/Project/WpfDesign.Designer.csproj +++ b/src/AddIns/DisplayBindings/WpfDesign/WpfDesign.Designer/Project/WpfDesign.Designer.csproj @@ -97,7 +97,7 @@ Code - + Code @@ -284,7 +284,6 @@ Designer - diff --git a/src/AddIns/DisplayBindings/WpfDesign/WpfDesign/Project/Metadata.cs b/src/AddIns/DisplayBindings/WpfDesign/WpfDesign/Project/Metadata.cs index f9bec840a7..ee7eab0225 100644 --- a/src/AddIns/DisplayBindings/WpfDesign/WpfDesign/Project/Metadata.cs +++ b/src/AddIns/DisplayBindings/WpfDesign/WpfDesign/Project/Metadata.cs @@ -221,6 +221,29 @@ namespace ICSharpCode.WpfDesign return placementDisabled.Contains(type); } } + + static Dictionary defaultSizes = new Dictionary(); + + public static void AddDefaultSize(Type t, Size s) + { + lock (defaultSizes) { + defaultSizes[t] = s; + } + } + + public static Size GetDefaultSize(Type t) + { + Size s; + lock (defaultSizes) { + while (t != null) { + if (defaultSizes.TryGetValue(t, out s)) { + return s; + } + t = t.BaseType; + } + } + return new Size(double.NaN, double.NaN); + } } public class NumberRange