|
namespace System.Workflow.ComponentModel.Design
{
using System;
using System.Collections;
using System.Drawing;
using System.Drawing.Design;
using System.ComponentModel;
using System.Runtime.Serialization;
using System.ComponentModel.Design;
using System.Security.Permissions;
using System.Reflection;
[Serializable]
[PermissionSet(SecurityAction.InheritanceDemand, Name = "FullTrust")]
[Obsolete("The System.Workflow.* types are deprecated. Instead, please use the new types from System.Activities.*")]
public class ActivityToolboxItem : ToolboxItem
{
private const String ActivitySuffix = "Activity";
public ActivityToolboxItem()
{
}
public ActivityToolboxItem(Type type)
: base(type)
{
//
if (type != null)
{
if (type.Name != null)
{
string name = type.Name;
if ((type.Assembly == Assembly.GetExecutingAssembly() ||
type.Assembly != null && type.Assembly.FullName != null &&
type.Assembly.FullName.Equals(AssemblyRef.ActivitiesAssemblyRef, StringComparison.OrdinalIgnoreCase)) &&
type.Name.EndsWith(ActivitySuffix, StringComparison.Ordinal) &&
!type.Name.Equals(ActivitySuffix, StringComparison.Ordinal))
{
name = type.Name.Substring(0, type.Name.Length - ActivitySuffix.Length);
}
base.DisplayName = name;
}
base.Description = ActivityDesigner.GetActivityDescription(type);
}
}
protected ActivityToolboxItem(SerializationInfo info, StreamingContext context)
{
Deserialize(info, context);
}
public virtual IComponent[] CreateComponentsWithUI(IDesignerHost host)
{
return CreateComponentsCore(host);
}
//
protected override IComponent[] CreateComponentsCore(IDesignerHost host)
{
Type typeOfComponent = GetType(host, AssemblyName, TypeName, true);
if (typeOfComponent == null && host != null)
typeOfComponent = host.GetType(TypeName);
if (typeOfComponent == null)
{
ITypeProviderCreator tpc = null;
if (host != null)
tpc = (ITypeProviderCreator)host.GetService(typeof(ITypeProviderCreator));
if (tpc != null)
{
System.Reflection.Assembly assembly = tpc.GetTransientAssembly(this.AssemblyName);
if (assembly != null)
typeOfComponent = assembly.GetType(this.TypeName);
}
if (typeOfComponent == null)
typeOfComponent = GetType(host, AssemblyName, TypeName, true);
}
ArrayList comps = new ArrayList();
if (typeOfComponent != null)
{
if (typeof(IComponent).IsAssignableFrom(typeOfComponent))
comps.Add(TypeDescriptor.CreateInstance(null, typeOfComponent, null, null));
}
IComponent[] temp = new IComponent[comps.Count];
comps.CopyTo(temp, 0);
return temp;
}
public static Image GetToolboxImage(Type activityType)
{
if (activityType == null)
throw new ArgumentNullException("activityType");
Image toolBoxImage = null;
if (activityType != null)
{
object[] attribs = activityType.GetCustomAttributes(typeof(ToolboxBitmapAttribute), false);
if (attribs != null && attribs.GetLength(0) == 0)
attribs = activityType.GetCustomAttributes(typeof(ToolboxBitmapAttribute), true);
ToolboxBitmapAttribute toolboxBitmapAttribute = (attribs != null && attribs.GetLength(0) > 0) ? attribs[0] as ToolboxBitmapAttribute : null;
if (toolboxBitmapAttribute != null)
toolBoxImage = toolboxBitmapAttribute.GetImage(activityType);
}
return toolBoxImage;
}
public static string GetToolboxDisplayName(Type activityType)
{
if (activityType == null)
throw new ArgumentNullException("activityType");
string displayName = activityType.Name;
object[] toolboxItemAttributes = activityType.GetCustomAttributes(typeof(ToolboxItemAttribute), true);
if (toolboxItemAttributes != null && toolboxItemAttributes.Length > 0)
{
ToolboxItemAttribute toolboxItemAttrib = toolboxItemAttributes[0] as ToolboxItemAttribute;
if (toolboxItemAttrib != null && toolboxItemAttrib.ToolboxItemType != null)
{
try
{
ToolboxItem item = Activator.CreateInstance(toolboxItemAttrib.ToolboxItemType, new object[] { activityType }) as ToolboxItem;
if (item != null)
displayName = item.DisplayName;
}
catch
{
}
}
}
if (activityType.Assembly != null && activityType.Assembly.FullName != null)
{
if ((activityType.Assembly.FullName.Equals(AssemblyRef.ActivitiesAssemblyRef, StringComparison.OrdinalIgnoreCase) ||
activityType.Assembly.FullName.Equals(Assembly.GetExecutingAssembly().FullName, StringComparison.OrdinalIgnoreCase)) &&
displayName.EndsWith(ActivitySuffix, StringComparison.Ordinal) &&
!displayName.Equals(ActivitySuffix, StringComparison.Ordinal))
{
displayName = displayName.Substring(0, displayName.Length - ActivitySuffix.Length);
}
}
return displayName;
}
}
}
|