###############################################################################
# Copyright (c) 2000, 2006 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
###############################################################################


CompletionProcessor_error_accessing_title=Error Accessing Compilation Unit
CompletionProcessor_error_accessing_message=Cannot access compilation unit

CompletionProcessor_error_notOnBuildPath_title= Cannot Perform Operation
CompletionProcessor_error_notOnBuildPath_message= This compilation unit is not on the build path of a Java project.

CompletionProposalComputerRegistry_error_dialog_title=Problems During Content Assist
# {0} is the plug-in id of the contributing plug-in, {1} the display name of the proposal category
CompletionProposalComputerRegistry_messageAvoidanceHint=To avoid this message, disable the ''{0}'' plug-in or disable the ''{1}'' category on the <a>content assist</a> preference page.
# {0} is the plug-in id of the contributing plug-in, {1} the display name of the proposal category, {2} the comma-separated list of plug-ins other than {0} the contribute to the category
CompletionProposalComputerRegistry_messageAvoidanceHintWithWarning=To avoid this message, disable the ''{0}'' plug-in or disable the ''{1}'' category on the <a>content assist</a> preference page. Note that disabling the category will also affect completion proposals from the following plug-ins: {2}.
# {0} is the extension id
CompletionProposalComputerRegistry_invalid_message=The extension ''{0}'' has become invalid.

CompletionProposalComputerDescriptor_reason_invalid=The extension has become invalid.
CompletionProposalComputerDescriptor_reason_instantiation=Unable to instantiate the extension.
CompletionProposalComputerDescriptor_reason_runtime_ex=The extension has thrown a runtime exception.
# {0} specifies an operation name, e.g. "computeProposals"
CompletionProposalComputerDescriptor_reason_API=The extension violated the API contract of the ''{0}'' operation.
CompletionProposalComputerDescriptor_reason_performance=The extension took too long to return from the ''{0}'' operation.
# {0} is the name of an extension, {1} the contributing plug-in name
CompletionProposalComputerDescriptor_blame_message= The ''{0}'' proposal computer from the ''{1}'' plug-in did not complete normally.
# {0} is the identifier of an extension, {1} the contributing plug-in, {2} a required but missing xml attribute
CompletionProposalComputerDescriptor_illegal_attribute_message= The extension "{0}" from plug-in "{1}" did not specify a value for the required "{2}" attribute. Disabling the extension.
# {0} is the name of an extension, {1} the id of the extension
ProposalSorterHandle_blame= Found a problem with the ''{0}'' ({1}) extension to the "javaCompletionProposalSorters" extension point.

ExperimentalProposal_error_msg=Error inserting parameters
ParameterGuessingProposal_error_msg=Error guessing parameters

ProposalInfo_more_to_come=\ ...

GetterSetterCompletionProposal_getter_label=Getter for ''{0}''
GetterSetterCompletionProposal_setter_label=Setter for ''{0}''
MethodCompletionProposal_constructor_label=Default constructor
MethodCompletionProposal_method_label=Method stub

ContentAssistProcessor_computing_proposals=Computing completion proposals
ContentAssistProcessor_collecting_proposals=Collecting proposals
ContentAssistProcessor_sorting_proposals=Sorting
ContentAssistProcessor_computing_contexts=Computing context information
ContentAssistProcessor_all_disabled_title=No Default Proposal Kinds
ContentAssistProcessor_all_disabled_message=No proposal kinds are enabled for the 'default' content assist list.
# {0} will be replaced by the label of the 'restore defaults' button
# The preference page should match the title of the 'Java > Editor > Content Assist > Advanced' preference page
ContentAssistProcessor_all_disabled_preference_link=Change the settings on the <a>Advanced Content Assist preference page</a> or click ''{0}'' to restore the default behavior.
ContentAssistProcessor_collecting_contexts=Collecting context information
ContentAssistProcessor_sorting_contexts=Sorting
ContentAssistProcessor_defaultProposalCategory=Default Proposals
# {0} will be replaced by a keyboard shortcut (accelerator)
ContentAssistProcessor_toggle_affordance_press_gesture=Press ''{0}''
ContentAssistProcessor_toggle_affordance_click_gesture=Click
# {0} will be replaced by a title describing the displayed proposal category, {1} by either the press_gesture or click_gesture message above, {2} by the name of the next proposal category 
ContentAssistProcessor_toggle_affordance_update_message={1} to show {2}
# {0} will be replaced by a title describing the displayed proposal category
ContentAssistProcessor_empty_message= No {0}

ContentAssistHistory_serialize_error=Problems writing content assist history to XML
ContentAssistHistory_deserialize_error=Problems reading content assist history from XML
