Browse Source

Possibilities to disable Extensions

pull/604/head
jkuehner 12 years ago
parent
commit
0d69188c47
  1. 15
      src/AddIns/DisplayBindings/WpfDesign/WpfDesign/Project/Extensions/Extension.cs
  2. 17
      src/AddIns/DisplayBindings/WpfDesign/WpfDesign/Project/Extensions/ExtensionManager.cs

15
src/AddIns/DisplayBindings/WpfDesign/WpfDesign/Project/Extensions/Extension.cs

@ -18,6 +18,7 @@
using System; using System;
using System.Diagnostics; using System.Diagnostics;
using System.Windows;
namespace ICSharpCode.WpfDesign.Extensions namespace ICSharpCode.WpfDesign.Extensions
{ {
@ -32,5 +33,19 @@ namespace ICSharpCode.WpfDesign.Extensions
/// </remarks> /// </remarks>
public abstract class Extension public abstract class Extension
{ {
public static string GetDisabledExtensions(DependencyObject obj)
{
return (string)obj.GetValue(DisabledExtensionsProperty);
}
public static void SetDisabledExtensions(DependencyObject obj, string value)
{
obj.SetValue(DisabledExtensionsProperty, value);
}
public static readonly DependencyProperty DisabledExtensionsProperty =
DependencyProperty.RegisterAttached("DisabledExtensions", typeof(string), typeof(Extension), new PropertyMetadata(null));
} }
} }

17
src/AddIns/DisplayBindings/WpfDesign/WpfDesign/Project/Extensions/ExtensionManager.cs

@ -65,14 +65,14 @@ namespace ICSharpCode.WpfDesign.Extensions
internal readonly Type ExtensionType; internal readonly Type ExtensionType;
internal readonly ExtensionServer Server; internal readonly ExtensionServer Server;
internal readonly Type OverriddenExtensionType; internal readonly Type OverriddenExtensionType;
internal readonly int Order; internal readonly int Order;
public ExtensionEntry(Type extensionType, ExtensionServer server, Type overriddenExtensionType, int Order) public ExtensionEntry(Type extensionType, ExtensionServer server, Type overriddenExtensionType, int Order)
{ {
this.ExtensionType = extensionType; this.ExtensionType = extensionType;
this.Server = server; this.Server = server;
this.OverriddenExtensionType = overriddenExtensionType; this.OverriddenExtensionType = overriddenExtensionType;
this.Order = Order; this.Order = Order;
} }
} }
@ -106,7 +106,7 @@ namespace ICSharpCode.WpfDesign.Extensions
result.Add(entry); result.Add(entry);
} }
} }
return result.OrderBy(x => x.Order).ToList(); return result.OrderBy(x => x.Order).ToList();
} }
/// <summary> /// <summary>
@ -151,7 +151,10 @@ namespace ICSharpCode.WpfDesign.Extensions
foreach (ExtensionEntry entry in GetExtensionEntries(item)) { foreach (ExtensionEntry entry in GetExtensionEntries(item)) {
if (entry.Server == server) { if (entry.Server == server) {
yield return server.CreateExtension(entry.ExtensionType, item);
var disabledExtensions = Extension.GetDisabledExtensions(item.View);
if (disabledExtensions == null || !disabledExtensions.Split(';').Contains(entry.ExtensionType.Name))
yield return server.CreateExtension(entry.ExtensionType, item);
} }
} }
} }
@ -186,8 +189,8 @@ namespace ICSharpCode.WpfDesign.Extensions
foreach (ExtensionForAttribute designerFor in extensionForAttributes) { foreach (ExtensionForAttribute designerFor in extensionForAttributes) {
ExtensionServer server = GetServerForExtension(type); ExtensionServer server = GetServerForExtension(type);
ExtensionAttribute extensionAttribute = type.GetCustomAttributes(typeof(ExtensionAttribute), false).FirstOrDefault() as ExtensionAttribute; ExtensionAttribute extensionAttribute = type.GetCustomAttributes(typeof(ExtensionAttribute), false).FirstOrDefault() as ExtensionAttribute;
AddExtensionEntry(designerFor.DesignedItemType, new ExtensionEntry(type, server, designerFor.OverrideExtension, extensionAttribute != null ? extensionAttribute.Order : 0)); AddExtensionEntry(designerFor.DesignedItemType, new ExtensionEntry(type, server, designerFor.OverrideExtension, extensionAttribute != null ? extensionAttribute.Order : 0));
} }
} }
} }

Loading…
Cancel
Save