<!--
Copyright (C) 2015 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">

<dom-module id="gr-patch-range-select">
  <template>
    <style>
      :host {
        display: block;
      }
      .patchRange {
        display: inline-block;
      }
    </style>
    Patch set:
    <span class="patchRange">
      <select id="leftPatchSelect" on-change="_handlePatchChange">
        <option value="PARENT"
            selected$="[[_computeLeftSelected('PARENT', patchRange)]]">Base</option>
        <template is="dom-repeat" items="{{availablePatches}}" as="patchNum">
          <option value$="[[patchNum]]"
              selected$="[[_computeLeftSelected(patchNum, patchRange)]]"
              disabled$="[[_computeLeftDisabled(patchNum, patchRange)]]">[[patchNum]]</option>
        </template>
      </select>
    </span>
    <span is="dom-if" if="[[filesWeblinks.meta_a]]">
      <template is="dom-repeat" items="[[filesWeblinks.meta_a]]" as="weblink">
        <a target="_blank"
           href$="[[weblink.url]]">[[weblink.name]]</a>
      </template>
    </span>
    &rarr;
    <span class="patchRange">
      <select id="rightPatchSelect" on-change="_handlePatchChange">
        <template is="dom-repeat" items="{{availablePatches}}" as="patchNum">
          <option value$="[[patchNum]]"
              selected$="[[_computeRightSelected(patchNum, patchRange)]]"
              disabled$="[[_computeRightDisabled(patchNum, patchRange)]]">[[patchNum]]</option>
        </template>
      </select>
      <span is="dom-if" if="[[filesWeblinks.meta_b]]">
        <template is="dom-repeat" items="[[filesWeblinks.meta_b]]" as="weblink">
          <a target="_blank"
             href$="[[weblink.url]]">[[weblink.name]]</a>
        </template>
      </span>
    </span>
  </template>
  <script src="gr-patch-range-select.js"></script>
</dom-module>
