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 / BaseScrollPane.as next >
Encoding:
Text File  |  2009-10-26  |  14.3 KB  |  433 lines

  1. package fl.containers
  2. {
  3.    import fl.controls.ScrollBar;
  4.    import fl.controls.ScrollBarDirection;
  5.    import fl.controls.ScrollPolicy;
  6.    import fl.core.InvalidationType;
  7.    import fl.core.UIComponent;
  8.    import fl.events.ScrollEvent;
  9.    import flash.display.DisplayObject;
  10.    import flash.display.Graphics;
  11.    import flash.display.Shape;
  12.    import flash.events.MouseEvent;
  13.    import flash.geom.Rectangle;
  14.    
  15.    public class BaseScrollPane extends UIComponent
  16.    {
  17.       private static var defaultStyles:Object = {
  18.          "repeatDelay":500,
  19.          "repeatInterval":35,
  20.          "skin":"ScrollPane_upSkin",
  21.          "contentPadding":0,
  22.          "disabledAlpha":0.5
  23.       };
  24.       
  25.       protected static const SCROLL_BAR_STYLES:Object = {
  26.          "upArrowDisabledSkin":"upArrowDisabledSkin",
  27.          "upArrowDownSkin":"upArrowDownSkin",
  28.          "upArrowOverSkin":"upArrowOverSkin",
  29.          "upArrowUpSkin":"upArrowUpSkin",
  30.          "downArrowDisabledSkin":"downArrowDisabledSkin",
  31.          "downArrowDownSkin":"downArrowDownSkin",
  32.          "downArrowOverSkin":"downArrowOverSkin",
  33.          "downArrowUpSkin":"downArrowUpSkin",
  34.          "thumbDisabledSkin":"thumbDisabledSkin",
  35.          "thumbDownSkin":"thumbDownSkin",
  36.          "thumbOverSkin":"thumbOverSkin",
  37.          "thumbUpSkin":"thumbUpSkin",
  38.          "thumbIcon":"thumbIcon",
  39.          "trackDisabledSkin":"trackDisabledSkin",
  40.          "trackDownSkin":"trackDownSkin",
  41.          "trackOverSkin":"trackOverSkin",
  42.          "trackUpSkin":"trackUpSkin",
  43.          "repeatDelay":"repeatDelay",
  44.          "repeatInterval":"repeatInterval"
  45.       };
  46.       
  47.       protected var contentHeight:Number = 0;
  48.       
  49.       protected var _horizontalScrollBar:ScrollBar;
  50.       
  51.       protected var _horizontalPageScrollSize:Number = 0;
  52.       
  53.       protected var _verticalPageScrollSize:Number = 0;
  54.       
  55.       protected var _maxHorizontalScrollPosition:Number = 0;
  56.       
  57.       protected var defaultLineScrollSize:Number = 4;
  58.       
  59.       protected var vOffset:Number = 0;
  60.       
  61.       protected var contentScrollRect:Rectangle;
  62.       
  63.       protected var background:DisplayObject;
  64.       
  65.       protected var _verticalScrollBar:ScrollBar;
  66.       
  67.       protected var disabledOverlay:Shape;
  68.       
  69.       protected var vScrollBar:Boolean;
  70.       
  71.       protected var _horizontalScrollPolicy:String;
  72.       
  73.       protected var useFixedHorizontalScrolling:Boolean = false;
  74.       
  75.       protected var contentWidth:Number = 0;
  76.       
  77.       protected var availableHeight:Number;
  78.       
  79.       protected var _verticalScrollPolicy:String;
  80.       
  81.       protected var contentPadding:Number = 0;
  82.       
  83.       protected var _useBitmpScrolling:Boolean = false;
  84.       
  85.       protected var availableWidth:Number;
  86.       
  87.       protected var hScrollBar:Boolean;
  88.       
  89.       public function BaseScrollPane()
  90.       {
  91.          super();
  92.       }
  93.       
  94.       public static function getStyleDefinition() : Object
  95.       {
  96.          return mergeStyles(defaultStyles,ScrollBar.getStyleDefinition());
  97.       }
  98.       
  99.       override public function set enabled(param1:Boolean) : void
  100.       {
  101.          if(enabled == param1)
  102.          {
  103.             return;
  104.          }
  105.          _verticalScrollBar.enabled = param1;
  106.          _horizontalScrollBar.enabled = param1;
  107.          super.enabled = param1;
  108.       }
  109.       
  110.       public function set useBitmapScrolling(param1:Boolean) : void
  111.       {
  112.          _useBitmpScrolling = param1;
  113.          invalidate(InvalidationType.STATE);
  114.       }
  115.       
  116.       public function set horizontalLineScrollSize(param1:Number) : void
  117.       {
  118.          _horizontalScrollBar.lineScrollSize = param1;
  119.       }
  120.       
  121.       protected function drawLayout() : void
  122.       {
  123.          calculateAvailableSize();
  124.          calculateContentWidth();
  125.          background.width = width;
  126.          background.height = height;
  127.          if(vScrollBar)
  128.          {
  129.             _verticalScrollBar.visible = true;
  130.             _verticalScrollBar.x = width - ScrollBar.WIDTH - contentPadding;
  131.             _verticalScrollBar.y = contentPadding;
  132.             _verticalScrollBar.height = availableHeight;
  133.          }
  134.          else
  135.          {
  136.             _verticalScrollBar.visible = false;
  137.          }
  138.          _verticalScrollBar.setScrollProperties(availableHeight,0,contentHeight - availableHeight,verticalPageScrollSize);
  139.          setVerticalScrollPosition(_verticalScrollBar.scrollPosition,false);
  140.          if(hScrollBar)
  141.          {
  142.             _horizontalScrollBar.visible = true;
  143.             _horizontalScrollBar.x = contentPadding;
  144.             _horizontalScrollBar.y = height - ScrollBar.WIDTH - contentPadding;
  145.             _horizontalScrollBar.width = availableWidth;
  146.          }
  147.          else
  148.          {
  149.             _horizontalScrollBar.visible = false;
  150.          }
  151.          _horizontalScrollBar.setScrollProperties(availableWidth,0,useFixedHorizontalScrolling ? _maxHorizontalScrollPosition : contentWidth - availableWidth,horizontalPageScrollSize);
  152.          setHorizontalScrollPosition(_horizontalScrollBar.scrollPosition,false);
  153.          drawDisabledOverlay();
  154.       }
  155.       
  156.       protected function handleWheel(param1:MouseEvent) : void
  157.       {
  158.          if(!enabled || !_verticalScrollBar.visible || contentHeight <= availableHeight)
  159.          {
  160.             return;
  161.          }
  162.          _verticalScrollBar.scrollPosition -= param1.delta * verticalLineScrollSize;
  163.          setVerticalScrollPosition(_verticalScrollBar.scrollPosition);
  164.          dispatchEvent(new ScrollEvent(ScrollBarDirection.VERTICAL,param1.delta,horizontalScrollPosition));
  165.       }
  166.       
  167.       protected function handleScroll(param1:ScrollEvent) : void
  168.       {
  169.          if(param1.target == _verticalScrollBar)
  170.          {
  171.             setVerticalScrollPosition(param1.position);
  172.          }
  173.          else
  174.          {
  175.             setHorizontalScrollPosition(param1.position);
  176.          }
  177.       }
  178.       
  179.       public function get verticalLineScrollSize() : Number
  180.       {
  181.          return _verticalScrollBar.lineScrollSize;
  182.       }
  183.       
  184.       protected function drawBackground() : void
  185.       {
  186.          var _loc1_:DisplayObject = background;
  187.          background = getDisplayObjectInstance(getStyleValue("skin"));
  188.          background.width = width;
  189.          background.height = height;
  190.          addChildAt(background,0);
  191.          if(_loc1_ != null && _loc1_ != background)
  192.          {
  193.             removeChild(_loc1_);
  194.          }
  195.       }
  196.       
  197.       protected function calculateAvailableSize() : void
  198.       {
  199.          var _loc1_:Number = ScrollBar.WIDTH;
  200.          var _loc2_:Number = contentPadding = Number(getStyleValue("contentPadding"));
  201.          var _loc3_:Number = height - 2 * _loc2_ - vOffset;
  202.          vScrollBar = _verticalScrollPolicy == ScrollPolicy.ON || _verticalScrollPolicy == ScrollPolicy.AUTO && contentHeight > _loc3_;
  203.          var _loc4_:Number = width - (vScrollBar ? _loc1_ : 0) - 2 * _loc2_;
  204.          var _loc5_:Number = useFixedHorizontalScrolling ? _maxHorizontalScrollPosition : contentWidth - _loc4_;
  205.          hScrollBar = _horizontalScrollPolicy == ScrollPolicy.ON || _horizontalScrollPolicy == ScrollPolicy.AUTO && _loc5_ > 0;
  206.          if(hScrollBar)
  207.          {
  208.             _loc3_ -= _loc1_;
  209.          }
  210.          if(hScrollBar && !vScrollBar && _verticalScrollPolicy == ScrollPolicy.AUTO && contentHeight > _loc3_)
  211.          {
  212.             vScrollBar = true;
  213.             _loc4_ -= _loc1_;
  214.          }
  215.          availableHeight = _loc3_ + vOffset;
  216.          availableWidth = _loc4_;
  217.       }
  218.       
  219.       public function get verticalScrollPosition() : Number
  220.       {
  221.          return _verticalScrollBar.scrollPosition;
  222.       }
  223.       
  224.       public function get horizontalScrollPolicy() : String
  225.       {
  226.          return _horizontalScrollPolicy;
  227.       }
  228.       
  229.       protected function setVerticalScrollPosition(param1:Number, param2:Boolean = false) : void
  230.       {
  231.       }
  232.       
  233.       public function get horizontalPageScrollSize() : Number
  234.       {
  235.          if(isNaN(availableWidth))
  236.          {
  237.             drawNow();
  238.          }
  239.          return _horizontalPageScrollSize == 0 && !isNaN(availableWidth) ? availableWidth : _horizontalPageScrollSize;
  240.       }
  241.       
  242.       public function set horizontalScrollPosition(param1:Number) : void
  243.       {
  244.          drawNow();
  245.          _horizontalScrollBar.scrollPosition = param1;
  246.          setHorizontalScrollPosition(_horizontalScrollBar.scrollPosition,false);
  247.       }
  248.       
  249.       public function set verticalLineScrollSize(param1:Number) : void
  250.       {
  251.          _verticalScrollBar.lineScrollSize = param1;
  252.       }
  253.       
  254.       public function get maxVerticalScrollPosition() : Number
  255.       {
  256.          drawNow();
  257.          return Math.max(0,contentHeight - availableHeight);
  258.       }
  259.       
  260.       public function set horizontalPageScrollSize(param1:Number) : void
  261.       {
  262.          _horizontalPageScrollSize = param1;
  263.          invalidate(InvalidationType.SIZE);
  264.       }
  265.       
  266.       override protected function draw() : void
  267.       {
  268.          if(isInvalid(InvalidationType.STYLES))
  269.          {
  270.             setStyles();
  271.             drawBackground();
  272.             if(contentPadding != getStyleValue("contentPadding"))
  273.             {
  274.                invalidate(InvalidationType.SIZE,false);
  275.             }
  276.          }
  277.          if(isInvalid(InvalidationType.SIZE,InvalidationType.STATE))
  278.          {
  279.             drawLayout();
  280.          }
  281.          updateChildren();
  282.          super.draw();
  283.       }
  284.       
  285.       public function get horizontalScrollBar() : ScrollBar
  286.       {
  287.          return _horizontalScrollBar;
  288.       }
  289.       
  290.       protected function calculateContentWidth() : void
  291.       {
  292.       }
  293.       
  294.       public function set horizontalScrollPolicy(param1:String) : void
  295.       {
  296.          _horizontalScrollPolicy = param1;
  297.          invalidate(InvalidationType.SIZE);
  298.       }
  299.       
  300.       override protected function configUI() : void
  301.       {
  302.          super.configUI();
  303.          contentScrollRect = new Rectangle(0,0,85,85);
  304.          _verticalScrollBar = new ScrollBar();
  305.          _verticalScrollBar.addEventListener(ScrollEvent.SCROLL,handleScroll,false,0,true);
  306.          _verticalScrollBar.visible = false;
  307.          _verticalScrollBar.lineScrollSize = defaultLineScrollSize;
  308.          addChild(_verticalScrollBar);
  309.          copyStylesToChild(_verticalScrollBar,SCROLL_BAR_STYLES);
  310.          _horizontalScrollBar = new ScrollBar();
  311.          _horizontalScrollBar.direction = ScrollBarDirection.HORIZONTAL;
  312.          _horizontalScrollBar.addEventListener(ScrollEvent.SCROLL,handleScroll,false,0,true);
  313.          _horizontalScrollBar.visible = false;
  314.          _horizontalScrollBar.lineScrollSize = defaultLineScrollSize;
  315.          addChild(_horizontalScrollBar);
  316.          copyStylesToChild(_horizontalScrollBar,SCROLL_BAR_STYLES);
  317.          disabledOverlay = new Shape();
  318.          var _loc1_:Graphics = disabledOverlay.graphics;
  319.          _loc1_.beginFill(16777215);
  320.          _loc1_.drawRect(0,0,width,height);
  321.          _loc1_.endFill();
  322.          addEventListener(MouseEvent.MOUSE_WHEEL,handleWheel,false,0,true);
  323.       }
  324.       
  325.       protected function drawDisabledOverlay() : void
  326.       {
  327.          if(enabled)
  328.          {
  329.             if(contains(disabledOverlay))
  330.             {
  331.                removeChild(disabledOverlay);
  332.             }
  333.          }
  334.          else
  335.          {
  336.             disabledOverlay.x = disabledOverlay.y = contentPadding;
  337.             disabledOverlay.width = availableWidth;
  338.             disabledOverlay.height = availableHeight;
  339.             disabledOverlay.alpha = getStyleValue("disabledAlpha") as Number;
  340.             addChild(disabledOverlay);
  341.          }
  342.       }
  343.       
  344.       public function get horizontalScrollPosition() : Number
  345.       {
  346.          return _horizontalScrollBar.scrollPosition;
  347.       }
  348.       
  349.       public function get verticalScrollBar() : ScrollBar
  350.       {
  351.          return _verticalScrollBar;
  352.       }
  353.       
  354.       public function get horizontalLineScrollSize() : Number
  355.       {
  356.          return _horizontalScrollBar.lineScrollSize;
  357.       }
  358.       
  359.       public function set verticalScrollPosition(param1:Number) : void
  360.       {
  361.          drawNow();
  362.          _verticalScrollBar.scrollPosition = param1;
  363.          setVerticalScrollPosition(_verticalScrollBar.scrollPosition,false);
  364.       }
  365.       
  366.       protected function setHorizontalScrollPosition(param1:Number, param2:Boolean = false) : void
  367.       {
  368.       }
  369.       
  370.       protected function setStyles() : void
  371.       {
  372.          copyStylesToChild(_verticalScrollBar,SCROLL_BAR_STYLES);
  373.          copyStylesToChild(_horizontalScrollBar,SCROLL_BAR_STYLES);
  374.       }
  375.       
  376.       public function set verticalPageScrollSize(param1:Number) : void
  377.       {
  378.          _verticalPageScrollSize = param1;
  379.          invalidate(InvalidationType.SIZE);
  380.       }
  381.       
  382.       protected function setContentSize(param1:Number, param2:Number) : void
  383.       {
  384.          if((contentWidth == param1 || useFixedHorizontalScrolling) && contentHeight == param2)
  385.          {
  386.             return;
  387.          }
  388.          contentWidth = param1;
  389.          contentHeight = param2;
  390.          invalidate(InvalidationType.SIZE);
  391.       }
  392.       
  393.       public function set verticalScrollPolicy(param1:String) : void
  394.       {
  395.          _verticalScrollPolicy = param1;
  396.          invalidate(InvalidationType.SIZE);
  397.       }
  398.       
  399.       public function get maxHorizontalScrollPosition() : Number
  400.       {
  401.          drawNow();
  402.          return Math.max(0,contentWidth - availableWidth);
  403.       }
  404.       
  405.       protected function updateChildren() : void
  406.       {
  407.          _verticalScrollBar.enabled = _horizontalScrollBar.enabled = enabled;
  408.          _verticalScrollBar.drawNow();
  409.          _horizontalScrollBar.drawNow();
  410.       }
  411.       
  412.       public function get verticalPageScrollSize() : Number
  413.       {
  414.          if(isNaN(availableHeight))
  415.          {
  416.             drawNow();
  417.          }
  418.          return _verticalPageScrollSize == 0 && !isNaN(availableHeight) ? availableHeight : _verticalPageScrollSize;
  419.       }
  420.       
  421.       public function get verticalScrollPolicy() : String
  422.       {
  423.          return _verticalScrollPolicy;
  424.       }
  425.       
  426.       public function get useBitmapScrolling() : Boolean
  427.       {
  428.          return _useBitmpScrolling;
  429.       }
  430.    }
  431. }
  432.  
  433.