home *** CD-ROM | disk | FTP | other *** search
/ PCGUIA 2010 Software/Programs / PCGuia_programas.iso / Software / Utils / Livebrush / Install-LivebrushLite.air / livebrush.swf / scripts / fl / containers / ScrollPane.as < prev   
Encoding:
Text File  |  2009-10-26  |  12.5 KB  |  389 lines

  1. package fl.containers
  2. {
  3.    import fl.controls.ScrollPolicy;
  4.    import fl.core.InvalidationType;
  5.    import fl.events.ScrollEvent;
  6.    import fl.managers.IFocusManagerComponent;
  7.    import flash.display.DisplayObject;
  8.    import flash.display.Loader;
  9.    import flash.display.Sprite;
  10.    import flash.events.Event;
  11.    import flash.events.HTTPStatusEvent;
  12.    import flash.events.IOErrorEvent;
  13.    import flash.events.KeyboardEvent;
  14.    import flash.events.MouseEvent;
  15.    import flash.events.ProgressEvent;
  16.    import flash.events.SecurityErrorEvent;
  17.    import flash.net.URLRequest;
  18.    import flash.system.ApplicationDomain;
  19.    import flash.system.LoaderContext;
  20.    import flash.ui.Keyboard;
  21.    
  22.    [Embed(source="/_assets/assets.swf", symbol="symbol353")]
  23.    public class ScrollPane extends BaseScrollPane implements IFocusManagerComponent
  24.    {
  25.       private static var defaultStyles:Object = {
  26.          "upSkin":"ScrollPane_upSkin",
  27.          "disabledSkin":"ScrollPane_disabledSkin",
  28.          "focusRectSkin":null,
  29.          "focusRectPadding":null,
  30.          "contentPadding":0
  31.       };
  32.       
  33.       protected var scrollDragHPos:Number;
  34.       
  35.       protected var loader:Loader;
  36.       
  37.       protected var xOffset:Number;
  38.       
  39.       protected var _source:Object = "";
  40.       
  41.       protected var scrollDragVPos:Number;
  42.       
  43.       protected var _scrollDrag:Boolean = false;
  44.       
  45.       protected var currentContent:Object;
  46.       
  47.       protected var contentClip:Sprite;
  48.       
  49.       protected var yOffset:Number;
  50.       
  51.       public function ScrollPane()
  52.       {
  53.          super();
  54.       }
  55.       
  56.       public static function getStyleDefinition() : Object
  57.       {
  58.          return mergeStyles(defaultStyles,BaseScrollPane.getStyleDefinition());
  59.       }
  60.       
  61.       protected function clearContent() : void
  62.       {
  63.          if(contentClip.numChildren == 0)
  64.          {
  65.             return;
  66.          }
  67.          contentClip.removeChildAt(0);
  68.          currentContent = null;
  69.          if(loader != null)
  70.          {
  71.             try
  72.             {
  73.                loader.close();
  74.             }
  75.             catch(e:*)
  76.             {
  77.             }
  78.             try
  79.             {
  80.                loader.unload();
  81.             }
  82.             catch(e:*)
  83.             {
  84.             }
  85.             loader = null;
  86.          }
  87.       }
  88.       
  89.       protected function passEvent(param1:Event) : void
  90.       {
  91.          dispatchEvent(param1);
  92.       }
  93.       
  94.       protected function calculateAvailableHeight() : Number
  95.       {
  96.          var _loc1_:Number = Number(getStyleValue("contentPadding"));
  97.          return height - _loc1_ * 2 - (_horizontalScrollPolicy == ScrollPolicy.ON || _horizontalScrollPolicy == ScrollPolicy.AUTO && _maxHorizontalScrollPosition > 0 ? 15 : 0);
  98.       }
  99.       
  100.       override protected function drawLayout() : void
  101.       {
  102.          super.drawLayout();
  103.          contentScrollRect = contentClip.scrollRect;
  104.          contentScrollRect.width = availableWidth;
  105.          contentScrollRect.height = availableHeight;
  106.          contentClip.cacheAsBitmap = useBitmapScrolling;
  107.          contentClip.scrollRect = contentScrollRect;
  108.          contentClip.x = contentClip.y = contentPadding;
  109.       }
  110.       
  111.       public function get bytesTotal() : Number
  112.       {
  113.          return loader == null || loader.contentLoaderInfo == null ? 0 : loader.contentLoaderInfo.bytesTotal;
  114.       }
  115.       
  116.       public function get source() : Object
  117.       {
  118.          return _source;
  119.       }
  120.       
  121.       override protected function handleScroll(param1:ScrollEvent) : void
  122.       {
  123.          passEvent(param1);
  124.          super.handleScroll(param1);
  125.       }
  126.       
  127.       protected function onContentLoad(param1:Event) : void
  128.       {
  129.          update();
  130.          var _loc2_:* = calculateAvailableHeight();
  131.          calculateAvailableSize();
  132.          horizontalScrollBar.setScrollProperties(availableWidth,0,useFixedHorizontalScrolling ? _maxHorizontalScrollPosition : contentWidth - availableWidth,availableWidth);
  133.          verticalScrollBar.setScrollProperties(_loc2_,0,contentHeight - _loc2_,_loc2_);
  134.          passEvent(param1);
  135.       }
  136.       
  137.       public function get scrollDrag() : Boolean
  138.       {
  139.          return _scrollDrag;
  140.       }
  141.       
  142.       protected function setScrollDrag() : void
  143.       {
  144.          if(_scrollDrag)
  145.          {
  146.             contentClip.addEventListener(MouseEvent.MOUSE_DOWN,doStartDrag,false,0,true);
  147.             stage.addEventListener(MouseEvent.MOUSE_UP,endDrag,false,0,true);
  148.          }
  149.          else
  150.          {
  151.             contentClip.removeEventListener(MouseEvent.MOUSE_DOWN,doStartDrag);
  152.             stage.removeEventListener(MouseEvent.MOUSE_UP,endDrag);
  153.             removeEventListener(MouseEvent.MOUSE_MOVE,doDrag);
  154.          }
  155.          contentClip.buttonMode = _scrollDrag;
  156.       }
  157.       
  158.       public function get percentLoaded() : Number
  159.       {
  160.          if(loader != null)
  161.          {
  162.             return Math.round(bytesLoaded / bytesTotal * 100);
  163.          }
  164.          return 0;
  165.       }
  166.       
  167.       override protected function setVerticalScrollPosition(param1:Number, param2:Boolean = false) : void
  168.       {
  169.          var _loc3_:* = contentClip.scrollRect;
  170.          _loc3_.y = param1;
  171.          contentClip.scrollRect = _loc3_;
  172.       }
  173.       
  174.       protected function endDrag(param1:MouseEvent) : void
  175.       {
  176.          stage.removeEventListener(MouseEvent.MOUSE_MOVE,doDrag);
  177.       }
  178.       
  179.       override protected function drawBackground() : void
  180.       {
  181.          var _loc1_:DisplayObject = background;
  182.          background = getDisplayObjectInstance(getStyleValue(enabled ? "upSkin" : "disabledSkin"));
  183.          background.width = width;
  184.          background.height = height;
  185.          addChildAt(background,0);
  186.          if(_loc1_ != null && _loc1_ != background)
  187.          {
  188.             removeChild(_loc1_);
  189.          }
  190.       }
  191.       
  192.       public function set source(param1:Object) : void
  193.       {
  194.          var _loc2_:* = undefined;
  195.          clearContent();
  196.          if(isLivePreview)
  197.          {
  198.             return;
  199.          }
  200.          _source = param1;
  201.          if(_source == "" || _source == null)
  202.          {
  203.             return;
  204.          }
  205.          currentContent = getDisplayObjectInstance(param1);
  206.          if(currentContent != null)
  207.          {
  208.             _loc2_ = contentClip.addChild(currentContent as DisplayObject);
  209.             dispatchEvent(new Event(Event.INIT));
  210.             update();
  211.          }
  212.          else
  213.          {
  214.             load(new URLRequest(_source.toString()));
  215.          }
  216.       }
  217.       
  218.       public function set scrollDrag(param1:Boolean) : void
  219.       {
  220.          _scrollDrag = param1;
  221.          invalidate(InvalidationType.STATE);
  222.       }
  223.       
  224.       protected function initLoader() : void
  225.       {
  226.          loader = new Loader();
  227.          loader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR,handleError,false,0,true);
  228.          loader.contentLoaderInfo.addEventListener(SecurityErrorEvent.SECURITY_ERROR,handleError,false,0,true);
  229.          loader.contentLoaderInfo.addEventListener(Event.OPEN,passEvent,false,0,true);
  230.          loader.contentLoaderInfo.addEventListener(ProgressEvent.PROGRESS,passEvent,false,0,true);
  231.          loader.contentLoaderInfo.addEventListener(Event.COMPLETE,onContentLoad,false,0,true);
  232.          loader.contentLoaderInfo.addEventListener(Event.INIT,passEvent,false,0,true);
  233.          loader.contentLoaderInfo.addEventListener(HTTPStatusEvent.HTTP_STATUS,passEvent,false,0,true);
  234.          contentClip.addChild(loader);
  235.       }
  236.       
  237.       override protected function draw() : void
  238.       {
  239.          if(isInvalid(InvalidationType.STYLES))
  240.          {
  241.             drawBackground();
  242.          }
  243.          if(isInvalid(InvalidationType.STATE))
  244.          {
  245.             setScrollDrag();
  246.          }
  247.          super.draw();
  248.       }
  249.       
  250.       protected function clearLoadEvents() : void
  251.       {
  252.          loader.contentLoaderInfo.removeEventListener(IOErrorEvent.IO_ERROR,handleError);
  253.          loader.contentLoaderInfo.removeEventListener(SecurityErrorEvent.SECURITY_ERROR,handleError);
  254.          loader.contentLoaderInfo.removeEventListener(Event.OPEN,passEvent);
  255.          loader.contentLoaderInfo.removeEventListener(ProgressEvent.PROGRESS,passEvent);
  256.          loader.contentLoaderInfo.removeEventListener(HTTPStatusEvent.HTTP_STATUS,passEvent);
  257.          loader.contentLoaderInfo.removeEventListener(Event.COMPLETE,onContentLoad);
  258.       }
  259.       
  260.       protected function handleError(param1:Event) : void
  261.       {
  262.          passEvent(param1);
  263.          clearLoadEvents();
  264.          loader.contentLoaderInfo.removeEventListener(Event.INIT,handleInit);
  265.       }
  266.       
  267.       public function get bytesLoaded() : Number
  268.       {
  269.          return loader == null || loader.contentLoaderInfo == null ? 0 : loader.contentLoaderInfo.bytesLoaded;
  270.       }
  271.       
  272.       override protected function setHorizontalScrollPosition(param1:Number, param2:Boolean = false) : void
  273.       {
  274.          var _loc3_:* = contentClip.scrollRect;
  275.          _loc3_.x = param1;
  276.          contentClip.scrollRect = _loc3_;
  277.       }
  278.       
  279.       override protected function configUI() : void
  280.       {
  281.          super.configUI();
  282.          contentClip = new Sprite();
  283.          addChild(contentClip);
  284.          contentClip.scrollRect = contentScrollRect;
  285.          _horizontalScrollPolicy = ScrollPolicy.AUTO;
  286.          _verticalScrollPolicy = ScrollPolicy.AUTO;
  287.       }
  288.       
  289.       protected function handleInit(param1:Event) : void
  290.       {
  291.          loader.contentLoaderInfo.removeEventListener(Event.INIT,handleInit);
  292.          passEvent(param1);
  293.          invalidate(InvalidationType.SIZE);
  294.       }
  295.       
  296.       public function update() : void
  297.       {
  298.          var _loc1_:DisplayObject = contentClip.getChildAt(0);
  299.          setContentSize(_loc1_.width,_loc1_.height);
  300.       }
  301.       
  302.       public function refreshPane() : void
  303.       {
  304.          if(_source is URLRequest)
  305.          {
  306.             _source = _source.url;
  307.          }
  308.          source = _source;
  309.       }
  310.       
  311.       public function load(param1:URLRequest, param2:LoaderContext = null) : void
  312.       {
  313.          if(param2 == null)
  314.          {
  315.             param2 = new LoaderContext(false,ApplicationDomain.currentDomain);
  316.          }
  317.          clearContent();
  318.          initLoader();
  319.          currentContent = _source = param1;
  320.          loader.load(param1,param2);
  321.       }
  322.       
  323.       protected function doStartDrag(param1:MouseEvent) : void
  324.       {
  325.          if(!enabled)
  326.          {
  327.             return;
  328.          }
  329.          xOffset = mouseX;
  330.          yOffset = mouseY;
  331.          scrollDragHPos = horizontalScrollPosition;
  332.          scrollDragVPos = verticalScrollPosition;
  333.          stage.addEventListener(MouseEvent.MOUSE_MOVE,doDrag,false,0,true);
  334.       }
  335.       
  336.       protected function doDrag(param1:MouseEvent) : void
  337.       {
  338.          var _loc2_:* = scrollDragVPos - (mouseY - yOffset);
  339.          _verticalScrollBar.setScrollPosition(_loc2_);
  340.          setVerticalScrollPosition(_verticalScrollBar.scrollPosition,true);
  341.          var _loc3_:* = scrollDragHPos - (mouseX - xOffset);
  342.          _horizontalScrollBar.setScrollPosition(_loc3_);
  343.          setHorizontalScrollPosition(_horizontalScrollBar.scrollPosition,true);
  344.       }
  345.       
  346.       override protected function keyDownHandler(param1:KeyboardEvent) : void
  347.       {
  348.          var _loc2_:int = calculateAvailableHeight();
  349.          switch(param1.keyCode)
  350.          {
  351.             case Keyboard.DOWN:
  352.                ++verticalScrollPosition;
  353.                break;
  354.             case Keyboard.UP:
  355.                --verticalScrollPosition;
  356.                break;
  357.             case Keyboard.RIGHT:
  358.                ++horizontalScrollPosition;
  359.                break;
  360.             case Keyboard.LEFT:
  361.                --horizontalScrollPosition;
  362.                break;
  363.             case Keyboard.END:
  364.                verticalScrollPosition = maxVerticalScrollPosition;
  365.                break;
  366.             case Keyboard.HOME:
  367.                verticalScrollPosition = 0;
  368.                break;
  369.             case Keyboard.PAGE_UP:
  370.                verticalScrollPosition -= _loc2_;
  371.                break;
  372.             case Keyboard.PAGE_DOWN:
  373.                verticalScrollPosition += _loc2_;
  374.          }
  375.       }
  376.       
  377.       public function get content() : DisplayObject
  378.       {
  379.          var _loc1_:Object = currentContent;
  380.          if(_loc1_ is URLRequest)
  381.          {
  382.             _loc1_ = loader.content;
  383.          }
  384.          return _loc1_ as DisplayObject;
  385.       }
  386.    }
  387. }
  388.  
  389.