<!--
Copyright (C) 2016 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="../../../behaviors/gr-patch-set-behavior/gr-patch-set-behavior.html">
<link rel="import" href="../../../behaviors/rest-client-behavior/rest-client-behavior.html">
<link rel="import" href="../../../bower_components/polymer/polymer.html">
<link rel="import" href="../../../bower_components/iron-input/iron-input.html">

<link rel="import" href="../../core/gr-navigation/gr-navigation.html">

<link rel="import" href="../../shared/gr-button/gr-button.html">
<link rel="import" href="../../shared/gr-dropdown/gr-dropdown.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="../gr-confirm-abandon-dialog/gr-confirm-abandon-dialog.html">
<link rel="import" href="../gr-confirm-cherrypick-dialog/gr-confirm-cherrypick-dialog.html">
<link rel="import" href="../gr-confirm-move-dialog/gr-confirm-move-dialog.html">
<link rel="import" href="../gr-confirm-rebase-dialog/gr-confirm-rebase-dialog.html">
<link rel="import" href="../gr-confirm-revert-dialog/gr-confirm-revert-dialog.html">
<link rel="import" href="../../../styles/shared-styles.html">

<dom-module id="gr-change-actions">
  <template>
    <style include="shared-styles">
      :host {
        display: inline-block;
        font-family: var(--font-family);
      }
      section {
        display: inline-block;
      }
      gr-button,
      gr-dropdown {
        margin-left: .5em;
      }
      #actionLoadingMessage {
        color: #777;
      }
      @media screen and (max-width: 50em) {
        :host,
        section,
        gr-button,
        gr-dropdown {
          display: block;
        }
        gr-button,
        gr-dropdown {
          margin-bottom: .5em;
          margin-left: 0;
        }
        .confirmDialog {
          width: 90vw;
        }
        #actionLoadingMessage {
          display: block;
          margin: .5em;
          text-align: center;
        }
        #mainContent.mobileOverlayOpened {
          display: none;
        }
      }
    </style>
    <div id="mainContent">
      <span
          id="actionLoadingMessage"
          hidden$="[[!_actionLoadingMessage]]">
        [[_actionLoadingMessage]]</span>
      <gr-dropdown
          id="moreActions"
          tabindex="0"
          down-arrow
          vertical-offset="32"
          horizontal-align="right"
          on-tap-item="_handleOveflowItemTap"
          hidden$="[[_shouldHideActions(_menuActions.*, _loading)]]"
          disabled-ids="[[_disabledMenuActions]]"
          items="[[_menuActions]]">More</gr-dropdown>
      <section hidden$="[[_shouldHideActions(_topLevelActions.*, _loading)]]">
        <template
            is="dom-repeat"
            items="[[_topLevelActions]]"
            as="action">
          <gr-button title$="[[action.title]]"
              primary$="[[action.__primary]]"
              data-action-key$="[[action.__key]]"
              data-action-type$="[[action.__type]]"
              data-label$="[[action.label]]"
              disabled$="[[_calculateDisabled(action, _hasKnownChainState)]]"
              on-tap="_handleActionTap">[[action.label]]</gr-button>
        </template>
      </section>
      <gr-button hidden$="[[!_loading]]" disabled>Loading actions...</gr-button>
    </div>
    <gr-overlay id="overlay" with-backdrop>
      <gr-confirm-rebase-dialog id="confirmRebase"
          class="confirmDialog"
          on-confirm="_handleRebaseConfirm"
          on-cancel="_handleConfirmDialogCancel"
          branch="[[change.branch]]"
          has-parent="[[hasParent]]"
          rebase-on-current="[[revisionActions.rebase.rebaseOnCurrent]]"
          hidden></gr-confirm-rebase-dialog>
      <gr-confirm-cherrypick-dialog id="confirmCherrypick"
          class="confirmDialog"
          change-status="[[changeStatus]]"
          commit-message="[[commitMessage]]"
          commit-num="[[commitNum]]"
          on-confirm="_handleCherrypickConfirm"
          on-cancel="_handleConfirmDialogCancel"
          project="[[change.project]]"
          hidden></gr-confirm-cherrypick-dialog>
      <gr-confirm-move-dialog id="confirmMove"
          class="confirmDialog"
          on-confirm="_handleMoveConfirm"
          on-cancel="_handleConfirmDialogCancel"
          project="[[change.project]]"
          hidden></gr-confirm-move-dialog>
      <gr-confirm-revert-dialog id="confirmRevertDialog"
          class="confirmDialog"
          on-confirm="_handleRevertDialogConfirm"
          on-cancel="_handleConfirmDialogCancel"
          hidden></gr-confirm-revert-dialog>
      <gr-confirm-abandon-dialog id="confirmAbandonDialog"
          class="confirmDialog"
          on-confirm="_handleAbandonDialogConfirm"
          on-cancel="_handleConfirmDialogCancel"
          hidden></gr-confirm-abandon-dialog>
      <gr-confirm-dialog
          id="confirmDeleteDialog"
          class="confirmDialog"
          confirm-label="Delete"
          on-cancel="_handleConfirmDialogCancel"
          on-confirm="_handleDeleteConfirm">
        <div class="header">
          Delete Change
        </div>
        <div class="main">
          Do you really want to delete the change?
        </div>
      </gr-confirm-dialog>
      <gr-confirm-dialog
          id="confirmDeleteEditDialog"
          class="confirmDialog"
          confirm-label="Delete"
          on-cancel="_handleConfirmDialogCancel"
          on-confirm="_handleDeleteEditConfirm">
        <div class="header">
          Delete Change Edit
        </div>
        <div class="main">
          Do you really want to delete the edit?
        </div>
      </gr-confirm-dialog>
    </gr-overlay>
    <gr-js-api-interface id="jsAPI"></gr-js-api-interface>
    <gr-rest-api-interface id="restAPI"></gr-rest-api-interface>
  </template>
  <script src="gr-change-actions.js"></script>
</dom-module>
