###############################################################################
# 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
#     John-Mason P. Shackelford - bug 40255
###############################################################################

OpenDeclarationAction.0=&Open Declaration
OpenDeclarationAction.1=Open an editor on the referenced element
OpenExternalDocAction.0=Open External Ant Documentation
OpenExternalDocAction.1=Open E&xternal Documentation
OpenExternalDocAction.2=Opens an external browser on the referenced Ant element

TogglePresentation.label=Show Source of Selected Element Only
TogglePresentation.tooltip=Show Source of Selected Element Only

ToggleMarkOccurrencesAction.label= Toggle Ant Mark Occurrences
ToggleMarkOccurrencesAction.tooltip= Toggle Ant Mark Occurrences

ToggleAutoReconcileAction.label= Toggle Auto Reconcile
ToggleAutoReconcileAction.tooltip= Toggle Auto reconcile

Projection.Toggle.label= &Enable Folding
Projection.Toggle.tooltip= Toggles Folding
Projection.Toggle.description= Toggles folding for the current editor

Projection.ExpandAll.label= Expand &All
Projection.ExpandAll.tooltip= Expands All Folded Regions
Projection.ExpandAll.description= Expands any folded regions in the current editor

RunToLineAdapter.0=Empty editor
RunToLineAdapter.1=Missing document
RunToLineAdapter.2=No file could be found
RunToLineAdapter.3=Unable to locate debug target
RenameInFileAction.0=Re&name In File
RenameInFileAction.1=Renames all references within the same buildfile
RenameInFileAction.2=Renames all references
