<?xml version="1.0" encoding="UTF-8"?>
<!--
Copyright (C) 2013 The Android Open Source Project

Licensed 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.
-->
<ui:UiBinder
    xmlns:ui='urn:ui:com.google.gwt.uibinder'
    xmlns:g='urn:import:com.google.gwt.user.client.ui'
    xmlns:c='urn:import:com.google.gwtexpui.globalkey.client'>
  <ui:with field='res' type='com.google.gerrit.client.change.Resources'/>
  <ui:style type='com.google.gerrit.client.change.ReplyBox.Styles'>
    .replyBox {
      max-height: 260px;
    }

    .label_name {
      font-weight: bold;
      text-align: left;
    }
    .label_name input { margin-left: 0; }

    .label_value {
      text-align: center;
    }
    .email {
      display: inline-block;
      margin-left: 2em;
    }
    .cancel {
      position: absolute;
      bottom: 5px;
      right: 5px;
    }
  </ui:style>
  <g:HTMLPanel styleName='{style.replyBox}'>
    <div class='{res.style.section}'>
      <c:NpTextArea
         visibleLines='5'
         characterWidth='70'
         ui:field='message'/>
    </div>
    <div class='{res.style.section}' ui:field='labelsParent'>
      <g:Grid ui:field='labelsTable'/>
    </div>
    <div class='{res.style.section}' style='position: relative'>
      <g:Button ui:field='send'
          title='Send reply (Shortcut: Ctrl-Enter)'
          styleName='{res.style.button}'>
        <ui:attribute name='title'/>
        <div><ui:msg>Send</ui:msg></div>
      </g:Button>

      <div class='{style.email}'>
        <ui:msg>and <g:CheckBox ui:field='email' value='true'>send email</g:CheckBox></ui:msg>
      </div>

      <g:Button ui:field='cancel'
          title='Close reply form (Shortcut: Esc)'
          styleName='{res.style.button}'
          addStyleNames='{style.cancel}'>
        <ui:attribute name='title'/>
        <div><ui:msg>Cancel</ui:msg></div>
      </g:Button>
    </div>
  </g:HTMLPanel>
</ui:UiBinder>
