# 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 IDE UI
providerName=Eclipse Modeling Project
eefLifecycleManagerProviderExtensionPoint.name = EEF Lifecycle Manager Provider

EEFIdeUi_PreferencePage_Name=EEF

EEFPreferencePage_DebugButton_Text=Activate debug mode
EEFPreferencePage_DebugButton_Tooltip=The debug mode will be used in order to log\n\
additional messages regarding the state of the\n\
application
EEFIdeUiPlugin_lifecycleManagerNotFound=No lifecycle manager can be found for the custom widget : {0}
EEFIdeUiPlugin_lifecycleManagerInvalid=A lifecycle manager exists for the custom widget {0} but is invalid
EEFColor_invalidColorCode=The color code {0} is invalid

AbstractEEFWidgetLifecycleManager_invalidSelectionType = StructuredViewer should return an instance of IStructuredSelection from its getSelection() method.

EEFQuickFixWizard_windowTitle=Quick Fix
EEFQuickFixWizard_applyQuickFix=Applying quick fix...
EEFQuickFixPage_title=Quick Fix
EEFQuickFixPage_description=Select a quick fix for ''{0}''
EEFQuickFixPage_label=Select a fix:

EEFQuickFixWizard_noQuickFixAvailable=No quick fix available for your validation issue

EEFValidationRulesPage_title=Messages
EEFValidationRulesPage_description=Select the message to fix
EEFValidationRulesPage_label=Select a message:

AbstractEEFWidgetLifecycleManager_noDescriptionAvailable=No description available
AbstractEEFWidgetLifecycleManager_lockedByOther=This widget is locked by another user
AbstractEEFWidgetLifecycleManager_lockedByMe=This widget is locked for other users
AbstractEEFWidgetLifecycleManager_lockedNoWrite=This widget is locked because of a permission issue
