###############################################################################
# Copyright (c) 2000, 2004 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
#     John-Mason P. Shackelford (john-mason.shackelford@pearson.com) - bug 53547
###############################################################################

AntModel.1=\ line: 

AntEditorContentOutlinePage.Open_With_1=Open With

FilterInternalTargetsAction.0=Hide Internal Targets
FilterImportedElementsAction.0=Hide Imported Elements
FilterPropertiesAction.0=Hide Properties

FilterTopLevelAction.0=Hide Top Level Elements

ToggleSortAntOutlineAction.0=Sort

PopupMenu.runAntTargetNoDialog = &Run
PopupMenu.runAntTargetNoDialogTip = Run the selected ant target

PopupMenu.runAntTarget = Run &Ant...
PopupMenu.runAntTargetTip = Configure the the launch configuration and execute the selected target
