<?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:with field='ico' type='com.google.gerrit.client.GerritResources'/>
  <ui:with field='res' type='com.google.gerrit.client.change.Resources'/>
  <ui:style gss='false'>
    button.openAdd {
      margin: 3px 3px 0 0;
      float: right;
      color: rgba(0, 0, 0, 0.15);
      background-color: #f5f5f5;
      background-image: -webkit-linear-gradient(top, #f5f5f5, #f1f1f1);
      -webkit-border-radius: 2px;
      -moz-border-radius: 2px;
      border-radius: 2px;
      -webkit-box-sizing: content-box;
      -moz-box-sizing: content-box;
      box-sizing: content-box;
    }
    button.openAdd div {
      width: auto;
      color: #444;
    }

    .hashtagTextBox {
      margin-bottom: 2px;
    }

    .error {
      color: #D33D3D;
      font-weight: bold;
    }

    .addHashtag,
    .cancel {
      cursor: pointer;
      float: right;
    }
  </ui:style>
  <g:HTMLPanel>
    <div>
      <span ui:field='hashtagsText'/>
      <g:Image ui:field='addHashtagIcon'
        resource='{ico.addHashtag}'
        styleName='{style.addHashtag}'
        title='Add Hashtag'/>
    </div>
    <div ui:field='form' style='display: none' aria-hidden='true'>
      <c:NpTextBox ui:field='hashtagTextBox' styleName='{style.hashtagTextBox}'/>
      <div ui:field='error'
           class='{style.error}'
           style='display: none' aria-hidden='true'/>
      <div>
        <g:Button ui:field='add' styleName='{res.style.button}'>
          <div>Add</div>
        </g:Button>
        <g:Button ui:field='cancel'
            styleName='{res.style.button}'
            addStyleNames='{style.cancel}'>
          <div>Cancel</div>
        </g:Button>
      </div>
    </div>
   </g:HTMLPanel>
  </ui:UiBinder>