hackedteam/rcs-console

View on GitHub
src/it/ht/rcs/console/system/view/frontend/FrontendActionBar.mxml

Summary

Maintainability
Test Coverage
<?xml version="1.0" encoding="utf-8"?>
<actionbar:ActionBar 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:actionbar="it.ht.rcs.console.main.actionbar.*">



    <s:Button label="{R.get('NEW_ANONYMIZER')}"
                        click="onNewClick()"
                        icon="@Embed('/img/NEW/newAnonymizer.png')"
                        enabled="{Console.currentSession.user.is_sys_frontend()}"/>

    <s:Button label="{R.get('EDIT')}"
                        click="onEditClick()"
                        icon="@Embed('/img/NEW/edit.png')"
                        enabled="{selectedObject != null &amp;&amp; Console.currentSession.user.is_sys_frontend()}"/>

    <s:Button label="{R.get('DELETE')}"
                        click="onDeleteClick()"
                        icon="@Embed('/img/NEW/delete_32.png')"
                        enabled="{selectedObject != null &amp;&amp; Console.currentSession.user.is_sys_frontend()}"/>

    <actionbar:Separator width="40"/>

    <s:Button label="{R.get('DOWNLOAD_INSTALLER')}"
                        click="downloadInstaller()"
                        icon="@Embed('/img/NEW/build.png')"
                        enabled="{selectedObject != null &amp;&amp; Console.currentSession.user.is_sys_frontend() &amp;&amp; selectedObject.type == 'remote'}"/>

    <s:Button label="{R.get('UPGRADE')}"
                        click="upgradeAnon(event)"
                        icon="@Embed('/img/NEW/update.png')"
                        enabled="{selectedObject != null &amp;&amp; (selectedObject as Collector).enabled &amp;&amp; (selectedObject as Collector).isUpdatable &amp;&amp; selectedObject.type == 'remote' &amp;&amp; Console.currentSession.user.is_sys_frontend()}"/>

    <actionbar:Separator width="40"/>
    <!--<s:Button label="{R.get('SAVE')}"
                        icon="@Embed('/img/NEW/save.png')"
                        enabled="{graph.dirty &amp;&amp; Console.currentSession.user.is_sys_frontend()}"
                        click="saveTopology()"/>-->
    <s:Button label="{R.get('HEALTH_CHECK')}"
                        click="healthCheck()"
                        icon="@Embed('/img/NEW/check.png')"
                        enabled="{Console.currentSession.user.is_sys_frontend() }"/>
    <s:Button label="{R.get('APPLY_TOPOLOGY')}"
                        click="saveTopology()"
                        icon="@Embed('/img/NEW/confirm.png')"
                        enabled="{Console.currentSession.user.is_sys_frontend() }"/>

    <actionbar:Separator width="40"/>

    <s:Button label="{R.get('FILE_MANAGER')}"
                        click="deleteFiles()"
                        icon="@Embed('/img/NEW/file_ex_32.png')"/>

    <fx:Script>
        <![CDATA[
      import it.ht.rcs.console.events.DataLoadedEvent;
      import it.ht.rcs.console.network.controller.CollectorManager;
      import it.ht.rcs.console.network.model.Collector;
      import it.ht.rcs.console.system.view.frontend.graph.FrontendGraph;
      import it.ht.rcs.console.system.view.frontend.graph.renderers.CollectorRenderer;
      import it.ht.rcs.console.system.view.frontend.healthCheck.HealthCheckWindow;
      import it.ht.rcs.console.task.controller.DownloadManager;
      import it.ht.rcs.console.utils.AlertPopUp;
      
      import locale.R;
      
      import mx.collections.ArrayCollection;
      import mx.collections.ListCollectionView;
      import mx.events.CloseEvent;
      import mx.managers.PopUpManager;
      import mx.rpc.events.ResultEvent;
            
      [Bindable]
            public var graph:FrontendGraph;

            [Bindable]
            public var collectors:ListCollectionView;
      
      private var numCollectorsToUpdate:int=0;

            private function onNewClick():void
            {
                var popup:CreateCollectorForm=PopUpManager.createPopUp(this.parentDocument as DisplayObject, CreateCollectorForm, true) as CreateCollectorForm;
                PopUpManager.centerPopUp(popup);
            }

            private function onEditClick():void
            {
                var popup:EditCollectorForm=PopUpManager.createPopUp(this.parentDocument as DisplayObject, EditCollectorForm, true) as EditCollectorForm;
                popup.collector=selectedObject as Collector;
                PopUpManager.centerPopUp(popup);
            }
    
      
      private function update():void
      {
        for (var i:int=0; i < collectors.length; i++)
        {
          var c:Collector=collectors.getItemAt(i) as Collector;
          CollectorManager.instance.update(c);
        }
        graph.dirty=true;
      }

            private function saveTopology():void
            {
        numCollectorsToUpdate=collectors.length;
                for (var i:int=0; i < collectors.length; i++)
                {
                    var c:Collector=collectors.getItemAt(i) as Collector;
                    CollectorManager.instance.update(c, onCollectorUpdated);
                }
                graph.dirty=false;
            }
      
      private function onCollectorUpdated(e:ResultEvent):void
      {
        numCollectorsToUpdate--;
          if(numCollectorsToUpdate==0)
          {
          applyTopology();
          }
      }

            private function onDeleteClick():void
            {
                AlertPopUp.show(R.get('CONFIRM_COLLECTOR_DELETION', [selectedObject.name]), R.get('CONFIRM'), AlertPopUp.YES | AlertPopUp.NO, null, function(e:CloseEvent):void
                {
                    if (e.detail == AlertPopUp.YES)
                    {

                        CollectorManager.instance.removeItem(selectedObject);
                        selectedObject=null;
            update();
            CollectorManager.instance.dispatchEvent(new DataLoadedEvent(DataLoadedEvent.DATA_LOADED)) 
                    }
                }, null, AlertPopUp.NO);
            }

            private function healthCheck():void
            {
        DownloadManager.instance.createTask("topologycheck", null, {});
        /*
                var nodes:ArrayCollection=new ArrayCollection();
                for each (var c:CollectorRenderer in(parent as Frontend).graph.db.collectors)
                {
                    while (c.nextHop != null)
                        c=c.nextHop;
                    nodes.addItem({ip: c.collector.address, name: c.collector.name});
                }

                var popup:HealthCheckWindow=PopUpManager.createPopUp(this.parentDocument as DisplayObject, HealthCheckWindow, true) as HealthCheckWindow;
                popup.nodes=nodes;
                PopUpManager.centerPopUp(popup);
        */
            }

            private function applyTopology():void
            {
                DownloadManager.instance.createTask("topology", null, {});
            }

            private function downloadInstaller():void
            {
                var params:Object={platform: 'anon', binary: {demo: false}, melt: {port: (selectedObject as Collector).port, id: (selectedObject as Collector)._id}}
                var filename:String=(selectedObject as Collector).name+'_anon_install.zip'
                DownloadManager.instance.createTask("build", filename, params, null, null);
            }

            protected function upgradeAnon(event:MouseEvent):void
            {
                var popup:AnonUpgrade=PopUpManager.createPopUp(root, AnonUpgrade, true) as AnonUpgrade;
                popup.anon=selectedObject as Collector;
                PopUpManager.centerPopUp(popup);
            }

            private function deleteFiles():void
            {
                var popup:DeleteFilesForm=PopUpManager.createPopUp(root, DeleteFilesForm, true) as DeleteFilesForm;
                PopUpManager.centerPopUp(popup);
            }
        ]]>
    </fx:Script>

</actionbar:ActionBar>