<!--
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="../../../behaviors/rest-client-behavior/rest-client-behavior.html">
<link rel="import" href="../../../bower_components/polymer/polymer.html">
<link rel="import" href="../../shared/gr-copy-clipboard/gr-copy-clipboard.html">
<link rel="import" href="../../shared/gr-rest-api-interface/gr-rest-api-interface.html">
<link rel="import" href="../../../styles/shared-styles.html">

<dom-module id="gr-download-commands">
  <template>
    <style include="shared-styles">
      ul {
        list-style: none;
        margin-bottom: .5em;
      }
      li {
        display: inline-block;
        margin: 0;
        padding: 0;
      }
      li gr-button {
        margin-right: 1em;
      }
      label,
      input {
        display: block;
      }
      label {
        font-family: var(--font-family-bold);
      }
      li[selected] gr-button {
        color: #000;
        font-family: var(--font-family-bold);
        text-decoration: none;
      }
      .schemes {
        display: flex;
        justify-content: space-between;
      }
      .commands {
        border-bottom: 1px solid #ddd;
        border-top: 1px solid #ddd;
        padding: .5em;
      }
    </style>
    <div class="schemes">
      <ul hidden$="[[!schemes.length]]" hidden>
        <template is="dom-repeat" items="[[schemes]]" as="scheme">
          <li selected$="[[_computeSelected(scheme, selectedScheme)]]">
            <gr-button link data-scheme$="[[scheme]]" on-tap="_handleSchemeTap">
              [[scheme]]
            </gr-button>
          </li>
        </template>
      </ul>
    </div>
    <div class="commands" hidden$="[[!schemes.length]]" hidden>
      <template is="dom-repeat"
          items="[[commands]]"
          as="command">
        <gr-copy-clipboard
            title=[[command.title]]
            text=[[command.command]]></gr-copy-clipboard>
      </template>
    </div>
    <gr-rest-api-interface id="restAPI"></gr-rest-api-interface>
  </template>
  <script src="gr-download-commands.js"></script>
</dom-module>
