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

ContentAssistProposal.label=Content &Assist@Ctrl+Space
ContentAssistProposal.tooltip=Content Assist
ContentAssistProposal.image=
ContentAssistProposal.description=Content Assist

ContentFormat.label=F&ormat@Ctrl+Shift+F
ContentFormat.tooltip=Format build file source
ContentFormat.image=
ContentFormat.description=Format build file source

AntEditorCompletionProcessor.Required___4=Required:
AntEditorCompletionProcessor.28=No attribute completions available
AntEditorCompletionProcessor.29=No task completions available
AntEditorCompletionProcessor.30=No task closing completions available
AntEditorCompletionProcessor.31=No attribute value completions available
AntEditorCompletionProcessor.32=No property completions available
AntEditorCompletionProcessor.33=No completions available
AntEditorCompletionProcessor.39=Closing tag
AntEditorCompletionProcessor.59=Default: {0}
AntEditorCompletionProcessor.0=Custom task code completion for {0} is not available due to classpath problems
AntEditorCompletionProcessor.1=Not required
AntEditorCompletionProcessor.2=Required

AntAnnotationHover.multipleMarkersAtThisLine=Multiple markers at this line

OpenDeclarationAction.0=&Open Declaration@F3
OpenDeclarationAction.1=Open an editor on the referenced element

AntEditor.3=Current text selection does not resolve to an Ant reference