<?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.gerrit.client.change'
    xmlns:g='urn:import:com.google.gwt.user.client.ui'
    xmlns:x='urn:import:com.google.gerrit.client.ui'
    xmlns:clippy='urn:import:com.google.gwtexpui.clippy.client'>
  <ui:with field='res' type='com.google.gerrit.client.change.Resources'/>
  <ui:style type='com.google.gerrit.client.change.ChangeScreen2.Style'>
    @eval textColor com.google.gerrit.client.Gerrit.getTheme().textColor;
    @eval trimColor com.google.gerrit.client.Gerrit.getTheme().trimColor;

    @def INFO_WIDTH 450px;
    @def HEADER_HEIGHT 29px;

    .headerLine {
      position: relative;
      background-color: trimColor;
      height: HEADER_HEIGHT;
    }

    .idBlock {
      position: relative;
      width: INFO_WIDTH;
      height: HEADER_HEIGHT;
      background-color: trimColor;
      color: textColor;
      font-family: sans-serif;
      font-weight: bold;
    }
    .star {
      cursor: pointer;
      outline: none;
      position: absolute;
      left: 5px;
      top: 5px;
    }
    .idLine, .idStatus {
      line-height: HEADER_HEIGHT;
    }
    .idLine {
      position: absolute;
      top: 0;
      left: 29px;
      width: 245px;
      white-space: nowrap;
      overflow: hidden;
      text-overflow: ellipsis;
    }
    .idStatus {
      position: absolute;
      top: 0;
      right: 26px;
    }
    .reload {
      display: block;
      position: absolute;
      top: 7px;
      right: 5px;
      cursor: pointer;
    }

    .headerButtons {
      position: absolute;
      top: 0;
      left: INFO_WIDTH;
      height: HEADER_HEIGHT;
      padding-left: 5px;
    }

    .popdown {
      position: absolute;
      top: 2px;
      right: 0;
    }
    .popdown button {
      cursor: pointer;
      height: 25px;
      border: none;
      border-left: 2px solid #fff;
      background-color: trimColor;
      margin: 0;
      padding-left: 2px;
      padding-right: 2px;
      min-width: 100px;
    }
    .popdown button div {
      padding-left: 6px;
      padding-right: 6px;
    }
    .popdown button div:after {
      content: " \25bc";
    }
    .popdown button.selected {
      font-weight: bold;
    }
    .headerLine button:disabled,
    .headerTable button:disabled,
    .popdown button:disabled {
      background-color: #999;
      background-image: -webkit-linear-gradient(top, #999, #999);
    }

    .headerTable {
      border-spacing: 0;
    }

    .headerTable th {
      width: 60px;
      color: #444;
      font-weight: normal;
      vertical-align: top;
      text-align: left;
      padding-right: 5px;
    }

    .clippy div {
      float: right;
    }

    .infoColumn {
      width: 440px;
      padding-right: 10px;
      vertical-align: top;
    }

    #change_infoTable {
      border-spacing: 0;
      width: 100%;
      margin-left: 2px;
      margin-right: 5px;
    }

    .notMergeable {
      float: right;
      font-weight: bold;
      color: red;
    }

    .commitColumn, .related {
      padding: 0;
      vertical-align: top;
    }
    .commitColumn {
      width: 600px;
    }

    .labels {
      border-spacing: 0;
      padding: 0;
    }
    .labelName {
      color: #444;
      vertical-align: top;
      text-align: left;
      padding-right: 5px;
      white-space: nowrap;
    }

    .label_user {
      display: inline-block;
      margin-bottom: 2px;
      padding: 1px 3px 0px 3px;
      border-radius: 5px;
      -webkit-border-radius: 5px;
      background: trimColor;
      border: 1px solid trimColor;
      white-space: nowrap;
    }
    .label_user img.avatar {
      margin: 0 2px 0 0;
      width: 16px;
      height: 16px;
      vertical-align: bottom;
    }
    .label_user button {
      cursor: pointer;
      padding: 0;
      margin: 0 0 0 5px;
      border: 0;
      background-color: transparent;
      white-space: nowrap;
    }

    .label_ok {color: #060;}
    .label_reject {color: #d14836;}
    .label_need {color: #000;}
    .label_may {color: #777;}

    .headerButtons button {
      margin: 6px 3px 0 0;
      border-color: rgba(0, 0, 0, 0.1);
      text-align: center;
      font-size: 11px;
      font-weight: bold;
      border: 1px solid;
      cursor: pointer;
      color: #444;
      background-color: #f5f5f5;
      background-image: -webkit-linear-gradient(top, #f5f5f5, #f1f1f1);
      -webkit-border-radius: 2px;
      -webkit-box-sizing: content-box;
    }
    .headerButtons button div {
      color: #444;
      height: 10px;
      min-width: 54px;
      line-height: 10px;
      white-space: nowrap;
    }
    button.quickApprove {
      color: #fff;
      background-color: #4d90fe;
      background-image: -webkit-linear-gradient(top, #4d90fe, #4d90fe);
    }
    button.quickApprove div { color: #fff; }

    .sectionHeader {
      position: relative;
      background-color: trimColor;
      font-weight: bold;
      color: textColor;
      height: 18px;
      padding: 5px 10px;
    }
    .sectionHeader .headerButtons {
      top: 2px;
      height: 18px;
      border-left: 1px inset #fff;
      padding-top: 3px;
      padding-bottom: 3px;
    }
    .sectionHeader button { margin-top: 0; }

    .replyBox {
      background-color: trimColor;
    }
  </ui:style>

  <g:HTMLPanel>
    <g:HTMLPanel styleName='{style.headerLine}' ui:field='headerLine'>
      <div class='{style.idBlock}'>
        <c:StarIcon ui:field='star' styleName='{style.star}'/>
        <div class='{style.idLine}'>
          <ui:msg>Change <span ui:field='changeIdText'/> by <span ui:field='ownerText'/></ui:msg>
        </div>
        <div ui:field='statusText' class='{style.idStatus}'/>
        <a ui:field='permalink' class='{style.reload}'>
          <c:Reload ui:field='reload'
              title='Reload the change (Shortcut: R)'>
            <ui:attribute name='title'/>
          </c:Reload>
        </a>
      </div>
      <div class='{style.headerButtons}'>
        <g:Button ui:field='reply'
            styleName=''
            title='Reply and score (Shortcut: a)'>
          <ui:attribute name='title'/>
          <div><ui:msg>Reply&#8230;</ui:msg></div>
        </g:Button>
        <c:QuickApprove ui:field='quickApprove'
            styleName='{style.quickApprove}'
            title='Apply score with one click'>
          <ui:attribute name='title'/>
        </c:QuickApprove>
        <g:Button ui:field='editMessage'
            styleName=''
            visible='false'
            title='Edit commit message (Shortcut: e)'>
          <ui:attribute name='title'/>
          <div><ui:msg>Edit Message</ui:msg></div>
        </g:Button>
      </div>

      <g:FlowPanel styleName='{style.popdown}'>
        <g:Button ui:field='includedIn' styleName='' visible="false">
          <div><ui:msg>Included in</ui:msg></div>
        </g:Button>
        <g:Button ui:field='revisions' styleName=''>
          <div><ui:msg>Revisions</ui:msg></div>
        </g:Button>
        <g:Button ui:field='download' styleName=''>
          <div><ui:msg>Download</ui:msg></div>
        </g:Button>
      </g:FlowPanel>
    </g:HTMLPanel>

    <table class='{style.headerTable}'>
      <tr>
        <td class='{style.infoColumn}'>
          <table id='change_infoTable'>
            <tr>
              <th><ui:msg>Reviewers</ui:msg></th>
              <td ui:field='reviewersText'/>
            </tr>
            <tr>
              <th><ui:msg>CC</ui:msg></th>
              <td>
                <c:Reviewers ui:field='reviewers'/>
              </td>
            </tr>
            <tr>
              <th><ui:msg>Project</ui:msg></th>
              <td><x:InlineHyperlink ui:field='projectLink'
                     title='Search for changes on this project'>
                     <ui:attribute name='title'/>
                  </x:InlineHyperlink>
              </td>
            </tr>
            <tr>
              <th><ui:msg>Branch</ui:msg></th>
              <td><x:InlineHyperlink ui:field='branchLink'
                     title='Search for changes on this branch'>
                     <ui:attribute name='title'/>
                  </x:InlineHyperlink>
              </td>
            </tr>
            <tr>
              <th><ui:msg>Strategy</ui:msg></th>
              <td>
                <span ui:field='submitActionText'/>
                <div ui:field='notMergeable'
                     class='{style.notMergeable}'
                     style='display: none'
                     aria-hidden='true'>
                  <ui:msg>Cannot Merge</ui:msg>
                </div>
              </td>
            </tr>
            <tr><td colspan='2'><c:Actions ui:field='actions'/></td></tr>
            <tr>
              <th ui:field='actionText'/>
              <td ui:field='actionDate'/>
            </tr>
            <tr>
              <th><ui:msg>Change-Id</ui:msg></th>
              <td><clippy:CopyableLabel styleName='{style.clippy}' ui:field='idText'/></td>
            </tr>
            <tr>
              <th><ui:msg>Topic</ui:msg></th>
              <td><c:Topic ui:field='topic'/></td>
            </tr>
          </table>
          <hr/>
          <c:Labels ui:field='labels' styleName='{style.labels}'/>
        </td>

        <td class='{style.commitColumn}'>
          <c:CommitBox ui:field='commit'/>
        </td>

        <td class='{style.related}'>
          <c:RelatedChanges ui:field='related'/>
        </td>
      </tr>
    </table>

    <div class='{style.sectionHeader}'>
      <ui:msg>Files</ui:msg>
    </div>
    <c:FileTable ui:field='files'/>

    <div class='{style.sectionHeader}'>
      <ui:msg>History</ui:msg>
      <div class='{style.headerButtons}'>
        <g:Button ui:field='expandAll'
            styleName=''
            title='Expand all messages in the change history'>
          <ui:attribute name='title'/>
          <div><ui:msg>Expand All</ui:msg></div>
        </g:Button>
        <g:Button ui:field='collapseAll'
            styleName=''
            visible='false'
            title='Collapse all messages in the change history'>
          <ui:attribute name='title'/>
          <div><ui:msg>Collapse All</ui:msg></div>
        </g:Button>
      </div>
    </div>
    <g:FlowPanel ui:field='history'/>
  </g:HTMLPanel>
</ui:UiBinder>
