###############################################################################
# Copyright (c) 2000, 2019 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
###############################################################################
error.CouldNotLoadResources = Unable to load resources
window.title = SWT Controls
custom.window.title = SWT Custom Controls

Text_Buttons		= Text Buttons
Size 				= Size
Alignment			= Alignment
Left				= Left
Right				= Right
Up					= Up
Down				= Down
Center				= Center
One					= One
Two					= Two
Three				= Three
Image_Buttons		= Image Buttons
Image_Text_Buttons	= Image and Text Buttons
Control_Example		= Control Example
Parameters			= Parameters
Other				= Other
Enabled				= Enabled
Visible				= Visible
BackgroundColor		= Background Color
BackgroundImage		= Background Image
PopupMenu			= Popup Menu
Preferred 			= Preferred
Styles	 			= Styles
Menu_Styles	 		= Menu Styles
MenuItem_Styles	 	= MenuItem Styles
Background_Mode		= Background Mode on Parent
Listeners			= Listeners
Select_Listeners	= Select Listeners
Listen				= Listen
UntypedEvents		= Untyped Events
Edit_Event			= Edit Event
Edit_Event_Fields	= On {0}, return the following:
Returning			= <- Returning:
Clear				= Clear
Set_Get				= Set/Get API
Parameter_Info		= {0}   e.g. {1}
Info_int			= 4
Info_intA			= 0,1,2
Info_long			= 4
Info_longA			= 0,1,2
Info_char			= c
Info_charA			= a,b,c
Info_boolean		= true
Info_booleanA		= true,true,false
Info_String			= hello
Info_StringA		= hello,there
Info_Point			= 0,0
Info_Rectangle		= 0,0,20,10
Info_TabItem		= Tab 0
Info_TabItemA		= Tab 0,Tab 2
Info_TableItem		= Index:2
Info_TableItemA		= Index:2,Index:4
Info_TreeItem		= Node 1
Info_TreeItemA		= Node 1,Node 3
Select_All			= Select All
Deselect_All		= Deselect All
OK					= OK
FillDamage			= Fill Damaged Area With Color
Title_Text			= Title Text
Text_Labels			= Text Labels
Image_Labels		= Image Labels
Custom_Labels		= Custom Labels
Custom_Combo		= Custom Combo
One_Two_Three		= One Two Three
Text_ToolBar 		= Text ToolBar
Image_ToolBar 		= Image ToolBar
ImageText_ToolBar	= Image and Text ToolBar
Maximum				= Maximum
Minimum				= Minimum
Selection			= Selection
Increment			= Increment
Page_Increment		= Page Increment
Thumb				= Thumb
Digits				= Digits
Tree_With_Images	= Tree With Images
Dialog_Type			= Dialog Type
Create_Dialog		= Create Dialog
Button_Styles		= MessageBox Button Styles
Icon_Styles			= MessageBox Icon Styles
Modal_Styles		= Modal Styles
File_Dialog_Styles	= FileDialog Styles
Item_Styles			= Item Styles
Dialog_Result		= Dialog Result
Use_Previous_Result = Use Previous Result
ColorDialog			= ColorDialog
DirectoryDialog		= DirectoryDialog
FileDialog			= FileDialog
FontDialog			= FontDialog
PrintDialog			= PrintDialog
MessageBox			= MessageBox
Multi_line			= A multi line text widget.
Example_string		= The quick brown fox jumps over the lazy dog.
Header_Visible		= Header Visible
Sort_Indicator		= Sort Indicator
Header_Images		= Header Images
Sub_Images			= Sub Images
Lines_Visible		= Lines Visible
Moveable_Columns	= Moveable Columns
Resizable_Columns	= Resizable Columns
Multiple_Columns	= Multiple Columns
Locked				= Locked
Combo_child			= Combo Child
Node_1				= Node 1
Node_2				= Node 2
Node_3				= Node 3
Node_4				= Node 4
Node_1_1			= Node 1.1
Node_2_1			= Node 2.1
Node_3_1			= Node 3.1
Node_2_2			= Node 2.2
Node_2_2_1			= Node 2.2.1
Parent				= Parent
No_Parent			= No Parent
Decoration_Styles	= Decoration Styles
Create_Shell		= Create Shell
Close_All_Shells	= Close All Shells
Push				= Push
Radio				= Radio
Check				= Check
Cascade				= Cascade
Drop_Down			= Drop Down
Images_failed		= Warning: Failed to load images
Index				= Index:
Title				= Title:
Close				= Close
Button				= Button
FullScreen			= Full Screen
Result				= Result: {0}
FilterName_0		= Text Files (*.txt)
FilterName_1		= Batch Files (*.bat)
FilterName_2		= Doc Files (*.doc, *.rtf)
FilterName_3		= All Files (*)
TableTitle_0		= Name
TableTitle_1		= Type
TableTitle_2		= Size
TableTitle_3		= Modified
TableLine0_0		= <empty>
TableLine0_1		= classes
TableLine0_2		= 0
TableLine0_3		= today
TableLine1_0		= <empty>
TableLine1_1		= databases
TableLine1_2		= 2556
TableLine1_3		= tomorrow
TableLine2_0		= <empty>
TableLine2_1		= images
TableLine2_2		= 91571
TableLine2_3		= yesterday
ListData0_0			= Line 1
ListData0_1			= Line 2
ListData0_2			= Line 3
ListData0_3			= Line 4
ListData0_4			= Line 5
ListData0_5			= Line 6
ListData0_6			= Line 7
ListData0_7			= Line 8
ListData0_8			= Longest Line In List
ListData1_0			= Apples
ListData1_1			= Oranges
ListData1_2			= Bananas
ListData1_3			= Grapefruit
ListData1_4			= Peaches
ListData1_5			= Kiwi
ListData1_6			= Apricots
ListData1_7			= Strawberries
ListData1_8			= The Longest String
DropDownData_0		= Apples
DropDownData_1		= Oranges
DropDownData_2		=
DropDownData_3		= Grapefruit
DropDownData_4		= Peaches
DropDownData_5		= Kiwi
DropDownData_6		=
DropDownData_7		= Strawberries
DropDownData_8		= The Longest String
Colors 				= Colors and Font
Change				= &Change...
Defaults			= &Defaults
Foreground_Color	= Foreground Color
Background_Color	= Background Color
Font				= Font
Item_Foreground_Color	= Item 0 Foreground Color
Item_Background_Color	= Item 0 Background Color
Item_Font				= Item 0 Font
Cell_Foreground_Color	= Item 0 Col 1 Foreground Color
Cell_Background_Color	= Item 0 Col 1 Background Color
Cell_Font				= Item 0 Col 1 Font
Wrap_Text			= Jack and Jill went up the hill to fetch a pail of water, \
					  Jack fell down and broke his crown and Jill came tumbling after!
