<?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'
  >
<ui:with field='res' type='com.google.gerrit.client.admin.AdminResources'/>
<ui:style>
  .panel {
    position: relative;
    white-space: nowrap;
  }

  .textPanel {
    width: 100%;
    padding-right: 21px;
  }

  .editIcon {
    position: absolute;
    top: 0;
    right: 5px;
  }

  .editPanel {
    width: 100%;
  }

  .errorLabel {
    display: none;
    color: red;
    white-space: pre;
  }
</ui:style>
<g:HTMLPanel stylePrimaryName='{style.panel}'>
  <g:Image
      ui:field='editIcon'
      resource='{res.editText}'
      stylePrimaryName='{style.editIcon}'
      title='Edit'>
    <ui:attribute name='title'/>
  </g:Image>
  <g:SimplePanel ui:field='textPanel' stylePrimaryName='{style.textPanel}'/>

  <g:SimplePanel ui:field='editPanel' stylePrimaryName='{style.editPanel}'/>
  <div
      ui:field='errorLabel'
      class='{style.errorLabel}'/>
</g:HTMLPanel>
</ui:UiBinder>
