# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
#
# Copyright 1997-2010 Oracle and/or its affiliates. All rights reserved.
#
# Oracle and Java are registered trademarks of Oracle and/or its affiliates.
# Other names may be trademarks of their respective owners.
#
# The contents of this file are subject to the terms of either the GNU
# General Public License Version 2 only ("GPL") or the Common
# Development and Distribution License("CDDL") (collectively, the
# "License"). You may not use this file except in compliance with the
# License. You can obtain a copy of the License at
# http://www.netbeans.org/cddl-gplv2.html
# or nbbuild/licenses/CDDL-GPL-2-CP. See the License for the
# specific language governing permissions and limitations under the
# License.  When distributing the software, include this License Header
# Notice in each file and include the License file at
# nbbuild/licenses/CDDL-GPL-2-CP.  Oracle designates this
# particular file as subject to the "Classpath" exception as provided
# by Oracle in the GPL Version 2 section of the License file that
# accompanied this code. If applicable, add the following below the
# License Header, with the fields enclosed by brackets [] replaced by
# your own identifying information:
# "Portions Copyrighted [year] [name of copyright owner]"
#
# Contributor(s):
#
# The Original Software is NetBeans. The Initial Developer of the Original
# Software is Sun Microsystems, Inc. Portions Copyright 1997-2006 Sun
# Microsystems, Inc. All Rights Reserved.
#
# If you wish your version of this file to be governed by only the CDDL
# or only the GPL Version 2, indicate your decision by adding
# "[Contributor] elects to include this software in this distribution
# under the [CDDL or GPL Version 2] license." If you do not indicate a
# single choice of license, a recipient has the option to distribute
# your version of this file under either the CDDL, the GPL Version 2 or
# to extend the choice of license to its licensees as provided above.
# However, if you add GPL Version 2 code and therefore, elected the GPL
# Version 2 license, then the option applies only if the new code is
# made subject to such option by the copyright holder.

OpenIDE-Module-Name=Output Window
OpenIDE-Module-Display-Category=Infrastructure
OpenIDE-Module-Short-Description=A simple text area based output window implementation
OpenIDE-Module-Long-Description=Output window based on a java.swing.text.Document over a ByteBuffer/CharBuffer

#Title for the output window
LBL_OUTPUT=Output
#Format for the output window title if it includes the name of the current tab
FMT_OUTPUT={0} - {1}

FMT_CannotWrite=Cannot write to system temp directory ({0})
MSG_GenericError=Problem writing to output file

LBL_STDOUT=Standard output
FMT_FILE_EXISTS={0} exists.  Overwrite?
TITLE_SAVE_DLG=Save Output As

LBL_SaveAsFailedTitle=Save as failed
MSG_SaveAsFailed=Writing to file {0} failed.

MSG_SearchFromBeg=End of the ouput reached. Continuing search from beginning.
MSG_SearchFromEnd=Beginning of the ouput reached. Continuing search from end.
MSG_Found=''{0}'' found at {1}:{2}
MSG_NotFound=''{0}'' not found

#OutputWindowAction
OutputWindow=&Output

#Find Dialog
LBL_Find_Title=Find
LBL_Find_What=Find:
LBL_Use_RegExp=Regular &Expression
LBL_Match_Case=&Match Case
BTN_Find=&Find
ACSN_Find=N/A
ACSD_Find=Find
ACSD_FindBTN=N/A
ACSD_Find_What=N/A

LBL_Filter_Title=Filter
LBL_Filter_What=Keep lines containing:
BTN_Filter=&Filter

#FontChooser Dialog
LBL_Font_Chooser_Title=Font Chooser
BTN_Defaul_Font=Default Font

#$ave as dialog if selected file exists
TITLE_FILE_EXISTS=Overwrite file?

# invalid regexp dialog
LBL_Invalid_RegExp=Invalid Regular Expression
FMT_Invalid_RegExp=Syntax error in {0}

#Output window popup menu
ACTION_COPY=Copy
ACTION_PASTE=Paste
ACTION_WRAP=Wrap text
ACTION_SAVEAS=Save As...
ACTION_CLOSE=Close
ACTION_CLEAR=Clear
ACTION_PREV_ERROR=Previous Error
ACTION_NEXT_ERROR=Next Error
ACTION_SELECT_ALL=Select all
ACTION_FIND=Find...
ACTION_FIND_NEXT=Find Next
ACTION_FIND_PREVIOUS=Find Previous
ACTION_LARGER_FONT=Larger Font
ACTION_SMALLER_FONT=Smaller Font
ACTION_FONT_TYPE=Choose Font...
ACTION_FILTER=Filter...

#Popup menu accelerators
#ACTION_COPY.accel=C-C
#ACTION_PASTE.accel=C-V
#ACTION_WRAP.accel=C-R
#ACTION_SAVEAS.accel=C-S
#ACTION_CLOSE.accel=C-F4
#ACTION_PREV_ERROR.accel=F12
#ACTION_NEXT_ERROR.accel=S-F12
#ACTION_SELECT_ALL.accel=C-A
#ACTION_FIND.accel=C-F
#ACTION_FIND_NEXT.accel=F3
#ACTION_FIND_PREVIOUS.accel=S-F3
#ACTION_CLEAR.accel=C-L
#ACTION_LARGER_FONT.accel=C-EQUALS
#ACTION_SMALLER_FONT.accel=C-MINUS
#ACTION_FONT_TYPE.accel=
#ACTION_FILTER.accel=C-G

#Macintosh popup menu accelerators
#ACTION_COPY.accel.mac=M-C
#ACTION_PASTE.accel.mac=M-V
#ACTION_LARGER_FONT.accel.mac=M-PLUS
#ACTION_SMALLER_FONT.accel.mac=M-MINUS
#ACTION_FONT_TYPE.accel.mac=
#ACTION_WRAP.accel.mac=M-R 
#ACTION_SAVEAS.accel.mac=M-S
#ACTION_CLOSE.accel.mac=M-F4
#ACTION_PREV_ERROR.accel.mac=F12
#ACTION_NEXT_ERROR.accel.mac=M-F12
#ACTION_SELECT_ALL.accel.mac=M-A
#ACTION_FIND.accel.mac=M-F
#ACTION_FIND_NEXT.accel.mac=M-G
#ACTION_FIND_PREVIOUS.accel.mac=S-M-G
#ACTION_CLEAR.accel.mac=M-L
#ACTION_FILTER.accel.mac=C-G

MSG_DiskSpace=Ran out of disk space in {0} for temporary output files.  Either make more disk space available, change the system temporary directory or run with -J-Dnb.output.heap=true

MSG_LINE_TOO_LONG=...line is too long, please switch to wrapped mode to see whole line...

