#
# Copyright (c) 2001, International Business Machines Corporation. ALL RIGHTS RESERVED
# Thin Client Generator (TCG) properties file
#
(object Petal version 42)

(list Attribute_Set
	(object Attribute
		tool       	"TCG"
		name       	"roseId"
		value      	"837263636"
	)
	(object Attribute
		tool       	"TCG"
		name       	"propertyId"
		value      	"984747394"
	)
	#
	# Class properties
	#	
	(object Attribute
		tool       	"TCG"
		name       	"default__Class"
		value      	(list Attribute_Set
			# A description to use when displaying this class' name on panels or within text.
			(object Attribute
				tool       	"TCG"
				name       	"DisplayName"
				value      	""
			)
			# A comma delimited list of user roles which this field is used by 
			(object Attribute
				tool       	"TCG"
				name       	"AppliesToRoles"
				value      	""
			)
			# A classification of user experience level which would use this type
			(object Attribute
				tool       	"TCG"
				name       	"UserExperienceLevel"
				value      	("UserExpLevel_Set" 100)
			)
			(object Attribute
				tool		"TCG"
				name		"UserExpLevel_Set"
				value		(list Attribute_Set
					(object Attribute
						tool       	"TCG"
						name       	"BASIC"
						value      	100
					)
					(object Attribute
						tool       	"TCG"
						name       	"ADVANCED"
						value      	101
					)
					(object Attribute
						tool       	"TCG"
						name       	"EXPERT"
						value      	102
					)
				)
			)
			# A description to use for the title of detail panels containing an object of this class.
			(object Attribute
				tool       	"TCG"
				name       	"StdDetailPanelTitle"
				value      	""
			)
			# Contains a comma-separated list of attribute id's in the order they should appear on the
			# default detail panel for this class.
			(object Attribute
				tool       	"TCG"
				name       	"StdDetailPanelFieldsInOrder"
				value      	""
			)
			# A description to use for the title of collection panels containing elements of this class.
			(object Attribute
				tool       	"TCG"
				name       	"StdCollectionPanelTitle"
				value      	""
			)
			# Contains a comma-separated list of attribute id's in the order they should appear on the
			# default collection panel for this class.
			(object Attribute
				tool       	"TCG"
				name       	"StdCollectionPanelFieldsInOrder"
				value      	""
			)
			# A string containing attribute name parameter slots which will be filled in with values from the attributes.
			# Typically used to calculate a tree node description for an object.
			(object Attribute
				tool       	"TCG"
				name       	"DescriptionPattern"
				value      	""
			)
			# A uri to content which will be included just above the description area of the detail page for this class
			(object Attribute
				tool       	"TCG"
				name       	"PreDescriptionIncludeURI"
				value      	""
			)
			# A uri to content which will be included just above the form area of the detail page for this class
			(object Attribute
				tool       	"TCG"
				name       	"PreFormIncludeURI"
				value      	""
			)
			# A uri to content which will be included in the footer area of the detail page for this class
			(object Attribute
				tool       	"TCG"
				name       	"FooterIncludeURI"
				value      	""
			)
			# Whether views should be generated for this type
			(object Attribute
				tool       	"TCG"
				name       	"SkipViewGeneration"
				value      	FALSE
			)
			# The icon file uri for small 16x16 icon representing this class.
			(object Attribute
				tool       	"TCG"
				name       	"SmallIcon"
				value      	""
			)
			# The icon file uri for large 32x32 icon representing this class.
			(object Attribute
				tool       	"TCG"
				name       	"LargeIcon"
				value      	""
			)
			# An alternate uri (absolute or relative to web app root) to include as the description in the 
			# detail panel.
			(object Attribute
				tool       	"TCG"
				name       	"AltDescriptionURI"
				value      	""
			)
		)
	)
	#
	# Class Attribute Properties
	#
	(object Attribute
		tool       	"TCG"
		name       	"default__Attribute"
		value      	(list Attribute_Set
			# The label text to use when displaying this attribute (without ':')
			(object Attribute
				tool       	"TCG"
				name       	"DisplayName"
				value      	""
			)
			(object Attribute
				tool       	"TCG"
				name       	"IsRequired"
				value      	TRUE
			)
			# A string which can be used to group this field with other fields with the same categoryId
			(object Attribute
				tool       	"TCG"
				name       	"CategoryId"
				value      	""
			)
			# A comma delimited list of user roles which this field is used by 
			(object Attribute
				tool       	"TCG"
				name       	"AppliesToRoles"
				value      	""
			)
			# A classification of user experience level which would use this type
			(object Attribute
				tool       	"TCG"
				name       	"UserExperienceLevel"
				value      	("UserExpLevel_Set" 100)
			)
			(object Attribute
				tool		"TCG"
				name		"UserExpLevel_Set"
				value		(list Attribute_Set
					(object Attribute
						tool       	"TCG"
						name       	"BASIC"
						value      	100
					)
					(object Attribute
						tool       	"TCG"
						name       	"ADVANCED"
						value      	101
					)
					(object Attribute
						tool       	"TCG"
						name       	"EXPERT"
						value      	102
					)
				)
			)
			(object Attribute
				tool       	"TCG"
				name       	"FieldType"
				value      	("FieldType_Set" 71)
			)
			(object Attribute
				tool		"TCG"
				name		"FieldType_Set"
				value		(list Attribute_Set
					(object Attribute
						tool       	"TCG"
						name       	"TEXT_FIELD"
						value      	71
					)
					(object Attribute
						tool       	"TCG"
						name       	"TEXT_AREA"
						value      	72
					)
					(object Attribute
						tool       	"TCG"
						name       	"COMBO_BOX"
						value      	73
					)
					(object Attribute
						tool       	"TCG"
						name       	"LIST_BOX"
						value      	74
					)
					(object Attribute
						tool       	"TCG"
						name       	"CHECK_BOX"
						value      	75
					)
					(object Attribute
						tool       	"TCG"
						name       	"OPTION"
						value      	76
					)
					(object Attribute
						tool       	"TCG"
						name       	"TEXT_READ_ONLY"
						value      	77
					)
					(object Attribute
						tool       	"TCG"
						name       	"CUSTOM"
						value      	78
					)
					(object Attribute
						tool       	"TCG"
						name       	"FILE"
						value      	79
					)
					(object Attribute
						tool       	"TCG"
						name       	"URI"
						value      	80
					)
					(object Attribute
						tool       	"TCG"
						name       	"PASSWORD"
						value      	81
					)
				)
			)
			(object Attribute
				tool       	"TCG"
				name       	"MaxLength"
				value      	""
			)
			(object Attribute
				tool       	"TCG"
				name       	"BooleanValueKind"
				value      	("BooleanValueKind_Set" 91)
			)
			(object Attribute
				tool		"TCG"
				name		"BooleanValueKind_Set"
				value		(list Attribute_Set
					(object Attribute
						tool       	"TCG"
						name       	"TRUE_FALSE"
						value      	91
					)
					(object Attribute
						tool       	"TCG"
						name       	"ENABLE_DISABLE"
						value      	92
					)
					(object Attribute
						tool       	"TCG"
						name       	"YES_NO"
						value      	93
					)
					(object Attribute
						tool       	"TCG"
						name       	"ON_OFF"
						value      	94
					)
				)
			)
			(object Attribute
				tool       	"TCG"
				name       	"ColumnWidthPercent"
				value      	""
			)
			(object Attribute
				tool       	"TCG"
				name       	"VisibleSize"
				value      	""
			)
			(object Attribute
				tool       	"TCG"
				name       	"IncludeActionURI"
				value      	""
			)
			(object Attribute
				tool       	"TCG"
				name       	"IncludeJSPURI"
				value      	""
			)
			(object Attribute
				tool       	"TCG"
				name       	"AltDescriptionURI"
				value      	""
			)
			(object Attribute
				tool       	"TCG"
				name       	"ValidationMinValue"
				value      	""
			)
			(object Attribute
				tool       	"TCG"
				name       	"ValidationMaxValue"
				value      	""
			)
			(object Attribute
				tool       	"TCG"
				name       	"ValidationPattern"
				value      	""
			)
			# A text description of special validation requirements that apply to this field
			(object Attribute
				tool       	"TCG"
				name       	"SpecialValidationReqs"
				value      	""
			)
			# The validation class which implements the special validation requirements for this field.
			(object Attribute
				tool       	"TCG"
				name       	"SpecialValidationClass"
				value      	""
			)
		)
	)
	
	#
	# Role Properties
	#
	(object Attribute
		tool       	"TCG"
		name       	"default__Role"
		value      	(list Attribute_Set
			# The label text to use when displaying this attribute (without ':')
			(object Attribute
				tool       	"TCG"
				name       	"DisplayName"
				value      	""
			)
			# Specifies that this field should not appear in any views
			(object Attribute
				tool       	"TCG"
				name       	"SkipGeneration"
				value      	FALSE
			)
			(object Attribute
				tool       	"TCG"
				name       	"IsRequired"
				value      	TRUE
			)
			# Whether or not to show this field in the tree if it is a composite field with card 0..1 or 1
			# When FALSE, the code generator should embed the detail page of the contained type within
			# the detail page of the container type.
			(object Attribute
				tool       	"TCG"
				name       	"ShowCompositeInTree"
				value      	TRUE
			)
			# When TRUE, the code generator should embed the collection page of the contained types within
			# the properties page of the detail page of the container type.
			(object Attribute
				tool       	"TCG"
				name       	"ShowAsPropertiesPage"
				value      	FALSE
			)
			# A comma delimited list of user roles which this field is used by 
			(object Attribute
				tool       	"TCG"
				name       	"AppliesToRoles"
				value      	""
			)
			# A classification of user experience level which would use this type
			(object Attribute
				tool       	"TCG"
				name       	"UserExperienceLevel"
				value      	("UserExpLevel_Set" 100)
			)
			(object Attribute
				tool		"TCG"
				name		"UserExpLevel_Set"
				value		(list Attribute_Set
					(object Attribute
						tool       	"TCG"
						name       	"BASIC"
						value      	100
					)
					(object Attribute
						tool       	"TCG"
						name       	"ADVANCED"
						value      	101
					)
					(object Attribute
						tool       	"TCG"
						name       	"EXPERT"
						value      	102
					)
				)
			)
			# A string which can be used to group this field with other fields with the same categoryId
			(object Attribute
				tool       	"TCG"
				name       	"CategoryId"
				value      	""
			)
			(object Attribute
				tool       	"TCG"
				name       	"FieldType"
				value      	("FieldType_Set" 71)
			)
			(object Attribute
				tool		"TCG"
				name		"FieldType_Set"
				value		(list Attribute_Set
					(object Attribute
						tool       	"TCG"
						name       	"TEXT_FIELD"
						value      	71
					)
					(object Attribute
						tool       	"TCG"
						name       	"TEXT_AREA"
						value      	72
					)
					(object Attribute
						tool       	"TCG"
						name       	"COMBO_BOX"
						value      	73
					)
					(object Attribute
						tool       	"TCG"
						name       	"LIST_BOX"
						value      	74
					)
					(object Attribute
						tool       	"TCG"
						name       	"CHECK_BOX"
						value      	75
					)
					(object Attribute
						tool       	"TCG"
						name       	"OPTION"
						value      	76
					)
					(object Attribute
						tool       	"TCG"
						name       	"TEXT_READ_ONLY"
						value      	77
					)
					(object Attribute
						tool       	"TCG"
						name       	"CUSTOM"
						value      	78
					)
					(object Attribute
						tool       	"TCG"
						name       	"FILE"
						value      	79
					)
					(object Attribute
						tool       	"TCG"
						name       	"URI"
						value      	80
					)
					(object Attribute
						tool       	"TCG"
						name       	"PASSWORD"
						value      	81
					)
				)
			)
			(object Attribute
				tool       	"TCG"
				name       	"MaxLength"
				value      	""
			)
			(object Attribute
				tool       	"TCG"
				name       	"BooleanValueKind"
				value      	("BooleanValueKind_Set" 91)
			)
			(object Attribute
				tool		"TCG"
				name		"BooleanValueKind_Set"
				value		(list Attribute_Set
					(object Attribute
						tool       	"TCG"
						name       	"TRUE_FALSE"
						value      	91
					)
					(object Attribute
						tool       	"TCG"
						name       	"ENABLE_DISABLE"
						value      	92
					)
					(object Attribute
						tool       	"TCG"
						name       	"YES_NO"
						value      	93
					)
					(object Attribute
						tool       	"TCG"
						name       	"ON_OFF"
						value      	94
					)
				)
			)
			(object Attribute
				tool       	"TCG"
				name       	"ColumnWidthPercent"
				value      	""
			)
			(object Attribute
				tool       	"TCG"
				name       	"VisibleSize"
				value      	""
			)
			(object Attribute
				tool       	"TCG"
				name       	"IncludeActionURI"
				value      	""
			)
			(object Attribute
				tool       	"TCG"
				name       	"IncludeJSPURI"
				value      	""
			)
			(object Attribute
				tool       	"TCG"
				name       	"AltDescriptionURI"
				value      	""
			)
			(object Attribute
				tool       	"TCG"
				name       	"ValidationMinValue"
				value      	""
			)
			(object Attribute
				tool       	"TCG"
				name       	"ValidationMaxValue"
				value      	""
			)
			(object Attribute
				tool       	"TCG"
				name       	"ValidationPattern"
				value      	""
			)
			# A text description of special validation requirements that apply to this field
			(object Attribute
				tool       	"TCG"
				name       	"SpecialValidationReqs"
				value      	""
			)
			# The validation class which implements the special validation requirements for this field.
			(object Attribute
				tool       	"TCG"
				name       	"SpecialValidationClass"
				value      	""
			)
		)
	)
)
