<!--
  Copyright 2011 Google Inc.
  Licensed under the Apache License, Version 2.0 (the "License"); you
  may not use this file except in compliance with the License. You may
  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. License for the specific language governing permissions and
  limitations under the License.
-->
<ui:UiBinder xmlns:ui='urn:ui:com.google.gwt.uibinder'
  xmlns:gwt='urn:import:com.google.gwt.user.client.ui'>
  <gwt:VerticalPanel ui:field='verticalPanel'>
    <gwt:cell horizontalAlignment='ALIGN_RIGHT'>
      <gwt:HTMLPanel>
        <gwt:Anchor text='Refresh' ui:field='refresh'
          href='javascript:void(0)' />
        |
        <gwt:Anchor text='Launch App' target='_blank'
          ui:field='appLaunch' href='https://googlehomework.appspot.com/user' />
      </gwt:HTMLPanel>
    </gwt:cell>
  </gwt:VerticalPanel>
</ui:UiBinder>
