You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@royale.apache.org by ca...@apache.org on 2020/07/28 12:46:43 UTC

[royale-asjs] branch develop updated: jewel-table: added dummy TableKeyDownController to help case showcased #890

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

carlosrovira 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 17a9534  jewel-table: added dummy TableKeyDownController to help case showcased #890
17a9534 is described below

commit 17a9534919a2807f776b2249f22e434f90976622
Author: Carlos Rovira <ca...@apache.org>
AuthorDate: Tue Jul 28 14:46:30 2020 +0200

    jewel-table: added dummy TableKeyDownController to help case showcased #890
---
 .../projects/Jewel/src/main/resources/defaults.css |   1 +
 .../projects/Jewel/src/main/royale/JewelClasses.as |   1 +
 .../main/royale/org/apache/royale/jewel/Table.as   |  12 ++
 .../beads/controllers/TableKeyDownController.as    | 146 +++++++++++++++++++++
 .../Jewel/src/main/sass/components/_table.sass     |   1 +
 5 files changed, 161 insertions(+)

diff --git a/frameworks/projects/Jewel/src/main/resources/defaults.css b/frameworks/projects/Jewel/src/main/resources/defaults.css
index df35bc0..79f33fe 100644
--- a/frameworks/projects/Jewel/src/main/resources/defaults.css
+++ b/frameworks/projects/Jewel/src/main/resources/defaults.css
@@ -3831,6 +3831,7 @@ j|Table {
   IItemRendererClassFactory: ClassReference("org.apache.royale.core.SelectableItemRendererClassFactory");
   IItemRenderer: ClassReference("org.apache.royale.jewel.itemRenderers.TableItemRenderer");
   IBeadController: ClassReference("org.apache.royale.jewel.beads.controllers.TableCellSelectionMouseController");
+  IBeadKeyController: ClassReference("org.apache.royale.jewel.beads.controllers.TableKeyDownController");
   IItemRendererInitializer: ClassReference("org.apache.royale.jewel.beads.itemRenderers.TableItemRendererInitializer");
   ISelectableItemRenderer: ClassReference("org.apache.royale.jewel.beads.itemRenderers.ClassSelectorListSelectableItemRendererBead");
   IDataProviderItemRendererMapper: ClassReference("org.apache.royale.jewel.beads.itemRenderers.TableItemRendererFactoryForCollectionView");
diff --git a/frameworks/projects/Jewel/src/main/royale/JewelClasses.as b/frameworks/projects/Jewel/src/main/royale/JewelClasses.as
index 2ea35c5..a4ab62e 100644
--- a/frameworks/projects/Jewel/src/main/royale/JewelClasses.as
+++ b/frameworks/projects/Jewel/src/main/royale/JewelClasses.as
@@ -53,6 +53,7 @@ package
         import org.apache.royale.jewel.beads.controllers.AlertController; AlertController;
         import org.apache.royale.jewel.beads.controllers.ListSingleSelectionMouseController; ListSingleSelectionMouseController;
         import org.apache.royale.jewel.beads.controllers.ListKeyDownController; ListKeyDownController;
+        import org.apache.royale.jewel.beads.controllers.TableKeyDownController; TableKeyDownController;
         import org.apache.royale.jewel.beads.controllers.VirtualListKeyDownController; VirtualListKeyDownController;
         import org.apache.royale.jewel.beads.controllers.TableCellSelectionMouseController; TableCellSelectionMouseController;
         import org.apache.royale.jewel.beads.controllers.ComboBoxController; ComboBoxController;
diff --git a/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/Table.as b/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/Table.as
index e9ece8d..292e46e 100644
--- a/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/Table.as
+++ b/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/Table.as
@@ -24,9 +24,11 @@ package org.apache.royale.jewel
 	import org.apache.royale.core.WrappedHTMLElement;
 	import org.apache.royale.html.util.addElementToWrapper;
     }
+	import org.apache.royale.core.IBeadKeyController;
 	import org.apache.royale.core.ISelectionModel;
 	import org.apache.royale.jewel.beads.models.TableModel;
 	import org.apache.royale.jewel.supportClasses.container.DataContainerBase;
+	import org.apache.royale.utils.loadBeadFromValuesManager;
 	
 	[DefaultProperty("columns")]
 
@@ -241,6 +243,16 @@ package org.apache.royale.jewel
 			TableModel(model).selectedItemProperty = value;
 		}
 		
+		/**
+		 * @private
+		 */
+		override public function addedToParent():void
+		{
+			super.addedToParent();
+
+			loadBeadFromValuesManager(IBeadKeyController, "iBeadKeyController", this);
+		}
+		
 		COMPILE::JS
 		private var table:HTMLTableElement;
 
