<?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: 440px; max-width: 440px" >
                <tr>
                    <th class="ui-widget-header" style="width: 34px; max-width: 34px; overflow: hidden;" wicket:message="title:98"><wicket:message key="98" /></th>
                    <th class="ui-widget-header" style="width: 360px"><wicket:message key="177" /></th>
                    <th class="ui-widget-header" style="width: 34px"><wicket:message key="275" /></th>
                </tr>   
            </table>
            <div class="tableWrapper" style="width: 460px; height: 460px;">
                <table class="adminListTable" style="min-width: 440px; max-width: 440px">  
                    <tbody>   
                        <tr wicket:id="userList" class="ui-widget-content">
                            <td style="width: 34px"><input type="checkbox" wicket:id="isModerator"/></td>
                            <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:message="title:274"><input/></div></div></td>
                        </tr>
                    </tbody>
                </table>
            </div>
		</div>
	</wicket:panel>
</html>
