###############################################################################
# Copyright (c) 2000, 2003 IBM Corporation and others.
# All rights reserved. This program and the accompanying materials 
# are made available under the terms of the Common Public License v1.0
# which accompanies this distribution, and is available at
# http://www.eclipse.org/legal/cpl-v10.html
# 
# Contributors:
#     IBM Corporation - initial API and implementation
###############################################################################

ManageBreakpointActionDelegate.error.message1=Exceptions occurred attempting to manage breakpoint
ManageBreakpointActionDelegate.error.title1=Manage Breakpoint
ManageBreakpointActionDelegate.No_Breakpoint=Breakpoint can neither be added nor removed at current text selection

AddExceptionAction.error.message=An exception occurred while adding the breakpoint
AddExceptionAction.error.title=Add Exception

AddExceptionDialog.caught=&Caught
AddExceptionDialog.error.notThrowable=The selected class is not a subclass of java.lang.Throwable
AddExceptionDialog.message=Choose an E&xception (? = any character, * = any string)
AddExceptionDialog.title=Add Java Exception Breakpoint
AddExceptionDialog.uncaught=&Uncaught
AddExceptionDialog.An_exception_type_could_not_be_resolved_for_{0}_1=An exception type could not be resolved for {0}

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.Exception_occurred_attempting_to_set_hit_count_1=Exception occurred attempting to set 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})

DropToFrameAction.Drop_to_Frame_1=Drop to Frame
DropToFrameAction.Exceptions_occurred_attempting_to_drop_to_frame._2=Exceptions occurred attempting to drop to frame.

EnableDisableBreakpointRulerAction.&Disable_Breakpoint_4=&Disable Breakpoint
EnableDisableBreakpointRulerAction.&Enable_Breakpoint_1=&Enable Breakpoint
EnableDisableBreakpointRulerAction.&Enable_Breakpoint_5=&Enable Breakpoint
EnableDisableBreakpointRulerAction.Enabling/disabling_breakpoints_2=Enabling/disabling breakpoints
EnableDisableBreakpointRulerAction.Exceptions_occurred_enabling_disabling_the_breakpoint_3=Exceptions occurred enabling disabling the breakpoint

Evaluate.error.message.direct_exception=An exception occurred: {0}
Evaluate.error.message.exception.pattern={0} - {1}
Evaluate.error.message.src_context=The selected stack frame must be associated with a Java project in the workspace to perform an evaluation.
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=Cannot 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.

InspectAction.Exception_occurred_inspecting_variable=Exception occurred inspecting variable.

JavaBreakpointPropertiesRulerAction.Breakpoint_&Properties_1=Breakpoint &Properties...

ManageBreakpointRulerAction.add.label=Add &Breakpoint
ManageBreakpointRulerAction.remove.label=Remove &Breakpoint
ManageBreakpointRulerAction.error.adding.message1=Cannot add breakpoint
ManageBreakpointRulerAction.error.removing.message1=Cannot remove breakpoint

ManageMethodBreakpointAction.Problems_creating_breakpoint_7=Problems creating breakpoint
ManageMethodBreakpointAction.Problems_removing_breakpoint_8=Problems removing breakpoint
ManageMethodBreakpointActionDelegate.CantAdd=Method breakpoints can only be added to concrete methods.
ManageMethodBreakpointActionDelegate.Add_Method_Breakpoint_Failed_2=Add Method Breakpoint Failed

ManageWatchpointAction.Problems_adding_watchpoint_7=Problems adding watchpoint
ManageWatchpointAction.Problems_removing_watchpoint_8=Problems removing watchpoint
ManageWatchpointAction.The_selected_field_is_not_visible_in_the_currently_selected_debug_context._A_stack_frame_or_suspended_thread_which_contains_the_declaring_type_of_this_field_must_be_selected_1=The selected field is not visible in the currently selected debug context. A stack frame or suspended thread which contains the declaring type of this field must be selected
ManageWatchpointActionDelegate.CantAdd=Watchpoints can only be added to field members.

