home *** CD-ROM | disk | FTP | other *** search
/ PC Welt 2006 December / PCWELT_12_2006.ISO / papers / 12.swf / scripts / __Packages / FPUI / SelectableList.as < prev    next >
Encoding:
Text File  |  2006-10-13  |  17.7 KB  |  569 lines

  1. class FPUI.SelectableList extends FPUI.Component
  2. {
  3.    var m_dataProvider;
  4.    var m_scrollbar;
  5.    var m_containerMC;
  6.    var m_selectedItems = null;
  7.    var m_topDisplayed = 0;
  8.    var m_numDisplayed = 0;
  9.    var m_selectHolder = 0;
  10.    var m_scrollOffset = 0;
  11.    var m_itemHeight = 0;
  12.    var m_changeFlag = false;
  13.    var m_singleSelect = true;
  14.    var m_lastSelected = -1;
  15.    var m_mcCount = 4;
  16.    var m_cursorManager = null;
  17.    var m_virtualWidth = 0;
  18.    static var MIN_SBAR_SIZE = 56;
  19.    function SelectableList()
  20.    {
  21.       super();
  22.       this.m_eatsNavKeysWhenFocused = true;
  23.       this.m_selectedItems = new Array();
  24.    }
  25.    function setCursorManager(m)
  26.    {
  27.       this.m_cursorManager = m;
  28.    }
  29.    function hasCursorFocus()
  30.    {
  31.       var _loc1_ = this;
  32.       _loc1_.m_cursorManager.setCursorFocus(_loc1_);
  33.       return _loc1_.m_cursorManager.getCursorFocus() == _loc1_;
  34.    }
  35.    function getLength()
  36.    {
  37.       return this.m_dataProvider.getLength();
  38.    }
  39.    function getSelectedIndex()
  40.    {
  41.       var _loc2_ = this;
  42.       for(var _loc3_ in _loc2_.m_selectedItems)
  43.       {
  44.          var _loc1_ = _loc2_.m_selectedItems[_loc3_];
  45.          return _loc1_;
  46.          break;
  47.       }
  48.       return undefined;
  49.    }
  50.    function getSelectedItem()
  51.    {
  52.       return this.getItemAt(this.getSelectedIndex());
  53.    }
  54.    function getItemAt(index)
  55.    {
  56.       return this.m_dataProvider.getItemAt(index);
  57.    }
  58.    function setSelectedIndex(index, flag)
  59.    {
  60.       var _loc1_ = this;
  61.       var _loc2_ = index;
  62.       if(_loc2_ >= 0 && _loc2_ < _loc1_.getLength() && _loc1_.m_enable)
  63.       {
  64.          _loc1_.clearSelected();
  65.          _loc1_.selectItem(_loc2_,true);
  66.          _loc1_.m_lastSelected = _loc2_;
  67.          _loc1_.invalidate("updateControl");
  68.          if(flag)
  69.          {
  70.             _loc1_.executeCallBack();
  71.          }
  72.       }
  73.    }
  74.    function setDataProvider(d)
  75.    {
  76.       var _loc1_ = this;
  77.       _loc1_.setScrollPosition(0);
  78.       _loc1_.clearSelected();
  79.       if(_loc1_.m_dataProvider != null)
  80.       {
  81.          _loc1_.m_dataProvider.removeView(_loc1_);
  82.       }
  83.       _loc1_.m_dataProvider = d;
  84.       if(_loc1_.m_dataProvider != null)
  85.       {
  86.          _loc1_.m_dataProvider.addView(_loc1_);
  87.       }
  88.    }
  89.    function setEnabled(enabledFlag)
  90.    {
  91.       var _loc2_ = this;
  92.       super.setEnabled(enabledFlag);
  93.       _loc2_.m_enable = enabledFlag;
  94.       var limit = Math.min(_loc2_.m_numDisplayed,_loc2_.getLength());
  95.       var _loc1_ = 0;
  96.       while(_loc1_ < limit)
  97.       {
  98.          var _loc3_ = _loc2_.getNthSelectableItem(_loc1_);
  99.          _loc3_.setEnabled(_loc2_.m_enable);
  100.          _loc1_ = _loc1_ + 1;
  101.       }
  102.       _loc2_.m_scrollbar.setEnabled(_loc2_.m_enable);
  103.       _loc2_.m_horizScrollbar.setEnabled(_loc2_.m_enable);
  104.       if(_loc2_.m_enable)
  105.       {
  106.          _loc2_.invalidate("updateControl");
  107.       }
  108.    }
  109.    function updateControl()
  110.    {
  111.       var _loc2_ = this;
  112.       if(!_loc2_.needVS())
  113.       {
  114.          _loc2_.m_topDisplayed = 0;
  115.       }
  116.       var _loc1_ = 0;
  117.       while(_loc1_ < _loc2_.m_numDisplayed)
  118.       {
  119.          var ci = _loc2_.getNthSelectableItem(_loc1_);
  120.          var _loc3_ = _loc2_.m_topDisplayed + _loc1_;
  121.          ci.drawItem(_loc2_.getItemAt(_loc3_),_loc2_.isSelected(_loc3_),_loc3_);
  122.          _loc1_ = _loc1_ + 1;
  123.       }
  124.    }
  125.    function setSize(w, h)
  126.    {
  127.       var _loc1_ = this;
  128.       var pos = _loc1_.m_topDisplayed;
  129.       _loc1_.calcNumDisplayed();
  130.       super.setSize(w,h);
  131.       if(_loc1_.m_containerMC == undefined)
  132.       {
  133.          _loc1_.createEmptyMovieClip("m_containerMC" + _loc1_.m_mcCount,_loc1_.m_mcCount - 2);
  134.          _loc1_.m_containerMC = _loc1_["m_containerMC" + _loc1_.m_mcCount];
  135.       }
  136.       var _loc2_ = 0;
  137.       while(_loc2_ < _loc1_.m_numDisplayed)
  138.       {
  139.          var _loc3_ = _loc1_.getNthSelectableItem(_loc2_);
  140.          if(_loc3_ == undefined)
  141.          {
  142.             _loc3_ = _loc1_.createNthSelectableItem(_loc2_);
  143.          }
  144.          _loc3_.setSize(_loc1_.m_width - _loc1_.m_scrollOffset,_loc1_.m_itemHeight);
  145.          _loc3_._y = _loc1_.m_itemHeight * _loc2_;
  146.          _loc2_ = _loc2_ + 1;
  147.       }
  148.       _loc2_ = _loc1_.m_numDisplayed;
  149.       while(true)
  150.       {
  151.          _loc3_ = _loc1_.getNthSelectableItem(_loc2_);
  152.          if(_loc3_ == undefined)
  153.          {
  154.             break;
  155.          }
  156.          _loc1_.deleteNthSelectableItem(_loc2_);
  157.          _loc2_ = _loc2_ + 1;
  158.       }
  159.       _loc1_.updateControl();
  160.       if(_loc1_.m_maskMC == undefined)
  161.       {
  162.          _loc1_.createEmptyMovieClip("m_maskMC",_loc1_.m_mcCount - 1);
  163.          FPUI.Component.fillRect(_loc1_.m_maskMC,0,0,1,1,4278190080);
  164.          _loc1_.setMask(_loc1_.m_maskMC);
  165.       }
  166.       _loc1_.m_maskMC._width = w;
  167.       _loc1_.m_maskMC._height = h;
  168.       _loc1_.initScrollBar();
  169.       _loc1_.setScrollPosition(pos);
  170.    }
  171.    function dataViewModelChanged()
  172.    {
  173.       this.modelChanged();
  174.    }
  175.    function getItemHeight()
  176.    {
  177.       return this.m_itemHeight;
  178.    }
  179.    function modelChanged()
  180.    {
  181.       this.invalidate("updateControl");
  182.       this.invalidate("initScrollBar");
  183.    }
  184.    function measureItmHgt()
  185.    {
  186.       var _loc1_ = this;
  187.       _loc1_.attachMovie(_loc1_.getItemSymbolName(),"tmpItem_mc",0,{m_controller:_loc1_,m_itemNum:0});
  188.       _loc1_.m_itemHeight = _loc1_.tmpItem_mc.calcLabelHeight("Sizer: PjtTopg");
  189.       _loc1_.tmpItem_mc.removeMovieClip();
  190.       delete _loc1_.tmpItem_mc;
  191.    }
  192.    function calcNumDisplayed()
  193.    {
  194.       var _loc1_ = this;
  195.       _loc1_.measureItmHgt();
  196.       _loc1_.m_numDisplayed = Math.floor((_loc1_.m_height - (!_loc1_.m_horizScrollbar ? 0 : _loc1_.m_horizScrollbar._height)) / _loc1_.m_itemHeight);
  197.    }
  198.    function selectItem(index, selectedFlag)
  199.    {
  200.       var _loc1_ = this;
  201.       var _loc2_ = index;
  202.       if(selectedFlag != _loc1_.isSelected(_loc2_))
  203.       {
  204.          var _loc3_ = _loc1_.m_dataProvider.getItemAt(_loc2_).getDataItemUniqueID();
  205.          if(selectedFlag)
  206.          {
  207.             _loc1_.m_selectedItems[_loc3_] = _loc2_;
  208.          }
  209.          else
  210.          {
  211.             delete _loc1_.m_selectedItems[_loc3_];
  212.          }
  213.          if(_loc1_.isVisible(_loc2_))
  214.          {
  215.             var ci = _loc1_.getNthSelectableItem(_loc2_ - _loc1_.m_topDisplayed);
  216.             ci.drawItem(_loc1_.getItemAt(_loc2_),selectedFlag,_loc2_);
  217.          }
  218.       }
  219.    }
  220.    function isSelected(index)
  221.    {
  222.       var _loc1_ = this.m_dataProvider.getItemAt(index).getDataItemUniqueID();
  223.       return this.m_selectedItems[_loc1_] != undefined;
  224.    }
  225.    function isVisible(index)
  226.    {
  227.       var _loc1_ = this;
  228.       var _loc0_ = index >= _loc1_.m_topDisplayed && index < _loc1_.m_topDisplayed + _loc1_.m_numDisplayed;
  229.       _loc1_;
  230.       return _loc0_;
  231.    }
  232.    function clearSelected()
  233.    {
  234.       var _loc1_ = this;
  235.       for(var uniqueID in _loc1_.m_selectedItems)
  236.       {
  237.          var _loc2_ = _loc1_.m_selectedItems[uniqueID];
  238.          if(_loc1_.isVisible(_loc2_))
  239.          {
  240.             var _loc3_ = _loc1_.getNthSelectableItem(_loc2_ - _loc1_.m_topDisplayed);
  241.             _loc3_.drawItem(_loc1_.getItemAt(_loc2_),false,_loc2_);
  242.          }
  243.       }
  244.       delete _loc1_.m_selectedItems;
  245.       _loc1_.m_selectedItems = new Array();
  246.    }
  247.    function selectionHandler(itemNum)
  248.    {
  249.       var _loc1_ = this;
  250.       var _loc3_ = _loc1_.m_topDisplayed + itemNum;
  251.       var ditem = _loc1_.getItemAt(_loc3_);
  252.       if(ditem == undefined)
  253.       {
  254.          _loc1_.m_changeFlag = false;
  255.       }
  256.       else
  257.       {
  258.          _loc1_.m_changeFlag = true;
  259.          var shift = Key.isDown(16);
  260.          var ctrl = Key.isDown(17);
  261.          if(_loc1_.m_singleSelect && !ctrl || !shift && !ctrl)
  262.          {
  263.             _loc1_.clearSelected();
  264.             _loc1_.selectItem(_loc3_,true);
  265.             _loc1_.m_lastSelected = _loc3_;
  266.          }
  267.          else if(shift && !_loc1_.m_singleSelect)
  268.          {
  269.             if(_loc1_.m_lastSelected == -1)
  270.             {
  271.                _loc1_.m_lastSelected = _loc3_;
  272.             }
  273.             var incr = _loc1_.m_lastSelected >= _loc3_ ? -1 : 1;
  274.             _loc1_.clearSelected();
  275.             var _loc2_ = _loc1_.m_lastSelected;
  276.             while(_loc2_ != _loc3_)
  277.             {
  278.                _loc1_.selectItem(_loc2_,true);
  279.                _loc2_ += incr;
  280.             }
  281.             _loc1_.selectItem(_loc3_,true);
  282.          }
  283.          else if(ctrl)
  284.          {
  285.             var selectedFlag = _loc1_.isSelected(_loc3_);
  286.             if(_loc1_.m_singleSelect)
  287.             {
  288.                _loc1_.clearSelected();
  289.             }
  290.             if(!_loc1_.m_singleSelect || !selectedFlag)
  291.             {
  292.                _loc1_.selectItem(_loc3_,!selectedFlag);
  293.             }
  294.             _loc1_.m_lastSelected = _loc3_;
  295.          }
  296.       }
  297.    }
  298.    function moveSelBy(incr)
  299.    {
  300.       var _loc1_ = this;
  301.       var _loc3_ = _loc1_.getSelectedIndex();
  302.       var _loc2_ = _loc3_ + incr;
  303.       _loc2_ = Math.max(0,_loc2_);
  304.       _loc2_ = Math.min(_loc1_.getLength() - 1,_loc2_);
  305.       if(_loc2_ != _loc3_)
  306.       {
  307.          if(_loc3_ < _loc1_.m_topDisplayed || _loc3_ >= _loc1_.m_topDisplayed + _loc1_.m_numDisplayed)
  308.          {
  309.             _loc1_.setScrollPosition(_loc3_);
  310.          }
  311.          if(_loc2_ >= _loc1_.m_topDisplayed + _loc1_.m_numDisplayed || _loc2_ < _loc1_.m_topDisplayed)
  312.          {
  313.             _loc1_.setScrollPosition(_loc1_.m_topDisplayed + incr);
  314.          }
  315.          _loc1_.selectionHandler(_loc2_ - _loc1_.m_topDisplayed);
  316.       }
  317.    }
  318.    function clickHandler(itmNum)
  319.    {
  320.       var _loc1_ = this;
  321.       if(!_loc1_.m_focused)
  322.       {
  323.          _loc1_.pressFocus();
  324.       }
  325.       _loc1_.selectionHandler(itmNum);
  326.       _loc1_.onMouseUp = _loc1_.releaseHandler;
  327.       if(_loc1_.m_dragScrollingIntervalID == undefined && _loc1_.m_scrollbar != undefined)
  328.       {
  329.          _loc1_.m_dragScrollingIntervalID = setInterval(_loc1_,"dragScroll",15);
  330.       }
  331.    }
  332.    function releaseHandler()
  333.    {
  334.       var _loc1_ = this;
  335.       clearInterval(_loc1_.m_dragScrollingIntervalID);
  336.       _loc1_.m_dragScrollingIntervalID = undefined;
  337.       if(_loc1_.m_changeFlag)
  338.       {
  339.          _loc1_.executeCallBack();
  340.       }
  341.       _loc1_.m_changeFlag = false;
  342.       delete _loc1_.onMouseUp;
  343.    }
  344.    function setScrollPosition(pos)
  345.    {
  346.       if(this.m_enable)
  347.       {
  348.          this.m_scrollbar.setScrollPosition(pos);
  349.       }
  350.    }
  351.    function getItemSymbolName()
  352.    {
  353.       return "FPUI_SelectableItem";
  354.    }
  355.    function createNthSelectableItem(i)
  356.    {
  357.       var _loc1_ = this;
  358.       var _loc2_ = i;
  359.       _loc1_.m_containerMC.attachMovie(_loc1_.getItemSymbolName(),"fListItem" + _loc2_,10 + _loc2_,{m_controller:_loc1_,m_itemNum:_loc2_});
  360.       return _loc1_.getNthSelectableItem(_loc2_);
  361.    }
  362.    function getNthSelectableItem(i)
  363.    {
  364.       return this.m_containerMC["fListItem" + i];
  365.    }
  366.    function deleteNthSelectableItem(i)
  367.    {
  368.       this.m_containerMC["fListItem" + i].removeMovieClip();
  369.       delete this.m_containerMC["fListItem" + i];
  370.    }
  371.    function rebuildSelectedItems()
  372.    {
  373.       var _loc3_ = this;
  374.       var _loc1_ = 0;
  375.       while(_loc1_ < _loc3_.m_dataProvider.getLength())
  376.       {
  377.          var _loc2_ = _loc3_.m_dataProvider.getItemAt(_loc1_).getDataItemUniqueID();
  378.          if(_loc3_.m_selectedItems[_loc2_] != undefined)
  379.          {
  380.             _loc3_.m_selectedItems[_loc2_] = _loc1_;
  381.          }
  382.          _loc1_ = _loc1_ + 1;
  383.       }
  384.    }
  385.    function needVS()
  386.    {
  387.       var _loc1_ = this;
  388.       var _loc2_ = _loc1_.m_height - _loc1_.m_horizScrollbar._height;
  389.       var _loc0_ = _loc1_.getLength() > _loc1_.m_numDisplayed && _loc2_ > FPUI.SelectableList.MIN_SBAR_SIZE;
  390.       _loc2_;
  391.       _loc1_;
  392.       return _loc0_;
  393.    }
  394.    function needHS()
  395.    {
  396.       var _loc2_ = this;
  397.       var _loc1_ = _loc2_.m_width - _loc2_.m_scrollbar._width;
  398.       var _loc0_ = _loc2_.m_virtualWidth > _loc1_ && _loc1_ > FPUI.SelectableList.MIN_SBAR_SIZE;
  399.       _loc2_;
  400.       _loc1_;
  401.       return _loc0_;
  402.    }
  403.    function attachVSBar()
  404.    {
  405.       var _loc1_ = this;
  406.       _loc1_.m_scrollbarContainer.attachMovie("Scrollbar","m_scrollbar",1);
  407.       _loc1_.m_scrollbar = _loc1_.m_scrollbarContainer.m_scrollbar;
  408.       _loc1_.m_scrollbar.setChangeHandler("scrollHandler",_loc1_);
  409.    }
  410.    function attachHSBar()
  411.    {
  412.       var _loc1_ = this;
  413.       _loc1_.m_scrollbarContainer.attachMovie("Scrollbar","m_horizScrollbar",2);
  414.       _loc1_.m_horizScrollbar = _loc1_.m_scrollbarContainer.m_horizScrollbar;
  415.       _loc1_.m_horizScrollbar.setHorizontal(true);
  416.       _loc1_.m_horizScrollbar.setChangeHandler("hScrollHandler",_loc1_);
  417.    }
  418.    function initScrollBar()
  419.    {
  420.       var _loc1_ = this;
  421.       var _loc3_ = true;
  422.       var bAdjustHS = true;
  423.       if(!_loc1_.needVS())
  424.       {
  425.          _loc3_ = false;
  426.          _loc1_.m_scrollOffset = 0;
  427.          if(_loc1_.m_scrollbar)
  428.          {
  429.             _loc1_.m_scrollbar.removeMovieClip();
  430.             delete _loc1_.m_scrollbar;
  431.             _loc1_.invalidate("initScrollBar");
  432.          }
  433.       }
  434.       if(!_loc1_.needHS())
  435.       {
  436.          bAdjustHS = false;
  437.          if(_loc1_.m_horizScrollbar)
  438.          {
  439.             _loc1_.m_horizScrollbar.removeMovieClip();
  440.             delete _loc1_.m_horizScrollbar;
  441.             _loc1_.invalidate("initScrollBar");
  442.          }
  443.       }
  444.       if(bAdjustHS || _loc3_)
  445.       {
  446.          if(_loc1_.m_scrollbarContainer == undefined)
  447.          {
  448.             _loc1_.m_mcCount += 3;
  449.             _loc1_.createEmptyMovieClip("sbc_mc" + _loc1_.m_mcCount,_loc1_.m_mcCount);
  450.             _loc1_.m_scrollbarContainer = _loc1_["sbc_mc" + _loc1_.m_mcCount];
  451.          }
  452.          if(_loc3_ && _loc1_.m_scrollbar == undefined)
  453.          {
  454.             _loc1_.attachVSBar();
  455.             _loc1_.invalidate("initScrollBar");
  456.          }
  457.          if(bAdjustHS && _loc1_.m_horizScrollbar == undefined)
  458.          {
  459.             _loc1_.attachHSBar();
  460.             _loc1_.calcNumDisplayed();
  461.             if(_loc1_.m_scrollbar == undefined && _loc1_.needVS())
  462.             {
  463.                _loc1_.attachVSBar();
  464.                _loc3_ = true;
  465.             }
  466.             _loc1_.invalidate("initScrollBar");
  467.          }
  468.          var i;
  469.          var _loc2_ = undefined;
  470.          if(_loc3_)
  471.          {
  472.             i = _loc1_.m_horizScrollbar == null ? 0 : _loc1_.m_horizScrollbar._height;
  473.             _loc2_ = _loc1_.m_scrollbar;
  474.             _loc2_.setSize(_loc1_.m_height - i);
  475.             _loc2_._x = _loc1_.m_width - _loc2_._width;
  476.             _loc2_._y = 0;
  477.             _loc2_.setLargeScroll(_loc1_.m_numDisplayed - 1);
  478.             _loc1_.m_scrollOffset = _loc2_._width;
  479.             _loc2_.setScrollProperties(_loc1_.m_numDisplayed,_loc1_.getLength() - _loc1_.m_numDisplayed);
  480.          }
  481.          if(bAdjustHS)
  482.          {
  483.             i = _loc1_.m_scrollbar == undefined ? 0 : _loc1_.m_scrollbar._width;
  484.             _loc2_ = _loc1_.m_horizScrollbar;
  485.             _loc2_.setSize(_loc1_.m_width - i);
  486.             _loc2_._x = 0;
  487.             _loc2_._y = _loc1_.m_height - _loc2_._height;
  488.             _loc2_.setLargeScroll(_loc1_.m_width);
  489.             _loc2_.setScrollProperties(_loc1_.m_width,_loc1_.m_virtualWidth - (_loc1_.m_width - i));
  490.             _loc2_.setSmallScroll(5);
  491.          }
  492.       }
  493.       if(_loc1_.m_scrollbar._visible && _loc1_.m_horizScrollbar._visible)
  494.       {
  495.          if(_loc1_.m_corner == undefined)
  496.          {
  497.             _loc1_.m_corner = _loc1_.m_scrollbarContainer.createEmptyMovieClip("m_corner",3);
  498.             FPUI.Component.fillRect(_loc1_.m_corner,0,0,_loc1_.m_scrollbar._width,_loc1_.m_horizScrollbar._height,4294967295);
  499.          }
  500.          _loc1_.m_corner._visible = true;
  501.          _loc1_.m_corner._x = _loc1_.m_horizScrollbar._x + _loc1_.m_horizScrollbar._width;
  502.          _loc1_.m_corner._y = _loc1_.m_scrollbar._y + _loc1_.m_scrollbar._height;
  503.       }
  504.       else
  505.       {
  506.          _loc1_.m_corner._visible = false;
  507.       }
  508.    }
  509.    function scrollHandler(scrollBar)
  510.    {
  511.       var _loc2_ = this;
  512.       var _loc1_ = scrollBar.getScrollPosition();
  513.       _loc2_.m_topDisplayed = _loc1_;
  514.       if(_loc2_.m_lastPosition != _loc1_)
  515.       {
  516.          _loc2_.updateControl();
  517.       }
  518.       _loc2_.m_lastPosition = _loc1_;
  519.    }
  520.    function hScrollHandler(scrollBar)
  521.    {
  522.       var _loc2_ = this;
  523.       var _loc1_ = scrollBar.getScrollPosition();
  524.       if(_loc2_.m_lastHorizPosition != _loc1_)
  525.       {
  526.          _loc2_.m_containerMC._x = - _loc1_;
  527.       }
  528.       _loc2_.m_lastHorizPosition = _loc1_;
  529.    }
  530.    function dragScroll()
  531.    {
  532.       var _loc1_ = this;
  533.       clearInterval(_loc1_.m_dragScrollingIntervalID);
  534.       var _loc2_ = 15;
  535.       if(_loc1_.m_containerMC._ymouse < 0)
  536.       {
  537.          _loc1_.setScrollPosition(_loc1_.m_topDisplayed - 1);
  538.          _loc1_.selectionHandler(0);
  539.          _loc2_ = Math.max(25,-23.8 * (- _loc1_.m_containerMC._ymouse) + 500);
  540.       }
  541.       else if(_loc1_.m_containerMC._ymouse > _loc1_.m_itemHeight * _loc1_.m_numDisplayed)
  542.       {
  543.          _loc1_.setScrollPosition(_loc1_.m_topDisplayed + 1);
  544.          _loc1_.selectionHandler(_loc1_.m_numDisplayed - 1);
  545.          _loc2_ = Math.max(25,-23.8 * Math.abs(_loc1_.m_containerMC._ymouse - _loc1_.m_itemHeight * _loc1_.m_numDisplayed - 2) + 500);
  546.       }
  547.       _loc1_.m_dragScrollingIntervalID = setInterval(_loc1_,"dragScroll",15);
  548.    }
  549.    function onComponentKeyDown()
  550.    {
  551.       var _loc3_ = this;
  552.       if(_loc3_.m_focused)
  553.       {
  554.          var _loc2_ = [40,38,34,33,36,35];
  555.          var keyIncrs = [1,-1,_loc3_.m_numDisplayed - 1,- (_loc3_.m_numDisplayed - 1),- _loc3_.getLength(),_loc3_.getLength()];
  556.          var _loc1_ = 0;
  557.          while(_loc1_ < _loc2_.length)
  558.          {
  559.             if(Key.isDown(_loc2_[_loc1_]))
  560.             {
  561.                _loc3_.moveSelBy(keyIncrs[_loc1_]);
  562.                break;
  563.             }
  564.             _loc1_ = _loc1_ + 1;
  565.          }
  566.       }
  567.    }
  568. }
  569.