<!--
@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="../../../behaviors/fire-behavior/fire-behavior.html">
<link rel="import" href="../../../styles/shared-styles.html">
<link rel="import" href="../../core/gr-reporting/gr-reporting.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-dialog/gr-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-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]) .actions,
      :host([disabled]) .robotActions,
      :host([disabled]) .date {
        opacity: .5;
      }
      :host([discarding]) {
        display: none;
      }
      .header {
        align-items: baseline;
        cursor: pointer;
        display: flex;
        font-family: 'Open Sans', sans-serif;
        margin: -.7em -.7em 0 -.7em;
        padding: .7em;
      }
      .container.collapsed .header {
        margin-bottom: -.7em;
      }
      .headerMiddle {
        color: var(--deemphasized-text-color);
        flex: 1;
        overflow: hidden;
      }
      .authorName,
      .draftLabel,
      .draftTooltip {
        font-weight: var(--font-weight-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;
      }
      span.date {
        color: var(--deemphasized-text-color);
      }
      span.date:hover {
        text-decoration: underline;
      }
      .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);
      }
      gr-dialog .main {
        display: flex;
        flex-direction: column;
        width: 100%;
      }
      #deleteBtn {
        display: none;
        --gr-button: {
          color: var(--deemphasized-text-color);
          padding: 0;
        }
      }
      #deleteBtn.showDeleteButtons {
        display: block;
      }

      /** Disable select for the caret and actions */
      .actions,
      .show-hide {
        -webkit-user-select: none;
        -moz-user-select: none;
        -ms-user-select: none;
        user-select: none;
      }

    </style>
    <div id="container" class="container">
      <div class="header" id="header" on-tap="_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 'Reply' or 'Start review' button at the top of the change or press the 'A' key."
              max-width="20em"
              show-icon></gr-tooltip-content>
        </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>
        <span class="date" on-tap="_handleAnchorTap">
          <gr-date-formatter
              has-tooltip
              date-str="[[comment.updated]]"></gr-date-formatter>
        </span>
        <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-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-dialog>
      </gr-overlay>
    </template>
    <gr-rest-api-interface id="restAPI"></gr-rest-api-interface>
    <gr-storage id="storage"></gr-storage>
    <gr-reporting id="reporting"></gr-reporting>
  </template>
  <script src="gr-comment.js"></script>
</dom-module>
