diff --git a/src/AddIns/DisplayBindings/WpfDesign/WpfDesign.Designer/Project/DesignPanel.cs b/src/AddIns/DisplayBindings/WpfDesign/WpfDesign.Designer/Project/DesignPanel.cs index 558585c50e..a413005fb2 100644 --- a/src/AddIns/DisplayBindings/WpfDesign/WpfDesign.Designer/Project/DesignPanel.cs +++ b/src/AddIns/DisplayBindings/WpfDesign/WpfDesign.Designer/Project/DesignPanel.cs @@ -450,11 +450,11 @@ namespace ICSharpCode.WpfDesign.Designer #region ContextMenu - private Dictionary> contextMenusAndEntries = new Dictionary>(); + private Dictionary>> contextMenusAndEntries = new Dictionary>>(); public void AddContextMenu(ContextMenu contextMenu) { - contextMenusAndEntries.Add(contextMenu, new List(contextMenu.Items.Cast())); + contextMenusAndEntries.Add(contextMenu, new Tuple>(contextMenusAndEntries.Count, new List(contextMenu.Items.Cast()))); contextMenu.Items.Clear(); UpdateContextMenu(); @@ -477,16 +477,16 @@ namespace ICSharpCode.WpfDesign.Designer this.ContextMenu.Items.Clear(); - foreach (var entries in contextMenusAndEntries.Values) - { - if (this.ContextMenu.Items.Count > 0) - this.ContextMenu.Items.Add(new Separator()); + foreach (var entries in contextMenusAndEntries.Values.OrderBy(x => x.Item1).Select(x => x.Item2)) + { + if (this.ContextMenu.Items.Count > 0) + this.ContextMenu.Items.Add(new Separator()); foreach (var entry in entries) { ContextMenu.Items.Add(entry); } - } + } } #endregion diff --git a/src/AddIns/DisplayBindings/WpfDesign/WpfDesign.Designer/Project/Extensions/PartialPanelSelectionHandler.cs b/src/AddIns/DisplayBindings/WpfDesign/WpfDesign.Designer/Project/Extensions/PartialPanelSelectionHandler.cs index 26159e559d..5c03df06a3 100644 --- a/src/AddIns/DisplayBindings/WpfDesign/WpfDesign.Designer/Project/Extensions/PartialPanelSelectionHandler.cs +++ b/src/AddIns/DisplayBindings/WpfDesign/WpfDesign.Designer/Project/Extensions/PartialPanelSelectionHandler.cs @@ -1,11 +1,21 @@ -/* - * Created by SharpDevelop. - * User: trubra - * Date: 2014-08-06 - * Time: 14:13 - * - * To change this template use Tools | Options | Coding | Edit Standard Headers. - */ +// Copyright (c) 2014 AlphaSierraPapa for the SharpDevelop Team +// +// Permission is hereby granted, free of charge, to any person obtaining a copy of this +// software and associated documentation files (the "Software"), to deal in the Software +// without restriction, including without limitation the rights to use, copy, modify, merge, +// publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons +// to whom the Software is furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in all copies or +// substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, +// INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR +// PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE +// FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR +// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER +// DEALINGS IN THE SOFTWARE. + using System; using System.Collections.Generic; using System.Diagnostics; diff --git a/src/AddIns/DisplayBindings/WpfDesign/WpfDesign.Designer/Project/Extensions/RightClickContextMenu.xaml b/src/AddIns/DisplayBindings/WpfDesign/WpfDesign.Designer/Project/Extensions/RightClickContextMenu.xaml index 6d0e41b6d8..81c743fed1 100644 --- a/src/AddIns/DisplayBindings/WpfDesign/WpfDesign.Designer/Project/Extensions/RightClickContextMenu.xaml +++ b/src/AddIns/DisplayBindings/WpfDesign/WpfDesign.Designer/Project/Extensions/RightClickContextMenu.xaml @@ -3,8 +3,24 @@ xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:Translation="clr-namespace:ICSharpCode.WpfDesign.Designer" > - - - - + + + + + + + + + + + + + + + + + + + + diff --git a/src/AddIns/DisplayBindings/WpfDesign/WpfDesign.Designer/Project/Extensions/RightClickMultipleItemsContextMenuExtension.cs b/src/AddIns/DisplayBindings/WpfDesign/WpfDesign.Designer/Project/Extensions/RightClickMultipleItemsContextMenuExtension.cs index eea059067d..11f7fcec88 100644 --- a/src/AddIns/DisplayBindings/WpfDesign/WpfDesign.Designer/Project/Extensions/RightClickMultipleItemsContextMenuExtension.cs +++ b/src/AddIns/DisplayBindings/WpfDesign/WpfDesign.Designer/Project/Extensions/RightClickMultipleItemsContextMenuExtension.cs @@ -31,10 +31,10 @@ namespace ICSharpCode.WpfDesign.Designer.Extensions /// /// /// - [ExtensionServer(typeof(MultipleSelectedExtensionServer))] + [ExtensionServer(typeof(PrimarySelectionButOnlyWhenMultipleSelectedExtensionServer))] [ExtensionFor(typeof(UIElement))] public class RightClickMultipleItemsContextMenuExtension : SelectionAdornerProvider - { + { DesignPanel panel; ContextMenu contextMenu; diff --git a/src/AddIns/DisplayBindings/WpfDesign/WpfDesign.Designer/Project/Extensions/TextBlockRightClickContextMenu.xaml b/src/AddIns/DisplayBindings/WpfDesign/WpfDesign.Designer/Project/Extensions/TextBlockRightClickContextMenu.xaml index e4bc9cd3c6..986ba39960 100644 --- a/src/AddIns/DisplayBindings/WpfDesign/WpfDesign.Designer/Project/Extensions/TextBlockRightClickContextMenu.xaml +++ b/src/AddIns/DisplayBindings/WpfDesign/WpfDesign.Designer/Project/Extensions/TextBlockRightClickContextMenu.xaml @@ -3,5 +3,9 @@ xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:Translation="clr-namespace:ICSharpCode.WpfDesign.Designer" > - + + + + + diff --git a/src/AddIns/DisplayBindings/WpfDesign/WpfDesign.Designer/Project/Extensions/TextBlockRightClickContextMenuExtension.cs b/src/AddIns/DisplayBindings/WpfDesign/WpfDesign.Designer/Project/Extensions/TextBlockRightClickContextMenuExtension.cs index 0553b5aa2d..fd89f3db5f 100644 --- a/src/AddIns/DisplayBindings/WpfDesign/WpfDesign.Designer/Project/Extensions/TextBlockRightClickContextMenuExtension.cs +++ b/src/AddIns/DisplayBindings/WpfDesign/WpfDesign.Designer/Project/Extensions/TextBlockRightClickContextMenuExtension.cs @@ -30,6 +30,7 @@ namespace ICSharpCode.WpfDesign.Designer.Extensions { [ExtensionServer(typeof (OnlyOneItemSelectedExtensionServer))] [ExtensionFor(typeof (TextBlock))] + [Extension(Order = 10)] public class TextBlockRightClickContextMenuExtension : PrimarySelectionAdornerProvider { DesignPanel panel; diff --git a/src/AddIns/DisplayBindings/WpfDesign/WpfDesign.Designer/Project/Images/edit-bold.png b/src/AddIns/DisplayBindings/WpfDesign/WpfDesign.Designer/Project/Images/edit-bold.png new file mode 100644 index 0000000000..200b9cfe5f Binary files /dev/null and b/src/AddIns/DisplayBindings/WpfDesign/WpfDesign.Designer/Project/Images/edit-bold.png differ diff --git a/src/AddIns/DisplayBindings/WpfDesign/WpfDesign.Designer/Project/Images/edit-color.png b/src/AddIns/DisplayBindings/WpfDesign/WpfDesign.Designer/Project/Images/edit-color.png new file mode 100644 index 0000000000..676f1abb5e Binary files /dev/null and b/src/AddIns/DisplayBindings/WpfDesign/WpfDesign.Designer/Project/Images/edit-color.png differ diff --git a/src/AddIns/DisplayBindings/WpfDesign/WpfDesign.Designer/Project/Images/edit-italic.png b/src/AddIns/DisplayBindings/WpfDesign/WpfDesign.Designer/Project/Images/edit-italic.png new file mode 100644 index 0000000000..18052c2e09 Binary files /dev/null and b/src/AddIns/DisplayBindings/WpfDesign/WpfDesign.Designer/Project/Images/edit-italic.png differ diff --git a/src/AddIns/DisplayBindings/WpfDesign/WpfDesign.Designer/Project/Images/edit-strike.png b/src/AddIns/DisplayBindings/WpfDesign/WpfDesign.Designer/Project/Images/edit-strike.png new file mode 100644 index 0000000000..fa87f129ac Binary files /dev/null and b/src/AddIns/DisplayBindings/WpfDesign/WpfDesign.Designer/Project/Images/edit-strike.png differ diff --git a/src/AddIns/DisplayBindings/WpfDesign/WpfDesign.Designer/Project/Images/edit.png b/src/AddIns/DisplayBindings/WpfDesign/WpfDesign.Designer/Project/Images/edit.png new file mode 100644 index 0000000000..6db18b4ef1 Binary files /dev/null and b/src/AddIns/DisplayBindings/WpfDesign/WpfDesign.Designer/Project/Images/edit.png differ diff --git a/src/AddIns/DisplayBindings/WpfDesign/WpfDesign.Designer/Project/Images/layers-alignment-bottom.png b/src/AddIns/DisplayBindings/WpfDesign/WpfDesign.Designer/Project/Images/layers-alignment-bottom.png new file mode 100644 index 0000000000..17240991dd Binary files /dev/null and b/src/AddIns/DisplayBindings/WpfDesign/WpfDesign.Designer/Project/Images/layers-alignment-bottom.png differ diff --git a/src/AddIns/DisplayBindings/WpfDesign/WpfDesign.Designer/Project/Images/layers-alignment-center.png b/src/AddIns/DisplayBindings/WpfDesign/WpfDesign.Designer/Project/Images/layers-alignment-center.png new file mode 100644 index 0000000000..1a2ad5dec2 Binary files /dev/null and b/src/AddIns/DisplayBindings/WpfDesign/WpfDesign.Designer/Project/Images/layers-alignment-center.png differ diff --git a/src/AddIns/DisplayBindings/WpfDesign/WpfDesign.Designer/Project/Images/layers-alignment-left.png b/src/AddIns/DisplayBindings/WpfDesign/WpfDesign.Designer/Project/Images/layers-alignment-left.png new file mode 100644 index 0000000000..b96cf70205 Binary files /dev/null and b/src/AddIns/DisplayBindings/WpfDesign/WpfDesign.Designer/Project/Images/layers-alignment-left.png differ diff --git a/src/AddIns/DisplayBindings/WpfDesign/WpfDesign.Designer/Project/Images/layers-alignment-middle.png b/src/AddIns/DisplayBindings/WpfDesign/WpfDesign.Designer/Project/Images/layers-alignment-middle.png new file mode 100644 index 0000000000..a098f2e3fc Binary files /dev/null and b/src/AddIns/DisplayBindings/WpfDesign/WpfDesign.Designer/Project/Images/layers-alignment-middle.png differ diff --git a/src/AddIns/DisplayBindings/WpfDesign/WpfDesign.Designer/Project/Images/layers-alignment-right.png b/src/AddIns/DisplayBindings/WpfDesign/WpfDesign.Designer/Project/Images/layers-alignment-right.png new file mode 100644 index 0000000000..abbd5d1d9d Binary files /dev/null and b/src/AddIns/DisplayBindings/WpfDesign/WpfDesign.Designer/Project/Images/layers-alignment-right.png differ diff --git a/src/AddIns/DisplayBindings/WpfDesign/WpfDesign.Designer/Project/Images/layers-alignment.png b/src/AddIns/DisplayBindings/WpfDesign/WpfDesign.Designer/Project/Images/layers-alignment.png new file mode 100644 index 0000000000..1b10483acf Binary files /dev/null and b/src/AddIns/DisplayBindings/WpfDesign/WpfDesign.Designer/Project/Images/layers-alignment.png differ diff --git a/src/AddIns/DisplayBindings/WpfDesign/WpfDesign.Designer/Project/Images/layers-arrange-back.png b/src/AddIns/DisplayBindings/WpfDesign/WpfDesign.Designer/Project/Images/layers-arrange-back.png new file mode 100644 index 0000000000..0effc3bee3 Binary files /dev/null and b/src/AddIns/DisplayBindings/WpfDesign/WpfDesign.Designer/Project/Images/layers-arrange-back.png differ diff --git a/src/AddIns/DisplayBindings/WpfDesign/WpfDesign.Designer/Project/Images/layers-arrange.png b/src/AddIns/DisplayBindings/WpfDesign/WpfDesign.Designer/Project/Images/layers-arrange.png new file mode 100644 index 0000000000..7bea99aac0 Binary files /dev/null and b/src/AddIns/DisplayBindings/WpfDesign/WpfDesign.Designer/Project/Images/layers-arrange.png differ diff --git a/src/AddIns/DisplayBindings/WpfDesign/WpfDesign.Designer/Project/Images/layers-stack-arrange-back.png b/src/AddIns/DisplayBindings/WpfDesign/WpfDesign.Designer/Project/Images/layers-stack-arrange-back.png new file mode 100644 index 0000000000..3e56ba24ad Binary files /dev/null and b/src/AddIns/DisplayBindings/WpfDesign/WpfDesign.Designer/Project/Images/layers-stack-arrange-back.png differ diff --git a/src/AddIns/DisplayBindings/WpfDesign/WpfDesign.Designer/Project/Images/layers-stack-arrange.png b/src/AddIns/DisplayBindings/WpfDesign/WpfDesign.Designer/Project/Images/layers-stack-arrange.png new file mode 100644 index 0000000000..db3286bb9a Binary files /dev/null and b/src/AddIns/DisplayBindings/WpfDesign/WpfDesign.Designer/Project/Images/layers-stack-arrange.png differ diff --git a/src/AddIns/DisplayBindings/WpfDesign/WpfDesign.Designer/Project/Translations.cs b/src/AddIns/DisplayBindings/WpfDesign/WpfDesign.Designer/Project/Translations.cs index ebb196ca26..eca0f9ac3d 100644 --- a/src/AddIns/DisplayBindings/WpfDesign/WpfDesign.Designer/Project/Translations.cs +++ b/src/AddIns/DisplayBindings/WpfDesign/WpfDesign.Designer/Project/Translations.cs @@ -83,5 +83,15 @@ namespace ICSharpCode.WpfDesign.Designer return "Wrap in Border"; } } - } + + public virtual string FormatedTextEditor + { + get + { + return "Formated Text Editor"; + } + } + + + } } 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 8f612f1e35..70a098f32d 100644 --- a/src/AddIns/DisplayBindings/WpfDesign/WpfDesign.Designer/Project/WpfDesign.Designer.csproj +++ b/src/AddIns/DisplayBindings/WpfDesign/WpfDesign.Designer/Project/WpfDesign.Designer.csproj @@ -393,7 +393,22 @@ - + + + + + + + + + + + + + + + + @@ -407,4 +422,7 @@ + + + \ No newline at end of file diff --git a/src/AddIns/DisplayBindings/WpfDesign/WpfDesign/Project/Extensions/ExtensionAttribute.cs b/src/AddIns/DisplayBindings/WpfDesign/WpfDesign/Project/Extensions/ExtensionAttribute.cs new file mode 100644 index 0000000000..2f321ae680 --- /dev/null +++ b/src/AddIns/DisplayBindings/WpfDesign/WpfDesign/Project/Extensions/ExtensionAttribute.cs @@ -0,0 +1,32 @@ +// Copyright (c) 2014 AlphaSierraPapa for the SharpDevelop Team +// +// Permission is hereby granted, free of charge, to any person obtaining a copy of this +// software and associated documentation files (the "Software"), to deal in the Software +// without restriction, including without limitation the rights to use, copy, modify, merge, +// publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons +// to whom the Software is furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in all copies or +// substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, +// INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR +// PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE +// FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR +// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER +// DEALINGS IN THE SOFTWARE. + +using System; + +namespace ICSharpCode.WpfDesign.Extensions +{ + /// + /// Attribute to specify Properties of the Extension. + /// + [AttributeUsage(AttributeTargets.Class, AllowMultiple=false, Inherited=false)] + public sealed class ExtensionAttribute : Attribute + { + //The Order in wich the Extensions are used + public int Order { get; set; } + } +} diff --git a/src/AddIns/DisplayBindings/WpfDesign/WpfDesign/Project/Extensions/ExtensionManager.cs b/src/AddIns/DisplayBindings/WpfDesign/WpfDesign/Project/Extensions/ExtensionManager.cs index 21046f321e..676e2400da 100644 --- a/src/AddIns/DisplayBindings/WpfDesign/WpfDesign/Project/Extensions/ExtensionManager.cs +++ b/src/AddIns/DisplayBindings/WpfDesign/WpfDesign/Project/Extensions/ExtensionManager.cs @@ -65,12 +65,14 @@ namespace ICSharpCode.WpfDesign.Extensions internal readonly Type ExtensionType; internal readonly ExtensionServer Server; internal readonly Type OverriddenExtensionType; - - public ExtensionEntry(Type extensionType, ExtensionServer server, Type overriddenExtensionType) + internal readonly int Order; + + public ExtensionEntry(Type extensionType, ExtensionServer server, Type overriddenExtensionType, int Order) { this.ExtensionType = extensionType; this.Server = server; this.OverriddenExtensionType = overriddenExtensionType; + this.Order = Order; } } @@ -104,7 +106,7 @@ namespace ICSharpCode.WpfDesign.Extensions result.Add(entry); } } - return result; + return result.OrderBy(x => x.Order).ToList(); } /// @@ -184,7 +186,8 @@ namespace ICSharpCode.WpfDesign.Extensions foreach (ExtensionForAttribute designerFor in extensionForAttributes) { ExtensionServer server = GetServerForExtension(type); - AddExtensionEntry(designerFor.DesignedItemType, new ExtensionEntry(type, server, designerFor.OverrideExtension)); + ExtensionAttribute extensionAttribute = type.GetCustomAttributes(typeof(ExtensionAttribute), false).FirstOrDefault() as ExtensionAttribute; + AddExtensionEntry(designerFor.DesignedItemType, new ExtensionEntry(type, server, designerFor.OverrideExtension, extensionAttribute != null ? extensionAttribute.Order : 0)); } } } diff --git a/src/AddIns/DisplayBindings/WpfDesign/WpfDesign/Project/WpfDesign.csproj b/src/AddIns/DisplayBindings/WpfDesign/WpfDesign/Project/WpfDesign.csproj index 4d2b74cf43..0159bd0b0f 100644 --- a/src/AddIns/DisplayBindings/WpfDesign/WpfDesign/Project/WpfDesign.csproj +++ b/src/AddIns/DisplayBindings/WpfDesign/WpfDesign/Project/WpfDesign.csproj @@ -74,6 +74,7 @@ +