<?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:c='urn:import:com.google.gerrit.client'
    xmlns:e='urn:import:com.google.gwtexpui.globalkey.client'
    xmlns:g='urn:import:com.google.gwt.user.client.ui'>
  <ui:with field='res' type='com.google.gerrit.client.diff.Resources'/>
  <ui:style>
    .draft {
      width: 45px;
      text-align: center;
      color: #fff;
      background-color: #aaa;
      -webkit-border-radius: 2px;
    }
    .editArea { max-width: 637px; }
    button.button div {
      width: 35px;
    }
    button.discard {
      color: #d14836;
      background-color: #d14836;
      background-image: -webkit-linear-gradient(top, #d14836, #d14836);
      position: absolute;
      left: 150px;
    }
  </ui:style>

  <g:HTMLPanel styleName='{res.style.commentBox}'>
    <div class='{res.style.contents}'>
      <g:HTMLPanel ui:field='header' styleName='{res.style.header}'>
        <div class='{style.draft}'>Draft</div>
        <div ui:field='summary' class='{res.style.summary}'/>
        <div ui:field='date' class='{res.style.date}'/>
      </g:HTMLPanel>
      <div ui:field='p_view' aria-hidden='true' style='display: NONE'>
        <g:HTML ui:field='message' styleName=''/>
        <div style='position: relative'>
          <g:Button ui:field='edit'
              title='Edit this draft comment'
              styleName='{style.button}'>
            <ui:attribute name='title'/>
            <div><ui:msg>Edit</ui:msg></div>
          </g:Button>
          <g:Button ui:field='discard1'
              title='Discard this draft comment'
              styleName='{style.button}'
              addStyleNames='{style.discard}'>
            <ui:attribute name='title'/>
            <div><ui:msg>Discard</ui:msg></div>
          </g:Button>
        </div>
      </div>
      <div ui:field='p_edit' aria-hidden='true' style='display: NONE'>
        <e:NpTextArea ui:field='editArea'
            characterWidth='60'
            visibleLines='5'
            spellCheck='true'
            styleName='{style.editArea}'/>
        <div style='position: relative'>
          <g:Button ui:field='save'
              title='Save this draft comment'
              styleName='{style.button}'>
            <ui:attribute name='title'/>
            <div><ui:msg>Save</ui:msg></div>
          </g:Button>
          <g:Button ui:field='cancel' styleName='{style.button}'>
            <div><ui:msg>Cancel</ui:msg></div>
          </g:Button>
          <g:Button ui:field='discard2'
              title='Discard this draft comment'
              styleName='{style.button}'
              addStyleNames='{style.discard}'>
            <ui:attribute name='title'/>
            <div><ui:msg>Discard</ui:msg></div>
          </g:Button>
        </div>
      </div>
    </div>
  </g:HTMLPanel>
</ui:UiBinder>
