<?xml version="1.0" encoding="UTF-8"?>
<!--
Copyright (C) 2013 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.
-->
<ui:UiBinder xmlns:ui='urn:ui:com.google.gwt.uibinder'
    xmlns:g='urn:import:com.google.gwt.user.client.ui'
    xmlns:d='urn:import:com.google.gerrit.client.diff'>
  <ui:style type='com.google.gerrit.client.diff.DiffTable.DiffTableStyle'>
    @external .CodeMirror, .CodeMirror-lines, .CodeMirror-selectedtext;
    @external .CodeMirror-linenumber, .CodeMirror-vscrollbar .CodeMirror-scroll;
    @external .cm-keymap-fat-cursor, CodeMirror-cursor;
    @external .cm-searching, .cm-trailingspace, .cm-tab;

    .difftable { max-width: 1484px; }
    .difftable .CodeMirror-lines { padding: 0; }
    .difftable .CodeMirror pre {
      padding: 0;
      padding-bottom: 0.11em;
      overflow: hidden;
      border-right: 0;
      width: auto;
    }
    .difftable .CodeMirror pre span {
      padding-bottom: 0.11em;
    }
    .contentCell {
      padding: 0;
    }
    .sidePanelCell {
      padding: 0;
      width: 10px;
    }
    .table {
      width: 100%;
      table-layout: fixed;
      border-spacing: 0;
    }

    .a, .b {
      padding: 0;
      width: 50%;
    }

    /* Hide left side scrollbar, right side controls both views. */
    .a .CodeMirror-scroll { padding-right: 0; }
    .a .CodeMirror-vscrollbar { display: none !important; }

    .a .diff { background-color: #faa; }
    .b .diff { background-color: #9f9; }
    .a .intralineBg { background-color: #fee; }
    .b .intralineBg { background-color: #dfd; }

    .fileCommentRow {
      background-color: #eee;
      line-height: 1;
    }
    .fileCommentCell {
      overflow-x: auto;
    }

    .activeLine .CodeMirror-linenumber {
      background-color: #bcf !important;
      color: #000;
    }

    .range {
      background-color: #ffd500 !important;
    }
    .rangeHighlight {
      background-color: #ffff00 !important;
    }
    .cm-searching {
      background-color: #ffa !important;
    }
    .cm-trailingspace {
      background-color: red !important;
    }
    .difftable .CodeMirror-selectedtext {
      background-color: inherit !important;
    }
    .difftable .CodeMirror-linenumber {
      height: 1.11em;
      cursor: pointer;
    }
    .difftable .CodeMirror.cm-keymap-fat-cursor div.CodeMirror-cursor {
      background: transparent;
      text-decoration: underline;
    }
    .showtabs .cm-tab:before {
      content: "\00bb";
      color: #f00;
    }
  </ui:style>
  <g:HTMLPanel styleName='{style.difftable}'>
    <table class='{style.table}'>
      <tr>
        <td class='{style.contentCell}'>
          <table class='{style.table}'>
            <tr ui:field='patchSetNavRow' class='{style.fileCommentRow}'>
              <td ui:field='patchSetNavCellA'>
                <d:PatchSetSelectBox2 ui:field='patchSetSelectBoxA' />
              </td>
              <td ui:field='patchSetNavCellB'>
                <d:PatchSetSelectBox2 ui:field='patchSetSelectBoxB' />
              </td>
            </tr>
            <tr ui:field='fileCommentRow' class='{style.fileCommentRow}'>
              <td ui:field='fileCommentCellA' class='{style.fileCommentCell}'>
                <d:FileCommentPanel ui:field='fileCommentPanelA' />
              </td>
              <td ui:field='fileCommentCellB' class='{style.fileCommentCell}'>
                <d:FileCommentPanel ui:field='fileCommentPanelB' />
              </td>
            </tr>
            <tr>
              <td ui:field='cmA' class='{style.a}'></td>
              <td ui:field='cmB' class='{style.b}'></td>
            </tr>
          </table>
        </td>
        <td class='{style.sidePanelCell}'><d:SidePanel ui:field='sidePanel'/></td>
      </tr>
    </table>
  </g:HTMLPanel>
</ui:UiBinder>
