<?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 gss='false'>
  @external .gwt-TextArea;

  .commitMessage {
    margin-top: 2em;
  }
  .commitMessage .gwt-TextArea {
    margin: 5px 5px 5px 5px;
  }
  .errorMessage {
    margin-top: 5px;
    margin-bottom: 5px;
    color: red;
  }
</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:VerticalPanel
      styleName='{style.errorMessage}'
      ui:field='error'>
    </g:VerticalPanel>
    <g:Button
        ui:field='commit'
        text='Save Changes'>
      <ui:attribute name='text'/>
    </g:Button>
    <g:Button
        ui:field='review'
        text='Save for Review'>
      <ui:attribute name='text'/>
    </g:Button>
    <g:Button
        ui:field='cancel2'
        text='Cancel'>
      <ui:attribute name='text'/>
    </g:Button>
  </div>
</g:HTMLPanel>
</ui:UiBinder>
