<?xml version="1.0" encoding="UTF-8"?>
<!--
  Licensed to the Apache Software Foundation (ASF) under one
  or more contributor license agreements.  See the NOTICE file
  distributed with this work for additional information
  regarding copyright ownership.  The ASF licenses this file
  to you 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.
  
-->
<html xmlns:wicket="http://wicket.apache.org">
	<wicket:panel>
		<div class="usergroupspanel">
			<span wicket:id="navigator">[dataview navigator]</span>
			<table class="adminListTable" style="min-width: 400px; max-width: 400px" >
                <tr>
                    <th style="width: 360px"><wicket:ommessage key="177" /></th>
                    <th style="width: 34px"><wicket:ommessage key="275" /></th>
                </tr>   
            </table>
            <div class="tableWrapper" style="width: 420px; height: 420px;">
                <table class="adminListTable" style="min-width: 400px; max-width: 400px">  
                    <tbody>   
                        <tr wicket:id="userList">
                            <td style="width: 360px"><div style="width: 360px"><span wicket:id="label"></span></div></td>
                            <td style="width: 34px"><div style="width: 34px"><div class="formCancelButton" wicket:id="deleteUserBtn" wicket:ommessage="title:274"><input/></div></div></td>
                        </tr>
                    </tbody>
                </table>
            </div>
		</div>
	</wicket:panel>
</html>
