<!--
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="../../shared/gr-button/gr-button.html">
<link rel="import" href="../../shared/gr-overlay/gr-overlay.html">
<link rel="import" href="../../shared/gr-request/gr-request.html">
<link rel="import" href="../../shared/gr-rest-api-interface/gr-rest-api-interface.html">

<link rel="import" href="../gr-diff-preferences/gr-diff-preferences.html">
<link rel="import" href="../gr-diff-side/gr-diff-side.html">
<link rel="import" href="../gr-patch-range-select/gr-patch-range-select.html">

<dom-module id="gr-diff">
  <template>
    <style>
      .loading {
        padding: 0 var(--default-horizontal-margin) 1em;
        color: #666;
      }
      .header {
        display: flex;
        justify-content: space-between;
        margin: 0 var(--default-horizontal-margin) .75em;
      }
      .prefsButton {
        text-align: right;
      }
      .diffContainer {
        border-bottom: 1px solid #eee;
        border-top: 1px solid #eee;
        display: flex;
        font: 12px var(--monospace-font-family);
        overflow-x: auto;
      }
      gr-diff-side:first-of-type {
        --light-highlight-color: #fee;
        --dark-highlight-color: #ffd4d4;
      }
      gr-diff-side:last-of-type {
        --light-highlight-color: #efe;
        --dark-highlight-color: #d4ffd4;
        border-right: 1px solid #ddd;
      }
    </style>
    <div class="loading" hidden$="[[!_loading]]">Loading...</div>
    <div hidden$="[[_loading]]" hidden>
      <div class="header">
        <gr-patch-range-select
            path="[[path]]"
            change-num="[[changeNum]]"
            patch-range="[[patchRange]]"
            available-patches="[[availablePatches]]"></gr-patch-range-select>
        <gr-button link
           class="prefsButton"
           on-tap="_handlePrefsTap"
           hidden$="[[!prefs]]"
           hidden>Diff View Preferences</gr-button>
      </div>
      <gr-overlay id="prefsOverlay" with-backdrop>
        <gr-diff-preferences
            prefs="{{prefs}}"
            on-save="_handlePrefsSave"
            on-cancel="_handlePrefsCancel"></gr-diff-preferences>
      </gr-overlay>

      <div class="diffContainer">
        <gr-diff-side id="leftDiff"
            change-num="[[changeNum]]"
            patch-num="[[patchRange.basePatchNum]]"
            path="[[path]]"
            content="{{_diff.leftSide}}"
            prefs="[[prefs]]"
            can-comment="[[_loggedIn]]"
            project-config="[[projectConfig]]"
            on-expand-context="_handleExpandContext"
            on-thread-height-change="_handleThreadHeightChange"
            on-add-draft="_handleAddDraft"
            on-remove-thread="_handleRemoveThread"></gr-diff-side>
        <gr-diff-side id="rightDiff"
            change-num="[[changeNum]]"
            patch-num="[[patchRange.patchNum]]"
            path="[[path]]"
            content="{{_diff.rightSide}}"
            prefs="[[prefs]]"
            can-comment="[[_loggedIn]]"
            project-config="[[projectConfig]]"
            on-expand-context="_handleExpandContext"
            on-thread-height-change="_handleThreadHeightChange"
            on-add-draft="_handleAddDraft"
            on-remove-thread="_handleRemoveThread"></gr-diff-side>
      </div>
    </div>
    <gr-rest-api-interface id="restAPI"></gr-rest-api-interface>
  </template>
  <script src="gr-diff.js"></script>
</dom-module>
