###############################################################################
# Copyright (c) 2000, 2003 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
###############################################################################
window.title = SWT Layouts

Add					= &Add
Delete	 			= &Delete
Clear				= &Clear
Children			= Children
Type				= Type
Top_Control			= Top Control
Layout				= Layout
Preferred_Size		= Preferred Size
Generate_Code		= &Generate Code
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