<!--
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/gr-path-list-behavior/gr-path-list-behavior.html">
<link rel="import" href="../../../behaviors/keyboard-shortcut-behavior/keyboard-shortcut-behavior.html">
<link rel="import" href="../../../behaviors/rest-client-behavior/rest-client-behavior.html">
<link rel="import" href="../../../bower_components/iron-dropdown/iron-dropdown.html">
<link rel="import" href="../../../styles/shared-styles.html">
<link rel="import" href="../../core/gr-navigation/gr-navigation.html">
<link rel="import" href="../../shared/gr-button/gr-button.html">
<link rel="import" href="../../shared/gr-count-string-formatter/gr-count-string-formatter.html">
<link rel="import" href="../../shared/gr-dropdown-list/gr-dropdown-list.html">
<link rel="import" href="../../shared/gr-fixed-panel/gr-fixed-panel.html">
<link rel="import" href="../../shared/gr-rest-api-interface/gr-rest-api-interface.html">
<link rel="import" href="../../shared/gr-select/gr-select.html">
<link rel="import" href="../../shared/revision-info/revision-info.html">
<link rel="import" href="../gr-comment-api/gr-comment-api.html">
<link rel="import" href="../gr-diff-cursor/gr-diff-cursor.html">
<link rel="import" href="../gr-diff-preferences/gr-diff-preferences.html">
<link rel="import" href="../gr-diff/gr-diff.html">
<link rel="import" href="../gr-patch-range-select/gr-patch-range-select.html">

