###############################################################################
# Copyright (c) 2000, 2013 IBM Corporation and others.
#
# This program and the accompanying materials
# are made available under the terms of the Eclipse Public License 2.0
# which accompanies this distribution, and is available at
# https://www.eclipse.org/legal/epl-2.0/
#
# SPDX-License-Identifier: EPL-2.0
#
# Contributors:
#     IBM Corporation - initial API and implementation
#     John-Mason P. Shackelford - bug 40255
###############################################################################

## The following messages are used indirectly from text operation actions - DO NOT REMOVE 
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
## end indirect use list

OpenExternalAntDocHandler_open_external_ant_doc=Open External Ant Documentation
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
