<!--
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="../../shared/gr-confirm-dialog/gr-confirm-dialog.html">

<dom-module id="gr-confirm-rebase-dialog">
  <template>
    <style>
      :host {
        display: block;
        width: 30em;
      }
      :host([disabled]) {
        opacity: .5;
        pointer-events: none;
      }
      label {
        cursor: pointer;
      }
      .info {
        font-style: italic;
      }
      .parentRevisionContainer label,
      .parentRevisionContainer input[type="text"] {
        display: block;
        font: inherit;
        width: 100%;
      }
      .parentRevisionContainer label {
        margin-bottom: .2em;
      }
      .clearParentContainer {
        margin: .5em 0;
      }
    </style>
    <gr-confirm-dialog
        confirm-label="Rebase"
        on-confirm="_handleConfirmTap"
        on-cancel="_handleCancelTap"
        disabled="[[!valueSelected]]">
      <div class="header">Confirm rebase</div>
      <div class="main">
        <div class="parentRevisionContainer">
          <label for="parentInput">
            Parent revision
            <span id="optionalText" hidden$="[[!rebaseOnCurrent]]"> (optional)
            </span>
            <span hidden$="[[rebaseOnCurrent]]"> (not current branch)</span>
          </label>
          <input is="iron-input"
              type="text"
              id="parentInput"
              bind-value="{{base}}"
              placeholder="Change number">
        </div>
        <div class="clearParentContainer">
          <input id="clearParent"
              hidden$="[[!rebaseOnCurrent]]"
              type="checkbox"
              on-tap="_handleClearParentTap"
              disabled="[[!rebaseOnCurrent]]">
          <label id="clearParentLabel" for="clearParent"
              hidden$="[[!rebaseOnCurrent]]">
            Rebase on top of current branch (clear parent revision).
          </label>
          <p id="rebaseUpToDateInfo" class="info" for="clearParent"
              hidden$="[[rebaseOnCurrent]]">
            Already up to date with current branch.
          </p>
        </div>
      </div>
    </gr-confirm-dialog>
  </template>
  <script src="gr-confirm-rebase-dialog.js"></script>
</dom-module>
