<?xml version="1.0" encoding="UTF-8"?>
<!--
Copyright (C) 2010 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:my='urn:import:com.google.gerrit.client.ui'
  ui:generateFormat='com.google.gwt.i18n.rebind.format.PropertiesFormat'
  ui:generateKeys='com.google.gwt.i18n.rebind.keygen.MD5KeyGenerator'
  ui:generateLocales='default,en'
  >
<ui:style>
  @external .gwt-TextBox;
  @external .gwt-ListBox;

  @def fontSize 8pt;

  .controls {
    border: none;
    border-collapse: separate;
    border-spacing: 0;
  }

  .controls td {
    font-size: fontSize;
    padding: 0;
    white-space: nowrap;
  }

  .controls .gwt-TextBox {
    font-size: fontSize;
    padding: 0;
    text-align: right;
  }

  .controls .gwt-ListBox {
    font-size: fontSize;
    padding: 0;
    margin-right: 1em;
  }

  .updateButton {
    margin-left: 1em;
    margin-right: 1em;
    font-size: fontSize;
  }
</ui:style>

<g:HTMLPanel>
<table class='{style.controls}'>
  <tr valign='top'>
    <ui:msg>
      <td align='right'>Ignore Whitespace:</td>
      <td align='right'>
        <g:ListBox
          ui:field='ignoreWhitespace'
          visibleItemCount='1'
          tabIndex='1'/>
      </td>
    </ui:msg>

    <td align='right'>
      <ui:msg>Tab Width:
      <my:NpIntTextBox
        ui:field='tabWidth'
        width='2em'
        visibleLength='2'
        maxLength='2'
        tabIndex='3'/>
      </ui:msg>
    </td>

    <td rowspan='2'>
      <g:CheckBox
          ui:field='syntaxHighlighting'
          text='Syntax Coloring'
          tabIndex='5'>
        <ui:attribute name='text'/>
      </g:CheckBox>
      <br/>
      <g:CheckBox
          ui:field='intralineDifference'
          text='Intraline Difference'
          tabIndex='6'>
        <ui:attribute name='text'/>
      </g:CheckBox>
    </td>

    <td rowspan='2'>
      <g:CheckBox
          ui:field='whitespaceErrors'
          text='Whitespace Errors'
          tabIndex='7'>
        <ui:attribute name='text'/>
      </g:CheckBox>
      <br/>
      <g:CheckBox
          ui:field='showTabs'
          text='Show Tabs'
          tabIndex='8'>
        <ui:attribute name='text'/>
      </g:CheckBox>
    </td>

    <td rowspan='2'>
      <g:CheckBox
          ui:field='skipUncommented'
          text='Skip Uncommented Files'
          tabIndex='9'>
        <ui:attribute name='text'/>
      </g:CheckBox>
      <br/>
      <g:CheckBox
          ui:field='skipDeleted'
          text='Skip Deleted Files'
          tabIndex='10'>
        <ui:attribute name='text'/>
      </g:CheckBox>
    </td>

    <td valign='bottom' rowspan='2'>
      <g:Button
          ui:field='update'
          text='Update'
          styleName='{style.updateButton}'
          tabIndex='11'>
        <ui:attribute name='text'/>
      </g:Button>
    </td>

    <td>
      <g:CheckBox
          ui:field='reviewed'
          text='Reviewed'
          tabIndex='12'>
        <ui:attribute name='text'/>
      </g:CheckBox>
    </td>
  </tr>

  <tr valign='top'>
    <ui:msg>
      <td align='right'>Context:</td>
      <td align='right'>
        <g:ListBox
            ui:field='context'
            visibleItemCount='1'
            tabIndex='2'/>
      </td>
    </ui:msg>

    <td align='right'>
      <ui:msg>Columns:
      <my:NpIntTextBox
        ui:field='colWidth'
        width='2.5em'
        visibleLength='3'
        maxLength='3'
        tabIndex='4'/>
      </ui:msg>
    </td>
  </tr>
</table>
</g:HTMLPanel>
</ui:UiBinder>