Foreground_Style	= Foreground
Background_Style 	= Background
StyledText_Styles	= Text Styles
StyledText_Style_Instructions	= Select text, then style.
Bold				= Bold
Italic				= Italic
Underline			= Underline
Strikeout			= Strikeout
Fill_X				= Horizontal Fill
Fill_Y				= Vertical Fill
Pack_Columns		= Pack Columns
TabItem1_0			= Tab &0
TabItem1_1			= Tab &1
TabItem1_2			= Tab &2
TabItem_content		= TabItem Content
CTabItem1_0			= CTabItem &0
CTabItem1_1			= CTabItem &1
CTabItem1_2			= CTabItem &2 has a long name
CItem_Colors		= CTabItem Colors
CTabItem_content	= CTabItem Content
Mouse_Nav			= Mouse Navigator
Set_Simple_Tabs		= Simple Tabs
Set_Single_Tabs		= Single Tab
Set_Min_Visible     = Minimize
Set_Max_Visible     = Maximize
Set_Unselected_Close_Visible = Close on Unselected Tabs
Set_Unselected_Image_Visible = Image on Unselected Tabs
Selection_Foreground_Color = Selection Foreground Color
Selection_Background_Color = Selection Background Color
Link_Foreground_Color = Link Foreground Color
Set_Image			= Set Image
Set_Top_Right		= Set Top Right
Top_Right_Styles	= Top Right Styles
MenuItem_Cut		= Cu&t	Ctrl+X
MenuItem_Copy		= &Copy	Ctrl+C
MenuItem_Paste		= &Paste	Ctrl+V
MenuItem_SelectAll	= Select &All	Ctrl+A
Orientation 		= Orientation
Text_Direction	 	= Text Direction
Default 			= Default (Inherit)
Images				= Images
Accelerators		= Accelerators
Mnemonics			= Mnemonics
SubMenu				= Sub-Menu
SubSubMenu			= Sub-Sub-Menu
Show_Tooltip		= Tooltip
1Radio				= Radio1
2Radio				= Radio2
1RadioWithMnemonic	= Radio&1
2RadioWithMnemonic	= Radio&2
PushWithMnemonic	= &Push
RadioWithMnemonic	= &Radio
CheckWithMnemonic	= &Check
CascadeWithMnemonic	= C&ascade
PopupMenuHere		= Popup Menu Here
LinkText=Visit the <A HREF=\"www.eclipse.org\">Eclipse.org</A> project and the <A HREF=\"www.eclipse.org\\swt">SWT</A> homepage.
Tooltip				= Tooltip:  {0}
Item1_Text			= What is your favorite button?
Item2_Text			= What is your favorite icon?
ToolTip_Title		= Foxes vs. Dogs
No_Icon				= No Icon
Show_In_Tray		= Show In Tray
BrowserNotFound		= Browser not found:  {0}
MozillaNotFound		= Cannot use SWT.MOZILLA style:  {0}\nSee http://www.eclipse.org/swt/faq.php#howusemozilla for more information.
WebKitNotFound		= Cannot use SWT.WEBKIT style:  {0}\nSee http://www.eclipse.org/swt/faq.php#howusewebkit for more information.
ColorTitle_0		= Name
ColorTitle_1		= Type
ColorTitle_2		= RGBA
ColorTitle_3		= Color
Header_Foreground_Color = Header Foreground Color
Header_Background_Color = Header Background Color