################################################################################
##
##  Licensed to the Apache Software Foundation (ASF) under one or more
##  contributor license agreements.  See the NOTICE file distributed with
##  this work for additional information regarding copyright ownership.
##  The ASF licenses this file to You under the Apache License, Version 2.0
##  (the "License"); you may not use this file except in compliance with
##  the License.  You may obtain a copy of the License at
##
##      http://www.apache.org/licenses/LICENSE-2.0
##
##  Unless required by applicable law or agreed to in writing, software
##  distributed under the License is distributed on an "AS IS" BASIS,
##  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
##  See the License for the specific language governing permissions and
##  limitations under the License.
##
################################################################################
accessibilityClass.help = Specifies a helper class that implements this component's accessibility behavior.
alternative.help = Specifies a recommended replacement for this class.
arrayElementType.help = Specifies the allowed data type for the elements of this Array.
bindable.help = Indicates that this property or method, or all the properties of this class, are able to be used in databinding expressions.
defaultProperty.help = Specifies which property of this class can be set in MXML without enclosing its value in a property tag.
deprecated.help = Marks this property, method, or class as being obsolete and no longer recommended for use.
embed.help = Embeds an asset file (such as JPEG, PNG, MP3, XML, etc.) into a SWF, and initializes this variable to the corresponding asset class.
event.help = Declares an event that this class dispatches.
exclude.help = Omits a specified property, method, style, or event of this class from Flash Builder's code hints and from ASDoc.
excludeClass.help = Omits this class from Flash Builder's code hints and from ASDoc.
hostComponent.help = Specifies the SkinnableComponent that will use this Spark skin.
iconFile.help = Specifies an icon to represent this component in Flash Builder.
inspectable.help = Specifies how this property appears in Flash Builder's property inspector. Also used to specify the allowed values in MXML for a property of type String.
managed.help = Indicates that LCDS should monitor all modifications (create/update/delete) to instances of this class. Managed classes are automatically bindable.
nonCommitingChangeEvent.help = Specifies the event that indicates fine-grained value changes to this property, such as modifications in a TextInput prior to confirmation.
percentProxy.help = Specifies a percent-based property that corresponds to this property. For example, width="100%" in MXML sets percentWidth to 100 in ActionScript.
remoteClass.help = Specifies the remote class corresponding to this class for AMF serialization.
resourceBundle.help = Indicates that this class uses a particular resource bundle, so that the bundle gets compiled into the SWF.
richTextContent.help = Indicates that all characters should be interpreted literally as text when this property is set using character data in MXML.
skinPart.help = Indicates that the value of this property is a skin part in this component's skin.
skinState.help = Declares a view state that this component's skin must support.
style.help = Declares a CSS style that this component supports.
swf.help = Specifies information for the SWF header of this ActionScript application.
transient.help = Indicates that this property should not participate in AMF serialization.
