###############################################################################
# Copyright (c) 2001, 2009 IBM Corporation and others.
# All rights reserved. This program and the accompanying materials
# are made available under the terms of the Eclipse Public License v1.0
# which accompanies this distribution, and is available at
# http://www.eclipse.org/legal/epl-v10.html
#
# Contributors:
#     IBM Corporation - initial API and implementation
###############################################################################
_UI_ACTION_OPEN_IN_NEW_EDITOR=Open In New Editor
_UI_ACTION_DELETE_CONSTRAINTS=Delete Constraints
_UI_ACTION_DELETE_ENUMERATION=Delete Enumeration
_UI_ACTION_DELETE_APPINFO_ELEMENT=Delete AppInfo Element
_UI_ACTION_DELETE_APPINFO_ATTRIBUTE=Delete AppInfo Attribute
_UI_ACTION_DELETE_EXTENSION_COMPONENT=Delete Extension Component
_UI_ACTION_ADD_ATTRIBUTE_GROUP=Add Attribute Group
_UI_ACTION_ADD_APPINFO_ELEMENT=Add AppInfo Element
_UI_ACTION_ADD_ATTRIBUTE=Add Attribute
_UI_ACTION_ADD_GROUP_REF=Add Group Ref
_UI_ACTION_ADD_ANY_ELEMENT=Add An&y
_UI_ACTION_ADD_ANY_ATTRIBUTE=Add Any Attribute
_UI_ACTION_ADD_WITH_DOTS=Add...
_UI_ACTION_UPDATE_BOUNDS=Update bounds
_UI_ACTION_ADD_COMPLEX_TYPE=Add Complex Type
_UI_ACTION_ADD_ENUMERATIONS=Add Enumerations
_UI_ACTION_ADD_DOCUMENTATION=Add Documentation
_UI_ACTION_CONSTRAIN_LENGTH=Constrain length
_UI_ACTION_BROWSE_WORKSPACE=Workspace
_UI_LABEL_NO_ITEMS_SELECTED=No items selected
_UI_LABEL_ELEMENTFORMDEFAULT=Prefix for Elements
_UI_LABEL_ATTRIBUTEFORMDEFAULT=Prefix for Attributes
_UI_LABEL_BLOCKDEFAULT=Block default
_UI_LABEL_EXTENSION_DETAILS=Extension Details
_UI_LABEL_EXTENSION_CATEGORIES=Extension Categories:
_UI_LABEL_FINALDEFAULT=Final default
_UI_LABEL_COLLAPSE_WHITESPACE=Collapse whitespace
_UI_LABEL_RESTRICT_VALUES_BY=Restrict values by:
_UI_LABEL_MINIMUM_LENGTH=Minimum length:
_UI_LABEL_MAXIMUM_LENGTH=Maximum length:
_UI_LABEL_SELECT_XSD_FILE=Select XSD file
_UI_LABEL_CONSTRAINTS_ON_VALUE_OF=Constraints on value of 
_UI_ACTION_ADD_SIMPLE_TYPE=Add Simple Type
_UI_ACTION_EDIT_WITH_DOTS=Edit...
_UI_ACTION_CHANGE_PATTERN=Change pattern
_UI_ACTION_ADD_ENUMERATION=Add Enumeration
_UI_ACTION_INSERT_ENUMERATION=Insert Enumeration
_UI_ACTION_CHANGE_ENUMERATION_VALUE=Change Enumeration value
_UI_ACTION_DELETE_PATTERN=Delete Pattern
_UI_ACTION_BROWSE_CATALOG=Catalog
_UI_ACTION_ADD_GROUP=Add Group
_UI_ACTION_ADD_PATTERN=Add pattern
_UI_ACTION_SET_BASE_TYPE=Set Base Type
_UI_ERROR_INVALID_NAME=Invalid name
_UI_ERROR_INVALID_FILE=Invalid file
_UI_ERROR_INVALID_CATEGORY=Invalid Category
_UI_ACTION_DELETE=Delete
_UI_ACTION_ADD=Add
_UI_ACTION_RENAME=Rename
_UI_LABEL_PATTERN=Pattern
_UI_LABEL_PATTERNS=Patterns
_UI_LABEL_NAME=Name:
_UI_LABEL_TYPE=Type: 
_UI_LABEL_BASE=Base
_UI_LABEL_UP=Up
_UI_LABEL_DOWN=Down
_UI_LABEL_DELETE=Delete
_UI_LABEL_SCHEMA=&Schema:
_UI_LABEL_EDIT=Edit
_UI_LABEL_REFERENCE=Reference:
_UI_LABEL_READONLY=ReadOnly
_UI_LABEL_INCLUSIVE=Inclusive
_UI_LABEL_ENUMERATIONS=Enumerations
_UI_LABEL_EXTENSIONS=Extensions
_UI_LABEL_MINIMUM_VALUE=Minimum value:
_UI_LABEL_MAXIMUM_VALUE=Maximum value:
_UI_LABEL_CONTRAINTS_ON=Constraints on 
_UI_LABEL_ADD_WITH_DOTS=Add...
_UI_LABEL_ADD_CATEGORY=Add Category
_UI_LABEL_EDIT_CATEGORY=Edit Category
_UI_ACTION_ADD_ATTRIBUTE_GROUP_REF=Add Attribute Group Ref
_UI_ACTION_ADD_EXTENSION_COMPONENT=Add Extension Component
_UI_ACTION_ADD_EXTENSION_COMPONENTS=Add Extension Components
_UI_LABEL_CONSTRAINTS_ON_LENGTH_OF=Constraints on length of 
_UI_ACTION_ADD_APPINFO_ATTRIBUTE=Add AppInfo Attribute
_UI_ACTION_SET_ENUMERATION_VALUE=Set Enumeration Value
_UI_ACTION_UPDATE_ELEMENT_REFERENCE=Update Element Reference
_UI_ACTION_UPDATE_MAXIMUM_OCCURRENCE=Update Maximum Occurrence
_UI_ACTION_UPDATE_MINIMUM_OCCURRENCE=Update Minimum Occurrence
_UI_ACTION_CHANGE_MAXIMUM_OCCURRENCE=Maximum Occurrence Change 
_UI_ACTION_CHANGE_MINIMUM_OCCURRENCE=Minimum Occurrence Change
_UI_LABEL_SPECIFIC_CONSTRAINT_VALUES=Specific constraint values
_UI_LABEL_AVAILABLE_COMPONENTS_TO_ADD=Available components to Add:
_UI_ACTION_CHANGE_CONTENT_MODEL=Change Content Model
_UI_ERROR_FILE_CANNOT_BE_PARSED=The xsd file of the selected category cannot be parsed.
_UI_DESCRIPTION_CHOOSE_XSD_FILE=Choose an XSD file containing schema for your extensible components
_UI_ERROR_VALIDATE_THE_FILE=Please validate the file.
_UI_ERROR_NAME_ALREADY_USED=The name is already being used.
_UI_ACTION_COLLAPSE_WHITESPACE=Collapse whitespace
_UI_ACTION_ADD_ATTRIBUTE_GROUP_DEFINITION=Add Attribute Group Definition
_UI_ERROR_INVALID_VALUE_FOR_MAXIMUM_OCCURRENCE=Invalid value for maximum occurrence
_UI_TOOLTIP_RENAME_REFACTOR=Click here to invoke the Rename refactoring.
_UI_VALUE_COLON=Value:
_UI_ID=ID:
_UI_REF=Reference:
_UI_FIXED=Fixed
_UI_DEFAULT=Default
_UI_FORM=Form qualification:
_UI_LABEL_CATALOG=&XML Catalog...
_UI_LABEL_WORKSPACE=&Workspace...
# The following string will be used for the undo action.  An
# example label is: Undo Abstract Change
_UI_ACTION_CHANGE={0} Change
_UI_ACTION_NAMESPACE_INFORMATION_CHANGE=Namespace Information Change
_UI_LABEL_ABSTRACT=Abstract
_UI_LABEL_BLOCK=Block
_UI_LABEL_FINAL=Final
_UI_LABEL_SUBSTITUTION_GROUP=Substitution Group
_UI_LABEL_MIXED=Mixed
_UI_LABEL_VALUE=Value
_UI_USAGE=Usage
_UI_LABEL_FORM=Form
_UI_LABEL_NILLABLE=Nillable
