<!--
@license
Copyright (C) 2017 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/gr-patch-set-behavior/gr-patch-set-behavior.html">
<link rel="import" href="../../../behaviors/gr-path-list-behavior/gr-path-list-behavior.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-autocomplete/gr-autocomplete.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-dropdown/gr-dropdown.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-edit-constants.html">

<link rel="import" href="../../../styles/shared-styles.html">

<dom-module id="gr-edit-controls">
  <template>
    <style include="shared-styles">
      :host {
        align-items: center;
        display: flex;
        justify-content: flex-end;
      }
      .invisible {
        display: none;
      }
      gr-button {
        margin-left: 1em;
        text-decoration: none;
      }
      gr-dialog {
        width: 50em;
      }
      gr-dialog .main {
        width: 100%;
      }
      gr-autocomplete {
        --gr-autocomplete: {
          border: 1px solid var(--border-color);
          border-radius: 2px;
          font-size: var(--font-size-normal);
          height: 2em;
          padding: 0 .15em;
        }
      }
      input {
        border: 1px solid var(--border-color);
        border-radius: 2px;
        font-size: var(--font-size-normal);
        height: 2em;
        margin: .5em 0;
        padding: 0 .15em;
        width: 100%;
      }
      @media screen and (max-width: 50em) {
        gr-dialog {
          width: 100vw;
        }
      }
    </style>
    <template is="dom-repeat" items="[[_actions]]" as="action">
      <gr-button
          id$="[[action.id]]"
          class$="[[_computeIsInvisible(action.id, hiddenActions)]]"
          link
          on-tap="_handleTap">[[action.label]]</gr-button>
    </template>
    <gr-overlay id="overlay" with-backdrop>
      <gr-dialog
          id="openDialog"
          class="invisible dialog"
          disabled$="[[!_isValidPath(_path)]]"
          confirm-label="Open"
          confirm-on-enter
          on-confirm="_handleOpenConfirm"
          on-cancel="_handleDialogCancel">
        <div class="header" slot="header">
          Open an existing or new file
        </div>
        <div class="main" slot="main">
          <gr-autocomplete
              placeholder="Enter an existing or new full file path."
              query="[[_query]]"
              text="{{_path}}"></gr-autocomplete>
        </div>
      </gr-dialog>
      <gr-dialog
          id="deleteDialog"
          class="invisible dialog"
          disabled$="[[!_isValidPath(_path)]]"
          confirm-label="Delete"
          confirm-on-enter
          on-confirm="_handleDeleteConfirm"
          on-cancel="_handleDialogCancel">
        <div class="header" slot="header">Delete a file from the repo</div>
        <div class="main" slot="main">
          <gr-autocomplete
              placeholder="Enter an existing full file path."
              query="[[_query]]"
              text="{{_path}}"></gr-autocomplete>
        </div>
      </gr-dialog>
      <gr-dialog
          id="renameDialog"
          class="invisible dialog"
          disabled$="[[!_computeRenameDisabled(_path, _newPath)]]"
          confirm-label="Rename"
          confirm-on-enter
          on-confirm="_handleRenameConfirm"
          on-cancel="_handleDialogCancel">
        <div class="header" slot="header">Rename a file in the repo</div>
        <div class="main" slot="main">
          <gr-autocomplete
              placeholder="Enter an existing full file path."
              query="[[_query]]"
              text="{{_path}}"></gr-autocomplete>
          <input
              class="newPathInput"
              is="iron-input"
              bind-value="{{_newPath}}"
              placeholder="Enter the new path."/>
        </div>
      </gr-dialog>
      <gr-dialog
          id="restoreDialog"
          class="invisible dialog"
          confirm-label="Restore"
          confirm-on-enter
          on-confirm="_handleRestoreConfirm"
          on-cancel="_handleDialogCancel">
        <div class="header" slot="header">Restore this file?</div>
        <div class="main" slot="main">
          <input
              is="iron-input"
              disabled
              bind-value="{{_path}}"/>
        </div>
      </gr-dialog>
    </gr-overlay>
    <gr-rest-api-interface id="restAPI"></gr-rest-api-interface>
  </template>
  <script src="gr-edit-controls.js"></script>
</dom-module>
