<!--
@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-comment/gr-comment.html">

<dom-module id="gr-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-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-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-comment-thread.js"></script>
</dom-module>
