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

BreakpointAction_Breakpoint_configuration_1=Breakpoint configuration
BreakpointAction_Exceptions_occurred_attempting_to_modify_breakpoint__2=Exceptions occurred attempting to modify breakpoint.

BreakpointHitCountAction__Enter_the_new_hit_count_for_the_breakpoint__3=&Enter the new hit count for the breakpoint:
BreakpointHitCountAction_Enable_Hit_Count_1=Enable &Hit Count
BreakpointHitCountAction_Set_Breakpoint_Hit_Count_2=Set Breakpoint Hit Count
BreakpointHitCountAction_Value_must_be_positive_integer=Hit count must be a positive integer

BreakpointSuspendPolicy_Suspend__Thread_2=&Suspend Thread
BreakpointSuspendPolicy_Suspend__VM_1=&Suspend VM

DisplayAction_no_result_value=(No explicit return value)
DisplayAction_result_pattern={0} {1}
DisplayAction_type_name_pattern=\ ({0})

Evaluate_error_message_direct_exception=An exception occurred: {0}
Evaluate_error_message_exception_pattern={0} - {1}
Evaluate_error_message_src_context=Unable to evaluate the selected expression:\n\nTo perform an evaluation, an expression must be compiled in the context of a Java project's build path. The current execution context is not associated with a Java project in the workspace.
Evaluate_error_message_stack_frame_context=A stack frame must be selected to provide a context for an evaluation.
Evaluate_error_message_wrapped_exception=An exception occurred: {0}
Evaluate_error_problem_append_pattern={0}\n{1}
Evaluate_error_title_eval_problems=Error Evaluating
EvaluateAction_Cannot_open_Display_view=Unable to open Display View
EvaluateAction__evaluation_failed__1=(evaluation failed)
EvaluateAction__evaluation_failed__Reason=Evaluation failed. Reason(s):\n{0}
EvaluateAction_Thread_not_suspended___unable_to_perform_evaluation__1=Thread not suspended - unable to perform evaluation.
EvaluateAction_Cannot_perform_nested_evaluations__1=Cannot perform nested evaluations.

JavaBreakpointPropertiesRulerAction_0=Double Click
JavaBreakpointPropertiesRulerAction_Breakpoint__Properties_1=Breakpoint P&roperties...

MoveDownAction_M_ove_Down_1=&Down
MoveUpAction_Move_U_p_1=U&p
RemoveAction__Remove_1=Re&move

AddProjectAction_Add_Project_1=Add Project&s...
AddProjectAction_Project_Selection_2=Project Selection
ProjectSelectionDialog_Add_exported_entries_of_selected_projects__1=&Add exported entries of selected projects.
ProjectSelectionDialog_Add_required_projects_of_selected_projects__2=Add &required projects of selected projects.

AddJarAction_Add__JARs_1=Add &JARs...

AddExternalJar_Add_E_xternal_JARs_1=Add E&xternal JARs...
AddExternalJarAction_error_box_title=External Archive Error
AddExternalJarAction_error_box_message=The selected external archive:\n\n{0} \n\nis unavailable or does not exist.
AddExternalJar_Jar_Selection_3=Jar Selection

AddFolderAction_Add__Folders_1=Add F&olders
AddFolderAction_Folder_Selection_4=Folder Selection
AddFolderAction_Choose_folders_to_add__5=&Choose folders to add:
AddExternalFolderAction_Add_External_Folder_1=Add &External Folder
AddExternalFolderAction_Folder_Selection_3=Folder Selection

AddVariableAction_Add_Variables_1=Add Classpath Var&iables

AttachSourceAction_2=Attac&h Source
AttachSourceAction_3=Attac&h Source...

AddAdvancedAction_Ad_vanced____1=&Advanced...

TerminateEvaluationActionTerminate_Evaluation_1=Terminate Evaluation
TerminateEvaluationActionAttempts_to_terminate_an_evaluation_can_only_stop_a_series_of_statements__The_currently_executing_statement__such_as_a_method_invocation__cannot_be_interrupted__2=Attempts to terminate an evaluation can only stop a series of statements. The currently executing statement (such as a method invocation) cannot be interrupted.

InstanceFiltersAction_0=Instance Filter Breakpoint
InstanceFiltersAction_1=&Restrict selected breakpoint(s) to object \"{0}":
InstanceFiltersAction_2=Instance Filter Breakpoint Selection
InstanceFiltersAction_3=Breakpoint: {0}\nis already restricted to an other object.\nDo you want to set the restriction to object \"{1}\"?
InstanceFiltersAction_4=There are no breakpoints applicable to the selected Java object.
InstanceFiltersAction_Yes_2=Yes
InstanceFiltersAction_Cancel_3=Cancel

