<?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.clippy.client'>
  <ui:with field='res' type='com.google.gerrit.client.change.Resources'/>
  <ui:style>
    @external .gwt-TextBox;

    .downloadBox {
      min-width: 580px;
      margin: 5px;
    }

    .table {
      border-spacing: 0;
      width: 100%;
    }
    .table th {
      text-align: left;
      font-weight: normal;
      white-space: nowrap;
      max-height: 18px;
      width: 80px;
      padding-right: 5px;
    }

    .scheme {
      float: right;
    }

    .clippy {
      font-size: smaller;
      font-family: monospace;
    }
    .clippy span {
      width: 500px;
      white-space: nowrap;
      display: inline-block;
      overflow: hidden;
      text-overflow: ellipsis;
    }
    .clippy .gwt-TextBox {
      padding: 0;
      margin: 0;
      border: 0;
      max-height: 18px;
      width: 500px;
    }
    .clippy div {
      float: right;
    }
  </ui:style>
  <g:HTMLPanel styleName='{style.downloadBox}'>
    <table class='{style.table}'>
      <tr>
        <th><ui:msg>Checkout</ui:msg></th>
        <td><c:CopyableLabel ui:field='checkout' styleName='{style.clippy}'/></td>
      </tr>
      <tr>
        <th><ui:msg>Cherry Pick</ui:msg></th>
        <td><c:CopyableLabel ui:field='cherryPick' styleName='{style.clippy}'/></td>
      </tr>
      <tr>
        <th><ui:msg>Pull</ui:msg></th>
        <td><c:CopyableLabel ui:field='pull' styleName='{style.clippy}'/></td>
      </tr>
      <tr>
        <th><ui:msg>Patch File</ui:msg></th>
        <td><a ui:field='patchZip'/> | <a ui:field='patchBase64'/></td>
      </tr>
      <tr ui:field='repoSection' style='display: NONE' aria-hidden='true'>
        <th><ui:msg>repo</ui:msg></th>
        <td><c:CopyableLabel ui:field='repoDownload' styleName='{style.clippy}'/></td>
      </tr>
      <tr>
        <td colspan='2'>
          <g:ListBox ui:field='scheme' styleName='{style.scheme}'/>
        </td>
      </tr>
    </table>
  </g:HTMLPanel>
</ui:UiBinder>
