aboutsummaryrefslogtreecommitdiffstats
path: root/Software/Visual_Studio/Tango.Core/ParameterItemAttribute.cs
blob: 68405fe6499b7f1c139facedee48f75d8671e9a7 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
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;
        }
    }
}