<!--
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">
<link rel="import" href="../../../styles/shared-styles.html">

<dom-module id="gr-confirm-rebase-dialog">
  <template>
    <style include="shared-styles">
      :host {
        display: block;
        width: 30em;
      }
      :host([disabled]) {
        opacity: .5;
        pointer-events: none;
      }
      label {
        cursor: pointer;
      }
      .message {
        font-style: italic;
      }
      .parentRevisionContainer label,
      .parentRevisionContainer input[type="text"] {
        display: block;
        font: inherit;
        width: 100%;
      }
      .parentRevisionContainer label {
        margin-bottom: .2em;
      }
      .rebaseOption {
        margin: .5em 0;
      }
    </style>
    <gr-confirm-dialog
        confirm-label="Rebase"
        on-confirm="_handleConfirmTap"
        on-cancel="_handleCancelTap">
      <div class="header" slot="header">Confirm rebase</div>
      <div class="main" slot="main">
        <div id="rebaseOnParent" class="rebaseOption"
            hidden$="[[!_displayParentOption(rebaseOnCurrent, hasParent)]]">
          <input id="rebaseOnParentInput"
              name="rebaseOptions"
              type="radio"
              on-tap="_handleRebaseOnParent">
          <label id="rebaseOnParentLabel" for="rebaseOnParentInput">
            Rebase on parent change
          </label>
        </div>
        <div id="parentUpToDateMsg" class="message"
            hidden$="[[!_displayParentUpToDateMsg(rebaseOnCurrent, hasParent)]]">
          This change is up to date with its parent.
        </div>
        <div id="rebaseOnTip" class="rebaseOption"
            hidden$="[[!_displayTipOption(rebaseOnCurrent, hasParent)]]">
          <input id="rebaseOnTipInput"
              name="rebaseOptions"
              type="radio"
              disabled$="[[!_displayTipOption(rebaseOnCurrent, hasParent)]]"
              on-tap="_handleRebaseOnTip">
          <label id="rebaseOnTipLabel" for="rebaseOnTipInput">
            Rebase on top of the [[branch]]
            branch<span hidden$="[[!hasParent]]">
              (breaks relation chain)
            </span>
          </label>
        </div>
        <div id="tipUpToDateMsg" class="message"
            hidden$="[[_displayTipOption(rebaseOnCurrent, hasParent)]]">
          Change is up to date with the target branch already ([[branch]])
        </div>
        <div id="rebaseOnOther" class="rebaseOption">
          <input id="rebaseOnOtherInput"
              name="rebaseOptions"
              type="radio"
              on-tap="_handleRebaseOnOther">
          <label id="rebaseOnOtherLabel" for="rebaseOnOtherInput">
            Rebase on a specific change or ref <span hidden$="[[!hasParent]]">
              (breaks relation chain)
            </span>
          </label>
        </div>
        <div class="parentRevisionContainer">
          <input is="iron-input"
              type="text"
              id="parentInput"
              bind-value="{{base}}"
              on-tap="_handleEnterChangeNumberTap"
              placeholder="Change number">
        </div>
      </div>
    </gr-confirm-dialog>
  </template>
  <script src="gr-confirm-rebase-dialog.js"></script>
</dom-module>
