<!--
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="../../../bower_components/iron-dropdown/iron-dropdown.html">
<link rel="import" href="../../../behaviors/keyboard-shortcut-behavior.html">
<link rel="import" href="../../shared/gr-button/gr-button.html">
<link rel="import" href="../../shared/gr-rest-api-interface/gr-rest-api-interface.html">
<link rel="import" href="../gr-diff/gr-diff.html">

<dom-module id="gr-diff-view">
  <template>
    <style>
      :host {
        background-color: var(--view-background-color);
        display: block;
      }
      h3 {
        margin-top: 1em;
        padding: .75em var(--default-horizontal-margin);
      }
      .reviewed {
        display: inline-block;
        margin: 0 .25em;
        vertical-align: .15em;
      }
      .jumpToFileContainer {
        display: inline-block;
      }
      .mobileJumpToFileContainer {
        display: none;
      }
      .downArrow {
        display: inline-block;
        font-size: .6em;
        vertical-align: middle;
      }
      .dropdown-trigger {
        color: #00e;
        cursor: pointer;
        padding: 0;
      }
      .dropdown-content {
        background-color: #fff;
        box-shadow: 0 1px 5px rgba(0, 0, 0, .3);
      }
      .dropdown-content a {
        cursor: pointer;
        display: block;
        font-weight: normal;
        padding: .3em .5em;
      }
      .dropdown-content a:before {
        color: #ccc;
        content: attr(data-key-nav);
        display: inline-block;
        margin-right: .5em;
        width: .3em;
      }
      .dropdown-content a:hover {
        background-color: #00e;
        color: #fff;
      }
      .dropdown-content a[selected] {
        color: #000;
        font-weight: bold;
        pointer-events: none;
        text-decoration: none;
      }
      .dropdown-content a[selected]:hover {
        background-color: #fff;
        color: #000;
      }
      gr-button {
        font: inherit;
        padding: .3em 0;
        text-decoration: none;
      }
      @media screen and (max-width: 50em) {
        .dash {
          display: none;
        }
        .reviewed {
          vertical-align: -.1em;
        }
        .jumpToFileContainer {
          display: none;
        }
        .mobileJumpToFileContainer {
          display: block;
          width: 100%;
        }
      }
    </style>
    <h3>
      <a href$="[[_computeChangePath(_changeNum, _patchRange.patchNum, _change.revisions)]]">
        [[_changeNum]]</a><span>:</span>
      <span>[[_change.subject]]</span>
      <span class="dash">—</span>
      <input id="reviewed"
          class="reviewed"
          type="checkbox"
          on-change="_handleReviewedChange"
          hidden$="[[!_loggedIn]]" hidden>
      <div class="jumpToFileContainer">
        <gr-button link class="dropdown-trigger" id="trigger" on-tap="_showDropdownTapHandler">
          <span>[[_computeFileDisplayName(_path)]]</span>
          <span class="downArrow">&#9660;</span>
        </gr-button>
        <iron-dropdown id="dropdown" vertical-align="top" vertical-offset="25">
          <div class="dropdown-content">
            <template is="dom-repeat" items="[[_fileList]]" as="path">
              <a href$="[[_computeDiffURL(_changeNum, _patchRange, path)]]"
                 selected$="[[_computeFileSelected(path, _path)]]"
                 data-key-nav$="[[_computeKeyNav(path, _path, _fileList)]]"
                 on-tap="_handleFileTap">
                 [[_computeFileDisplayName(path)]]
              </a>
            </template>
          </div>
        </iron-dropdown>
      </div>
      <div class="mobileJumpToFileContainer">
        <select on-change="_handleMobileSelectChange">
          <template is="dom-repeat" items="[[_fileList]]" as="path">
            <option
                value$="[[path]]"
                selected$="[[_computeFileSelected(path, _path)]]">
              [[_computeFileDisplayName(path)]]
            </option>
          </template>
        </select>
      </div>
    </h3>
    <gr-diff id="diff"
        change-num="[[_changeNum]]"
        patch-range="[[_patchRange]]"
        path="[[_path]]"
        project-config="[[_projectConfig]]"
        available-patches="[[_computeAvailablePatches(_change.revisions)]]"
        on-render="_handleDiffRender">
    </gr-diff>
    <gr-rest-api-interface id="restAPI"></gr-rest-api-interface>
  </template>
  <script src="gr-diff-view.js"></script>
</dom-module>