<dom-module id="gr-diff-view">
  <template>
    <style include="shared-styles">
      :host {
        background-color: var(--view-background-color);
      }
      gr-patch-range-select {
        display: block;
      }
      gr-diff {
        border: none;
        --diff-container-styles: {
          border-bottom: 1px solid #eee;
        }
      }
      gr-fixed-panel {
        background-color: #fff;
        border-bottom: 1px #eee solid;
        z-index: 1;
      }
      header,
      .subHeader {
        align-items: center;
        display: flex;
        justify-content: space-between;
      }
      header {
        padding: .75em var(--default-horizontal-margin);
      }
      .patchRangeLeft {
        align-items: center;
        display: flex;
      }
      .navLink:not([href]),
      .downloadLink:not([href]) {
        color: #999;
      }
      .navLinks {
        align-items: center;
        display: flex;
        white-space: nowrap;
      }
      .navLink {
        padding: 0 .25em;
      }
      .reviewed {
        display: inline-block;
        margin: 0 .25em;
        vertical-align: .15em;
      }
      .jumpToFileContainer {
        display: inline-block;
      }
      .mobile {
        display: none;
      }
      gr-button {
        padding: .3em 0;
        text-decoration: none;
      }
      .loading {
        color: #777;
        font-size: 2rem;
        height: 100%;
        padding: 1em var(--default-horizontal-margin);
        text-align: center;
      }
      .subHeader {
        flex-wrap: wrap;
        margin: 0 var(--default-horizontal-margin) .75em;
      }
      .subHeader > div {
        margin-top: .25em;
      }
      .prefsButton {
        text-align: right;
      }
      .noOverflow {
        display: block;
        overflow: auto;
      }
      .editMode .hideOnEdit {
        display: none;
      }
      .blameLoader {
        display: none;
      }
      .blameLoader.show,
      .download,
      .preferences,
      .rightControls {
        align-items: center;
        display: flex;
      }
      gr-dropdown-list {
        --trigger-style: {
          text-transform: none;
        }
      }
      @media screen and (max-width: 50em) {
        header {
          padding: .5em var(--default-horizontal-margin);
        }
        .dash {
          display: none;
        }
        .desktop {
          display: none;
        }
        .fileNav {
          align-items: flex-start;
          display: flex;
          margin: 0 .25em;
        }
        .fullFileName {
          display: block;
          font-size: var(--font-size-small);
          font-style: italic;
          min-width: 50%;
          padding: 0 .1em;
          text-align: center;
          width: 100%;
          word-wrap: break-word;
        }
        .reviewed {
          vertical-align: -.1em;
        }
        .mobileNavLink {
          color: #000;
          font-size: 1.5rem;
          font-family: var(--font-family-bold);
          text-decoration: none;
        }
        .mobileNavLink:not([href]) {
          color: #bbb;
        }
        .jumpToFileContainer {
          display: block;
          width: 100%;
        }
        gr-dropdown-list {
          width: 100%;
          --gr-select-style: {
            display: block;
            width: 100%;
          }
          --native-select-style: {
            width: 100%;
          }
        }
      }
    </style>
    <gr-fixed-panel
        class$="[[_computeContainerClass(_editMode)]]"
        floating-disabled="[[_panelFloatingDisabled]]"
        keep-on-scroll
        ready-for-measure="[[!_loading]]">
      <header>
        <h3>
          <a href$="[[_computeChangePath(_change, _patchRange.*, _change.revisions)]]">
            [[_changeNum]]</a><span>:</span>
          <span>[[_change.subject]]</span>
          <span class="dash">—</span>
          <input id="reviewed"
              class="reviewed hideOnEdit"
              type="checkbox"
              on-change="_handleReviewedChange"
              hidden$="[[!_loggedIn]]" hidden>
          <div class="jumpToFileContainer">
            <gr-dropdown-list
                id="dropdown"
                value="[[_path]]"
                on-value-change="_handleFileChange"
                items="[[_formattedFiles]]"
                initial-count="75">
           </gr-dropdown-list>
          </div>
        </h3>
        <div class="navLinks desktop">
          <a class="navLink"
              href$="[[_computeNavLinkURL(_change, _path, _fileList, -1, 1)]]">
            Prev</a>
          <span class="separator"></span>
          <a class="navLink"
              href$="[[_computeChangePath(_change, _patchRange.*, _change.revisions)]]">
            Up</a>
          <span class="separator"></span>
          <a class="navLink"
              href$="[[_computeNavLinkURL(_change, _path, _fileList, 1, 1)]]">
            Next</a>
        </div>
      </header>
      <div class="subHeader">
        <div class="patchRangeLeft">
          <gr-patch-range-select
              id="rangeSelect"
              change-num="[[_changeNum]]"
              change-comments="[[_changeComments]]"
              patch-num="[[_patchRange.patchNum]]"
              base-patch-num="[[_patchRange.basePatchNum]]"
              files-weblinks="[[_filesWeblinks]]"
              available-patches="[[_allPatchSets]]"
              revisions="[[_change.revisions]]"
              revision-info="[[_revisionInfo]]"
              on-patch-range-change="_handlePatchChange">
          </gr-patch-range-select>
          <span class="download desktop">
            <span class="separator"></span>
            <a
              class="downloadLink"
              download
              href$="[[_computeDownloadLink(_changeNum, _patchRange, _path)]]">
              Download
            </a>
          </span>
        </div>
        <div class="rightControls">
          <gr-select
              id="modeSelect"
              bind-value="{{changeViewState.diffMode}}"
              hidden$="[[_computeModeSelectHidden(_isImageDiff)]]">
            <select>
              <option value="SIDE_BY_SIDE">Side By Side</option>
              <option value="UNIFIED_DIFF">Unified</option>
            </select>
          </gr-select>
          <span id="diffPrefsContainer"
              hidden$="[[_computePrefsButtonHidden(_prefs, _loggedIn)]]" hidden>
            <span class="preferences desktop">
              <span class="separator" hidden$="[[_computeModeSelectHidden(_isImageDiff)]]"></span>
              <gr-button link
                  class="prefsButton"
                  on-tap="_handlePrefsTap">Preferences</gr-button>
            </span>
          </span>
          <span class$="blameLoader [[_computeBlameLoaderClass(_isImageDiff, _isBlameSupported)]]">
            <span class="separator"></span>
            <gr-button
                link
                disabled="[[_isBlameLoading]]"
                on-tap="_toggleBlame">[[_computeBlameToggleLabel(_isBlameLoaded, _isBlameLoading)]]</gr-button>
          </span>
        </div>
      </div>
      <div class="fileNav mobile">
        <a class="mobileNavLink"
          href$="[[_computeNavLinkURL(_change, _path, _fileList, -1, 1)]]">
          &lt;</a>
        <div class="fullFileName mobile">[[computeDisplayPath(_path)]]
        </div>
        <a class="mobileNavLink"
            href$="[[_computeNavLinkURL(_change, _path, _fileList, 1, 1)]]">
          &gt;</a>
      </div>
    </gr-fixed-panel>
    <div class="loading" hidden$="[[!_loading]]">Loading...</div>
    <gr-diff
        id="diff"
        hidden
        hidden$="[[_loading]]"
        class$="[[_computeDiffClass(_panelFloatingDisabled)]]"
        is-image-diff="{{_isImageDiff}}"
        files-weblinks="{{_filesWeblinks}}"
        change-num="[[_changeNum]]"
        commit-range="[[_commitRange]]"
        patch-range="[[_patchRange]]"
        path="[[_path]]"
        prefs="[[_prefs]]"
        project-config="[[_projectConfig]]"
        project-name="[[_change.project]]"
        view-mode="[[_diffMode]]"
        is-blame-loaded="{{_isBlameLoaded}}"
        on-line-selected="_onLineSelected">
    </gr-diff>
    <gr-diff-preferences
        id="diffPreferences"
        prefs="{{_prefs}}"
        local-prefs="{{_localPrefs}}"></gr-diff-preferences>
    <gr-rest-api-interface id="restAPI"></gr-rest-api-interface>
    <gr-storage id="storage"></gr-storage>
    <gr-diff-cursor id="cursor"></gr-diff-cursor>
    <gr-comment-api id="commentAPI"></gr-comment-api>
  </template>
  <script src="gr-diff-view.js"></script>
</dom-module>
