<!--
@license
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/async-foreach-behavior/async-foreach-behavior.html">
<link rel="import" href="../../../behaviors/dom-util-behavior/dom-util-behavior.html">
<link rel="import" href="../../../behaviors/keyboard-shortcut-behavior/keyboard-shortcut-behavior.html">
<link rel="import" href="../../../behaviors/gr-patch-set-behavior/gr-patch-set-behavior.html">
<link rel="import" href="../../../styles/shared-styles.html">
<link rel="import" href="../../core/gr-navigation/gr-navigation.html">
<link rel="import" href="../../core/gr-reporting/gr-reporting.html">
<link rel="import" href="../../diff/gr-diff-host/gr-diff-host.html">
<link rel="import" href="../../diff/gr-diff-cursor/gr-diff-cursor.html">
<link rel="import" href="../../edit/gr-edit-file-controls/gr-edit-file-controls.html">
<link rel="import" href="../../shared/gr-button/gr-button.html">
<link rel="import" href="../../shared/gr-cursor-manager/gr-cursor-manager.html">
<link rel="import" href="../../shared/gr-icons/gr-icons.html">
<link rel="import" href="../../shared/gr-linked-text/gr-linked-text.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/gr-count-string-formatter/gr-count-string-formatter.html">
<link rel="import" href="../../shared/gr-tooltip-content/gr-tooltip-content.html">
<link rel="import" href="../gr-file-list-constants.html">

