This is an automated email from the ASF dual-hosted git repository.

hugoferreira pushed a commit to branch develop
in repository https://gitbox.apache.org/repos/asf/royale-asjs.git


The following commit(s) were added to refs/heads/develop by this push:
     new 691e47e446 Support for Key Up and Key Down on VirtualList as we have 
for the standard List
691e47e446 is described below

commit 691e47e4467c8869cc782e4a099d5b6f71c87ebb
Author: Hugo Ferreira <[email protected]>
AuthorDate: Wed Apr 27 13:53:41 2022 +0100

    Support for Key Up and Key Down on VirtualList as we have for the standard 
List
---
 .../royale/jewel/beads/views/VirtualListView.as    | 52 ++++++++++++++++++++++
 1 file changed, 52 insertions(+)

diff --git 
a/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/views/VirtualListView.as
 
b/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/views/VirtualListView.as
index 9177d39e38..c262adfa2b 100644
--- 
a/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/views/VirtualListView.as
+++ 
b/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/views/VirtualListView.as
@@ -18,6 +18,11 @@
 
////////////////////////////////////////////////////////////////////////////////
 package org.apache.royale.jewel.beads.views
 {
+       COMPILE::JS
+    {
+       import org.apache.royale.core.IStyledUIBase;
+       }
+       import org.apache.royale.core.IStrand;
        import org.apache.royale.core.IIndexedItemRenderer;
        import org.apache.royale.core.IItemRenderer;
        import org.apache.royale.core.IRollOverModel;
@@ -27,6 +32,8 @@ package org.apache.royale.jewel.beads.views
        import org.apache.royale.html.beads.VirtualDataContainerView;
        import org.apache.royale.utils.getSelectionRenderBead;
        import org.apache.royale.html.util.getModelByType;
+    import org.apache.royale.events.utils.NavigationKeys;
+       import org.apache.royale.events.KeyboardEvent;
                
        /**
         *  The VirtualListView class creates the visual elements of the 
org.apache.royale.jewel.List
@@ -50,6 +57,51 @@ package org.apache.royale.jewel.beads.views
                        super();
                }
 
+               /**
+                *  @copy org.apache.royale.core.IBead#strand
+                *
+                *  @langversion 3.0
+                *  @playerversion Flash 10.2
+                *  @playerversion AIR 2.6
+                *  @productversion Royale 0.9.10
+                */
+               override public function set strand(value:IStrand):void
+               {
+                       _strand = value;
+                       super.strand = value;
+
+                       COMPILE::JS
+               {
+                       (_strand as 
IStyledUIBase).addEventListener(KeyboardEvent.KEY_UP, handleKeyUp);
+                       }
+               }
+               
+               private function handleKeyUp(event:KeyboardEvent):void
+        {
+            if (event.key == NavigationKeys.LEFT || event.key == 
NavigationKeys.UP)
+                navigate(false);
+            else if (event.key == NavigationKeys.RIGHT || event.key == 
NavigationKeys.DOWN)
+                navigate(true);
+        }
+        
+               /**
+                * @private
+                * Navigate to next or previous index position by code
+                */
+        private function navigate(next:Boolean):void
+        {            
+            var selectionBead:ISelectableItemRenderer;
+                       var ir:IItemRenderer = 
dataGroup.getItemRendererForIndex(lastSelectedIndex + (next ? 1 : -1));
+                       if (ir) 
+                       {
+                               selectionBead = getSelectionRenderBead(ir);
+                               if (selectionBead)
+                                       selectionBead.selected = false;
+                       }
+                       ir = 
dataGroup.getItemRendererForIndex(listModel.selectedIndex + (next ? 1 : -1)) as 
IItemRenderer;
+            ir.dispatchEvent(new Event("click"));
+        }
+        
                protected var listModel:ISelectionModel;
 
                protected var lastSelectedIndex:int = -1;

Reply via email to