<?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:x='urn:import:com.google.gerrit.client.ui'>
  <ui:with field='ico' type='com.google.gerrit.client.GerritResources'/>
  <ui:with field='res' type='com.google.gerrit.client.diff.Resources'/>
  <ui:style gss='false'>
  .header {
    position: relative;
    height: 16px;
    line-height: 16px;
  }
  .reviewed input {
    margin: 0;
    padding: 0;
    vertical-align: middle;
  }
  .path {
    white-space: nowrap;
  }
  .navigation {
    position: absolute;
    top: 0;
    right: 10px;
    height: 16px;
    line-height: 16px;
  }
  .nodiff {
    white-space: nowrap;
    color: #B00000;
    vertical-align: top;
    font-weight: bold;
    margin-right: 1em;
    float: left;
  }
  .linkPanel {
    float: left;
  }
  .linkPanel img {
    padding-right: 3px;
  }
  .preferences {
    cursor: pointer;
  }
  </ui:style>
  <g:HTMLPanel styleName='{style.header}'>
    <g:CheckBox ui:field='reviewed'
        styleName='{style.reviewed}'
        title='Mark file as reviewed (Shortcut: r)'>
      <ui:attribute name='title'/>
    </g:CheckBox>
    <span class='{style.path}'><span ui:field='project'/> / <span ui:field='filePath'/></span>
    <div class='{style.navigation}'>
      <span ui:field='noDiff' class='{style.nodiff}'><ui:msg>No Differences</ui:msg></span>
      <g:FlowPanel ui:field='linkPanel' styleName='{style.linkPanel}'/>
      <x:InlineHyperlink ui:field='prev' styleName='{res.style.goPrev}'/>
      <x:InlineHyperlink ui:field='up'
          styleName='{res.style.goUp}'
          title='Up to change (Shortcut: u)'>
        <ui:attribute name='title'/>
      </x:InlineHyperlink>
      <x:InlineHyperlink ui:field='next' styleName='{res.style.goNext}'/>
      <g:Image ui:field='preferences'
           styleName='{style.preferences}'
           resource='{ico.gear}'
           title='Diff preferences (Shortcut: ,)'>
         <ui:attribute name='title'/>
      </g:Image>
    </div>
  </g:HTMLPanel>
</ui:UiBinder>
