<?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:g='urn:import:com.google.gwt.user.client.ui'>
  <ui:style>
    #change_actions {
      padding-top: 2px;
      padding-bottom: 20px;
    }

    #change_actions button {
      margin: 6px 3px 0 0;
      border-color: rgba(0, 0, 0, 0.1);
      text-align: center;
      font-size: 8pt;
      font-weight: bold;
      border: 1px solid;
      cursor: pointer;
      color: #444;
      background-color: #f5f5f5;
      background-image: -webkit-linear-gradient(top, #f5f5f5, #f1f1f1);
      -webkit-border-radius: 2px;
      -webkit-box-sizing: content-box;
    }
    #change_actions button div {
      color: #444; 
      height: 10px;
      min-width: 54px;
      line-height: 10px;
      white-space: nowrap;
    }

    #change_actions button {
      color: #444;
      background-color: #f5f5f5;
      background-image: -webkit-linear-gradient(top, #f5f5f5, #f1f1f1);
    }
    #change_actions button div {color: #444;}

    #change_actions button.red {
      color: #d14836;
      background-color: #d14836;
      background-image: -webkit-linear-gradient(top, #d14836, #d14836);
    }
    #change_actions button.red div {color: #fff;}

    #change_actions button.submit {
      float: right;
      background-color: #4d90fe;
      background-image: -webkit-linear-gradient(top, #4d90fe, #4d90fe);
    }
    #change_actions button.submit div {color: #fff;}

    #change_actions button:disabled {
      font-weight: normal;
      background-color: #999;
      background-image: -webkit-linear-gradient(top, #999, #999);
    }

  </ui:style>

  <g:FlowPanel>
    <g:Button ui:field='cherrypick' styleName='' visible='false'>
      <div><ui:msg>Cherry Pick</ui:msg></div>
    </g:Button>
    <g:Button ui:field='rebase' styleName='' visible='false'>
      <div><ui:msg>Rebase</ui:msg></div>
    </g:Button>
    <g:Button ui:field='revert' styleName='' visible='false'>
      <div><ui:msg>Revert</ui:msg></div>
    </g:Button>
    <g:Button ui:field='deleteChange' styleName='' visible='false'>
      <div><ui:msg>Delete Change</ui:msg></div>
    </g:Button>
    <g:Button ui:field='deleteRevision' styleName='' visible='false'>
      <div><ui:msg>Delete Revision</ui:msg></div>
    </g:Button>
    <g:Button ui:field='publish' styleName='' visible='false'>
      <div><ui:msg>Publish</ui:msg></div>
    </g:Button>

    <g:Button ui:field='abandon' styleName='{style.red}' visible='false'>
      <div><ui:msg>Abandon</ui:msg></div>
    </g:Button>
    <g:Button ui:field='restore' styleName='{style.red}' visible='false'>
      <div><ui:msg>Restore</ui:msg></div>
    </g:Button>

    <g:Button ui:field='submit' styleName='{style.submit}' visible='false'>
      <div><ui:msg>Submit</ui:msg></div>
    </g:Button>
  </g:FlowPanel>
</ui:UiBinder>
