<!--
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/base-url-behavior/base-url-behavior.html">
<link rel="import" href="../../../behaviors/gr-patch-set-behavior/gr-patch-set-behavior.html">
<link rel="import" href="../../../behaviors/keyboard-shortcut-behavior/keyboard-shortcut-behavior.html">
<link rel="import" href="../../../behaviors/rest-client-behavior/rest-client-behavior.html">
<link rel="import" href="../../../bower_components/iron-autogrow-textarea/iron-autogrow-textarea.html">
<link rel="import" href="../../plugins/gr-endpoint-decorator/gr-endpoint-decorator.html">
<link rel="import" href="../../shared/gr-account-chip/gr-account-chip.html">
<link rel="import" href="../../shared/gr-textarea/gr-textarea.html">
<link rel="import" href="../../shared/gr-button/gr-button.html">
<link rel="import" href="../../shared/gr-formatted-text/gr-formatted-text.html">
<link rel="import" href="../../shared/gr-js-api-interface/gr-js-api-interface.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="../gr-account-list/gr-account-list.html">
<link rel="import" href="../gr-label-scores/gr-label-scores.html">
<link rel="import" href="../../../styles/shared-styles.html">

<dom-module id="gr-reply-dialog">
  <template>
    <style include="shared-styles">
      :host {
        display: block;
        max-height: 100%;
      }
      :host([disabled]) {
        pointer-events: none;
      }
      :host([disabled]) .container {
        opacity: .5;
      }
      .container {
        display: flex;
        flex-direction: column;
        max-height: 100%;
      }
      section {
        border-top: 1px solid #cdcdcd;
        flex-shrink: 0;
        padding: .5em 1.5em;
        width: 100%;
      }
      .actions {
        background-color: var(--view-background-color);
        bottom: 0;
        display: flex;
        justify-content: space-between;
        position: sticky;
      }
      .actions .right gr-button {
        margin-left: 1em;
      }
      .peopleContainer,
      .labelsContainer {
        flex-shrink: 0;
      }
      .peopleContainer {
        display: table;
      }
      .peopleList {
        display: flex;
        padding-top: .1em;
      }
      .peopleListLabel {
        color: #666;
        margin-top: .2em;
        min-width: 7em;
        padding-right: .5em;
      }
      gr-account-list {
        display: flex;
        flex-wrap: wrap;
        flex: 1;
        min-height: 1.8em;
      }
      #reviewerConfirmationOverlay {
        padding: 1em;
        text-align: center;
      }
      .reviewerConfirmationButtons {
        margin-top: 1em;
      }
      .groupName {
        font-family: var(--font-family-bold);
      }
      .groupSize {
        font-style: italic;
      }
      .textareaContainer {
        min-height: 12em;
        position: relative;
      }
      .textareaContainer,
      #textarea,
      gr-endpoint-decorator {
        display: flex;
        width: 100%;
      }
      .previewContainer gr-formatted-text {
        background: #f6f6f6;
        padding: 1em;
      }
      .draftsContainer h3 {
        margin-top: .25em;
      }
      #checkingStatusLabel,
      #notLatestLabel {
        margin-left: 1em;
      }
      #checkingStatusLabel {
        color: #444;
        font-style: italic;
      }
      #notLatestLabel,
      #savingLabel {
        color: red;
      }
      #savingLabel {
        display: none;
      }
      #savingLabel.saving {
        display: inline;
      }
    </style>
    <div class="container" tabindex="-1">
      <section class="peopleContainer">
        <div class="peopleList">
          <div class="peopleListLabel">Reviewers</div>
          <gr-account-list
              id="reviewers"
              accounts="{{_reviewers}}"
              removable-values="[[change.removable_reviewers]]"
              change="[[change]]"
              filter="[[filterReviewerSuggestion]]"
              pending-confirmation="{{_reviewerPendingConfirmation}}"
              placeholder="Add reviewer..."
              on-account-text-changed="_handleAccountTextEntry">
          </gr-account-list>
        </div>
        <template is="dom-if" if="[[serverConfig.note_db_enabled]]">
          <div class="peopleList">
            <div class="peopleListLabel">CC</div>
            <gr-account-list
                id="ccs"
                accounts="{{_ccs}}"
                change="[[change]]"
                filter="[[filterCCSuggestion]]"
                pending-confirmation="{{_ccPendingConfirmation}}"
                allow-any-input
                placeholder="Add CC..."
                on-account-text-changed="_handleAccountTextEntry">
            </gr-account-list>
          </div>
        </template>
        <gr-overlay
            id="reviewerConfirmationOverlay"
            on-iron-overlay-canceled="_cancelPendingReviewer"
            with-backdrop>
          <div class="reviewerConfirmation">
            Group
            <span class="groupName">
              [[_pendingConfirmationDetails.group.name]]
            </span>
            has
            <span class="groupSize">
              [[_pendingConfirmationDetails.count]]
            </span>
            members.
            <br>
            Are you sure you want to add them all?
          </div>
          <div class="reviewerConfirmationButtons">
            <gr-button on-tap="_confirmPendingReviewer">Yes</gr-button>
            <gr-button on-tap="_cancelPendingReviewer">No</gr-button>
          </div>
        </gr-overlay>
      </section>
      <section class="textareaContainer">
        <gr-endpoint-decorator name="reply-text">
          <gr-textarea
              id="textarea"
              class="message"
              autocomplete="on"
              placeholder=[[_messagePlaceholder]]
              fixed-position-dropdown
              hide-border="true"
              monospace="true"
              disabled="{{disabled}}"
              rows="4"
              text="{{draft}}"
              on-bind-value-changed="_handleHeightChanged">
          </gr-textarea>
        </gr-endpoint-decorator>
      </section>
      <section class="previewContainer">
        <label>
          <input type="checkbox" checked="{{_previewFormatting::change}}">
          Preview formatting
        </label>
        <gr-formatted-text
            content="[[draft]]"
            hidden$="[[!_previewFormatting]]"
            config="[[projectConfig.commentlinks]]"></gr-formatted-text>
      </section>
      <section class="labelsContainer">
        <gr-label-scores
            id="labelScores"
            account="[[_account]]"
            change="[[change]]"
            on-labels-changed="_handleLabelsChanged"
            permitted-labels=[[permittedLabels]]></gr-label-scores>
      </section>
      <section class="draftsContainer" hidden$="[[_computeHideDraftList(diffDrafts)]]">
        <div class="includeComments">
          <input type="checkbox" id="includeComments"
              checked="{{_includeComments::change}}">
          <label for="includeComments">Publish [[_computeDraftsTitle(diffDrafts)]]</label>
        </div>
        <gr-comment-list
            id="commentList"
            comments="[[diffDrafts]]"
            change-num="[[change._number]]"
            project-config="[[projectConfig]]"
            patch-num="[[patchNum]]"
            hidden$="[[!_includeComments]]"></gr-comment-list>
        <span
            id="savingLabel"
            class$="[[_computeSavingLabelClass(_savingComments)]]">
          Saving comments...
        </span>
      </section>
      <section class="actions">
        <div class="left">
          <template is="dom-if" if="[[canBeStarted]]">
            <gr-button
                link
                tertiary
                disabled="[[_isState(knownLatestState, 'not-latest')]]"
                class="action save"
                has-tooltip
                title="[[_saveTooltip]]"
                on-tap="_saveTapHandler">Save</gr-button>
          </template>
          <span
              id="checkingStatusLabel"
              hidden$="[[!_isState(knownLatestState, 'checking')]]">
            Checking whether patch [[patchNum]] is latest...
          </span>
          <span
              id="notLatestLabel"
              hidden$="[[!_isState(knownLatestState, 'not-latest')]]">
            [[_computePatchSetWarning(patchNum, _labelsChanged)]]
            <gr-button link on-tap="_reload">Reload</gr-button>
          </span>
        </div>
        <div class="right">
          <gr-button
              link
              id="cancelButton"
              class="action cancel"
              on-tap="_cancelTapHandler">Cancel</gr-button>
          <gr-button
              link
              primary
              disabled="[[_computeSendButtonDisabled(_sendButtonLabel, diffDrafts, draft, _reviewersMutated, _labelsChanged, _includeComments)]]"
              class="action send"
              has-tooltip
              title$="[[_computeSendButtonTooltip(canBeStarted)]]"
              on-tap="_sendTapHandler">[[_sendButtonLabel]]</gr-button>
        </div>
      </section>
    </div>
    <gr-js-api-interface id="jsAPI"></gr-js-api-interface>
    <gr-rest-api-interface id="restAPI"></gr-rest-api-interface>
    <gr-storage id="storage"></gr-storage>
  </template>
  <script src="gr-reply-dialog.js"></script>
</dom-module>
