hackedteam/rcs-console

View on GitHub
src/it/ht/rcs/console/accounting/view/users/PrivsPreferencePanel.mxml

Summary

Maintainability
Test Coverage
<?xml version="1.0" encoding="utf-8"?>
<utils:TitleWindowSaveCancel xmlns:fx="http://ns.adobe.com/mxml/2009"
                                                         xmlns:s="library://ns.adobe.com/flex/spark"
                                                         xmlns:mx="library://ns.adobe.com/flex/mx"
                                                         xmlns:utils="it.ht.rcs.console.utils.*"
                                                         xmlns:renderers="it.ht.rcs.console.accounting.view.users.renderers.*"
                                                         xmlns:users="it.ht.rcs.console.accounting.view.users.*"
                                                         creationComplete="init()"
                                                         save="save()"
                                                         width="400"
                                                         height="720"
                                                         title="{R.get('ADVANCED_PERMISSIONS')}">

    <fx:Script>
        <![CDATA[
            import com.hurlant.util.der.OID;

            import it.ht.rcs.console.accounting.model.User;
            import it.ht.rcs.console.events.SaveEvent;
            import it.ht.rcs.console.events.TreeEvent;

            import locale.R;

            import mx.collections.ArrayCollection;

            [Bindable]
            public var user:User;

            [Bindable]
            public var newPreferences:ArrayCollection;

            [Bindable]
            public var permissionsXML:XMLList;

            protected function init():void
            {
                trPermissions.addEventListener("itemChange", onItemChange);
                trPermissions.addEventListener("childItemChange", onChildItemChange);
                callLater(expandTree)
            }

            private function expandTree():void
            {
                trPermissions.expandChildrenOf(permissionsXML[0], true);
                trPermissions.expandChildrenOf(permissionsXML[1], true);
                trPermissions.expandChildrenOf(permissionsXML[2], true);
                trPermissions.expandChildrenOf(permissionsXML[3], true);
            }

            private function onItemChange(e:TreeEvent):void
            {
                for each (var element:* in permissionsXML)
                {
                    if (String(element.@id) == String(e.data.@id))
                    {
                        for each (var node:* in element..permission)
                        {
                            if (element.@selected == "0")
                            {
                                node.@selected="0"
                            }
                            else if (element.@selected == "1")
                            {
                                if (node.@default == "1")
                                {
                                    node.@selected="1"
                                }
                                else
                                {
                                    node.@selected="0"
                                }

                            }
                        }
                    }
                }
            }

            private function onChildItemChange(e:TreeEvent):void
            {
                var allUnselected:Boolean=true;
                for each (var element:* in permissionsXML)
                {
                    allUnselected=true;
                    for each (var node:* in element..permission)
                    {
                        if (node.@selected == "1")
                        {
                            allUnselected=false;
                            element.@selected="1"
                        }
                    }
                    if (allUnselected)
                    {
                        element.@selected="0"
                    }
                }

            }

            private function save():void
            {

            }
        ]]>
    </fx:Script>

    <users:PrivsTree id="trPermissions"
                                     left="10"
                                     top="10"
                                     bottom="10"
                                     width="380"
                                     itemRenderer="it.ht.rcs.console.accounting.view.users.renderers.PermissionsTreeItemRenderer"
                                     showRoot="false"
                                     paddingTop="1"
                                     labelField="@desc"
                                     folderClosedIcon="{null}"
                                     folderOpenIcon="{null}"
                                     defaultLeafIcon="{null}"
                                     mouseEnabled="false"
                                     verticalScrollPolicy="auto"
                                     height="100%"
                                     dataProvider="{permissionsXML}"
                                     user="{user}"/>

</utils:TitleWindowSaveCancel>