<?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:c='urn:import:com.google.gwtexpui.globalkey.client'
    xmlns:g='urn:import:com.google.gwt.user.client.ui'
    xmlns:u='urn:import:com.google.gerrit.client.ui'>
  <ui:with field='res' type='com.google.gerrit.client.change.Resources'/>
  <ui:style>
    button.openAdd {
      margin: 3px 3px 0 0;
      float: right;
      color: rgba(0, 0, 0, 0.15);
      background-color: #f5f5f5;
      background-image: none;
      -webkit-border-radius: 2px;
      -moz-border-radius: 2px;
      border-radius: 2px;
      -webkit-box-sizing: content-box;
      -moz-box-sizing: content-box;
      box-sizing: content-box;
    }
    button.openAdd div {
      width: auto;
      color: #444;
    }

    .suggestBox {
      margin-bottom: 2px;
    }

    .error {
      color: #D33D3D;
      font-weight: bold;
    }

    .cancel {
      float: right;
    }
  </ui:style>
  <g:HTMLPanel>
    <div>
      <span ui:field='reviewersText'/>
      <g:Button ui:field='openForm'
         title='Add reviewers to this change'
         styleName='{res.style.button}'
         addStyleNames='{style.openAdd}'
         visible='false'>
       <ui:attribute name='title'/>
       <div><ui:msg>Add&#8230;</ui:msg></div>
      </g:Button>
    </div>
    <div ui:field='form' style='display: none' aria-hidden='true'>
      <u:RemoteSuggestBox ui:field='suggestBox' styleName='{style.suggestBox}'/>
      <div ui:field='error'
           class='{style.error}'
           style='display: none' aria-hidden='true'/>
      <div>
        <g:Button ui:field='add' styleName='{res.style.button}'>
          <div>Add</div>
        </g:Button>
        <g:Button ui:field='addMe'
            styleName='{res.style.button}' visible='false'>
          <div>Add Me</div>
        </g:Button>
        <g:Button ui:field='cancel'
            styleName='{res.style.button}'
            addStyleNames='{style.cancel}'>
          <div>Cancel</div>
        </g:Button>
      </div>
    </div>
   </g:HTMLPanel>
  </ui:UiBinder>
