<!--
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="../../../bower_components/iron-input/iron-input.html">
<link rel="import" href="../../shared/gr-button/gr-button.html">
<link rel="import" href="../../shared/gr-overlay/gr-overlay.html">
<link rel="import" href="../../shared/gr-rest-api-interface/gr-rest-api-interface.html">
<link rel="import" href="../../shared/gr-storage/gr-storage.html">
<link rel="import" href="../../../styles/shared-styles.html">

<dom-module id="gr-diff-preferences">
  <template>
    <style include="shared-styles">
      :host {
        display: block;
      }
      :host([disabled]) {
        opacity: .5;
        pointer-events: none;
      }
      input,
      select {
        font: inherit;
      }
      input[type="number"] {
        width: 4em;
      }
      .header,
      .actions {
        padding: 1em 1.5em;
      }
      .header {
        border-bottom: 1px solid #ddd;
        font-weight: bold;
      }
      .mainContainer {
        padding: 1em 0;
      }
      .pref {
        align-items: center;
        display: flex;
        padding: .35em 1.5em;
        width: 20em;
      }
      .pref:hover {
        background-color: #ebf5fb;
      }
      .pref label {
        cursor: pointer;
        flex: 1;
      }
      .actions {
        border-top: 1px solid #ddd;
        display: flex;
        justify-content: space-between;
      }
      .beta {
        font-weight: bold;
        color: #888;
      }
    </style>

    <gr-overlay id="prefsOverlay" with-backdrop>
      <div class="header">
        Diff View Preferences
      </div>
      <div class="mainContainer">
        <div class="pref">
          <label for="contextSelect">Context</label>
          <select id="contextSelect" on-change="_handleContextSelectChange">
            <option value="3">3 lines</option>
            <option value="10">10 lines</option>
            <option value="25">25 lines</option>
            <option value="50">50 lines</option>
            <option value="75">75 lines</option>
            <option value="100">100 lines</option>
            <option value="-1">Whole file</option>
          </select>
        </div>
        <div class="pref">
          <label for="lineWrappingInput">Fit to screen</label>
          <input
              is="iron-input"
              type="checkbox"
              id="lineWrappingInput"
              on-tap="_handlelineWrappingTap">
        </div>
        <div class="pref" id="columnsPref"
            hidden$="[[_newPrefs.line_wrapping]]">
          <label for="columnsInput">Diff width</label>
          <input is="iron-input" type="number" id="columnsInput"
              prevent-invalid-input
              allowed-pattern="[0-9]"
              bind-value="{{_newPrefs.line_length}}">
        </div>
        <div class="pref">
          <label for="tabSizeInput">Tab width</label>
          <input is="iron-input" type="number" id="tabSizeInput"
              prevent-invalid-input
              allowed-pattern="[0-9]"
              bind-value="{{_newPrefs.tab_size}}">
        </div>
        <div class="pref" hidden$="[[!_newPrefs.font_size]]">
          <label for="fontSizeInput">Font size</label>
          <input is="iron-input" type="number" id="fontSizeInput"
                prevent-invalid-input
                allowed-pattern="[0-9]"
                bind-value="{{_newPrefs.font_size}}">
        </div>
        <div class="pref">
          <label for="showTabsInput">Show tabs</label>
          <input is="iron-input" type="checkbox" id="showTabsInput"
              on-tap="_handleShowTabsTap">
        </div>
        <div class="pref">
          <label for="showTrailingWhitespaceInput">
            Show trailing whitespace</label>
          <input is="iron-input" type="checkbox"
              id="showTrailingWhitespaceInput"
              on-tap="_handleShowTrailingWhitespaceTap">
        </div>
        <div class="pref">
          <label for="syntaxHighlightInput">Syntax highlighting</label>
          <input is="iron-input" type="checkbox" id="syntaxHighlightInput"
              on-tap="_handleSyntaxHighlightTap">
        </div>
      </div>
      <div class="actions">
        <gr-button id="saveButton" primary on-tap="_handleSave">Save</gr-button>
        <gr-button id="cancelButton" on-tap="_handleCancel">Cancel</gr-button>
      </div>
    </overlay>
    <gr-rest-api-interface id="restAPI"></gr-rest-api-interface>
    <gr-storage id="storage"></gr-storage>
  </template>
  <script src="gr-diff-preferences.js"></script>
</dom-module>
