<!--
@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/rest-client-behavior/rest-client-behavior.html">
<link rel="import" href="../../../bower_components/paper-tabs/paper-tabs.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">
      paper-tabs {
        height: 3rem;
        margin-bottom: .5em;
        --paper-tabs-selection-bar-color: var(--link-color);
      }
      paper-tab {
        max-width: 15rem;
        text-transform: uppercase;
        --paper-tab-ink: var(--link-color);
      }
      label,
      input {
        display: block;
      }
      label {
        font-family: var(--font-family-bold);
      }
      .schemes {
        display: flex;
        justify-content: space-between;
      }
      .commands {
        display: flex;
        flex-direction: column;
      }
      gr-copy-clipboard {
        width: 60em;
        margin-bottom: .5em;
      }
      .hidden {
        display: none;
      }
    </style>
    <div class="schemes">
      <paper-tabs
          id="downloadTabs"
          class$="[[_computeShowTabs(schemes)]]"
          selected="[[_computeSelected(schemes, selectedScheme)]]"
          on-selected-changed="_handleTabChange">
        <template is="dom-repeat" items="[[schemes]]" as="scheme">
          <paper-tab data-scheme$="[[scheme]]">[[scheme]]</paper-tab>
        </template>
      </paper-tabs>
    </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>
