<!-- 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. -->
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
  <Fragment>
    <UI>
      <Dialog Id="DatabaseInformation" Width="370" Height="270" Title="!(loc.DatabaseInformationTitle)">
        <Control Id="Next" Type="PushButton" X="236" Y="243" Width="56" Height="17" Default="yes" Text="!(loc.WixUINext)" />
        <Control Id="Cancel" Type="PushButton" X="304" Y="243" Width="56" Height="17" Cancel="yes" Text="!(loc.WixUICancel)">
                    <Publish Event="SpawnDialog" Value="CancelDlg">1</Publish>
        </Control>
        <Control Id="Bitmap" Type="Bitmap" X="0" Y="0" Width="370" Height="234" TabSkip="no" Text="!(loc.WelcomeDlgBitmap)" />
        <Control Id="Back" Type="PushButton" X="180" Y="243" Width="56" Height="17" Text="!(loc.WixUIBack)" />
        <Control Id="BottomLine" Type="Line" X="0" Y="235" Width="370" Height="0" />
        <Control Id="Description" Type="Text" X="135" Y="10" Width="220" Height="20" Transparent="yes" NoPrefix="yes" Text="!(loc.DatabaseInformationDescription)" />

        <Control Id="DbServerIpLabel" Type="Text" X="160" Y="38" Width="40" Height="20" TabSkip="no" Text="!(loc.DbServerIpLabel)" Transparent="yes"/>
        <Control Id="DbServerIp" Type="Edit" Height="20" Width="92" X="220" Y="33" Property="DB_HOSTNAME" />
        <Control Id="DbServerPortLabel" Type="Text" X="160" Y="68" Width="40" Height="20" TabSkip="no" Text="!(loc.DbServerPortLabel)" Transparent="yes"/>
        <Control Id="DbServerPort" Type="Edit" Height="20" Width="92" X="220" Y="63" Property="DB_PORT" />
        <Control Id="DbUserNameLabel" Type="Text" X="160" Y="98" Width="40" Height="20" TabSkip="no" Text="!(loc.DbUserNameLabel)" Transparent="yes"/>
        <Control Id="DbUserName" Type="Edit" Height="20" Width="92" X="220" Y="93" Property="DB_USERNAME" />
        <Control Id="DbPasswordLabel" Type="Text" X="160" Y="128" Width="40" Height="20" TabSkip="no" Text="!(loc.DbPasswordLabel)" Transparent="yes"/>
        <Control Id="DbPassword" Type="Edit" Height="20" Width="92" X="220" Y="123" Property="DB_PASSWORD" Password="yes"/>
        <Control Id="DbRootPasswordLabel" Type="Text" X="160" Y="158" Width="40" Height="20" TabSkip="no" Text="!(loc.DbRootPasswordLabel)" Transparent="yes"/>
        <Control Id="DbRootPassword" Type="Edit" Height="20" Width="92" X="220" Y="153" Property="DB_ROOT_PASSWORD" Password="yes"/>
        <Control Id="CreateDBCheckBox" Type="CheckBox" X="160" Y="207" Width="10" Height="10" CheckBoxValue="1" Property="CREATE_DATABASE"/>
        <Control Id="CreateDBCheckBoxLabel" Type="Text" X="176" Y="207" Width="340" Height="20" TabSkip="no" Text="!(loc.CreateDBCheckBoxLabel)" Transparent="yes"/>
      </Dialog>
    </UI>
  </Fragment>
</Wix>