<!--
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-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">
<link rel="import" href="../../../styles/shared-styles.html">

<dom-module id="gr-diff-comment-thread">
  <template>
    <style include="shared-styles">
      :host {
        border: 1px solid #bbb;
        display: block;
        margin-bottom: 1px;
        white-space: normal;
      }
      #actions {
        padding: .5em .7em;
      }
      #container {
        background-color: #fcfad6;
      }
      #container.unresolved {
        background-color: #fcfaa6;
      }
      #commentInfoContainer {
        border-top: 1px dotted #bbb;
        display: flex;
        justify-content: space-between;
      }
      #unresolvedLabel {
        font-family: var(--font-family);
        margin: auto 0 auto auto;
        padding: .5em .7em;
      }
    </style>
    <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]]"
            project-config="[[projectConfig]]"
            on-create-fix-comment="_handleCommentFix"
            on-comment-discard="_handleCommentDiscard"></gr-diff-comment>
      </template>
      <div id="commentInfoContainer"
          hidden$="[[_hideActions(_showActions, _lastComment)]]">
        <div id="actions">
          <gr-button id="replyBtn" class="action reply"
              on-tap="_handleCommentReply">Reply</gr-button>
          <gr-button id="quoteBtn" class="action quote"
              on-tap="_handleCommentQuote">Quote</gr-button>
          <gr-button id="ackBtn" class="action ack" on-tap="_handleCommentAck">
            Ack</gr-button>
          <gr-button id="doneBtn" class="action done" on-tap="_handleCommentDone">
            Done</gr-button>
        </div>
        <span id="unresolvedLabel" hidden$="[[!_unresolved]]">Unresolved</span>
      </div>
    </div>
    <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>
