home *** CD-ROM | disk | FTP | other *** search
/ PCGUIA 2010 Software/Programs / PCGuia_programas.iso / Software / Utils / Livebrush / Install-LivebrushLite.air / livebrush.swf / scripts / fl / controls / ScrollBar.as < prev    next >
Encoding:
Text File  |  2009-10-26  |  13.1 KB  |  418 lines

  1. package fl.controls
  2. {
  3.    import fl.core.InvalidationType;
  4.    import fl.core.UIComponent;
  5.    import fl.events.ComponentEvent;
  6.    import fl.events.ScrollEvent;
  7.    import flash.events.MouseEvent;
  8.    
  9.    [Embed(source="/_assets/assets.swf", symbol="symbol222")]
  10.    public class ScrollBar extends UIComponent
  11.    {
  12.       public static const WIDTH:Number = 15;
  13.       
  14.       private static var defaultStyles:Object = {
  15.          "downArrowDisabledSkin":"ScrollArrowDown_disabledSkin",
  16.          "downArrowDownSkin":"ScrollArrowDown_downSkin",
  17.          "downArrowOverSkin":"ScrollArrowDown_overSkin",
  18.          "downArrowUpSkin":"ScrollArrowDown_upSkin",
  19.          "thumbDisabledSkin":"ScrollThumb_upSkin",
  20.          "thumbDownSkin":"ScrollThumb_downSkin",
  21.          "thumbOverSkin":"ScrollThumb_overSkin",
  22.          "thumbUpSkin":"ScrollThumb_upSkin",
  23.          "trackDisabledSkin":"ScrollTrack_skin",
  24.          "trackDownSkin":"ScrollTrack_skin",
  25.          "trackOverSkin":"ScrollTrack_skin",
  26.          "trackUpSkin":"ScrollTrack_skin",
  27.          "upArrowDisabledSkin":"ScrollArrowUp_disabledSkin",
  28.          "upArrowDownSkin":"ScrollArrowUp_downSkin",
  29.          "upArrowOverSkin":"ScrollArrowUp_overSkin",
  30.          "upArrowUpSkin":"ScrollArrowUp_upSkin",
  31.          "thumbIcon":"ScrollBar_thumbIcon",
  32.          "repeatDelay":500,
  33.          "repeatInterval":35
  34.       };
  35.       
  36.       protected static const DOWN_ARROW_STYLES:Object = {
  37.          "disabledSkin":"downArrowDisabledSkin",
  38.          "downSkin":"downArrowDownSkin",
  39.          "overSkin":"downArrowOverSkin",
  40.          "upSkin":"downArrowUpSkin",
  41.          "repeatDelay":"repeatDelay",
  42.          "repeatInterval":"repeatInterval"
  43.       };
  44.       
  45.       protected static const THUMB_STYLES:Object = {
  46.          "disabledSkin":"thumbDisabledSkin",
  47.          "downSkin":"thumbDownSkin",
  48.          "overSkin":"thumbOverSkin",
  49.          "upSkin":"thumbUpSkin",
  50.          "icon":"thumbIcon",
  51.          "textPadding":0
  52.       };
  53.       
  54.       protected static const TRACK_STYLES:Object = {
  55.          "disabledSkin":"trackDisabledSkin",
  56.          "downSkin":"trackDownSkin",
  57.          "overSkin":"trackOverSkin",
  58.          "upSkin":"trackUpSkin",
  59.          "repeatDelay":"repeatDelay",
  60.          "repeatInterval":"repeatInterval"
  61.       };
  62.       
  63.       protected static const UP_ARROW_STYLES:Object = {
  64.          "disabledSkin":"upArrowDisabledSkin",
  65.          "downSkin":"upArrowDownSkin",
  66.          "overSkin":"upArrowOverSkin",
  67.          "upSkin":"upArrowUpSkin",
  68.          "repeatDelay":"repeatDelay",
  69.          "repeatInterval":"repeatInterval"
  70.       };
  71.       
  72.       private var _direction:String = "vertical";
  73.       
  74.       private var _minScrollPosition:Number = 0;
  75.       
  76.       private var _pageSize:Number = 10;
  77.       
  78.       private var _maxScrollPosition:Number = 0;
  79.       
  80.       protected var downArrow:BaseButton;
  81.       
  82.       private var _lineScrollSize:Number = 1;
  83.       
  84.       protected var upArrow:BaseButton;
  85.       
  86.       private var _scrollPosition:Number = 0;
  87.       
  88.       private var thumbScrollOffset:Number;
  89.       
  90.       protected var track:BaseButton;
  91.       
  92.       protected var thumb:LabelButton;
  93.       
  94.       protected var inDrag:Boolean = false;
  95.       
  96.       private var _pageScrollSize:Number = 0;
  97.       
  98.       public function ScrollBar()
  99.       {
  100.          super();
  101.          setStyles();
  102.          focusEnabled = false;
  103.       }
  104.       
  105.       public static function getStyleDefinition() : Object
  106.       {
  107.          return defaultStyles;
  108.       }
  109.       
  110.       override public function set enabled(param1:Boolean) : void
  111.       {
  112.          super.enabled = param1;
  113.          downArrow.enabled = track.enabled = thumb.enabled = upArrow.enabled = enabled && _maxScrollPosition > _minScrollPosition;
  114.          updateThumb();
  115.       }
  116.       
  117.       override public function setSize(param1:Number, param2:Number) : void
  118.       {
  119.          if(_direction == ScrollBarDirection.HORIZONTAL)
  120.          {
  121.             super.setSize(param2,param1);
  122.          }
  123.          else
  124.          {
  125.             super.setSize(param1,param2);
  126.          }
  127.       }
  128.       
  129.       public function set lineScrollSize(param1:Number) : void
  130.       {
  131.          if(param1 > 0)
  132.          {
  133.             _lineScrollSize = param1;
  134.          }
  135.       }
  136.       
  137.       public function get minScrollPosition() : Number
  138.       {
  139.          return _minScrollPosition;
  140.       }
  141.       
  142.       protected function updateThumb() : void
  143.       {
  144.          var _loc1_:Number = _maxScrollPosition - _minScrollPosition + _pageSize;
  145.          if(track.height <= 12 || _maxScrollPosition <= _minScrollPosition || (_loc1_ == 0 || isNaN(_loc1_)))
  146.          {
  147.             thumb.height = 12;
  148.             thumb.visible = false;
  149.          }
  150.          else
  151.          {
  152.             thumb.height = Math.max(13,_pageSize / _loc1_ * track.height);
  153.             thumb.y = track.y + (track.height - thumb.height) * ((_scrollPosition - _minScrollPosition) / (_maxScrollPosition - _minScrollPosition));
  154.             thumb.visible = enabled;
  155.          }
  156.       }
  157.       
  158.       public function set minScrollPosition(param1:Number) : void
  159.       {
  160.          setScrollProperties(_pageSize,param1,_maxScrollPosition);
  161.       }
  162.       
  163.       public function get lineScrollSize() : Number
  164.       {
  165.          return _lineScrollSize;
  166.       }
  167.       
  168.       public function setScrollPosition(param1:Number, param2:Boolean = true) : void
  169.       {
  170.          var _loc3_:Number = scrollPosition;
  171.          _scrollPosition = Math.max(_minScrollPosition,Math.min(_maxScrollPosition,param1));
  172.          if(_loc3_ == _scrollPosition)
  173.          {
  174.             return;
  175.          }
  176.          if(param2)
  177.          {
  178.             dispatchEvent(new ScrollEvent(_direction,scrollPosition - _loc3_,scrollPosition));
  179.          }
  180.          updateThumb();
  181.       }
  182.       
  183.       public function get maxScrollPosition() : Number
  184.       {
  185.          return _maxScrollPosition;
  186.       }
  187.       
  188.       public function get scrollPosition() : Number
  189.       {
  190.          return _scrollPosition;
  191.       }
  192.       
  193.       override public function get height() : Number
  194.       {
  195.          return _direction == ScrollBarDirection.HORIZONTAL ? super.width : super.height;
  196.       }
  197.       
  198.       public function get pageSize() : Number
  199.       {
  200.          return _pageSize;
  201.       }
  202.       
  203.       public function set maxScrollPosition(param1:Number) : void
  204.       {
  205.          setScrollProperties(_pageSize,_minScrollPosition,param1);
  206.       }
  207.       
  208.       protected function thumbReleaseHandler(param1:MouseEvent) : void
  209.       {
  210.          inDrag = false;
  211.          mouseChildren = true;
  212.          thumb.mouseStateLocked = false;
  213.          stage.removeEventListener(MouseEvent.MOUSE_MOVE,handleThumbDrag);
  214.          stage.removeEventListener(MouseEvent.MOUSE_UP,thumbReleaseHandler);
  215.       }
  216.       
  217.       public function set pageScrollSize(param1:Number) : void
  218.       {
  219.          if(param1 >= 0)
  220.          {
  221.             _pageScrollSize = param1;
  222.          }
  223.       }
  224.       
  225.       public function set scrollPosition(param1:Number) : void
  226.       {
  227.          setScrollPosition(param1,true);
  228.       }
  229.       
  230.       override public function get enabled() : Boolean
  231.       {
  232.          return super.enabled;
  233.       }
  234.       
  235.       override protected function draw() : void
  236.       {
  237.          var _loc1_:Number = NaN;
  238.          if(isInvalid(InvalidationType.SIZE))
  239.          {
  240.             _loc1_ = super.height;
  241.             downArrow.move(0,Math.max(upArrow.height,_loc1_ - downArrow.height));
  242.             track.setSize(WIDTH,Math.max(0,_loc1_ - (downArrow.height + upArrow.height)));
  243.             updateThumb();
  244.          }
  245.          if(isInvalid(InvalidationType.STYLES,InvalidationType.STATE))
  246.          {
  247.             setStyles();
  248.          }
  249.          downArrow.drawNow();
  250.          upArrow.drawNow();
  251.          track.drawNow();
  252.          thumb.drawNow();
  253.          validate();
  254.       }
  255.       
  256.       override public function get width() : Number
  257.       {
  258.          return _direction == ScrollBarDirection.HORIZONTAL ? super.height : super.width;
  259.       }
  260.       
  261.       override protected function configUI() : void
  262.       {
  263.          super.configUI();
  264.          track = new BaseButton();
  265.          track.move(0,14);
  266.          track.useHandCursor = false;
  267.          track.autoRepeat = true;
  268.          track.focusEnabled = false;
  269.          addChild(track);
  270.          thumb = new LabelButton();
  271.          thumb.label = "";
  272.          thumb.setSize(WIDTH,15);
  273.          thumb.move(0,15);
  274.          thumb.focusEnabled = false;
  275.          addChild(thumb);
  276.          downArrow = new BaseButton();
  277.          downArrow.setSize(WIDTH,14);
  278.          downArrow.autoRepeat = true;
  279.          downArrow.focusEnabled = false;
  280.          addChild(downArrow);
  281.          upArrow = new BaseButton();
  282.          upArrow.setSize(WIDTH,14);
  283.          upArrow.move(0,0);
  284.          upArrow.autoRepeat = true;
  285.          upArrow.focusEnabled = false;
  286.          addChild(upArrow);
  287.          upArrow.addEventListener(ComponentEvent.BUTTON_DOWN,scrollPressHandler,false,0,true);
  288.          downArrow.addEventListener(ComponentEvent.BUTTON_DOWN,scrollPressHandler,false,0,true);
  289.          track.addEventListener(ComponentEvent.BUTTON_DOWN,scrollPressHandler,false,0,true);
  290.          thumb.addEventListener(MouseEvent.MOUSE_DOWN,thumbPressHandler,false,0,true);
  291.          enabled = false;
  292.       }
  293.       
  294.       public function set pageSize(param1:Number) : void
  295.       {
  296.          if(param1 > 0)
  297.          {
  298.             _pageSize = param1;
  299.          }
  300.       }
  301.       
  302.       public function setScrollProperties(param1:Number, param2:Number, param3:Number, param4:Number = 0) : void
  303.       {
  304.          this.pageSize = param1;
  305.          _minScrollPosition = param2;
  306.          _maxScrollPosition = param3;
  307.          if(param4 >= 0)
  308.          {
  309.             _pageScrollSize = param4;
  310.          }
  311.          enabled = _maxScrollPosition > _minScrollPosition;
  312.          setScrollPosition(_scrollPosition,false);
  313.          updateThumb();
  314.       }
  315.       
  316.       public function get pageScrollSize() : Number
  317.       {
  318.          return _pageScrollSize == 0 ? _pageSize : _pageScrollSize;
  319.       }
  320.       
  321.       protected function handleThumbDrag(param1:MouseEvent) : void
  322.       {
  323.          var _loc2_:Number = Math.max(0,Math.min(track.height - thumb.height,mouseY - track.y - thumbScrollOffset));
  324.          setScrollPosition(_loc2_ / (track.height - thumb.height) * (_maxScrollPosition - _minScrollPosition) + _minScrollPosition);
  325.       }
  326.       
  327.       protected function setStyles() : void
  328.       {
  329.          copyStylesToChild(downArrow,DOWN_ARROW_STYLES);
  330.          copyStylesToChild(thumb,THUMB_STYLES);
  331.          copyStylesToChild(track,TRACK_STYLES);
  332.          copyStylesToChild(upArrow,UP_ARROW_STYLES);
  333.       }
  334.       
  335.       protected function scrollPressHandler(param1:ComponentEvent) : void
  336.       {
  337.          var _loc2_:Number = NaN;
  338.          var _loc3_:Number = NaN;
  339.          param1.stopImmediatePropagation();
  340.          if(param1.currentTarget == upArrow)
  341.          {
  342.             setScrollPosition(_scrollPosition - _lineScrollSize);
  343.          }
  344.          else if(param1.currentTarget == downArrow)
  345.          {
  346.             setScrollPosition(_scrollPosition + _lineScrollSize);
  347.          }
  348.          else
  349.          {
  350.             _loc2_ = track.mouseY / track.height * (_maxScrollPosition - _minScrollPosition) + _minScrollPosition;
  351.             _loc3_ = pageScrollSize == 0 ? pageSize : pageScrollSize;
  352.             if(_scrollPosition < _loc2_)
  353.             {
  354.                setScrollPosition(Math.min(_loc2_,_scrollPosition + _loc3_));
  355.             }
  356.             else if(_scrollPosition > _loc2_)
  357.             {
  358.                setScrollPosition(Math.max(_loc2_,_scrollPosition - _loc3_));
  359.             }
  360.          }
  361.       }
  362.       
  363.       protected function thumbPressHandler(param1:MouseEvent) : void
  364.       {
  365.          inDrag = true;
  366.          thumbScrollOffset = mouseY - thumb.y;
  367.          thumb.mouseStateLocked = true;
  368.          mouseChildren = false;
  369.          stage.addEventListener(MouseEvent.MOUSE_MOVE,handleThumbDrag,false,0,true);
  370.          stage.addEventListener(MouseEvent.MOUSE_UP,thumbReleaseHandler,false,0,true);
  371.       }
  372.       
  373.       public function set direction(param1:String) : void
  374.       {
  375.          if(_direction == param1)
  376.          {
  377.             return;
  378.          }
  379.          _direction = param1;
  380.          if(isLivePreview)
  381.          {
  382.             return;
  383.          }
  384.          setScaleY(1);
  385.          var _loc2_:* = _direction == ScrollBarDirection.HORIZONTAL;
  386.          if(_loc2_ && componentInspectorSetting)
  387.          {
  388.             if(rotation == 90)
  389.             {
  390.                return;
  391.             }
  392.             setScaleX(-1);
  393.             rotation = -90;
  394.          }
  395.          if(!componentInspectorSetting)
  396.          {
  397.             if(_loc2_ && rotation == 0)
  398.             {
  399.                rotation = -90;
  400.                setScaleX(-1);
  401.             }
  402.             else if(!_loc2_ && rotation == -90)
  403.             {
  404.                rotation = 0;
  405.                setScaleX(1);
  406.             }
  407.          }
  408.          invalidate(InvalidationType.SIZE);
  409.       }
  410.       
  411.       public function get direction() : String
  412.       {
  413.          return _direction;
  414.       }
  415.    }
  416. }
  417.  
  418.