using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Tango.Core
{
/// <summary>
/// Represents a parameter item attribute for used for default, min and max values definition of properties.
/// </summary>
/// <seealso cref="System.Attribute" />
public class ParameterItemAttribute : Attribute
{
/// <summary>
/// Gets or sets the custom parameter name.
/// </summary>
public String Name { get; set; }
/// <summary>
/// Gets or sets the default value.
/// </summary>
public object Default { get; set; }
/// <summary>
/// Gets or sets the minimum value.
/// </summary>
public object Minimum { get; set; }
/// <summary>
/// Gets or sets the maximum value.
/// </summary>
public object Maximum { get; set; }
/// <summary>
/// Gets or sets an optional extra object.
/// </summary>
public object ExtraObject { get; set; }
/// <summary>
/// Gets or sets an optional custom editor type name.
/// </summary>
public String CustomEditorTypeName { get; set; }
/// <summary>
/// Initializes a new instance of the <see cref="ParameterItemAttribute"/> class.
/// </summary>
public ParameterItemAttribute()
{
Default = null;
Minimum = 0.0d;
Maximum = 1.0d;
}
/// <summary>
/// Initializes a new instance of the <see cref="ParameterItemAttribute"/> class.
/// </summary>
/// <param name="name">The name.</param>
/// <param name="minimumValue">The minimum value.</param>
/// <param name="maximumValue">The maximum value.</param>
/// <param name="defaultValue">The default value.</param>
public ParameterItemAttribute(String name, object minimumValue, object maximumValue, object defaultValue) : this()
{
Name = name;
Default = defaultValue;
Minimum = minimumValue;
Maximum = maximumValue;
}
/// <summary>
/// Initializes a new instance of the <see cref="ParameterItemAttribute"/> class.
/// </summary>
/// <param name="name">The name.</param>
/// <param name="minimumValue">The minimum value.</param>
/// <param name="maximumValue">The maximum value.</param>
public ParameterItemAttribute(String name, object minimumValue, double maximumValue) : this(name, minimumValue, maximumValue, null)
{
}
/// <summary>
/// Initializes a new instance of the <see cref="ParameterItemAttribute"/> class.
/// </summary>
/// <param name="minimumValue">The minimum value.</param>
/// <param name="maximumValue">The maximum value.</param>
public ParameterItemAttribute(object minimumValue, object maximumValue) : this()
{
Minimum = minimumValue;
Maximum = maximumValue;
}
/// <summary>
/// Initializes a new instance of the <see cref="ParameterItemAttribute"/> class.
/// </summary>
/// <param name="customParameterEditorTypeName">Type of the custom parameter editor type name.</param>
public ParameterItemAttribute(String customParameterEditorTypeName) : this()
{
CustomEditorTypeName = customParameterEditorTypeName;
}
/// <summary>
/// Initializes a new instance of the <see cref="ParameterItemAttribute"/> class.
/// </summary>
/// <param name="name">The name.</param>
/// <param name="customParameterEditorTypeName">Name of the custom parameter editor type.</param>
/// <param name="minimumValue">The minimum value.</param>
/// <param name="maximumValue">The maximum value.</param>
/// <param name="defaultValue">The default value.</param>
/// <param name="extraObject">The extra object.</param>
public ParameterItemAttribute(String name, String customParameterEditorTypeName, object minimumValue, object maximumValue, object defaultValue, object extraObject) : this()
{
Name = name;
Minimum = minimumValue;
Maximum = maximumValue;
Default = defaultValue;
CustomEditorTypeName = customParameterEditorTypeName;
ExtraObject = extraObject;
}
/// <summary>
/// Initializes a new instance of the <see cref="ParameterItemAttribute"/> class.
/// </summary>
/// <param name="name">The name.</param>
/// <param name="customParameterEditorTypeName">Custom parameter editor type.</param>
/// <param name="minimumValue">The minimum value.</param>
/// <param name="maximumValue">The maximum value.</param>
/// <param name="defaultValue">The default value.</param>
/// <param name="extraObject">The extra object.</param>
public ParameterItemAttribute(String name, Type customParameterEditorType, object minimumValue, object maximumValue, object defaultValue, object extraObject)
: this()
{
Name = name;
Minimum = minimumValue;
Maximum = maximumValue;
Default = defaultValue;
CustomEditorTypeName = customParameterEditorType.AssemblyQualifiedName;
ExtraObject = extraObject;
}
}
}