<dom-module id="gr-file-list">
  <template>
    <style include="shared-styles">
      :host {
        display: block;
      }
      .row {
        align-items: center;
        border-top: 1px solid var(--border-color);
        display: flex;
        min-height: 2.25em;
        padding: .2em var(--default-horizontal-margin) .2em calc(var(--default-horizontal-margin) - .35rem);
      }
      :host(.loading) .row {
        opacity: .5;
      };
      :host(.editMode) .hideOnEdit {
        display: none;
      }
      .showOnEdit {
        display: none;
      }
      :host(.editMode) .showOnEdit {
        display: initial;
      }
      .invisible {
        visibility: hidden;
      }
      .controlRow {
        align-items: center;
        display: flex;
        height: 2.25em;
        justify-content: center;
      }
      .controlRow.invisible,
      .show-hide.invisible {
        display: none;
      }
      .reviewed,
      .status {
        align-items: center;
        display: inline-flex;
      }
      .reviewed,
      .status {
        display: inline-block;
        text-align: left;
        width: 1.5em;
      }
      .file-row {
        cursor: pointer;
      }
      .file-row.expanded {
        border-bottom: 1px solid var(--border-color);
        position: -webkit-sticky;
        position: sticky;
        top: 0;
        /* Has to visible above the diff view, and by default has a lower
         z-index. setting to 1 places it directly above. */
        z-index: 1;
      }
      .file-row:hover {
        background-color: var(--hover-background-color);
      }
      .file-row.selected {
        background-color: var(--selection-background-color);
      }
      .file-row.expanded,
      .file-row.expanded:hover {
        background-color: var(--expanded-background-color);
      }
      .path {
        cursor: pointer;
        flex: 1;
        text-decoration: none;
        white-space: nowrap;
      }
      .path:hover :first-child {
        text-decoration: underline;
      }
      .path,
      .path div {
        overflow: hidden;
        text-overflow: ellipsis;
      }
      .oldPath {
        color: var(--deemphasized-text-color);
      }
      .comments,
      .stats {
        text-align: right;
      }
      .comments {
        padding-left: 2em;
      }
      .stats {
        min-width: 7em;
      }
      .row:not(.header) .stats,
      .total-stats {
        font-family: var(--monospace-font-family);
      }
      .sizeBars {
        margin-left: .5em;
      }
      .sizeBars.hide {
        display: none;
      }
      .added,
      .removed {
        display: inline-block;
        min-width: 3.5em;
      }
      .added {
        color: var(--vote-text-color-recommended);
      }
      .removed {
        color: var(--vote-text-color-disliked);
        text-align: left;
      }
      .drafts {
        color: #C62828;
        font-family: var(--font-family-bold);
      }
      .show-hide {
        margin-left: .35em;
        width: 1.9em;
      }
      .fileListButton {
        margin: .5em;
      }
      .totalChanges {
        justify-content: flex-end;
        text-align: right;
      }
      .warning {
        color: var(--deemphasized-text-color);
      }
      input.show-hide {
        display: none;
      }
      label.show-hide {
        cursor: pointer;
        display: block;
        min-width: 2em;
      }
      gr-diff {
        display: block;
        overflow-x: auto;
      }
      .truncatedFileName {
        display: none;
      }
      .expanded .fullFileName {
        white-space: normal;
        word-wrap: break-word;
      }
      .mobile {
        display: none;
      }
      .reviewed {
        margin-left: 2em;
        width: 15em;
      }
      .reviewed label {
        color: var(--link-color);
        opacity: 0;
        justify-content: flex-end;
        width: 100%;
      }
      .reviewed label:hover {
        cursor: pointer;
        opacity: 100;
      }
      .row:focus {
        outline: none;
      }
      .row:hover .reviewed label,
      .row:focus .reviewed label,
      .row.expanded .reviewed label {
        opacity: 100;
      }
      .reviewed input {
        display: none;
      }
      .reviewedLabel {
        color: var(--deemphasized-text-color);
        margin-right: 1em;
        opacity: 0;
      }
      .reviewedLabel.isReviewed {
        display: initial;
        opacity: 100;
      }
      .editFileControls {
        width: 7em;
      }
      .markReviewed,
      .pathLink {
        display: inline-block;
        margin: -.2em 0;
        padding: .4em 0;
      }
      @media screen and (max-width: 50em) {
        .desktop {
          display: none;
        }
        .mobile {
          display: block;
        }
        .row.selected {
          background-color: var(--view-background-color);
        }
        .stats {
          display: none;
        }
        .reviewed,
        .status {
          justify-content: flex-start;
        }
        .reviewed {
          display: none;
        }
        .comments {
          min-width: initial;
        }
        .expanded .fullFileName,
        .truncatedFileName {
          display: block;
        }
        .expanded .truncatedFileName,
        .fullFileName {
          display: none;
        }
      }
    </style>
    <div
        id="container"
        on-tap="_handleFileListTap">
      <template is="dom-repeat"
          items="[[_shownFiles]]"
          id="files"
          as="file"
          initial-count="[[fileListIncrement]]"
          target-framerate="1">
        [[_reportRenderedRow(index)]]
        <div class="stickyArea">
          <div class$="file-row row [[_computePathClass(file.__path, _expandedFilePaths.*)]]"
              data-path$="[[file.__path]]" tabindex="-1">
              <div class$="[[_computeClass('status', file.__path)]]"
                  tabindex="0"
                  aria-label$="[[_computeFileStatusLabel(file.status)]]">
              [[_computeFileStatus(file.status)]]
            </div>
            <span
                data-url="[[_computeDiffURL(change, patchRange.patchNum, patchRange.basePatchNum, file.__path, editMode)]]"
                class="path">
              <a class="pathLink" href$="[[_computeDiffURL(change, patchRange.patchNum, patchRange.basePatchNum, file.__path, editMode)]]">
                <span title$="[[computeDisplayPath(file.__path)]]"
                    class="fullFileName">
                  [[computeDisplayPath(file.__path)]]
                </span>
                <span title$="[[computeDisplayPath(file.__path)]]"
                    class="truncatedFileName">
                  [[computeTruncatedPath(file.__path)]]
                </span>
              </a>
              <div class="oldPath" hidden$="[[!file.old_path]]" hidden
                  title$="[[file.old_path]]">
                [[file.old_path]]
              </div>
            </span>
            <div class="comments desktop">
              <span class="drafts">
                [[_computeDraftsString(changeComments, patchRange, file.__path)]]
              </span>
              [[_computeCommentsString(changeComments, patchRange, file.__path)]]
            </div>
            <div class="comments mobile">
              <span class="drafts">
                [[_computeDraftsStringMobile(changeComments, patchRange,
                    file.__path)]]
              </span>
              [[_computeCommentsStringMobile(changeComments, patchRange,
                  file.__path)]]
            </div>
            <div class$="[[_computeSizeBarsClass(_showSizeBars, file.__path)]]">
              <svg width="61" height="8">
                <rect
                    x$="[[_computeBarAdditionX(file, _sizeBarLayout)]]"
                    y="0"
                    height="8"
                    fill="#388E3C"
                    width$="[[_computeBarAdditionWidth(file, _sizeBarLayout)]]" />
                <rect
                    x$="[[_computeBarDeletionX(_sizeBarLayout)]]"
                    y="0"
                    height="8"
                    fill="#D32F2F"
                    width$="[[_computeBarDeletionWidth(file, _sizeBarLayout)]]" />
              </svg>
            </div>
            <div class$="[[_computeClass('stats', file.__path)]]">
              <span
                  class="added"
                  tabindex="0"
                  aria-label$="[[file.lines_inserted]] lines added"
                  hidden$=[[file.binary]]>
                +[[file.lines_inserted]]
              </span>
              <span
                  class="removed"
                  tabindex="0"
                  aria-label$="[[file.lines_deleted]] lines removed"
                  hidden$=[[file.binary]]>
                -[[file.lines_deleted]]
              </span>
              <span class$="[[_computeBinaryClass(file.size_delta)]]"
                  hidden$=[[!file.binary]]>
                [[_formatBytes(file.size_delta)]]
                [[_formatPercentage(file.size, file.size_delta)]]
              </span>
            </div>
            <div class="reviewed hideOnEdit" hidden$="[[!_loggedIn]]" hidden>
              <span class$="reviewedLabel [[_computeReviewedClass(file.isReviewed)]]">Reviewed</span>
              <label>
                <input class="reviewed" type="checkbox" checked="[[file.isReviewed]]">
                <span class="markReviewed" title="Mark as reviewed (shortcut: r)">[[_computeReviewedText(file.isReviewed)]]</span>
              </label>
            </div>
            <div class="editFileControls showOnEdit">
              <template is="dom-if" if="[[editMode]]">
                <gr-edit-file-controls
                    class$="[[_computeClass('', file.__path)]]"
                    file-path="[[file.__path]]"></gr-edit-file-controls>
              </template>
            </div>
            <div class="show-hide">
              <label class="show-hide" data-path$="[[file.__path]]"
                  data-expand=true>
                <input type="checkbox" class="show-hide"
                    checked$="[[_isFileExpanded(file.__path, _expandedFilePaths.*)]]"
                    data-path$="[[file.__path]]" data-expand=true>
                  <iron-icon
                      id="icon"
                      icon="[[_computeShowHideIcon(file.__path, _expandedFilePaths.*)]]">
                  </iron-icon>
              </label>
            </div>
          </div>
          <template is="dom-if"
              if="[[_isFileExpanded(file.__path, _expandedFilePaths.*)]]">
            <gr-diff-host
                no-auto-render
                show-load-failure
                display-line="[[_displayLine]]"
                inline-index=[[index]]
                hidden="[[!_isFileExpanded(file.__path, _expandedFilePaths.*)]]"
                change-num="[[changeNum]]"
                patch-range="[[patchRange]]"
                path="[[file.__path]]"
                prefs="[[diffPrefs]]"
                project-name="[[change.project]]"
                project-config="[[projectConfig]]"
                on-line-selected="_onLineSelected"
                no-render-on-prefs-change
                view-mode="[[diffViewMode]]"></gr-diff-host>
          </template>
        </div>
      </template>
    </div>
    <div
        class="row totalChanges"
        hidden$="[[_hideChangeTotals]]">
      <div class="total-stats">
        <span
            class="added"
            tabindex="0"
            aria-label$="[[_patchChange.inserted]] lines added">
          +[[_patchChange.inserted]]
        </span>
        <span
            class="removed"
            tabindex="0"
            aria-label$="[[_patchChange.deleted]] lines removed">
          -[[_patchChange.deleted]]
        </span>
      </div>
      <!-- Empty div here exists to keep spacing in sync with file rows. -->
      <div class="reviewed hideOnEdit" hidden$="[[!_loggedIn]]" hidden></div>
      <div class="editFileControls showOnEdit"></div>
      <div class="show-hide"></div>
    </div>
    <div
        class="row totalChanges"
        hidden$="[[_hideBinaryChangeTotals]]">
      <div class="total-stats">
        <span class="added" aria-label="Total lines added">
          [[_formatBytes(_patchChange.size_delta_inserted)]]
          [[_formatPercentage(_patchChange.total_size,
              _patchChange.size_delta_inserted)]]
        </span>
        <span class="removed" aria-label="Total lines removed">
          [[_formatBytes(_patchChange.size_delta_deleted)]]
          [[_formatPercentage(_patchChange.total_size,
              _patchChange.size_delta_deleted)]]
        </span>
      </div>
    </div>
    <div class$="row controlRow [[_computeFileListControlClass(numFilesShown, _files)]]">
      <gr-button
          class="fileListButton"
          id="incrementButton"
          link on-tap="_incrementNumFilesShown">
        [[_computeIncrementText(numFilesShown, _files)]]
      </gr-button>
      <gr-tooltip-content
          has-tooltip="[[_computeWarnShowAll(_files)]]"
          show-icon="[[_computeWarnShowAll(_files)]]"
          title$="[[_computeShowAllWarning(_files)]]">
        <gr-button
            class="fileListButton"
            id="showAllButton"
            link on-tap="_showAllFiles">
          [[_computeShowAllText(_files)]]
        </gr-button><!--
  --></gr-tooltip-content>
    </div>
    <gr-diff-preferences
        id="diffPreferences"
        prefs="{{diffPrefs}}"
        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="diffCursor"></gr-diff-cursor>
    <gr-cursor-manager
        id="fileCursor"
        scroll-behavior="keep-visible"
        focus-on-move
        cursor-target-class="selected"></gr-cursor-manager>
    <gr-reporting id="reporting"></gr-reporting>
  </template>
  <script src="gr-file-list.js"></script>
</dom-module>
