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/01/12 17:54:46 UTC

[royale-asjs] branch develop updated: jewel-datagrid: add RemoveDataGridItemRendererForArrayListData bead used to remove a whole item record (row) from the DataGrid

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 b711188  jewel-datagrid: add RemoveDataGridItemRendererForArrayListData bead used to remove a whole item record (row) from the DataGrid
b711188 is described below

commit b711188f292b895dcaae0544a427008d12a2ad55
Author: Carlos Rovira <ca...@apache.org>
AuthorDate: Sun Jan 12 18:54:37 2020 +0100

    jewel-datagrid: add RemoveDataGridItemRendererForArrayListData bead used to remove a whole item record (row) from the DataGrid
---
 .../src/main/royale/DataGridPlayGround.mxml        |  12 +-
 .../Jewel/src/main/resources/jewel-manifest.xml    |   1 +
 .../AddDataGridItemRendererForArrayListData.as     | 168 ---------------------
 .../RemoveDataGridItemRendererForArrayListData.as  |  74 +++++++++
 .../RemoveListItemRendererForArrayListData.as      |  12 +-
 5 files changed, 92 insertions(+), 175 deletions(-)

diff --git a/examples/royale/TourDeJewel/src/main/royale/DataGridPlayGround.mxml b/examples/royale/TourDeJewel/src/main/royale/DataGridPlayGround.mxml
index 13cb9d1..38710bf 100644
--- a/examples/royale/TourDeJewel/src/main/royale/DataGridPlayGround.mxml
+++ b/examples/royale/TourDeJewel/src/main/royale/DataGridPlayGround.mxml
@@ -50,15 +50,15 @@ limitations under the License.
 			grid.dataProvider = data;
 		}
 
-		private function addData():void
+		private function addRow():void
 		{
 			var product:Product = new Product("xx100","New Item",44,10,"assets/smallbluerect.jpg");
 			productModel.productList.addItem(product);
 		}
 		
-		private function removeData():void
+		private function removeFirstRow():void
 		{
-			productModel.productList.removeItemAt(2);
+			productModel.productList.removeItemAt(0);
 		}
 
 		[Bindable]
@@ -121,15 +121,15 @@ limitations under the License.
 					</j:columns>
 					<j:beads>
 						<j:AddDataGridItemRendererForArrayListData/>
+						<j:RemoveDataGridItemRendererForArrayListData/>
 					</j:beads>
 				</j:DataGrid>
 
 				<j:Label id="datagrid2_lb" text="DataGrid selection will be shown here"/>
 
 				<j:HGroup gap="3">
-					<!-- <j:Button text="Refresh Grid" click="refreshGrid(datagrid2, (productModel as ProductModel).productList)"/> -->
-					<j:Button text="Add Row" click="addData()" emphasis="primary"/>
-					<j:Button text="Remove Row" click="removeData()"/>
+					<j:Button text="Add Row" click="addRow()" emphasis="primary"/>
+					<j:Button text="Remove First Row" click="removeFirstRow()"/>
 				</j:HGroup>
 			</j:Card>
 		</j:GridCell>
diff --git a/frameworks/projects/Jewel/src/main/resources/jewel-manifest.xml b/frameworks/projects/Jewel/src/main/resources/jewel-manifest.xml
index 6d8614d..a8987c0 100644
--- a/frameworks/projects/Jewel/src/main/resources/jewel-manifest.xml
+++ b/frameworks/projects/Jewel/src/main/resources/jewel-manifest.xml
@@ -213,6 +213,7 @@
     <component id="CollectionChangeUpdateForArrayListData" class="org.apache.royale.jewel.beads.itemRenderers.CollectionChangeUpdateForArrayListData" />
     
     <component id="AddDataGridItemRendererForArrayListData" class="org.apache.royale.jewel.beads.itemRenderers.AddDataGridItemRendererForArrayListData" />
+    <component id="RemoveDataGridItemRendererForArrayListData" class="org.apache.royale.jewel.beads.itemRenderers.RemoveDataGridItemRendererForArrayListData" />
 
     <component id="AddTableRowForArrayListData" class="org.apache.royale.jewel.beads.itemRenderers.AddTableRowForArrayListData" />
     <component id="RemoveTableRowForArrayListData" class="org.apache.royale.jewel.beads.itemRenderers.RemoveTableRowForArrayListData" />
diff --git a/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/itemRenderers/AddDataGridItemRendererForArrayListData.as b/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/itemRenderers/AddDataGridItemRendererForArrayListData.as
index 4e67575..39e58c0 100644
--- a/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/itemRenderers/AddDataGridItemRendererForArrayListData.as
+++ b/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/itemRenderers/AddDataGridItemRendererForArrayListData.as
@@ -71,173 +71,5 @@ package org.apache.royale.jewel.beads.itemRenderers
 				// IEventDispatcher(list).addEventListener("initComplete", initComplete);
             }
 		}
