<?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.
  
-->
<library>

<class name="interviewRoomSidebar" extends="view" width="280" 
       height="${ canvas.height - ((canvas.currentRoomObj.hideTopBar) ? 0:28) }" y="0" clip="true">
    
    <attribute name="selected" value="null" />
    
    <attribute name="isOpen" value="true" type="boolean"/>
    
    <attribute name="restricted" value="true" type="boolean" />
   
    <attribute name="listType" value="eventUserListTable" type="string" />
    
    <method name="doSelection" args="itemRef">
        <![CDATA[
            if (this.selected != null) {
                this.selected.deselect();
            }
            
            this.selected = itemRef;
            this.selected.select();
          
        ]]>
    </method>
    
    <view name="borderBarTop" y="0"
    			width="${ parent.width }" bgcolor="$once{ canvas.getThemeColor('mainBorderColor') }" height="1" />
   	<view name="_tabbarBg" width="${ parent.width }" height="32" y="1" bgcolor="0xFAFAFA" />
	<view name="borderBarBottom" y="34"
   			width="${ parent.width }" bgcolor="$once{ canvas.getThemeColor('mainBorderColor') }" height="1" /> 
    
    <view name="_head" y="1" width="${ parent.width-10 }" height="32"
    		  layout="axis:x;spacing:2;inset:2" >
    
    	<handler name="oninit">
    		for (var eg in this.subviews) {
            	this.subviews[eg].deselect();
            }
            this.userTabButton.doSelection();
    	</handler>
        
        <tabButtonMain name="userTabButton" height="$once{ parent.height }" width="$once{ (parent.width-6)/2 }"
                currentIconRsc="users_tab_btn" labelid="613" />
        
    </view>
    
    <interviewUserList name="_videocontainer" y="36"
			   width="$once{ parent.width-10 }" 
               height="${ parent.height-((canvas.currentRoomObj.hideActivitiesAndActions == true) ? 36:236) }" />
               
    <activityList name="_activityList" />
    
    <view name="_minimizeSidebar" x="${ parent.width - 10 }" width="10" y="1"
    	bgcolor="0xE0E1EB" height="${ parent.height-1 }">
        
        <view width="${ parent.width }" height="$once{ parent.height }" 
               bgcolor="0xE0E1EB" >
        </view>
            
    </view>
</class>

</library>
