<!--
@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/gr-path-list-behavior/gr-path-list-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="../../shared/gr-rest-api-interface/gr-rest-api-interface.html">
<link rel="import" href="../../shared/gr-storage/gr-storage.html">
<link rel="import" href="../gr-diff-comment/gr-diff-comment.html">

<dom-module id="gr-diff-comment-thread">
  <template>
    <style include="shared-styles">
      gr-button {
        margin-left: .5em;
      }
      #actions {
        margin-left: auto;
        padding: .5em .7em;
      }
      #container {
        background-color: var(--comment-background-color);
        border: 1px solid var(--border-color);
        color: var(--comment-text-color);
        display: block;
        margin-bottom: 1px;
        white-space: normal;
      }
      #container.unresolved {
        background-color: var(--unresolved-comment-background-color);
      }
      #commentInfoContainer {
        border-top: 1px dotted var(--border-color);
        display: flex;
      }
      #unresolvedLabel {
        font-family: var(--font-family);
        margin: auto 0;
        padding: .5em .7em;
      }
      .pathInfo {
        display: flex;
        align-items: baseline;
      }
      .descriptionText {
        margin-left: .5rem;
        font-style: italic;
      }
    </style>
    <template is="dom-if" if="[[showFilePath]]">
      <div class="pathInfo">
        <a href$="[[_getDiffUrlForComment(projectName, changeNum, path, patchNum)]]">[[_computeDisplayPath(path)]]</a>
        <span class="descriptionText">Patchset [[patchNum]]</span>
      </div>
    </template>
    <div id="container" class$="[[_computeHostClass(unresolved)]]">
      <template id="commentList" is="dom-repeat" items="[[_orderedComments]]"
          as="comment">
        <gr-diff-comment
            comment="{{comment}}"
            robot-button-disabled="[[_hideActions(_showActions, _lastComment)]]"
            change-num="[[changeNum]]"
            patch-num="[[patchNum]]"
            draft="[[_isDraft(comment)]]"
            show-actions="[[_showActions]]"
            comment-side="[[comment.__commentSide]]"
            side="[[comment.side]]"
            root-id="[[rootId]]"
            project-config="[[_projectConfig]]"
            on-create-fix-comment="_handleCommentFix"
            on-comment-discard="_handleCommentDiscard"
            on-comment-save="_handleCommentSavedOrDiscarded"></gr-diff-comment>
      </template>
      <div id="commentInfoContainer"
          hidden$="[[_hideActions(_showActions, _lastComment)]]">
        <span id="unresolvedLabel" hidden$="[[!unresolved]]">Unresolved</span>
        <div id="actions">
          <gr-button
              id="replyBtn"
              link
              secondary
              class="action reply"
              on-tap="_handleCommentReply">Reply</gr-button>
          <gr-button
              id="quoteBtn"
              link
              secondary
              class="action quote"
              on-tap="_handleCommentQuote">Quote</gr-button>
          <gr-button
              id="ackBtn"
              link
              secondary
              class="action ack"
              on-tap="_handleCommentAck">Ack</gr-button>
          <gr-button
              id="doneBtn"
              link
              secondary
              class="action done"
              on-tap="_handleCommentDone">Done</gr-button>
        </div>
      </div>
    </div>
    <gr-reporting id="reporting"></gr-reporting>
    <gr-rest-api-interface id="restAPI"></gr-rest-api-interface>
    <gr-storage id="storage"></gr-storage>
  </template>
  <script src="gr-diff-comment-thread.js"></script>
</dom-module>