-
-		/**
-		 *  finish setup
-		 *
-		 *  @langversion 3.0
-		 *  @playerversion Flash 10.2
-		 *  @playerversion AIR 2.6
-		 *  @productversion Royale 0.9.7
-		 */
-		// protected function initComplete(event:Event):void
-		// {
-		// 	_dataProviderModel = _strand.getBeadByType(ISelectionModel) as ISelectionModel;
-			
-		// 	for (var i:int=0; i < view.columnLists.length; i++)
-        //     {
-		// 		var list:IDataGridColumnList = view.columnLists[i] as IDataGridColumnList;
-		// 		IEventDispatcher(list).removeEventListener("initComplete", initComplete);
-			
-		// 		labelFields[list] = _dataProviderModel.labelField;
-		// 	}
-
-		// 	dataProviderModel.addEventListener("dataProviderChanged", dataProviderChangeHandler);
-
-		// 	// invoke now in case "dataProviderChanged" has already been dispatched.
-		// 	dataProviderChangeHandler(null);
-		// }
-
-		// private var dp:IEventDispatcher;
-		/**
-		 * @private
-		 */
-		// protected function dataProviderChangeHandler(event:Event):void
-		// {
-		// 	if(dp)
-		// 	{
-		// 		dp.removeEventListener(CollectionEvent.ITEM_ADDED, handleItemAdded);
-		// 	}
-		// 	dp = dataProviderModel.dataProvider as IEventDispatcher;
-		// 	if (!dp)
-		// 		return;
-
-		// 	// listen for individual items being added in the future.
-		// 	dp.addEventListener(CollectionEvent.ITEM_ADDED, handleItemAdded);
-		// }
-
-		/**
-		 *  Handles the itemAdded event by adding the item.
-		 *
-		 *  @langversion 3.0
-		 *  @playerversion Flash 10.2
-		 *  @playerversion AIR 2.6
-		 *  @productversion Royale 0.9.7
-		 *  @royaleignorecoercion org.apache.royale.core.ISelectableItemRenderer
-		 *  @royaleignorecoercion org.apache.royale.events.IEventDispatcher
-         *  @royaleignorecoercion org.apache.royale.core.ISelectionModel
-		 */
-		// protected function handleItemAdded(event:CollectionEvent):void
-		// {
-        //     var presentationModel:IDataGridPresentationModel = _strand.getBeadByType(IDataGridPresentationModel) as IDataGridPresentationModel;
-        //     var ir:ISelectableItemRenderer = itemRendererFactory.createItemRenderer(itemRendererParent) as ISelectableItemRenderer;
-
-        //     fillRenderer(event.index, event.item, ir, presentationModel);
-
-
-		// 	// update the index values in the itemRenderers to correspond to their shifted positions.
-		// 	var n:int = itemRendererParent.numItemRenderers;
-		// 	for (var i:int = event.index; i < n; i++)
-		// 	{
-		// 		ir = itemRendererParent.getItemRendererAt(i) as ISelectableItemRenderer;
-		// 		ir.index = i;
-		// 	}
-        //     //adjust the model's selectedIndex, if applicable
-		// 	if (event.index <= ISelectionModel(_dataProviderModel).selectedIndex) {
-        //         ISelectionModel(_dataProviderModel).selectedIndex = ISelectionModel(_dataProviderModel).selectedIndex + 1;
-		// 	}
-
-		// 	(_strand as IEventDispatcher).dispatchEvent(new Event("layoutNeeded"));
-		// }
-
-		// private var _dataProviderModel: IDataProviderModel;
-
-		/**
-		 *  The org.apache.royale.core.IDataProviderModel that contains the
-		 *  data source.
-		 *
-		 *  @langversion 3.0
-		 *  @playerversion Flash 10.2
-		 *  @playerversion AIR 2.6
-		 *  @productversion Royale 0.9.7
-		 */
-		// public function get dataProviderModel(): IDataProviderModel
-		// {
-		// 	if (_dataProviderModel == null) {
-		// 		_dataProviderModel = _strand.getBeadByType(IDataProviderModel) as IDataProviderModel;
-		// 	}
-		// 	return _dataProviderModel;
-		// }
-
-		// private var _itemRendererParent: IItemRendererParent;
-
-		/**
-		 *  The org.apache.royale.core.IItemRendererParent used
-		 *  to generate instances of item renderers.
-		 *
-		 *  @langversion 3.0
-		 *  @playerversion Flash 10.2
-		 *  @playerversion AIR 2.6
-		 *  @productversion Royale 0.9.7
-		 */
-		// public function get itemRendererParent():IItemRendererParent
-		// {
-		// 	if (_itemRendererParent == null) {
-		// 		var view:IListView = (_strand as IStrandWithModelView).view as IListView;
-		// 		_itemRendererParent = view.dataGroup;
-		// 	}
-		// 	return _itemRendererParent;
-		// }
-
-        // private var _itemRendererFactory:IItemRendererClassFactory;
-
-        /**
-         *  The org.apache.royale.core.IItemRendererClassFactory used
-         *  to generate instances of item renderers.
-         *
-         *  @langversion 3.0
-         *  @playerversion Flash 10.2
-         *  @playerversion AIR 2.6
-         *  @productversion Royale 0.9.7
-         */
-        // public function get itemRendererFactory():IItemRendererClassFactory
-        // {
-        //     if(!_itemRendererFactory)
-        //         _itemRendererFactory = loadBeadFromValuesManager(IItemRendererClassFactory, "iItemRendererClassFactory", _strand) as IItemRendererClassFactory;
-
-        //     return _itemRendererFactory;
-        // }
-
-        /**
-         * @private
-         */
-        // protected function fillRenderer(index:int,
-        //                                 item:Object,
-        //                                 itemRenderer:ISelectableItemRenderer,
-        //                                 presentationModel:IListPresentationModel):void
-        // {
-        //     itemRendererParent.addItemRendererAt(itemRenderer, index);
-
-        //     itemRenderer.labelField = labelField;
-
-        //     if (presentationModel) {
-        //         // var style:SimpleCSSStyles = new SimpleCSSStyles();
-        //         // style.marginBottom = presentationModel.separatorThickness;
-        //         // UIBase(itemRenderer).style = style;
-        //         UIBase(itemRenderer).height = presentationModel.rowHeight;
-        //         //UIBase(itemRenderer).percentWidth = 100;
-        //     }
-
-        //     setData(itemRenderer, item, index);
-        // }
-
-        // /**
-        //  * @private
-        //  */
-        // protected function setData(itemRenderer:ISelectableItemRenderer, data:Object, index:int):void
-        // {
-        //     itemRenderer.index = index;
-        //     itemRenderer.data = data;
-        // }
 	}
 }
