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 f8f2c55  jewel-table: add 
CRUDTableItemRendererFactoryForCollectionView that deprecated all CRUD Table 
classes
f8f2c55 is described below

commit f8f2c5573a45cda23b0bef5d73e506fe4a97cf03
Author: Carlos Rovira <[email protected]>
AuthorDate: Sat Jul 25 10:43:15 2020 +0200

    jewel-table: add CRUDTableItemRendererFactoryForCollectionView that 
deprecated all CRUD Table classes
---
 .../Jewel/src/main/resources/jewel-manifest.xml    |   1 +
 ...RUDTableItemRendererFactoryForCollectionView.as | 208 +++++++++++++++++++++
 2 files changed, 209 insertions(+)

diff --git a/frameworks/projects/Jewel/src/main/resources/jewel-manifest.xml 
b/frameworks/projects/Jewel/src/main/resources/jewel-manifest.xml
index c06a4d0..8dee5b1 100644
--- a/frameworks/projects/Jewel/src/main/resources/jewel-manifest.xml
+++ b/frameworks/projects/Jewel/src/main/resources/jewel-manifest.xml
@@ -241,6 +241,7 @@
     <component id="VirtualDataItemRendererFactoryForCollectionView" 
class="org.apache.royale.jewel.beads.itemRenderers.VirtualDataItemRendererFactoryForCollectionView"/>
     <component id="DropDownListItemRendererFactoryForCollectionView" 
class="org.apache.royale.jewel.beads.itemRenderers.DropDownListItemRendererFactoryForCollectionView"/>
     <component id="TableItemRendererFactoryForCollectionView" 
class="org.apache.royale.jewel.beads.itemRenderers.TableItemRendererFactoryForCollectionView"/>
+    <component id="CRUDTableItemRendererFactoryForCollectionView" 
class="org.apache.royale.jewel.beads.itemRenderers.CRUDTableItemRendererFactoryForCollectionView"/>
     <component id="NoClassSelectorListSelectableItemRendererBead" 
class="org.apache.royale.jewel.beads.itemRenderers.NoClassSelectorListSelectableItemRendererBead"/>
     <component id="NoHoverClassSelectorListSelectableItemRendererBead" 
class="org.apache.royale.jewel.beads.itemRenderers.NoHoverClassSelectorListSelectableItemRendererBead"/>
 
diff --git 
a/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/itemRenderers/CRUDTableItemRendererFactoryForCollectionView.as
 