diff --git a/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/controllers/TableKeyDownController.as b/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/controllers/TableKeyDownController.as
new file mode 100644
index 0000000..019dc63
--- /dev/null
+++ b/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/controllers/TableKeyDownController.as
@@ -0,0 +1,146 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+//  Licensed to the Apache Software Foundation (ASF) under one or more
+//  contributor license agreements.  See the NOTICE file distributed with
+//  this work for additional information regarding copyright ownership.
+//  The ASF licenses this file to You under the Apache License, Version 2.0
+//  (the "License"); you may not use this file except in compliance with
+//  the License.  You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+//  Unless required by applicable law or agreed to in writing, software
+//  distributed under the License is distributed on an "AS IS" BASIS,
+//  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//  See the License for the specific language governing permissions and
+//  limitations under the License.
+//
+////////////////////////////////////////////////////////////////////////////////
+package org.apache.royale.jewel.beads.controllers
+{
+	import org.apache.royale.core.Bead;
+	import org.apache.royale.core.IBeadKeyController;
+	import org.apache.royale.core.IRemovableBead;
+	import org.apache.royale.core.IStrand;
+	import org.apache.royale.events.IEventDispatcher;
+	import org.apache.royale.events.KeyboardEvent;
+	import org.apache.royale.events.utils.WhitespaceKeys;
+	import org.apache.royale.jewel.Table;
+
+    /**
+     *  The Jewel TableKeyDownController class is a key controller for
+     *  org.apache.royale.jewel.Table.
+	 * 
+	 *  This is just a dummy implementation for now, will be fully implemented soon
+     *
+     *  @langversion 3.0
+     *  @playerversion Flash 10.2
+     *  @playerversion AIR 2.6
+     *  @productversion Royale 0.10.0
+     */
+	public class TableKeyDownController extends Bead implements IBeadKeyController, IRemovableBead
+	{
+        /**
+         *  Constructor.
+         *
+         *  @langversion 3.0
+         *  @playerversion Flash 10.2
+         *  @playerversion AIR 2.6
+         *  @productversion Royale 0.10.0
+         */
+		public function TableKeyDownController()
+		{
+		}
+
+		/**
+		 *  The model.
+		 *  
+		 *  @langversion 3.0
+		 *  @playerversion Flash 10.2
+		 *  @playerversion AIR 2.6
+		 *  @productversion Royale 0.10.0
+		 */
+		// protected var tableModel:TableModel;
+
+		/**
+		 *  The view.
+		 *  
+		 *  @langversion 3.0
+		 *  @playerversion Flash 10.2
+		 *  @playerversion AIR 2.6
+		 *  @productversion Royale 0.10.0
+		 */
+		// protected var tableView:TableView;
+
+        /**
+         *  @copy org.apache.royale.core.IBead#strand
+         *
+         *  @langversion 3.0
+         *  @playerversion Flash 10.2
+         *  @playerversion AIR 2.6
+         *  @productversion Royale 0.10.0
+         *  @royaleignorecoercion org.apache.royale.core.ISelectionModel
+		 *  @royaleignorecoercion org.apache.royale.jewel.beads.models.IJewelSelectionModel
+         *  @royaleignorecoercion org.apache.royale.events.IEventDispatcher
+         *  @royaleignorecoercion org.apache.royale.core.IListView
+         */
+		override public function set strand(value:IStrand):void
+		{
+			_strand = value;
+			// tableModel = value.getBeadByType(ISelectionModel) as ISelectionModel;
+			// tableView = value.getBeadByType(IListView) as TableView;
+
+            listenOnStrand(KeyboardEvent.KEY_DOWN, keyDownEventHandler);
+		}
+
+		/**
+		 *  The actions needed before the removal
+		 *
+		 *  @langversion 3.0
+		 *  @playerversion Flash 10.2
+		 *  @playerversion AIR 2.6
+		 *  @productversion Royale 0.9.8
+		 */
+		public function tearDown():void
+		{
+			IEventDispatcher(_strand).removeEventListener(KeyboardEvent.KEY_DOWN, keyDownEventHandler);
+		}
+
+        /**
+		 * @private
+		 */
+		protected function keyDownEventHandler(event:KeyboardEvent):void
+		{
+			// trace("TableKeyDownController", event)
+			// avoid Tab loose the normal behaviour, for navigation we don't want build int scrolling support in browsers
+			if(event.key === WhitespaceKeys.TAB)
+				return;
+			
+			event.preventDefault();
+
+			// var index:int = listModel.selectedIndex;
+
+			// if(event.key === NavigationKeys.UP || event.key === NavigationKeys.LEFT)
+			// {
+			// 	if(index > 0)
+			// 		listModel.selectedIndex--;
+			// } 
+			// else if(event.key === NavigationKeys.DOWN || event.key === NavigationKeys.RIGHT)
+			// {
+			// 	listModel.selectedIndex++;
+			// }
+
+			// if(index != listModel.selectedIndex)
+			// {
+			// 	listModel.selectedItem = listModel.dataProvider.getItemAt(listModel.selectedIndex);
+
+			// 	var ir:IFocusable = listView.dataGroup.getItemRendererForIndex(listModel.selectedIndex) as IFocusable;
+			// 	ir.setFocus();
+				
+            //     (listView as IScrollToIndexView).scrollToIndex(listModel.selectedIndex);
+				
+			// 	sendEvent(listView.host, 'change');
+			// }
+		}
+	}
+}
diff --git a/frameworks/projects/Jewel/src/main/sass/components/_table.sass b/frameworks/projects/Jewel/src/main/sass/components/_table.sass
index 9a87530..0d259e4 100644
--- a/frameworks/projects/Jewel/src/main/sass/components/_table.sass
+++ b/frameworks/projects/Jewel/src/main/sass/components/_table.sass
@@ -94,6 +94,7 @@ j|Table
     IItemRendererClassFactory: ClassReference("org.apache.royale.core.SelectableItemRendererClassFactory")
     IItemRenderer: ClassReference("org.apache.royale.jewel.itemRenderers.TableItemRenderer")
     IBeadController: ClassReference("org.apache.royale.jewel.beads.controllers.TableCellSelectionMouseController")
+    IBeadKeyController: ClassReference("org.apache.royale.jewel.beads.controllers.TableKeyDownController")
     IItemRendererInitializer: ClassReference("org.apache.royale.jewel.beads.itemRenderers.TableItemRendererInitializer")
     ISelectableItemRenderer: ClassReference("org.apache.royale.jewel.beads.itemRenderers.ClassSelectorListSelectableItemRendererBead")
     IDataProviderItemRendererMapper: ClassReference("org.apache.royale.jewel.beads.itemRenderers.TableItemRendererFactoryForCollectionView")