<?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.ActionMessageBox.Style'>
    @eval trimColor com.google.gerrit.client.Gerrit.getTheme().trimColor;

    .popup { background-color: trimColor; }
    .section {
      padding: 5px 5px;
      border-bottom: 1px solid #b8b8b8;
    }
  </ui:style>
  <g:HTMLPanel>
    <div class='{style.section}'>
      <c:NpTextArea
         visibleLines='3'
         characterWidth='40'
         ui:field='message'/>
    </div>
    <div class='{style.section}'>
      <g:Button ui:field='send'
          title='(Shortcut: Ctrl-Enter)'
          styleName='{res.style.button}'>
        <ui:attribute name='title'/>
        <div><ui:msg>Send</ui:msg></div>
      </g:Button>
    </div>
  </g:HTMLPanel>
</ui:UiBinder>
