/**************************************************************
 *
 * 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 <selectdbtabledialog.hrc>
#include <dbui.hrc>
#include <helpid.h>

ModalDialog DLG_MM_SELECTDBTABLEDDIALOG
{
    OutputSize = TRUE ;
    SVLook = TRUE ;
    HelpID = HID_MM_SELECTDBTABLEDDIALOG;
    Size = MAP_APPFONT ( 250 , 135 ) ;
    Moveable = TRUE ;

    Text [ en-US ] = "Select Table";

    FixedText       FI_SELECT
    {
        Pos = MAP_APPFONT ( 6 , 3 ) ;
        Size = MAP_APPFONT ( 238 , 24 ) ;
        WordBreak = TRUE;
        Text [ en-US ] = "The file you have selected contains more than one table. Please select the table containing the address list you want to use.";
    };
    Control LB_TABLE
    {
        Pos = MAP_APPFONT ( 6 , 30 ) ;
        Size = MAP_APPFONT ( 238 , 50 ) ;
        Border = TRUE;
    };
    PushButton      PB_PREVIEW
    {
        HelpID = "sw:PushButton:DLG_MM_SELECTDBTABLEDDIALOG:PB_PREVIEW";
        Pos = MAP_APPFONT ( 6 , 84 ) ;
        Size = MAP_APPFONT ( 50 , 14 ) ;
        Text [ en-US ] = "~Preview";
    };
    FixedLine FL_SEPARATOR
    {
        Pos = MAP_APPFONT ( 6 , 104 ) ;
        Size = MAP_APPFONT ( 238 , 8 ) ;
    };
    OKButton        PB_OK
    {
        Pos = MAP_APPFONT ( 85 , 115 ) ;
        Size = MAP_APPFONT ( 50 , 14 ) ;
    };
    CancelButton    PB_CANCEL
    {
        Pos = MAP_APPFONT ( 138 , 115 ) ;
        Size = MAP_APPFONT ( 50 , 14 ) ;
    };
    HelpButton      PB_HELP
    {
        Pos = MAP_APPFONT ( 194 , 115 ) ;
        Size = MAP_APPFONT ( 50 , 14 ) ;
    };
    String ST_NAME
    {
        Text [ en-US ] = "Name";
    };
    String ST_TYPE
    {
        Text [ en-US ] = "Type";
    };
    String ST_TABLE
    {
        Text [ en-US ] = "Table";
    };
    String ST_QUERY
    {
        Text [ en-US ] = "Query";
    };

};