b/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/itemRenderers/CRUDTableItemRendererFactoryForCollectionView.as
new file mode 100644
index 0000000..ebe77fd
--- /dev/null
+++ 
b/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/itemRenderers/CRUDTableItemRendererFactoryForCollectionView.as
@@ -0,0 +1,208 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+//  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.IIndexedItemRendererInitializer;
+    import org.apache.royale.core.IParent;
+    import org.apache.royale.events.CollectionEvent;
+    import org.apache.royale.events.Event;
+    import org.apache.royale.events.IEventDispatcher;
+    import org.apache.royale.jewel.itemRenderers.TableItemRenderer;
+    import org.apache.royale.jewel.supportClasses.table.TableCell;
+    import org.apache.royale.jewel.supportClasses.table.TableColumn;
+    import org.apache.royale.jewel.supportClasses.table.TableRow;
+
+    /**
+        * This class creates itemRenderer instances from the data contained 
within an ICollectionView
+     * and generates the appropiate table structure with thead, tbody and 
table rows and cells
+     * to hold the columns and data in cells.
+        */
+       public class CRUDTableItemRendererFactoryForCollectionView extends 
TableItemRendererFactoryForCollectionView
+       {
+               public function 
CRUDTableItemRendererFactoryForCollectionView(target:Object = null)
+               {
+                       super(target);
+               }
+
+        /**
+                * the dataProvider as a dispatcher
+                */
+               protected var dped:IEventDispatcher;
+
+        /**
+                * @private
+                * @royaleignorecoercion 
org.apache.royale.collections.ICollectionView
+                * @royaleignorecoercion 
org.apache.royale.core.IListPresentationModel
+                * @royaleignorecoercion 
org.apache.royale.core.IIndexedItemRenderer
+                * @royaleignorecoercion 
org.apache.royale.events.IEventDispatcher
+                */
+               override protected function 
dataProviderChangeHandler(event:Event):void
+               {
+                       super.dataProviderChangeHandler(event);
+                       
+                       if(dped)
+                       {
+                               
dped.removeEventListener(CollectionEvent.ITEM_ADDED, itemAddedHandler);
+                               
dped.removeEventListener(CollectionEvent.ITEM_REMOVED, itemRemovedHandler);
+                               
dped.removeEventListener(CollectionEvent.ITEM_UPDATED, itemUpdatedHandler);
+                               dped = null;
+                       }
+                       
+                       if (!dataProviderModel.dataProvider)
+                               return;
+                       
+                       // listen for individual items being added in the 
future.
+                       dped = dataProviderModel.dataProvider as 
IEventDispatcher;
+                       dped.addEventListener(CollectionEvent.ITEM_ADDED, 
itemAddedHandler);
+                       dped.addEventListener(CollectionEvent.ITEM_REMOVED, 
itemRemovedHandler);
+                       dped.addEventListener(CollectionEvent.ITEM_UPDATED, 
itemUpdatedHandler);
+               }
+
+        /**
+                *  Handles the itemRemoved event by removing the item.
+                * 
+                *  @langversion 3.0
+                *  @playerversion Flash 10.2
+                *  @playerversion AIR 2.6
+                *  @productversion Royale 0.9.4
+                * 
+                *  @private
+                *  
+                *  @royaleignorecoercion 
org.apache.royale.events.CollectionEvent
+                *  @royaleignorecoercion 
org.apache.royale.jewel.supportClasses.table.TableColumn
+                *  @royaleignorecoercion 
org.apache.royale.jewel.itemRenderers.TableItemRenderer
+                *  @royaleignorecoercion 
org.apache.royale.core.IIndexedItemRendererInitializer
+                */
+               protected function itemAddedHandler(event:CollectionEvent):void
+               {
+            var column:TableColumn;
+                       var ir:TableItemRenderer;
+
+                       var index:int = event.index * model.columns.length;
+                       for(var j:int = 0; j < model.columns.length; j++)
+                       {
+                               column = model.columns[j] as TableColumn;
+                               
+                               if(column.itemRenderer != null)
+                               {
+                                       ir = column.itemRenderer.newInstance() 
as TableItemRenderer;
+                               } else
+                               {
+                                       ir = 
itemRendererFactory.createItemRenderer() as TableItemRenderer;
+                               }
+
+                               ir.dataField = column.dataField;
+                               ir.rowIndex = event.index;
+                               ir.columnIndex = j;
+                               if(column.align != "")
+                                       ir.align = column.align;
+                
+                               (itemRendererInitializer as 
IIndexedItemRendererInitializer).initializeIndexedItemRenderer(ir, event.item, 
index);
+                               
+                dataGroup.addItemRendererAt(ir, index);
+
+                ir.labelField = column.dataField;
+                ir.index = index;
+                ir.data = event.item;
+
+                               index++;
+                       }
+
+                       // update the index values in the itemRenderers to 
correspond to their shifted positions.
+                       // adjust the itemRenderers' index to adjust for the 
shift
+                       var len:int = dataGroup.numItemRenderers;
+                       for (var i:int = event.index; i < len; i++)
+                       {
+                               ir = dataGroup.getItemRendererAt(i) as 
TableItemRenderer;
+                               ir.index = i;
+                               ir.rowIndex = i;
+                       }
+               }
+
+               /**
+                *  Handles the itemRemoved event by removing the item.
+                *
+                *  @langversion 3.0
+                *  @playerversion Flash 10.2
+                *  @playerversion AIR 2.6
+                *  @productversion Royale 0.9.4
+                *  
+                *  @private
+                *  @royaleignorecoercion 
org.apache.royale.events.CollectionEvent
+                *  @royaleignorecoercion 
org.apache.royale.jewel.itemRenderers.TableItemRenderer
+                *  @royaleignorecoercion 
org.apache.royale.jewel.supportClasses.table.TableCell
+                *  @royaleignorecoercion 
org.apache.royale.jewel.supportClasses.table.TableRow
+                *  @royaleignorecoercion org.apache.royale.core.IParent
+                */
+               protected function 
itemRemovedHandler(event:CollectionEvent):void
+               {
+                       var ir:TableItemRenderer;
+                       var cell:TableCell;
+                       var processedRow:TableRow = (dataGroup as 
IParent).getElementAt(event.index) as TableRow;
+                       
+                       while (processedRow.numElements > 0) {
+                               cell = processedRow.getElementAt(0) as 
TableCell;
+                               ir = cell.getElementAt(0) as TableItemRenderer;
+                               dataGroup.removeItemRenderer(ir);
+                               cell.removeElement(ir);
+                               processedRow.removeElement(cell);
+                       }
+                       (dataGroup as IParent).removeElement(processedRow);
+
+                       // adjust the itemRenderers' index to adjust for the 
shift
+                       var len:int = dataGroup.numItemRenderers;
+                       for (var i:int = event.index; i < len; i++)
+                       {
+                               ir = dataGroup.getItemRendererAt(i) as 
TableItemRenderer;
+                               ir.index = i;
+                               ir.rowIndex = i;
+                       }
+               }
+
+               /**
+                *  Handles the itemUpdated event by updating the item.
+                *
+                *  @langversion 3.0
+                *  @playerversion Flash 10.2
+                *  @playerversion AIR 2.6
+                *  @productversion Royale 0.9.4
+                *  
+                *  @private
+                * 
+                *  @royaleignorecoercion 
org.apache.royale.jewel.itemRenderers.TableItemRenderer
+                *  @royaleignorecoercion 
org.apache.royale.jewel.supportClasses.table.TableRow
+                *  @royaleignorecoercion org.apache.royale.core.IParent
+                *  @royaleignorecoercion 
org.apache.royale.jewel.supportClasses.table.TableCell
+                */
+               protected function 
itemUpdatedHandler(event:CollectionEvent):void
+               {
+                       var ir:TableItemRenderer;
+                       var processedRow:TableRow = (dataGroup as 
IParent).getElementAt(event.index) as TableRow;
+                       var cell:TableCell;
+                       var n:int = processedRow.numElements;
+                       for (var i:int = 0; i < n; i++)
+                       {
+                               cell = processedRow.getElementAt(i) as 
TableCell;
+                               ir = cell.getElementAt(0) as TableItemRenderer;
+                               ir.index = event.index;
+                ir.data = event.item;
+                       }
+               }
+    }
+}
\ No newline at end of file

Reply via email to