You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@royale.apache.org by hu...@apache.org on 2022/04/27 12:53:41 UTC

[royale-asjs] branch develop updated: Support for Key Up and Key Down on VirtualList as we have for the standard List

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 <hf...@solidsoft.pt>
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;