###############################################################################
# Copyright (c) 2000, 2003 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
###############################################################################

AbstractConsole.0=Exception occurred during console property change notification.

ConsoleDropDownAction.0=Select Console
ConsoleDropDownAction.1=Display Selected Console

ConsoleManager.0=An exception occurred during console notification

ConsoleView.0=Console
ConsoleView.1=Console ({0})

find_replace_action.label=&Find/Replace...@Ctrl+F
find_replace_action.tooltip=Find/Replace
find_replace_action.image=
find_replace_action.description=Find/Replace

MessageConsolePage.&Copy@Ctrl+C_6=&Copy@Ctrl+C
MessageConsolePage.Copy_7=Copy
MessageConsolePage.Select_&All@Ctrl+A_12=Select &All@Ctrl+A
MessageConsolePage.Select_All=Select All

MessageConsolePartitioner.2=Low water mark must be less than high water mark.
MessageConsolePartitioner.3=Low water mark must be greater than or equal to 1000.

PinConsoleAction.0=Pi&n Console
PinConsoleAction.1=Pin Console

ClearOutputAction.title=Clea&r
ClearOutputAction.toolTipText=Clear Console

TextViewerGotoLineAction.Enter_line_number__8=Enter line number (1...{0}):
TextViewerGotoLineAction.Exceptions_occurred_attempt_to_go_to_line_2=Exceptions occurred attempt to go to line
TextViewerGotoLineAction.Go_to_&Line...@Ctrl+L_4=Go to &Line...@Ctrl+L
TextViewerGotoLineAction.Go_To_Line_1=Go to Line
TextViewerGotoLineAction.Line_number_out_of_range_1=Line number out of range
TextViewerGotoLineAction.Not_a_number_2=Not a number