RestoreDefaultEntriesAction_0=R&estore Default Entries

StepIntoSelectionHandler_Execution_did_not_enter____0____before_the_current_method_returned__1=Execution did not enter \"{0}\" before the current method returned.

StepIntoSelectionActionDelegate_Step_into_selection_only_available_in_top_stack_frame__3=Step into selection only available in top stack frame.
StepIntoSelectionActionDelegate_4=An exception occurred attempting to run to the selected line.

ObjectActionDelegate_Unable_to_display_type_hierarchy__The_selected_source_element_is_not_contained_in_the_workspace__1=Unable to display type hierarchy. The selected source element is not contained in the workspace.
BreakpointLocationVerifierJob_breakpoint_location=Breakpoint location validation
BreakpointLocationVerifierJob_not_valid_location=Breakpoint cannot be set at the given position
BreakpointLocationVerifierJob_breakpoint_set=Breakpoint set
BreakpointLocationVerifierJob_0=A breakpoint already exists at the next valid location -- line {0}
ManageMethodBreakpointActionDelegate_methodNonAvailable=Cannot create method breakpoint, method signature not available.
BreakpointLocationVerifierJob_breakpointRemoved=Breakpoint removed.
BreakpointLocationVerifierJob_breakpointMovedToValidPosition=The breakpoint has been moved to a valid position.
BreakpointLocationVerifierJob_breakpointSetToRightType=The breakpoint has been set to the right type.
PopupDisplayAction_2=Move to Display View

ToggleBreakpointAdapter_9=Selection does not contain a method
ToggleBreakpointAdapter_10=Selection does not contain a field
ToggleBreakpointAdapter_6=Cannot set a breakpoint on an unimplemented interface method
ToggleBreakpointAdapter_5=You cannot set watchpoints in interfaces.
ToggleBreakpointAdapter_4=The current editor selection does not contain a valid method declaration.
ToggleBreakpointAdapter_3=A breakpoint cannot be set at the selected editor location.
ToggleBreakpointAdapter_2=The current editor selection does not contain a valid field declaration.
ToggleBreakpointAdapter_1=You cannot set class load breakpoints on interfaces.
ToggleBreakpointAdapter_0=A class load breakpoint cannot be set at the selected editor location.
ToggleBreakpointAdapter_confirmDeleteTitle=Confirm Conditional Breakpoint Delete
ToggleBreakpointAdapter_confirmDeleteMessage=Are you sure you want to delete this conditional breakpoint?
ToggleBreakpointAdapter_confirmDeleteShowAgain=Do not show this &message again
StepIntoSelectionHandler_1=Step into selection
StepIntoSelectionHandler_2=OK
StepIntoSelectionHyperlinkDetector_0=Step Into
AddLibraryAction_0=Add &Library
ShowStratumAction_0=Default
JavaVariableValueEditor_0=Error Changing Value
JavaVariableValueEditor_1=An exception occurred attempting to access variable.
JavaObjectValueEditor_0=Evaluation was interrupted and did not complete.
JavaObjectValueEditor_3=Invalid Type
JavaPrimitiveValueEditor_0=Change Primitive Value
JavaPrimitiveValueEditor_1=Enter a new value for {0}:
JavaPrimitiveValueEditor_2=Error Changing Value
JavaPrimitiveValueEditor_3=An exception occurred attempting to change the variable value.
JavaPrimitiveValueEditor_4=Input must be a valid {0}.
ExpressionInputDialog_0=&Enter an expression for {0}. Valid expressions can be either a single expression (e.g. "new Object()") or a series of statements that return a value.
ExpressionInputDialog_1=Input an expression.
ExpressionInputDialog_2=Change Object Value
ExpressionInputDialog_3=variable
StringValueInputDialog_0=&Enter a new string value:
StringValueInputDialog_1=Input &literal text
StringValueInputDialog_2=&Input an evaluation
StringValueInputDialog_4=&Word wrap
OpenFromClipboardAction_ElementToOpen=&Clipboard content could not be opened, refine it and try again:
OpenFromClipboardAction_OpenFromClipboard=Open from Clipboard
OpenFromClipboardAction_OpeningFromClipboard=Opening from Clipboard...
OpenFromClipboardAction_SelectOrEnterTheElementToOpen=Select or enter the element to open:
OpenTypeAction_2=Unable to display the selected type.
EditClasspathEntryAction_0=Ed&it...
ProjectSelectionDialog_0=Choose &project(s) to add:
TracepointToggleAction_Unavailable=The operation is unavailable on the current selection.