<?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:g='urn:import:com.google.gwt.user.client.ui'>
  <ui:style gss='false' type='com.google.gerrit.client.change.Message.Style'>
    .messageBox {
      position: relative;
      width: 1168px;
      padding: 2px 0 2px 0;
      border-left: 1px solid #e3e9ff;
      border-right: 1px solid #e3e9ff;
      border-bottom: 1px solid #e3e9ff;
      -webkit-border-bottom-left-radius: 8px;
      -webkit-border-bottom-right-radius: 8px;
    }

    .header {
      cursor: pointer;
    }

    .avatar {
      position: absolute;
      width: 26px;
      height: 26px;
    }
    .closed .avatar {
      position: absolute;
      top: 0;
      left: -1px;
      width: 20px;
      height: 20px;
    }

    .contents {
      margin-left: 28px;
      position: relative;
    }

    .contents p,
    .contents blockquote {
      -webkit-margin-before: 0;
      -webkit-margin-after: 0.3em;
       white-space: pre-wrap;
    }

    .name {
      white-space: nowrap;
      font-weight: bold;
    }
    .closed .name {
      width: 150px;
      overflow: hidden;
      font-weight: normal;
    }

    .summary {
      color: #777;
      position: absolute;
      top: 0;
      left: 150px;
      width: 880px;
      overflow: hidden;
      text-overflow: ellipsis;
      white-space: nowrap;
    }

    .date {
      white-space: nowrap;
      position: absolute;
      top: 0;
      right: 18px;
    }

    .reply {
      position: absolute;
      top: 0;
      right: 1px;
      cursor: pointer;
      outline: none;
      border: none;
      background: transparent;
      margin: 0;
      padding: 0;
      line-height: 15px;
      font-family: Arial Unicode MS, sans-serif;
      font-size: 18px;
    }
    .closed .reply {
      visibility: hidden;
    }
    .comment {
    }
  </ui:style>

  <g:HTMLPanel
      styleName='{style.messageBox}'
      addStyleNames='{style.closed}'>
    <c:AvatarImage ui:field='avatar' styleName='{style.avatar}'/>
    <div class='{style.contents}'>
      <g:HTMLPanel ui:field='header' styleName='{style.header}'>
        <div class='{style.name}' ui:field='name'/>
        <div ui:field='summary' class='{style.summary}'/>
        <div class='{style.date}' ui:field='date'/>
        <g:Button styleName='{style.reply}'
            ui:field='reply'
            title='Reply to this message'>
          <ui:attribute name='title'/>
          <div>&#x21a9;</div>
        </g:Button>
      </g:HTMLPanel>
      <div style='overflow: auto'>
        <div ui:field='message'
            aria-hidden='true'
            style='display: NONE'
            styleName='{style.comment}'/>
        <g:FlowPanel ui:field='comments' visible='false'/>
      </div>
    </div>
  </g:HTMLPanel>
</ui:UiBinder>
