# Copyright (c) 2015, 2016 Obeo.
# 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.htm
# Contributors: Obeo - initial API and implementation

pluginName=EEF Properties UI
providerName=Eclipse Modeling Project
eefTabDescriptorProviderExtensionPoint.name = EEF Tab Descriptor Provider

DescriptorRegistryEventListener_missingAttribute=The attribute {1} is missing from the configuration element {0}. 
DescriptorRegistryEventListener_extensionAlreadyContributed=The extension {0} has already been contributed.

EEFTabbedPropertyRegistry_MissingSectionDescriptorId=The section descriptor does not have an identifier, it cannot be used.