<?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'>
  <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' type='com.google.gerrit.client.change.ChangeScreen.Style'>
    @eval textColor com.google.gerrit.client.Gerrit.getTheme().textColor;
    @eval trimColor com.google.gerrit.client.Gerrit.getTheme().trimColor;

    @def COMMIT_WIDTH 560px;
    @def HEADER_HEIGHT 30px;

    @def BUTTON_HEIGHT 14px;

    .cs2 {
      margin-bottom: 1em;
    }

    .headerLine {
      position: relative;
      background-color: trimColor;
      height: HEADER_HEIGHT;
      margin: 0 -5px;
      padding: 0 5px;
    }

    .subjectLine {
      position: relative;
      width: COMMIT_WIDTH;
      height: HEADER_HEIGHT;
      background-color: trimColor;
      color: textColor;
      font-family: sans-serif;
    }
    .subjectText {
      width: 460px;
      height: HEADER_HEIGHT;
      line-height: HEADER_HEIGHT;
      overflow: hidden;
      text-overflow: ellipsis;
      white-space: nowrap;
    }

    .infoLine {
      position: absolute;
      top: 0;
      left: COMMIT_WIDTH;
      height: HEADER_HEIGHT;
      padding-left: 25px;
    }

    .infoLineHeaderButtons {
      display: inline-block;
      height: HEADER_HEIGHT;
    }
    .statusRight {
      position: absolute;
      top: 0;
      right: 0;
      height: HEADER_HEIGHT;
    }
    .idAndStatus {
      display: inline-block;
      position: relative;
      height: HEADER_HEIGHT;
    }
    .star {
      position: absolute;
      top: 5px;
      right: 2px;
      cursor: pointer;
      outline: none;
    }
    .changeId {
      width: 300px;
      white-space: nowrap;
      line-height: HEADER_HEIGHT;
      overflow: hidden;
      text-overflow: ellipsis;
    }
    .statusText {
      font-weight: bold;
    }
    .privateText {
      font-weight: bold;
    }

    .wipText {
      font-weight: bold;
    }

    div.popdown {
      display: inline-block;
      margin-top: 2px;
      margin-left: 5px;
      margin-right: 25px;
    }

    .popdown button {
      cursor: pointer;
      height: 25px;
      border: none;
      background-color: trimColor;
      margin: 0 0 0 -2px;
      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;
    }
    .popdown button:focus {
      outline: none;
    }

    .headerButtons button:disabled,
    #change_infoTable button:disabled,
    .popdown button:disabled {
      background-color: #999;
      background-image: -webkit-linear-gradient(top, #999, #999);
    }

    .infoTable {
      border-spacing: 0;
    }

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

    .projectSettings {
      float: right;
      cursor: pointer;
    }

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

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

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

    .commitColumn, .relatedColumn {
      padding: 0;
      vertical-align: top;
    }
    .commitColumn { width: COMMIT_WIDTH; }
    .relatedColumn { width: 375px; }

    .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;}

    .hashtagName {
      display: inline-block;
      height: 15px;
      margin-bottom: 2px;
      padding: 1px 3px 1px 3px;
      border-radius: 5px;
      -webkit-border-radius: 5px;
      background: #E2F5FF;
      border: 1px solid #579FDA;
      white-space: nowrap;
    }

    .hashtagName a,
    .hashtagName button {
      position: relative;
      top: -4px;
    }

    .hashtagName button {
      cursor: pointer;
      padding: 0;
      margin: 0 0 0 5px;
      border: 0;
      background-color: transparent;
      white-space: nowrap;
    }

    .hashtagIcon img {
      position: relative;
      top: 4px;
    }

    .headerButtons button {
      margin: 5.286px 3px 0 0;
      text-align: center;
      font-size: 8pt;
      font-weight: bold;
      cursor: pointer;
      border: 2px solid;
      color: rgba(0, 0, 0, 0.15);
      background-color: #f5f5f5;
      -webkit-border-radius: 2px;
      -webkit-box-sizing: content-box;
    }
    .headerButtons button div {
      color: #444;
      min-width: 54px;
      white-space: nowrap;
      height: BUTTON_HEIGHT;
      line-height: BUTTON_HEIGHT;
    }
    button.highlight {
      background-color: #4d90fe;
    }
    button.highlight div { color: #fff; }

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

    .diffBase {
      display: inline-block;
      height: 18px;
      line-height: 18px;
      font-size: smaller;
      font-weight: normal;
      vertical-align: top;
    }
    .diffBase select {
      margin: 0;
      border: 2px solid rgba(0, 0, 0, 0.15);
      height: 20px;
      font-size: 8pt;
      font-weight: bold;
      border-radius: 2px;
      background-color: #f5f5f5
    }

    .replyBox {
      background-color: trimColor;
    }

    .ownerPanel img, .uploaderPanel img {
      margin: 0 2px 0 0;
      width: 16px;
      height: 16px !important;
      vertical-align: bottom;
    }

    .headerExtension {
      display: inline-block;
      float: right;
    }

    .headerExtension>div>div {
      float: left;
    }

    .changeExtension {
      padding-top: 5px;
    }

    .relatedExtension {
      padding-top: 5px;
    }

    .commitExtension {
      padding-top: 5px;
    }

    .historyExtension {
      display: inline-block;
      float: right;
    }

    .pushCertStatus {
      padding-left: 5px;
    }

    .notCurrentPatchSet {
      background-color: #FFA62F;
    }
  </ui:style>

  <g:HTMLPanel styleName='{style.cs2}'>
    <g:HTMLPanel styleName='{style.headerLine}' ui:field='headerLine'>
      <div class='{style.subjectLine}'>
        <div class='{style.idAndStatus}'>
          <span class='{style.changeId}'>
            <ui:msg>Change <g:Anchor ui:field='permalink' title='Reload the change (Shortcut: R)'>
              <ui:attribute name='title'/>
            </g:Anchor> - <span ui:field='statusText' class='{style.statusText}'/>
              <span ui:field='privateText' class='{style.privateText}'/>
              <span ui:field='wipText' class='{style.wipText}'/></ui:msg>
          </span>
          <g:SimplePanel ui:field='headerExtension' styleName='{style.headerExtension}'/>
        </div>
      </div>

      <div class='{style.infoLine}'>
        <div class='{style.headerButtons} {style.infoLineHeaderButtons}'>
          <g:Button ui:field='reply'
              styleName=''
              title=''
              visible='false'>
            <ui:attribute name='title'/>
          </g:Button>
          <c:QuickApprove ui:field='quickApprove'
              styleName='{style.highlight}'
              title='Apply score with one click'>
            <ui:attribute name='title'/>
          </c:QuickApprove>
          <g:Button ui:field='publishEdit'
              styleName='{style.highlight}' visible='false'>
            <div><ui:msg>Publish Edit</ui:msg></div>
          </g:Button>
          <g:Button ui:field='rebaseEdit'
              styleName='{style.highlight}' visible='false'>
            <div><ui:msg>Rebase Edit</ui:msg></div>
          </g:Button>
          <g:Button ui:field='deleteEdit' styleName='' visible='false'>
            <div><ui:msg>Delete Edit</ui:msg></div>
          </g:Button>
          <g:SimplePanel ui:field='headerExtensionMiddle' styleName='{style.headerExtension}'/>
        </div>
      </div>

      <div class='{style.statusRight}'>
        <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='patchSets' styleName=''>
            <div ui:field='patchSetsText'/>
          </g:Button>
          <g:Button ui:field='download' styleName=''>
            <div><ui:msg>Download</ui:msg></div>
          </g:Button>
          <g:SimplePanel ui:field='headerExtensionRight' styleName='{style.headerExtension}'/>
        </g:FlowPanel>
        <c:StarIcon ui:field='star' styleName='{style.star}' title='Star the change (Shortcut: s)'>
          <ui:attribute name='title'/>
        </c:StarIcon>
      </div>
    </g:HTMLPanel>

    <table class='{style.infoTable}'>
      <tr>
        <td class='{style.commitColumn}'>
          <c:CommitBox ui:field='commit'/>
          <g:SimplePanel ui:field='commitExtension' styleName='{style.commitExtension}'/>
        </td>
        <td class='{style.infoColumn}'>
          <table id='change_infoTable'>
            <tr>
              <th><ui:msg>Owner</ui:msg></th>
              <td>
                <g:FlowPanel ui:field='ownerPanel' styleName='{style.ownerPanel}'>
                  <x:InlineHyperlink ui:field='ownerLink'/>
                </g:FlowPanel>
              </td>
            </tr>
            <tr ui:field='uploaderRow'>
              <th><ui:msg>Uploader</ui:msg></th>
              <td>
                <g:FlowPanel ui:field='uploaderPanel' styleName='{style.uploaderPanel}'>
                  <g:InlineLabel ui:field='uploaderName'/>
                </g:FlowPanel>
              </td>
            </tr>
            <tr ui:field='assigneeRow'>
              <th><ui:msg>Assignee</ui:msg></th>
              <td>
                <c:Assignee ui:field='assignee'/>
              </td>
            </tr>
            <tr>
              <th><ui:msg>Reviewers</ui:msg></th>
              <td>
                <c:Reviewers ui:field='reviewers'/>
              </td>
            </tr>
            <tr>
              <th/>
              <td ui:field='ccText'/>
            </tr>
            <tr>
              <th><ui:msg>Project</ui:msg></th>
              <td><x:InlineHyperlink ui:field='projectDashboard'
                     title='Go to project dashboard'>
                     <ui:attribute name='title'/>
                  </x:InlineHyperlink>
                  <a ui:field='projectSettingsLink'
                     class='{style.projectSettings}'>
                    <g:Image
                       ui:field='projectSettings'
                       resource='{ico.gear}'
                       title='Go to project settings'>
                      <ui:attribute name='title'/>
                    </g:Image>
                  </a>
              </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>Topic</ui:msg></th>
              <td><c:Topic ui:field='topic'/></td>
            </tr>
            <tr ui:field='strategy'>
              <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'
                     title='The change cannot be merged due to a path conflict. Rebase the change and upload the rebased commit for review.'>
                  <ui:attribute name='title'/>
                  <ui:msg>Cannot Merge</ui:msg>
                </div>
              </td>
            </tr>
            <tr>
              <th ui:field='actionText'/>
              <td ui:field='actionDate'/>
            </tr>
            <tr ui:field='hashtagTableRow'>
              <th><ui:msg>Hashtags</ui:msg></th>
              <td colspan='2'>
                <c:Hashtags ui:field='hashtags'/>
              </td>
            </tr>
            <tr><td colspan='2'><c:Actions ui:field='actions'/></td></tr>
          </table>
          <hr/>
          <c:Labels ui:field='labels' styleName='{style.labels}'/>
          <g:SimplePanel ui:field='changeExtension' styleName='{style.changeExtension}'/>
          <div id='change_plugins'/>
        </td>
        <td class='{style.relatedColumn}'>
          <c:RelatedChanges ui:field='related'/>
          <g:SimplePanel ui:field='relatedExtension' styleName='{style.relatedExtension}'/>
        </td>
      </tr>
    </table>

    <div class='{style.sectionHeader} {style.headerButtons}'>
      <ui:msg>Files</ui:msg>
      <g:Button ui:field='addFile'
         title='Add file to this change'
         styleName=''
         visible='false'>
        <ui:attribute name='title'/>
        <div><ui:msg>Add&#8230;</ui:msg></div>
      </g:Button>
      <g:Button ui:field='deleteFile'
         title='Delete file from the repository'
         styleName=''
         visible='false'>
        <ui:attribute name='title'/>
        <div><ui:msg>Delete&#8230;</ui:msg></div>
      </g:Button>
      <g:Button ui:field='renameFile'
         title='Rename file in the repository'
         styleName=''
         visible='false'>
        <ui:attribute name='title'/>
        <div><ui:msg>Rename&#8230;</ui:msg></div>
      </g:Button>
      <div class='{style.headerButtons}'>
        <g:Button ui:field='openAll'
            styleName=''
            title='Open each file in a new tab'>
          <ui:attribute name='title'/>
          <div><ui:msg>Open All</ui:msg></div>
        </g:Button>
        <div class='{style.diffBase}'>
          <ui:msg>Diff against: <g:ListBox ui:field='diffBase' styleName=''/></ui:msg>
        </div>
        <g:Button ui:field='editMode'
            styleName=''
            visible='false'
            title='Switch file table to edit mode'>
          <ui:attribute name='title'/>
          <div><ui:msg>Edit</ui:msg></div>
        </g:Button>
        <g:Button ui:field='reviewMode'
            styleName=''
            visible='false'
            title='Done with edit mode'>
          <ui:attribute name='title'/>
          <div><ui:msg>Done Editing</ui:msg></div>
        </g:Button>
      </div>
    </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>
        <g:Button ui:field='hideTaggedComments'
            styleName=''
            visible='false'
            title='Hide tagged comments'>
          <ui:attribute name='title'/>
          <div><ui:msg>Hide tagged comments</ui:msg></div>
        </g:Button>
        <g:Button ui:field='showTaggedComments'
            styleName=''
            visible='false'
            title='Show tagged comments'>
          <ui:attribute name='title'/>
          <div><ui:msg>Show tagged comments</ui:msg></div>
        </g:Button>
        <g:SimplePanel ui:field='historyExtensionRight' styleName='{style.historyExtension}'/>
      </div>
    </div>
    <c:History ui:field='history'/>
  </g:HTMLPanel>
</ui:UiBinder>
