# 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
EEFIdeUiPlugin_fileNotFound=File "{0}" not found
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

EEFTextLifecycleManager_conflictDialog_title = Model Changed During Edition
EEFTextLifecycleManager_conflictDialog_message = The model has changed in an incompatible way while you were editing this widget.\n\nNew value from the model: {0}\nEdited value: {1}
EEFTextLifecycleManager_conflictDialog_choiceNewModelValue = Use new value from the model
EEFTextLifecycleManager_conflictDialog_choiceLocalEditedValue = Keep the edited value
EEFTextLifecycleManager_textLossByLocking_title = Input Lost
EEFTextLifecycleManager_textLossByLocking_message = The widget has been locked by an asynchronous operation.\nThe current input will be lost: {0}\nDo you want a copy to be placed in the clipboard?