RunToLine.error.message1=An exception occurred while attempting to run to line
RunToLine.error.title1=Run to Line

MoveDownAction.M&ove_Down_1=&Down
MoveUpAction.Move_U&p_1=U&p
RemoveAction.&Remove_1=&Remove

AddProjectAction.Add_Project_1=Add Project&s...
AddProjectAction.Project_Selection_2=Project Selection
AddProjectAction.Choose_&project(s)_to_add__3=Choose &project(s) to add:
AddProjectAction.One_or_more_exceptions_occurred_while_adding_projects._1=One or more exceptions occurred while adding projects.

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...
AddJarAction.JAR_Selection_7=JAR Selection
AddJarAction.Choose_jars_to_add__8=&Choose jars and zips to add:

AddExternalJar.Add_E&xternal_JARs_1=Add E&xternal JARs...
AddExternalJar.Jar_Selection_3=Jar Selection

AddFolderAction.Add_&Folders_1=Add &Folders
AddFolderAction.Selection_must_be_a_folder_2=Selection must be a folder
AddFolderAction.Folder_Selection_4=Folder Selection
AddFolderAction.Choose_folders_to_add__5=&Choose folders to add:
AddFolderAction.Classpath_already_includes_selected_folder(s)._1=Classpath already includes selected folder(s).

AddExternalFolderAction.Add_External_Folder_1=Add &External Folder
AddExternalFolderAction.Folder_Selection_3=Folder Selection

AddVariableAction.Add_Variables_1=Add Var&iables
AddVariableAction.Variable_Selection_1=Variable Selection

AttachSourceAction.Attachments_For_____{0}_____1=Attachments For \'\'{0}\'\'
AttachSourceAction.Attac&h_Source..._2=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.
TerminateEvaluationActionAn_exception_occurred_while_terminating_the_evaluation_3=An exception occurred while terminating the evaluation

InstanceFiltersAction.Restrict_selected_breakpoint(s)_to_object___{0}__1=Restrict selected breakpoint(s) to object \"{0}"
InstanceFiltersAction.Instance_Filter_Breakpoint_Selection_2=Instance Filter Breakpoint Selection

StepIntoSelectionHandler.Execution_did_not_enter___{0}___before_the_current_method_returned._1=Execution did not enter \"{0}\" before the current method returned.
StepIntoSelectionHandler.Error_2=Error

StepIntoSelectionActionDelegate.No_Method=Current text selection does not resolve to a Java method

PrimitiveOptionsDialog.Primitive_Type_Display_Options_1=Primitive Type Display Options

StepIntoSelectionActionDelegate.Step_into_selection_only_available_for_types_in_Java_projects._1=Step into selection only available for types in Java projects.
StepIntoSelectionActionDelegate.Step_into_selection_only_available_on_current_line_of_execution._2=Step into selection only available on current line of execution.
StepIntoSelectionActionDelegate.Step_into_selection_only_available_in_top_stack_frame._3=Step into selection only available in top stack frame.
StepIntoSelectionActionDelegate.Step_into_selection_only_available_in_Java_editor._4=Step into selection only available in Java editor.
InstanceFiltersAction.breakpoint_{0}_already_restricted._Reset_the_restriction_to_object_{1}_=Breakpoint: {0}\nis already restricted to an other object.\nDo you want to set the restriction to object \"{1}\"?
InstanceFiltersAction.Yes_2=Yes
InstanceFiltersAction.Cancel_3=Cancel

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.
ManageBreakpointRulerAction.Breakpoints_can_only_be_created_within_the_type_associated_with_the_editor__{0}._1=Breakpoints can only be created within the type associated with the editor: {0}.
ManageBreakpointActionDelegate.breakpoint_location=Breakpoint location validation
ManageBreakpointActionDelegate.not_valid_location=Breakpoint cannot be set at the given position
ManageBreakpointActionDelegate.breakpoint_set=Breakpoint set
ManageMethodBreakpointActionDelegate.methodNonAvailable=Cannot create method breakpoint, method signature not available.
