###############################################################################
# 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
###############################################################################

SearchForBuildFilesDialog.Search_for_Build_Files_1=Search for Buildfiles
SearchForBuildFilesDialog.&Input=&Input a buildfile name (* = any string, ? = any character):
SearchForBuildFilesDialog.Build_name_cannot_be_empty_3=Build name cannot be empty
SearchForBuildFilesDialog.&Search_4=&Search
SearchForBuildFilesDialog.Scope_5=Scope
SearchForBuildFilesDialog.&Workspace_6=&Workspace
SearchForBuildFilesDialog.Wor&king_Set__7=Wor&king Set:
SearchForBuildFilesDialog.&Choose..._8=&Choose...
SearchForBuildFilesDialog.Include_errors=Include &buildfiles that contain errors
SearchForBuildFilesDialog.Must_select_a_working_set_10=Must select a working set
SearchForBuildFilesDialog.No_searchable=No searchable resources found in the selected working set
AntViewOpenWithMenu.Editor_failed=Editor failed to open for {0}
AntViewOpenWithMenu.Default_Editor_4=Default Editor
AddBuildFileAction.Add_Build_File_1=Add Buildfile
AddBuildFileAction.&Select=&Select a buildfile:
RemoveAllAction.Remove_All=Remove All Buildfiles
RemoveProjectAction.Remove=Remove Buildfile
RemoveProjectAction.Remove_2=Remove Selected Buildfile
RunTargetAction.Run_1=Run
RunTargetAction.Run_Default=Run the Default Target of the Selected Buildfile
SearchForBuildFilesAction.Search_1=Search
SearchForBuildFilesAction.Add_build_files_with_search_2=Add Buildfiles with Search
SearchForBuildFilesAction.Processing_search_results_3=Processing search results
SearchForBuildFilesAction.Adding_{0}_4=Adding {0}
EditLaunchConfigurationAction.Properties=&Properties...
EditLaunchConfigurationAction.Edit=Edit the launch configuration properties for selected buildfile
