1 #Region "Microsoft.VisualBasic::bfc066dc0ba5e93e074aaa5eb3bd2d2a, Microsoft.VisualBasic.Core\ComponentModel\Settings\DataModels\ProfileItem.vb"
2
3     ' Author:
4     
5     '       asuka (amethyst.asuka@gcmodeller.org)
6     '       xie (genetics@smrucc.org)
7     '       xieguigang (xie.guigang@live.com)
8     
9     ' Copyright (c) 2018 GPL3 Licensed
10     
11     
12     ' GNU GENERAL PUBLIC LICENSE (GPL3)
13     
14     
15     ' This program is free software: you can redistribute it and/or modify
16     ' it under the terms of the GNU General Public License as published by
17     ' the Free Software Foundation, either version 3 of the License, or
18     ' (at your option) any later version.
19     
20     ' This program is distributed in the hope that it will be useful,
21     ' but WITHOUT ANY WARRANTY; without even the implied warranty of
22     ' MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
23     ' GNU General Public License for more details.
24     
25     ' You should have received a copy of the GNU General Public License
26     ' along with this program. If not, see <http://www.gnu.org/licenses/>.
27
28
29
30     ' /********************************************************************************/
31
32     ' Summaries:
33
34     '     Enum ValueTypes
35     
36     '         [Double], [Integer], Directory, File, Text
37     
38     '  
39     
40     
41     
42     '     Class ProfileItem
43     
44     '         Properties: Description, Name, Type
45     
46     '         Constructor: (+2 OverloadsSub New
47     '         FunctionToString
48     
49     '     Class ProfileNodeItem
50     
51     
52     
53     
54     ' /********************************************************************************/
55
56 #End Region
57
58 Imports System.Xml.Serialization
59 Imports System.Reflection
60 Imports Microsoft.VisualBasic.ComponentModel.Collection.Generic
61
62 Namespace ComponentModel.Settings
63
64     ''' <summary>
65     ''' 这个并不是指宿主属性的数据类型,而是指代这一数据类型所代表的具体的实际对象
66     ''' </summary>
67     Public Enum ValueTypes
68         ''' <summary>
69         ''' 这个字符串的值是一个文件夹
70         ''' </summary>
71         Directory
72         ''' <summary>
73         ''' 这个字符串的值是一个文件的路径
74         ''' </summary>
75         File
76         ''' <summary>
77         ''' 普通的文本字符串
78         ''' </summary>
79         Text
80         ''' <summary>
81         ''' 带有小数的数值
82         ''' </summary>
83         [Double]
84         ''' <summary>
85         ''' 整数
86         ''' </summary>
87         [Integer]
88     End Enum
89
90     ''' <summary>
91     ''' The simple configuration mapping node in the current profile data, the data type of this node 
92     ''' object should be just the simplest data type such as StringIntegerLongDoubleBoolean.
93     ''' (当前的配置节点为一个简单节点,即目标属性的属性值类型的字符串,数字或者逻辑值等最基本的数据类型)
94     ''' </summary>
95     ''' <remarks></remarks>
96     <AttributeUsage(AttributeTargets.Property, AllowMultiple:=False, Inherited:=True)>
97     Public Class ProfileItem : Inherits Attribute
98         Implements IKeyValuePairObject(Of StringString)
99         Implements INamedValue
100
101         <XmlAttribute> Public Overridable Property Name As String Implements IKeyValuePairObject(Of StringString).Key, INamedValue.Key
102         <XmlAttribute> Public Overridable Property Description As String Implements IKeyValuePairObject(Of StringString).Value
103
104         ''' <summary>
105         ''' 默认的数据类型是字符串类型
106         ''' </summary>
107         ''' <returns></returns>
108         Public Overridable Property Type As ValueTypes = ValueTypes.Text
109
110         Sub New()
111         End Sub
112
113         ''' <summary>
114         ''' Initialize a node in the settings xml document.
115         ''' </summary>
116         ''' <param name="NodeName">The name of the node in the document xml file</param>
117         ''' <param name="NodeDescription">The brief introduction information about this profile node.</param>
118         Sub New(NodeName As StringOptional NodeDescription As String = "")
119             Name = NodeName
120             Description = NodeDescription
121         End Sub
122
123         Public Overrides Function ToString() As String
124             If Not String.IsNullOrEmpty(Description) Then
125                 Return String.Format("{0}: {1}", Name, Description)
126             Else
127                 Return Name
128             End If
129         End Function
130     End Class
131
132     ''' <summary>
133     ''' 当前的配置节点为一个复杂数据类型的配置节点,即目标属性的属性类型为一个Class对象
134     ''' </summary>
135     ''' <remarks></remarks>
136     <AttributeUsage(AttributeTargets.Property, AllowMultiple:=False, Inherited:=True)>
137     Public Class ProfileNodeItem : Inherits Attribute
138     End Class
139 End Namespace