<?xml version="1.0" encoding="utf-8"?>
<!--
 PureMVC AS3 Demo - Flex Employee Admin 
 Copyright (c) 2007-10 Clifford Hall <clifford.hall@puremvc.org>
 Your reuse is governed by the Creative Commons Attribution 3.0 License
-->
<mx:Panel title="User Roles" status="{user.givenName}"
          xmlns:mx="http://www.adobe.com/2006/mxml">

    <!-- Events dispatched by this View Component -->
    <mx:Metadata>
        [Event("add")]
        [Event("remove")]
    </mx:Metadata>
    
    <mx:Script>
        <![CDATA[
            import mx.collections.ArrayCollection;
            import org.puremvc.as3.demos.flex.employeeadmin.model.vo.UserVO;
            import org.puremvc.as3.demos.flex.employeeadmin.model.enum.RoleEnum;

            public static const ADD:String = "add";
            public static const REMOVE:String = "remove";

            [Bindable] public var user:UserVO;
            [Bindable] public var selectedRole:RoleEnum;
            [Bindable] public var userRoles:ArrayCollection;
            
            // send the named event
            private function sendEvent( eventName:String ):void
            {
                dispatchEvent( new Event( eventName, true ) );
            }
            
            // select role to remove
            private function selectRoleToRemove():void
            {
                roleCombo.selectedItem = RoleEnum.NONE_SELECTED;
                selectedRole=RoleEnum( roleList.selectedItem );
            }
            
            // select role to add
            private function selectRoleToAdd():void
            {
                roleList.selectedIndex = -1;
                selectedRole=RoleEnum (roleCombo.selectedItem );
            }
            
            public function reset():void
            {
                roleCombo.selectedItem = RoleEnum.NONE_SELECTED;
            }            
        ]]>
    </mx:Script>
    
    <!-- User's Roles -->
    <mx:List id="roleList" width="100%" height="100%" labelField="value"
        dataProvider="{userRoles}" change="selectRoleToRemove()"/>
        
    <!-- Role Maintenance Controls -->
    <mx:ControlBar>
    
        <!-- Role to Add -->
        <mx:ComboBox id="roleCombo" labelField="value" enabled="{user != null}"
            dataProvider="{ RoleEnum.comboList }" change="selectRoleToAdd()"/>
            
        <!-- Add Role Button -->
        <mx:Button label="Add" click="sendEvent( ADD )"
            enabled="{roleCombo.selectedItem != RoleEnum.NONE_SELECTED}"/>
            
        <!-- Remove Role Button -->
        <mx:Button label="Remove" click="sendEvent( REMOVE )" 
            enabled="{roleList.selectedIndex != -1}"/>
            
    </mx:ControlBar>
    
</mx:Panel>