/// <summary> /// Copy constructor, with an alternate parent category /// </summary> /// <param name="parentCategory">Parent category</param> /// <param name="src">Source category</param> /// <exception cref="ArgumentNullException">Thrown if src is null</exception> public ComponentTypeCategory( ComponentTypeCategory parentCategory, ComponentTypeCategory src ) : base(parentCategory, src.Name, src.Description, src.Icon) { Arguments.CheckNotNull( src, "src" ); m_BaseType = src.BaseType; foreach ( ComponentTypeCategory srcSubCategory in src.SubCategories ) { new ComponentTypeCategory( this, srcSubCategory ); } }
/// <summary> /// Setup constructor /// </summary> /// <param name="view">View to control</param> /// <param name="componentTypeCategories">Categories that component types can fall into</param> /// <param name="types">Composite types available for use</param> /// <param name="composite">Current composite</param> /// <exception cref="ArgumentNullException">Thrown if any argument is null</exception> public ComponentCompositionEditorController( IComponentCompositionEditorView view, ComponentTypeCategory[] componentTypeCategories, ComponentType[] types, IComposite composite ) { Arguments.CheckNotNull( view, "view" ); Arguments.CheckNotNull( types, "types" ); Arguments.CheckNotNull( composite, "composite" ); Arguments.CheckNotNull( componentTypeCategories, "componentTypeCategories" ); view.Categories = componentTypeCategories; view.Types = types; view.CompositeView.Composite = composite; view.AddComponentType += OnAddComponentType; view.RemoveComponent += OnRemoveComponent; composite.ComponentAdded += OnCompositeChanged; composite.ComponentRemoved += OnCompositeChanged; m_Composite = composite; m_View = view; m_Types = types; }
/// <summary> /// Setup constructor /// </summary> public ComponentTypeCategory( ComponentTypeCategory parentCategory, Type baseType, string name, string description ) : base(parentCategory, name, description, s_DefaultIcon) { Arguments.CheckNotNull( baseType, "baseType" ); m_BaseType = baseType; }
/// <summary> /// Copy constructor /// </summary> /// <param name="src">Source category</param> /// <exception cref="ArgumentNullException">Thrown if src is null</exception> public ComponentTypeCategory( ComponentTypeCategory src ) : this(null, src) { }
/// <summary> /// Links a template types to the control /// </summary> private void AddComponentType( ComponentTypeCategory category, ComponentType type ) { if ( category.BaseType.IsAssignableFrom( type.Type ) ) { category.AddComponentType( type, type.Type.Name, "blah" ); } foreach ( ComponentTypeCategory subCategory in category.SubCategories ) { AddComponentType( subCategory, type ); } }
/// <summary> /// Shows a composite object editor as a model dialog /// </summary> public void ShowEditCompositeView( IComposite composite, ComponentTypeCategory[] categories, ComponentType[] componentTypes ) { CompositeEditorForm form = new CompositeEditorForm( ); form.CompositeView.Composite = composite; form.Categories = categories; new ComponentCompositionEditorController( form, categories, componentTypes, composite ); form.ShowDialog( ); }