###############################################################################
# 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
###############################################################################
window.title = SWT Layouts

Add					= &Add
Delete	 			= &Delete
Clear				= &Clear
Children			= Children
Type				= Type
Layout				= Layout
Preferred_Size		= Preferred Size
Code				= C&ode
Generated_Code		= Generated Code
Parameters			= Parameters
Properties			= Properties
Margins				= Margins
Margins_Spacing		= Margins and Spacing
Columns				= Columns
Attach_Edit			= Edit
Left_Attachment		= Edit Left Attachment
Right_Attachment	= Edit Right Attachment
Top_Attachment		= Edit Top Attachment
Bottom_Attachment	= Edit Bottom Attachment
Position			= Position
Control				= Control
Offset				= Offset [+/-]
Item				= Item {0}
Combo_Index			= Combo {0}
Group_Index			= Group {0}
Label_Index			= Label {0}
Button_Index		= Button {0}
StyledText_Index	= StyledText {0}
Text_Index			= Text {0}
OK					= OK
Cancel				= Cancel
Edit				= &Edit
Select_All			= Select &All\tCtrl+A
Copy				= &Copy\tCtrl+C
Exit				= E&xit
Name_Title			= Enter Names
Name_Label			= Enter names for your controls
Invalid_Name 		= Invalid Name - Please enter valid variable names for your controls
Default				= Default