<!--
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="../../../bower_components/polymer/polymer.html">
<link rel="import" href="../../../bower_components/iron-autogrow-textarea/iron-autogrow-textarea.html">
<link rel="import" href="../../../styles/gr-settings-styles.html">
<link rel="import" href="../../shared/gr-button/gr-button.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">

<dom-module id="gr-ssh-editor">
  <template>
    <style>
      .commentHeader {
        width: 27em;
      }
      .statusHeader {
        width: 4em;
      }
      .keyHeader {
        width: 7.5em;
      }
      #viewKeyOverlay {
        padding: 2em;
        width: 50em;
      }
      .publicKey {
        font-family: var(--monospace-font-family);
        overflow-x: scroll;
        overflow-wrap: break-word;
        width: 30em;
      }
      .closeButton {
        bottom: 2em;
        position: absolute;
        right: 2em;
      }
    </style>
    <style include="gr-settings-styles"></style>
    <div class="gr-settings-styles">
      <fieldset>
        <table>
          <thead>
            <tr>
              <th class="commentHeader">Comment</th>
              <th class="statusHeader">Status</th>
              <th class="keyHeader">Public Key</th>
            </tr>
          </thead>
          <tbody>
            <template is="dom-repeat" items="[[_keys]]" as="key">
              <tr>
                <td>[[key.comment]]</td>
                <td>[[_getStatusLabel(key.valid)]]</td>
                <td>
                  <gr-button
                      on-tap="_showKey"
                      data-index$="[[index]]"
                      link>Click to View</gr-button>
                </td>
                <td>
                  <gr-button
                      data-index$="[[index]]"
                      on-tap="_handleDeleteKey">Delete</gr-button>
                </td>
              </tr>
            </template>
          </tbody>
        </table>
        <gr-overlay id="viewKeyOverlay" with-backdrop>
          <fieldset>
            <section>
              <span class="title">Algorithm</span>
              <span class="value">[[_keyToView.algorithm]]</span>
            </section>
            <section>
              <span class="title">Public Key</span>
              <span class="value publicKey">[[_keyToView.encoded_key]]</span>
            </section>
            <section>
              <span class="title">Comment</span>
              <span class="value">[[_keyToView.comment]]</span>
            </section>
          </fieldset>
          <gr-button
              class="closeButton"
              on-tap="_closeOverlay">Close</gr-button>
        </gr-overlay>
        <gr-button
            on-tap="save"
            disabled$="[[!hasUnsavedChanges]]">Save Changes</gr-button>
      </fieldset>
      <fieldset>
        <section>
          <span class="title">New SSH Key</span>
          <span class="value">
            <iron-autogrow-textarea
                id="newKey"
                bind-value="{{_newKey}}"
                placeholder="New SSH Key"></iron-autogrow-textarea>
          </span>
        </section>
        <gr-button
            id="addButton"
            disabled$="[[_computeAddButtonDisabled(_newKey)]]"
            on-tap="_handleAddKey">Add New SSH Key</gr-button>
      </fieldset>
    </div>
    <gr-rest-api-interface id="restAPI"></gr-rest-api-interface>
  </template>
  <script src="gr-ssh-editor.js"></script>
</dom-module>
