<!--
@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/keyboard-shortcut-behavior/keyboard-shortcut-behavior.html">
<link rel="import" href="../../../bower_components/iron-autogrow-textarea/iron-autogrow-textarea.html">
<link rel="import" href="../../../styles/shared-styles.html">
<link rel="import" href="../../plugins/gr-endpoint-decorator/gr-endpoint-decorator.html">
<link rel="import" href="../../plugins/gr-endpoint-param/gr-endpoint-param.html">
<link rel="import" href="../../shared/gr-button/gr-button.html">
<link rel="import" href="../../shared/gr-confirm-dialog/gr-confirm-dialog.html">
<link rel="import" href="../../shared/gr-date-formatter/gr-date-formatter.html">
<link rel="import" href="../../shared/gr-formatted-text/gr-formatted-text.html">
<link rel="import" href="../../shared/gr-icons/gr-icons.html">
<link rel="import" href="../../shared/gr-overlay/gr-overlay.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="../../shared/gr-textarea/gr-textarea.html">
<link rel="import" href="../../shared/gr-tooltip-content/gr-tooltip-content.html">
<link rel="import" href="../gr-confirm-delete-comment-dialog/gr-confirm-delete-comment-dialog.html">

<script src="../../../scripts/rootElement.js"></script>

<dom-module id="gr-diff-comment">
  <template>
    <style include="shared-styles">
      :host {
        display: block;
        font-family: var(--font-family);
        padding: .7em .7em;
        --iron-autogrow-textarea: {
          box-sizing: border-box;
          padding: 2px;
        };
      }
      :host([disabled]) {
        pointer-events: none;
      }
      :host([disabled]) .body,
      :host([disabled]) .date {
        opacity: .5;
      }
      .header {
        align-items: baseline;
        cursor: pointer;
        display: flex;
        font-family: 'Open Sans', sans-serif;
        margin-bottom: 0.7em;
        padding-bottom: 0;
      }
      .container.collapsed .header {
        margin: 0;
      }
      .headerMiddle {
        color: var(--deemphasized-text-color);
        flex: 1;
        overflow: hidden;
      }
      .authorName,
      .draftLabel,
      .draftTooltip {
        font-family: var(--font-family-bold);
      }
      .draftLabel,
      .draftTooltip {
        color: var(--deemphasized-text-color);
        display: none;
      }
      .date {
        justify-content: flex-end;
        margin-left: 5px;
        min-width: 4.5em;
        text-align: right;
        white-space: nowrap;
      }
      a.date:link,
      a.date:visited {
        color: var(--deemphasized-text-color);
      }
      .actions {
        display: flex;
        justify-content: flex-end;
        padding-top: 0;
      }
      .action {
        margin-left: 1em;
      }
      .robotActions {
        display: flex;
        justify-content: flex-start;
        padding-top: 0;
      }
      .robotActions .action {
        /* Keep button text lined up with output text */
        margin-left: -.3rem;
        margin-right: 1em;
      }
      .rightActions {
        display: flex;
        justify-content: flex-end;
      }
      .editMessage {
        display: none;
        margin: .5em 0;
        width: 100%;
      }
      .container:not(.draft) .actions .hideOnPublished {
        display: none;
      }
      .draft .reply,
      .draft .quote,
      .draft .ack,
      .draft .done {
        display: none;
      }
      .draft .draftLabel,
      .draft .draftTooltip {
        display: inline;
      }
      .draft:not(.editing) .save,
      .draft:not(.editing) .cancel {
        display: none;
      }
      .editing .message,
      .editing .reply,
      .editing .quote,
      .editing .ack,
      .editing .done,
      .editing .edit,
      .editing .discard,
      .editing .unresolved {
        display: none;
      }
      .editing .editMessage {
        display: block;
      }
      .show-hide {
        margin-left: .4em;
      }
      .robotId {
        color: var(--deemphasized-text-color);
        margin-bottom: .8em;
        margin-top: -.4em;
      }
      .robotIcon {
        margin-right: .2em;
        /* because of the antenna of the robot, it looks off center even when it
         is centered. artificially adjust margin to account for this. */
        margin-top: -.3em;
      }
      .runIdInformation {
        margin: .7em 0;
      }
      .robotRun {
        margin-left: .5em;
      }
      .robotRunLink {
        margin-left: .5em;
      }
      input.show-hide {
        display: none;
      }
      label.show-hide {
        color: var(--comment-text-color);
        cursor: pointer;
        display: block;
        font-size: .8rem;
        height: 1.1em;
        margin-top: .1em;
      }
      #container .collapsedContent {
        display: none;
      }
      #container.collapsed {
        padding-bottom: 3px;
      }
      #container.collapsed .collapsedContent {
        display: block;
        overflow: hidden;
        padding-left: 5px;
        text-overflow: ellipsis;
        white-space: nowrap;
      }
      #container.collapsed .actions,
      #container.collapsed gr-formatted-text,
      #container.collapsed gr-textarea {
        display: none;
      }
      .resolve,
      .unresolved {
        align-items: center;
        display: flex;
        flex: 1;
        margin: 0;
      }
      .resolve label {
        color: var(--comment-text-color);
        font-size: var(--font-size-small);
      }
      gr-confirm-dialog .main {
        background-color: #fef;
        display: flex;
        flex-direction: column;
        width: 100%;
      }
      #deleteBtn {
        display: none;
        --gr-button: {
          color: var(--deemphasized-text-color);
          padding: 0;
        }
      }
      #deleteBtn.showDeleteButtons {
        display: block;
      }
      #savingMessage {
        display: none;
      }
      :host([disabled]) #savingMessage {
        display: inline;
      }
    </style>
    <div id="container"
        class="container"
        on-mouseenter="_handleMouseEnter"
        on-mouseleave="_handleMouseLeave">
      <div class="header" id="header" on-click="_handleToggleCollapsed">
        <div class="headerLeft">
          <span class="authorName">[[comment.author.name]]</span>
          <span class="draftLabel">DRAFT</span>
          <gr-tooltip-content class="draftTooltip"
              has-tooltip
              title="This draft is only visible to you. To publish drafts, click the red 'Reply' button at the top of the change or press the 'A' key."
              max-width="20em"
              show-icon></gr-tooltip-content>
          <span id="savingMessage">[[_savingMessage]]</span>
        </div>
        <div class="headerMiddle">
          <span class="collapsedContent">[[comment.message]]</span>
        </div>
        <gr-button
            id="deleteBtn"
            link
            secondary
            class$="action delete [[_computeDeleteButtonClass(_isAdmin, draft)]]"
            on-tap="_handleCommentDelete">
          (Delete)
        </gr-button>
        <a class="date" href$="[[_computeLinkToComment(comment)]]" on-tap="_handleLinkTap">
          <gr-date-formatter
              has-tooltip
              date-str="[[comment.updated]]"></gr-date-formatter>
        </a>
        <div class="show-hide">
          <label class="show-hide">
            <input type="checkbox" class="show-hide"
               checked$="[[collapsed]]"
               on-change="_handleToggleCollapsed">
            [[_computeShowHideText(collapsed)]]
          </label>
        </div>
      </div>
      <div class="body">
        <template is="dom-if" if="[[comment.robot_id]]">
          <div class="robotId" hidden$="[[collapsed]]">
            <iron-icon class="robotIcon" icon="gr-icons:robot"></iron-icon>
            [[comment.robot_id]]
          </div>
        </template>
        <template is="dom-if" if="[[editing]]">
          <gr-textarea
              id="editTextarea"
              class="editMessage"
              autocomplete="on"
              monospace
              disabled="{{disabled}}"
              rows="4"
              text="{{_messageText}}"></gr-textarea>
        </template>
        <!--The message class is needed to ensure selectability from
        gr-diff-selection.-->
        <gr-formatted-text class="message"
            content="[[comment.message]]"
            no-trailing-margin="[[!comment.__draft]]"
            collapsed="[[collapsed]]"
            config="[[projectConfig.commentlinks]]"></gr-formatted-text>
        <div hidden$="[[!comment.robot_run_id]]" class="message">
          <div class="runIdInformation" hidden$="[[collapsed]]">
            Run ID:
            <template is="dom-if" if="[[comment.url]]">
              <a class="robotRunLink" href$="[[comment.url]]">
                <span class="robotRun link">[[comment.robot_run_id]]</span>
              </a>
            </template>
            <template is="dom-if" if="[[!comment.url]]">
              <span class="robotRun text">[[comment.robot_run_id]]</span>
            </template>
          </div>
        </div>
        <div class="actions humanActions" hidden$="[[!_showHumanActions]]">
          <div class="action resolve hideOnPublished">
            <label>
              <input type="checkbox"
                  id="resolvedCheckbox"
                  checked="[[resolved]]"
                  on-change="_handleToggleResolved">
              Resolved
            </label>
          </div>
          <div class="rightActions">
            <gr-button
                link
                secondary
                class="action cancel hideOnPublished"
                on-tap="_handleCancel">Cancel</gr-button>
            <gr-button
                link
                secondary
                class="action discard hideOnPublished"
                on-tap="_handleDiscard">Discard</gr-button>
            <gr-button
                link
                secondary
                class="action edit hideOnPublished"
                on-tap="_handleEdit">Edit</gr-button>
            <gr-button
                link
                secondary
                disabled$="[[_computeSaveDisabled(_messageText, comment, resolved)]]"
                class="action save hideOnPublished"
                on-tap="_handleSave">Save</gr-button>
          </div>
        </div>
        <div class="robotActions" hidden$="[[!_showRobotActions]]">
          <template is="dom-if" if="[[isRobotComment]]">
            <gr-button
                link
                secondary
                class="action fix"
                on-tap="_handleFix"
                disabled="[[robotButtonDisabled]]">
              Please Fix
            </gr-button>
            <gr-endpoint-decorator name="robot-comment-controls">
              <gr-endpoint-param name="comment" value="[[comment]]">
              </gr-endpoint-param>
            </gr-endpoint-decorator>
          </template>
        </div>
      </div>
    </div>
    <template is="dom-if" if="[[_enableOverlay]]">
      <gr-overlay id="confirmDeleteOverlay" with-backdrop>
        <gr-confirm-delete-comment-dialog id="confirmDeleteComment"
            on-confirm="_handleConfirmDeleteComment"
            on-cancel="_handleCancelDeleteComment">
        </gr-confirm-delete-comment-dialog>
      </gr-overlay>
      <gr-overlay id="confirmDiscardOverlay" with-backdrop>
        <gr-confirm-dialog
            id="confirmDiscardDialog"
            confirm-label="Discard"
            confirm-on-enter
            on-confirm="_handleConfirmDiscard"
            on-cancel="_closeConfirmDiscardOverlay">
          <div class="header" slot="header">
            Discard comment
          </div>
          <div class="main" slot="main">
            Are you sure you want to discard this draft comment?
          </div>
        </gr-confirm-dialog>
      </gr-overlay>
    </template>
    <gr-rest-api-interface id="restAPI"></gr-rest-api-interface>
    <gr-storage id="storage"></gr-storage>
  </template>
  <script src="gr-diff-comment.js"></script>
</dom-module>
