<!--
Copyright (C) 2015 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.
-->

<link rel="import" href="../../../bower_components/polymer/polymer.html">
<link rel="import" href="../../../behaviors/gr-patch-set-behavior/gr-patch-set-behavior.html">
<link rel="import" href="../../../behaviors/keyboard-shortcut-behavior/keyboard-shortcut-behavior.html">
<link rel="import" href="../../../behaviors/rest-client-behavior.html">
<link rel="import" href="../../shared/gr-account-link/gr-account-link.html">
<link rel="import" href="../../shared/gr-select/gr-select.html">
<link rel="import" href="../../shared/gr-button/gr-button.html">
<link rel="import" href="../../shared/gr-change-star/gr-change-star.html">
<link rel="import" href="../../shared/gr-date-formatter/gr-date-formatter.html">
<link rel="import" href="../../shared/gr-editable-content/gr-editable-content.html">
<link rel="import" href="../../shared/gr-editable-label/gr-editable-label.html">
<link rel="import" href="../../shared/gr-js-api-interface/gr-js-api-interface.html">
<link rel="import" href="../../shared/gr-linked-text/gr-linked-text.html">
<link rel="import" href="../../shared/gr-overlay/gr-overlay.html">
<link rel="import" href="../../shared/gr-rest-api-interface/gr-rest-api-interface.html">

<link rel="import" href="../gr-change-actions/gr-change-actions.html">
<link rel="import" href="../gr-change-metadata/gr-change-metadata.html">
<link rel="import" href="../gr-commit-info/gr-commit-info.html">
<link rel="import" href="../gr-download-dialog/gr-download-dialog.html">
<link rel="import" href="../gr-file-list/gr-file-list.html">
<link rel="import" href="../gr-messages-list/gr-messages-list.html">
<link rel="import" href="../gr-related-changes-list/gr-related-changes-list.html">
<link rel="import" href="../gr-reply-dialog/gr-reply-dialog.html">

