<?xml version="1.0" encoding="UTF-8"?>
<!--
Copyright (C) 2011 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.admin'
  xmlns:expui='urn:import:com.google.gwtexpui.globalkey.client'
  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-TextArea;

  .commitMessage {
    margin-top: 2em;
  }
  .commitMessage .gwt-TextArea {
    margin: 5px 5px 5px 5px;
  }
</ui:style>

<g:HTMLPanel>
  <div ui:field='editTools'>
    <g:Button
        ui:field='edit'
        text='Edit'>
      <ui:attribute name='text'/>
    </g:Button>
    <g:Button
        ui:field='cancel1'
        text='Cancel'>
      <ui:attribute name='text'/>
    </g:Button>
  </div>
  <my:ProjectAccessEditor ui:field='accessEditor'/>
  <div ui:field='commitTools'>
    <div class='{style.commitMessage}'>
      <ui:msg>Commit Message (optional):</ui:msg><br/>
      <expui:NpTextArea
          ui:field='commitMessage'
          visibleLines='4'
          characterWidth='60'
          spellCheck='true'
          />
    </div>
    <g:Button
        ui:field='commit'
        text='Save Changes'>
      <ui:attribute name='text'/>
    </g:Button>
    <g:Button
        ui:field='cancel2'
        text='Cancel'>
      <ui:attribute name='text'/>
    </g:Button>
  </div>
  <div style='width: 35em; visibility: hidden;' />
</g:HTMLPanel>
</ui:UiBinder>
