<?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='ico' type='com.google.gerrit.client.GerritResources'/>
  <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;
    }

    .queryProject {
      float: left;
      cursor: pointer;
    }

    .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-top: 3px;
      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: 8pt;
      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 {
      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><g:Image
                     ui:field='projectQuery'
                     resource='{ico.queryIcon}'
                     styleName='{style.queryProject}'
                     title='Search for changes on this project'>
                    <ui:attribute name='title'/>
                  </g:Image>
                  <x:InlineHyperlink ui:field='projectLink'
                     title='Go to 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>
