###############################################################################
# Copyright (c) 2000, 2005 IBM Corporation and others.
# All rights reserved. This program and the accompanying materials
# are made available under the terms of the Eclipse Public License v1.0
# which accompanies this distribution, and is available at
# http://www.eclipse.org/legal/epl-v10.html
#
# 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
BackgroundImage		= Background Image
Preferred 			= Preferred
Styles	 			= Styles
Menu_Styles	 		= Menu Styles
MenuItem_Styles	 	= MenuItem Styles
Listeners			= Listeners
Select_Listeners	= Select Listeners
Listen				= Listen
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_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		= Button Styles
Icon_Styles			= Icon Styles
Modal_Styles		= Modal Styles
File_Dialog_Styles	= File Dialog Styles
Item_Styles			= Item Styles
Dialog_Result		= Dialog 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
Lines_Visible		= Lines Visible
Moveable_Columns	= Moveable 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
readme_txt			= readme.txt
Index				= Index:
Title				= Title:
Close				= Close
Result				= Result: {0}
FilterName_0		= Text Files
FilterName_1		= Batch Files
FilterName_2		= Doc Files
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
Table_Item_Colors	= Row 0 Colors and Font
Tree_Item_Colors	= Node 1 Colors and Font
Item_Font			= Item 0 Font
Background_Color	= Background Color
Foreground_Color	= Foreground Color
Font				= &Font
Defaults			= &Defaults
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
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
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
Set_Image			= Set Image
TableTree_column	= Column
MenuItem_Cut		= Cu&t	Ctrl+X
MenuItem_Copy		= &Copy	Ctrl+C
MenuItem_Paste		= &Paste	Ctrl+V
MenuItem_SelectAll	= Select &All	Ctrl+A
Orientation 		= Orientation
Default 			= Default (Inherit)
Images				= Images
Accelerators		= Accelerators
Mnemonics			= Mnemonics
SubMenu				= Sub-Menu
SubSubMenu			= Sub-Sub-Menu
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}
