###############################################################################
# Copyright (c) 2005, 2016 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
###############################################################################
#String externalization, key=value
#Thu Feb 02 14:22:56 EST 2006
CommonFilterSelectionDialog_Available_customization_=Filters and Customization
CommonSorterDescriptorManager_A_navigatorContent_extension_does_n_=A navigatorContent extension does not exist with id\: {0} in plugin {1}

Delete=Delete
Exception_Invoking_Extension=An exception occurred invoking extension\: {0} for object {1}
NewProjectWizard_errorTitle=New Project Problems
Link_With_Editor_Job_=Linking viewer selection with current editor   
Navigator_statusLineMultiSelect={0} items selected
Navigator_statusLineSingleSelect=1 item selected
SelectFiltersActionDelegate_1=Select and deselect filters to apply to the content in the tree
CommonFilterSelectionDialog_Select_the_available_extensions=Select the available extensions to show (unchecked extensions will not display content)\:
SelectFiltersActionDelegate_0=&Filters and Customization...
CollapseAllActionDelegate_0=Collapse All 
Too_many_elements_Warning=Too many elements of type\: {0} in extension "{1}" defined in bundle "{2}".
NewProjectAction_text=P&roject...
CommonFilterSelectionDialog_Available_Content=Content
CommonFilterSelectionDialog_Hides_all_content_associated=Provides content from the "{0}" extension.
Attribute_Missing_Warning=Missing attribute\: {0} in extension "{1}" defined in bundle "{2}".
Open_action_label=Open
TextAction_selectAll=Select All
Paste=Paste 
CommonFilterSelectionDialog_Available_Filters=Filters
LinkEditorActionDelegate_1=Link with Editor
LinkEditorActionDelegate_0=&Link with Editor
Copy=Copy 
Cut=Cut
NavigatorViewerDescriptor_Popup_Menu_Overridden=Warning\: popupMenuId of "{0}" was overridden\: old value \= "{1}", new value \= "{2}".
CommonFilterSelectionDialog_Select_the_filters_to_apply=Select the filters to apply (matching items will be hidden)\:
UpdateFiltersOperation_Update_CommonViewer_Filter_=Update CommonViewer Filters
CommonFilterSelectionDialog_enter_name_of_filte_=enter name of filter
CommonSorterDescriptorManager_A_navigatorContent_extension_in_0_=A navigatorContent extension in {0} is missing an id.
FilterDialogSelectionListener_Enable_the_0_filter_=Enable the {0} filter.
NavigatorContentServiceLabelProvider_Error_no_label_provider_for_0_=Error: no label provider for {0}
CommonViewerSorter_NoContentExtensionForObject=Cannot find navigator content extension (using triggerPoints) for object "{0}" parent path: "{1}".  Check that you have an expression for this object in a navigatorContent triggerPoints or enablement.
NavigatorContentService_problemSavingPreferences=Problem saving preferences.
FilterActionGroup_RecentFilters=Re&cent Filters
LoggingJob=Common navigator logging