<?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:q='urn:import:com.google.gerrit.client.ui'
  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'>
  .inheritsFrom {
    margin-bottom: 0.5em;
  }
  .parentTitle {
    font-weight: bold;
  }
  .parentLink {
    display: inline;
  }

  .history {
    margin-bottom: 0.5em;
  }
  .historyTitle {
    font-weight: bold;
  }
  .webLinkPanel a {
    display: inline;
  }
  .webLinkPanel>a {
    margin-left:2px;
  }

  .addContainer {
    margin-top: 5px;
  }
  .addContainer:hover {
    background-color: selectionColor;
  }
</ui:style>

<g:HTMLPanel>
  <div ui:field='inheritsFrom' class='{style.inheritsFrom}'>
    <span class='{style.parentTitle}'><ui:msg>Rights Inherit From:</ui:msg></span>
    <q:Hyperlink ui:field='parentProject' styleName='{style.parentLink}'/>
    <q:ParentProjectBox
      ui:field='parentProjectBox'
      visible='false'/>
  </div>
  <div ui:field='history' class='{style.history}'>
    <span class='{style.historyTitle}'><ui:msg>History:</ui:msg></span>
    <td>
      <g:FlowPanel ui:field="webLinkPanel" styleName='{style.webLinkPanel}'/>
    </td>
  </div>

  <g:FlowPanel ui:field='localContainer'/>
  <div class='{style.addContainer}'>
    <g:Anchor
        ui:field='addSection'
        href='javascript:void'
        text='Add Reference'>
      <ui:attribute name='text'/>
    </g:Anchor>
  </div>
</g:HTMLPanel>
</ui:UiBinder>
