<?xml version="1.0" encoding="UTF-8"?>
<!--
Copyright (C) 2014 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.gwtexpui.globalkey.client'
    xmlns:g='urn:import:com.google.gwt.user.client.ui'>
  <ui:style gss='false'>
    .popup {
      position: fixed;
      top: 5px;
      left: 50%;
      margin-left: -200px;
      z-index: 201;
      padding-top: 5px;
      padding-bottom: 5px;
      padding-left: 12px;
      padding-right: 12px;
      background: #FFF1A8;
      border-radius: 10px;
    }

    @if user.agent safari {
      .popup {
        \-webkit-border-radius: 10px;
      }
    }
    @if user.agent gecko1_8 {
      .popup {
        \-moz-border-radius: 10px;
      }
    }

    .message {
      display: inline;
    }
    .message a {
      color: #222;
      text-decoration: underline;
    }
    a.action {
      color: #222;
      text-decoration: underline;
      display: inline-block;
      margin-left: 0.5em;
    }
  </ui:style>
  <g:HTMLPanel styleName='{style.popup}'>
    <g:HTML ui:field='message' styleName='{style.message}'/>
    <g:Anchor ui:field='dismiss'
        styleName='{style.action}'
        href='javascript:;'
        title='Hide this message'>
      <ui:attribute name='title'/>
      Dismiss
    </g:Anchor>
  </g:HTMLPanel>
</ui:UiBinder>