diff --git a/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/itemRenderers/RemoveDataGridItemRendererForArrayListData.as b/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/itemRenderers/RemoveDataGridItemRendererForArrayListData.as
new file mode 100644
index 0000000..b12d4d3
--- /dev/null
+++ b/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/itemRenderers/RemoveDataGridItemRendererForArrayListData.as
@@ -0,0 +1,74 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+//  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.itemRenderers
+{
+	import org.apache.royale.core.IBead;
+	import org.apache.royale.core.IStrand;
+	import org.apache.royale.core.UIBase;
+	import org.apache.royale.jewel.beads.views.DataGridView;
+	import org.apache.royale.jewel.supportClasses.datagrid.IDataGridColumnList;
+
+    /**
+	 *  Handles the removal of an itemRenderer in a DataGrid component once the corresponding datum has been added
+	 *  from the IDataProviderModel.
+	 *
+	 *  @langversion 3.0
+	 *  @playerversion Flash 10.2
+	 *  @playerversion AIR 2.6
+	 *  @productversion Royale 0.9.7
+	 */
+	public class RemoveDataGridItemRendererForArrayListData implements IBead
+	{
+		/**
+		 * Constructor
+		 *
+		 *  @langversion 3.0
+		 *  @playerversion Flash 10.2
+		 *  @playerversion AIR 2.6
+		 *  @productversion Royale 0.9.7
+		 */
+		public function RemoveDataGridItemRendererForArrayListData()
+		{
+		}
+		
+		private var view:DataGridView;
+
+		protected var _strand:IStrand;
+		/**
+		 * @copy org.apache.royale.core.IStrand
+		 *
+		 *  @langversion 3.0
+		 *  @playerversion Flash 10.2
+		 *  @playerversion AIR 2.6
+		 *  @productversion Royale 0.9.7
+		 */
+		public function set strand(value:IStrand):void
+		{
+			_strand = value;
+			view = UIBase(_strand).view as DataGridView;
+            for (var i:int=0; i < view.columnLists.length; i++)
+            {
+                var list:IDataGridColumnList = view.columnLists[i] as IDataGridColumnList;
+				var removeItemBead:RemoveListItemRendererForArrayListData = new RemoveListItemRendererForArrayListData();
+				list.addBead(removeItemBead);
+				removeItemBead.setUp();
+            }
+		}
+	}
+}
diff --git a/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/itemRenderers/RemoveListItemRendererForArrayListData.as b/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/itemRenderers/RemoveListItemRendererForArrayListData.as
index 978461a..bfde9b5 100644
--- a/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/itemRenderers/RemoveListItemRendererForArrayListData.as
+++ b/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/itemRenderers/RemoveListItemRendererForArrayListData.as
@@ -54,7 +54,6 @@ package org.apache.royale.jewel.beads.itemRenderers
 		}
 
 		private var _strand:IStrand;
-
 		/**
 		 *  @copy org.apache.royale.core.IStrand
 		 *
@@ -79,6 +78,17 @@ package org.apache.royale.jewel.beads.itemRenderers
 		 */
 		protected function initComplete(event:Event):void
 		{
+			setUp();
+		}
+		
+		/**
+		 * This method is called when List is composed to conform a DataGrid
+		 * In that case DataGrid uses AddDataGridItemRendererForArrayListData,
+		 * that add this bead to the each column List and calls this method at
+		 * initialization time.
+		 */
+		public function setUp():void
+		{
 			IEventDispatcher(_strand).removeEventListener("initComplete", initComplete);
 
 			_dataProviderModel = _strand.getBeadByType(ISelectionModel) as ISelectionModel;