<dom-module id="gr-change-view">
  <template>
    <style>
      .container:not(.loading) {
        background-color: var(--view-background-color);
      }
      .container.loading {
        color: #666;
        padding: 1em var(--default-horizontal-margin);
      }
      .header {
        align-items: center;
        background-color: var(--view-background-color);
        display: flex;
        padding: .65em var(--default-horizontal-margin);
        z-index: 99;  /* Less than gr-overlay's backdrop */
      }
      .header .download {
        margin-right: 1em;
      }
      .header.pinned {
        border-bottom-color: transparent;
        box-shadow: 0 1px 3px rgba(0, 0, 0, 0.3);
        position: fixed;
        top: 0;
        transition: box-shadow 250ms linear;
        width: 100%;
      }
      .header-title {
        flex: 1;
        font-size: 1.2em;
        font-weight: bold;
      }
      gr-change-star {
        margin-right: .25em;
        vertical-align: -.425em;
      }
      gr-reply-dialog {
        width: 50em;
      }
      .changeStatus {
        text-transform: capitalize;
      }
      /* Strong specificity here is needed due to
         https://github.com/Polymer/polymer/issues/2531 */
      .container section.changeInfo {
        display: flex;
        padding: 0 var(--default-horizontal-margin);
      }
      .changeInfo-column:not(:last-of-type) {
        margin-right: 1em;
        padding-right: 1em;
      }
      .changeMetadata {
        font-size: .95em;
      }
      /* Prevent plugin text from overflowing. */
      #change_plugins {
        word-break: break-word;
      }
      .commitMessage {
        font-family: var(--monospace-font-family);
        flex: 1 0 72ch;
        margin-right: 2em;
        margin-bottom: 1em;
      }
      .commitMessage gr-linked-text {
        overflow: auto;
        word-break: break-all;
      }
      .editCommitMessage {
        margin-top: 1em;
      }
      .commitActions {
        border-bottom: 1px solid #ddd;
        display: flex;
        justify-content: space-between;
        margin-bottom: .5em;
        padding-bottom: .5em;
      }
      .reply {
        margin-right: .5em;
      }
      .mainChangeInfo {
        display: flex;
        flex: 1;
        flex-direction: column;
        min-width: 0;
      }
      .commitAndRelated {
        align-content: flex-start;
        display: flex;
        flex: 1;
        overflow-x: hidden;
      }
      .relatedChanges {
        flex: 1 1 auto;
        font-size: .9em;
        overflow: hidden;
      }
      .patchInfo {
        border: 1px solid #ddd;
        margin: 1em var(--default-horizontal-margin);
      }
      .patchInfo--oldPatchSet .patchInfo-header {
        background-color: #fff9c4;
      }
      .patchInfo--oldPatchSet .latestPatchContainer {
        display: initial;
      }
      .patchInfo-header,
      gr-file-list {
        padding: .5em calc(var(--default-horizontal-margin) / 2);
      }
      .patchInfo-header {
        background-color: #f6f6f6;
        border-bottom: 1px solid #ebebeb;
        display: flex;
        justify-content: space-between;
      }
      .latestPatchContainer {
        display: none;
      }
      .patchSetSelect {
        max-width: 8em;
      }
      gr-editable-label.descriptionLabel {
        max-width: 100%;
      }
      .mobile {
        display: none;
      }
      hr {
        border: 0;
        border-top: 1px solid #ddd;
        height: 0;
        margin-bottom: 1em;
      }
      .patchInfo-header-wrapper {
        width: 100%;
      }
      @media screen and (max-width: 50em) {
        .mobile {
          display: block;
        }
        .header {
          align-items: flex-start;
          flex-direction: column;
          padding: .5em var(--default-horizontal-margin);
        }
        gr-change-star {
          vertical-align: middle;
        }
        .header-title {
          font-size: 1.1em;
        }
        gr-reply-dialog {
          min-width: initial;
          width: 100vw;
        }
        .desktop {
          display: none;
        }
        .reply {
          display: block;
          margin-right: 0;
          margin-bottom: .5em;
        }
        .changeInfo-column:not(:last-of-type) {
          margin-right: 0;
          padding-right: 0;
        }
        .changeInfo,
        .commitAndRelated {
          flex-direction: column;
          flex-wrap: nowrap;
        }
        .relatedChanges,
        .changeMetadata {
          font-size: 1em;
        }
        .changeMetadata {
          border-right: none;
          margin-bottom: 1em;
          margin-top: .25em;
          max-width: none;
        }
        .commitActions {
          flex-direction: column;
        }
        .commitMessage {
          flex: initial;
          margin-right: 0;
        }
        .scrollable {
          @apply(--layout-scroll);
        }
      }
    </style>
    <div class="container loading" hidden$="[[!_loading]]">Loading...</div>
    <div class="container" hidden$="{{_loading}}">
      <div class="header">
        <span class="header-title">
          <gr-change-star id="changeStar"
              change="{{_change}}" hidden$="[[!_loggedIn]]"></gr-change-star>
          <a href$="[[_computeChangePermalink(_change._number)]]">[[_change._number]]</a><!--
       --><span class="changeStatus">[[_computeChangeStatus(_change, _patchRange.patchNum)]]</span><!--
       -->:
          [[_change.subject]]
        </span>
      </div>
      <section class="changeInfo">
        <div class="changeInfo-column changeMetadata">
          <gr-change-metadata
              change="{{_change}}"
              server-config="[[serverConfig]]"
              mutable="[[_loggedIn]]"
              on-show-reply-dialog="_handleShowReplyDialog">
          </gr-change-metadata>
          <!-- Plugins insert content into following container.
               Stop-gap until PolyGerrit plugins interface is ready.
               This will not work with Shadow DOM. -->
          <div id="change_plugins"></div>
        </div>
        <div class="changeInfo-column mainChangeInfo">
          <div class="commitActions" hidden$="[[!_loggedIn]]">
            <gr-button
                class="reply"
                secondary
                disabled="[[_replyDisabled]]"
                on-tap="_handleReplyTap">[[_replyButtonLabel]]</gr-button>
            <gr-change-actions id="actions"
                change="[[_change]]"
                actions="[[_change.actions]]"
                rebase-on-current="[[_rebaseOnCurrent]]"
                revision-actions="[[_currentRevisionActions]]"
                change-num="[[_changeNum]]"
                change-status="[[_change.status]]"
                commit-num="[[_commitInfo.commit]]"
                patch-num="[[_computeLatestPatchNum(_allPatchSets)]]"
                commit-message="[[_latestCommitMessage]]"
                on-reload-change="_handleReloadChange"></gr-change-actions>
          </div>
          <hr class="mobile">
          <div class="commitAndRelated">
            <div class="commitMessage">
              <gr-editable-content id="commitMessageEditor"
                  editing="[[_editingCommitMessage]]"
                  content="{{_latestCommitMessage}}">
                <gr-linked-text pre
                    content="[[_latestCommitMessage]]"
                    config="[[_projectConfig.commentlinks]]"></gr-linked-text>
              </gr-editable-content>
              <gr-button link
                  class="editCommitMessage"
                  on-tap="_handleEditCommitMessage"
                  hidden$="[[_hideEditCommitMessage]]">Edit</gr-button>
            </div>
            <div class="relatedChanges">
              <gr-related-changes-list id="relatedChanges"
                  change="[[_change]]"
                  patch-num="[[_computeLatestPatchNum(_allPatchSets)]]">
              </gr-related-changes-list>
            </div>
          </div>
        </div>
      </section>
      <section class$="patchInfo [[_computePatchInfoClass(_patchRange.patchNum,
          _allPatchSets)]]">
        <div class="patchInfo-header">
          <div class="patchInfo-header-wrapper">
            <label class="patchSelectLabel" for="patchSetSelect">
              Patch set
            </label>
            <select
                is="gr-select"
                id="patchSetSelect"
                bind-value="{{_selectedPatchSet}}"
                class="patchSetSelect"
                on-change="_handlePatchChange">
              <template is="dom-repeat" items="[[_allPatchSets]]"
                  as="patchNum">
                <option value$="[[patchNum.num]]">
                  [[patchNum.num]]
                  /
                  [[_computeLatestPatchNum(_allPatchSets)]]
                  [[_computePatchSetDescription(_change, patchNum.num)]]
                </option>
              </template>
            </select>
            /
            <gr-commit-info
                change="[[_change]]"
                server-config="[[serverConfig]]"
                commit-info="[[_commitInfo]]"></gr-commit-info>
            <span class="latestPatchContainer">
              /
              <a href$="/c/[[_change._number]]">Go to latest patch set</a>
            </span>
            <span class="downloadContainer desktop">
              /
              <gr-button link
                  class="download"
                  on-tap="_handleDownloadTap">Download</gr-button>
            </span>
            <span class="descriptionContainer">
              /
              <gr-editable-label
                  id="descriptionLabel"
                  class="descriptionLabel"
                  value="[[_computePatchSetDescription(_change, _selectedPatchSet)]]"
                  placeholder="[[_computeDescriptionPlaceholder(_descriptionReadOnly)]]"
                  read-only="[[_descriptionReadOnly]]"
                  on-changed="_handleDescriptionChanged"></gr-editable-label>
            </span>
          </div>
        </div>
        <gr-file-list id="fileList"
            change="[[_change]]"
            change-num="[[_changeNum]]"
            patch-range="[[_patchRange]]"
            comments="[[_comments]]"
            drafts="[[_diffDrafts]]"
            revisions="[[_change.revisions]]"
            project-config="[[_projectConfig]]"
            selected-index="{{viewState.selectedFileIndex}}"
            diff-view-mode="{{viewState.diffMode}}"></gr-file-list>
      </section>
      <gr-messages-list id="messageList"
          change-num="[[_changeNum]]"
          messages="[[_change.messages]]"
          reviewer-updates="[[_change.reviewer_updates]]"
          comments="[[_comments]]"
          project-config="[[_projectConfig]]"
          show-reply-buttons="[[_loggedIn]]"
          on-reply="_handleMessageReply"></gr-messages-list>
    </div>
    <gr-overlay id="downloadOverlay" with-backdrop>
      <gr-download-dialog
          id="downloadDialog"
          change="[[_change]]"
          logged-in="[[_loggedIn]]"
          patch-num="[[_patchRange.patchNum]]"
          config="[[serverConfig.download]]"
          on-close="_handleDownloadDialogClose"></gr-download-dialog>
    </gr-overlay>
    <gr-overlay id="replyOverlay"
        class="scrollable"
        no-cancel-on-outside-click
        on-iron-overlay-opened="_handleReplyOverlayOpen"
        with-backdrop>
      <gr-reply-dialog id="replyDialog"
          change="{{_change}}"
          patch-num="[[_computeLatestPatchNum(_allPatchSets)]]"
          permitted-labels="[[_change.permitted_labels]]"
          diff-drafts="[[_diffDrafts]]"
          server-config="[[serverConfig]]"
          project-config="[[_projectConfig]]"
          on-send="_handleReplySent"
          on-cancel="_handleReplyCancel"
          on-autogrow="_handleReplyAutogrow"
          hidden$="[[!_loggedIn]]">Reply</gr-reply-dialog>
    </gr-overlay>
    <gr-js-api-interface id="jsAPI"></gr-js-api-interface>
    <gr-rest-api-interface id="restAPI"></gr-rest-api-interface>
  </template>
  <script src="gr-change-view.js"></script>
</dom-module>
