<?xml version="1.0" encoding="UTF-8"?>
<!--
Copyright (C) 2016 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='ico' type='com.google.gerrit.client.GerritResources'/>
  <ui:with field='res' type='com.google.gerrit.client.change.Resources'/>
  <ui:style gss='false'>
    .suggestBox {
      margin-bottom: 2px;
    }

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

    .editAssignee,
    .cancel {
      cursor: pointer;
      float: right;
    }
  </ui:style>
  <g:HTMLPanel>
    <div ui:field='show'>
      <u:InlineHyperlink ui:field='assigneeLink'
          title='Search for changes assigned to this user'/>
      <g:Image ui:field='editAssigneeIcon'
          resource='{ico.editUser}'
          styleName='{style.editAssignee}'
          title='Assign User to Change'/>
    </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='assign' styleName='{res.style.button}'>
          <div>Assign</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>
