/**************************************************************
 *
 * Licensed to the Apache Software Foundation (ASF) under one
 * or more contributor license agreements.  See the NOTICE file
 * distributed with this work for additional information
 * regarding copyright ownership.  The ASF licenses this file
 * to you under the Apache License, Version 2.0 (the
 * "License"); you may not use this file except in compliance
 * with the License.  You may obtain a copy of the License at
 *
 *   http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing,
 * software distributed under the License is distributed on an
 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
 * KIND, either express or implied.  See the License for the
 * specific language governing permissions and limitations
 * under the License.
 *
 *************************************************************/



#include "fldui.hrc"
#include "DropDownFieldDialog.hrc"
#include "helpid.h"
ModalDialog DLG_FLD_DROPDOWN
{
	HelpID = HID_FLD_DROPDOWN ;
	OutputSize = TRUE ;
	Hide = TRUE ;
	SVLook = TRUE ;
	Size = MAP_APPFONT ( 194, 119 ) ;
	Text [ en-US ] = "Choose Item: " ;
	Moveable = TRUE ;
	FixedLine FL_ITEMS
	{
		Pos = MAP_APPFONT ( 6, 3 ) ;
		Size = MAP_APPFONT ( 127, 8 ) ;
		Text [ en-US ] = "Edit" ;
	};
	ListBox LB_LISTITEMS
	{
		HelpID = "sw:ListBox:DLG_FLD_DROPDOWN:LB_LISTITEMS" ;
		Border = TRUE ;
		Pos = MAP_APPFONT ( 12, 14 ) ;
		Size = MAP_APPFONT ( 115, 99 ) ;
		TabStop = TRUE ;
		Sort = FALSE ;
		AutoHScroll = TRUE ;
	};
	OKButton PB_OK
	{
		Pos = MAP_APPFONT ( 139, 6 ) ;
		Size = MAP_APPFONT ( 50, 14 ) ;
		TabStop = TRUE ;
		DefButton = TRUE ;
	};
	CancelButton PB_CANCEL
	{
		Pos = MAP_APPFONT ( 139, 23 ) ;
		Size = MAP_APPFONT ( 50, 14 ) ;
		TabStop = TRUE ;
	};
	PushButton PB_NEXT
	{
		HelpID = "sw:PushButton:DLG_FLD_DROPDOWN:PB_NEXT" ;
		Pos = MAP_APPFONT ( 139, 40 ) ;
		Size = MAP_APPFONT ( 50, 14 ) ;
		TabStop = TRUE ;
		Hide = TRUE ;
		Text [ en-US ] = "~Next" ;
	};
	HelpButton PB_HELP
	{
		Pos = MAP_APPFONT ( 139, 60 ) ;
		Size = MAP_APPFONT ( 50, 14 ) ;
		TabStop = TRUE ;
	};
	PushButton PB_EDIT
	{
		HelpID = "sw:PushButton:DLG_FLD_DROPDOWN:PB_EDIT" ;
		Pos = MAP_APPFONT ( 139, 99 ) ;
		Size = MAP_APPFONT ( 50, 14 ) ;
		TabStop = TRUE ;
		Text [ en-US ] = "~Edit" ;
	};

};

// ********************************************************************** EOF
