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 340bdf7  fix index position in table component when add and remove
340bdf7 is described below

commit 340bdf7fb0085c22c4917b2d78053a7d3ee50573
Author: Carlos Rovira <[email protected]>
AuthorDate: Wed Aug 29 09:53:48 2018 +0200

    fix index position in table component when add and remove
---
 .../src/main/royale/TablePlayGround.mxml           |  8 ++++
 .../TableCellCloseIconItemRenderer.mxml            |  8 +++-
 .../AddTableItemRendererForArrayListData.as        | 43 +++++++++++++---------
 .../RemoveTableItemRendererForArrayListData.as     | 21 +++++++----
 .../jewel/supportClasses/table/TBodyContentArea.as |  2 +
 5 files changed, 56 insertions(+), 26 deletions(-)

diff --git a/examples/royale/JewelExample/src/main/royale/TablePlayGround.mxml 
b/examples/royale/JewelExample/src/main/royale/TablePlayGround.mxml
index 72acba0..0a4a2c8 100644
--- a/examples/royale/JewelExample/src/main/royale/TablePlayGround.mxml
+++ b/examples/royale/JewelExample/src/main/royale/TablePlayGround.mxml
@@ -205,6 +205,14 @@ limitations under the License.
                                                <j:Button text="Remove first 
item" click="removeItemAt()"/>
                                                <j:Button text="Update first 
item" click="updateFirstItem()"/>
                                                <j:Button text="Remove all 
data" click="removeAllData()"/>
+                                               <j:HGroup gap="3" 
itemsVerticalAlign="itemsCentered">
+                                                       <j:Label text="Select 
table by index: "/>
+                                                       <j:NumericStepper 
valueChange="table.selectedIndex = event.target.value" minimum="0"/>
+                                               </j:HGroup>
+                                               <!-- <j:HGroup gap="3" 
itemsVerticalAlign="itemsCentered">
+                                                       <j:Label text="Select 
table by item: "/>
+                                                       <j:NumericStepper 
valueChange="table.selectedItemProperty = 
table.dataProvider.getItemAt(event.target.value)" minimum="0"/>
+                                               </j:HGroup> -->
                                        </j:VGroup>
                                </j:HGroup>
                        </j:Card>
diff --git 
a/examples/royale/JewelExample/src/main/royale/itemRenderers/TableCellCloseIconItemRenderer.mxml
 
b/examples/royale/JewelExample/src/main/royale/itemRenderers/TableCellCloseIconItemRenderer.mxml
index b5897ce..4c03e1a 100644
--- 
a/examples/royale/JewelExample/src/main/royale/itemRenderers/TableCellCloseIconItemRenderer.mxml
+++ 
b/examples/royale/JewelExample/src/main/royale/itemRenderers/TableCellCloseIconItemRenderer.mxml
@@ -27,9 +27,13 @@ limitations under the License.
     
     <fx:Script>
                <![CDATA[
+            import org.apache.royale.jewel.Table;
+            import org.apache.royale.collections.ArrayList;
+            
             private function clickCloseButton():void
                        {
-                trace("hello!");
+                var table:Table = itemRendererParent as Table;
+                (table.dataProvider as ArrayList).removeItemAt(rowIndex);
             }
         ]]>
        </fx:Script>
@@ -40,7 +44,7 @@ limitations under the License.
     
     <j:IconButton emphasis="primary" width="24" height="24" style="padding: 
0px; border-radius: 50%" click="clickCloseButton()">
         <j:icon>
-            <js:FontIcon text="{data.icon}" material="true" size="18"/>
+            <js:FontIcon text="{MaterialIconType.CLOSE}" material="true" 
size="18"/>
         </j:icon>
     </j:IconButton>
     
diff --git 
a/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/itemRenderers/AddTableItemRendererForArrayListData.as
 
b/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/itemRenderers/AddTableItemRendererForArrayListData.as
index c826e5c..45bbf73 100644
--- 
a/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/itemRenderers/AddTableItemRendererForArrayListData.as
+++ 
b/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/itemRenderers/AddTableItemRendererForArrayListData.as
@@ -23,7 +23,6 @@ package org.apache.royale.jewel.beads.itemRenderers
        import org.apache.royale.core.IItemRendererParent;
        import org.apache.royale.core.IList;
        import org.apache.royale.core.IListPresentationModel;
-       import org.apache.royale.core.ISelectableItemRenderer;
        import org.apache.royale.core.ISelectionModel;
        import org.apache.royale.core.IStrand;
        import org.apache.royale.core.SimpleCSSStyles;
@@ -31,10 +30,11 @@ package org.apache.royale.jewel.beads.itemRenderers
        import org.apache.royale.events.CollectionEvent;
        import org.apache.royale.events.Event;
        import org.apache.royale.events.IEventDispatcher;
-       import org.apache.royale.html.supportClasses.DataItemRenderer;
-       import org.apache.royale.jewel.beads.itemRenderers.ITextItemRenderer;
        import org.apache.royale.jewel.beads.models.TableModel;
+       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;
        import org.apache.royale.utils.loadBeadFromValuesManager;
 
     /**
@@ -130,7 +130,7 @@ package org.apache.royale.jewel.beads.itemRenderers
                {
             var presentationModel:IListPresentationModel = 
_strand.getBeadByType(IListPresentationModel) as IListPresentationModel;
                        var column:TableColumn;
-                       var ir:ITextItemRenderer;
+                       var ir:TableItemRenderer;
 
                        var index:int = event.index * model.columns.length;
                        for(var j:int = 0; j < model.columns.length; j++)
@@ -139,19 +139,19 @@ package org.apache.royale.jewel.beads.itemRenderers
                                
                                if(column.itemRenderer != null)
                                {
-                                       ir = column.itemRenderer.newInstance() 
as ITextItemRenderer;
+                                       ir = column.itemRenderer.newInstance() 
as TableItemRenderer;
                                } else
                                {
-                                       ir = 
itemRendererFactory.createItemRenderer(itemRendererParent) as ITextItemRenderer;
+                                       ir = 
itemRendererFactory.createItemRenderer(itemRendererParent) as TableItemRenderer;
                                }
 
                                labelField =  column.dataField;
                
-                               (ir as DataItemRenderer).dataField = labelField;
-                               (ir as DataItemRenderer).rowIndex = event.index;
-                               (ir as DataItemRenderer).columnIndex = j;
+                               ir.dataField = labelField;
+                               ir.rowIndex = event.index;
+                               ir.columnIndex = j;
                
-                               fillRenderer(index++, event.item, (ir as 
ISelectableItemRenderer), presentationModel);
+                               fillRenderer(index++, event.item, ir, 
presentationModel);
                                
                                if(column.align != "")
                                {
@@ -160,12 +160,21 @@ package org.apache.royale.jewel.beads.itemRenderers
                        }
 
                        // update the index values in the itemRenderers to 
correspond to their shifted positions.
-                       var n:int = itemRendererParent.numElements;
-                       var d:DataItemRenderer;
-                       for (var i:int = event.index; i < n; i++)
+                       // adjust the itemRenderers' index to adjust for the 
shift
+                       var cell:TableCell;
+                       var processedRow:TableRow;
+                       var len:int = itemRendererParent.numElements;
+                       for (var i:int = event.index; i < len; i++)
                        {
-                               d = 
itemRendererParent.getItemRendererForIndex(i) as DataItemRenderer;
-                               d.index = i;
+                               processedRow = 
itemRendererParent.getElementAt(i) as TableRow;
+                               var n:int = processedRow.numElements;
+                               for (j = 0; j < n; j++)
+                               {
+                                       cell = processedRow.getElementAt(j) as 
TableCell;
+                                       ir = cell.getElementAt(0) as 
TableItemRenderer;
+                                       ir.index = i;
+                                       ir.rowIndex = i;
+                               }
                        }
 
                        (_strand as IEventDispatcher).dispatchEvent(new 
Event("layoutNeeded"));
@@ -215,7 +224,7 @@ package org.apache.royale.jewel.beads.itemRenderers
          */
         protected function fillRenderer(index:int,
                                         item:Object,
-                                        itemRenderer:ISelectableItemRenderer,
+                                        itemRenderer:TableItemRenderer,
                                         
presentationModel:IListPresentationModel):void
         {
             itemRendererParent.addItemRendererAt(itemRenderer, index);
@@ -236,7 +245,7 @@ package org.apache.royale.jewel.beads.itemRenderers
         /**
          * @private
          */
-        protected function setData(itemRenderer:ISelectableItemRenderer, 
data:Object, index:int):void
+        protected function setData(itemRenderer:TableItemRenderer, 
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/RemoveTableItemRendererForArrayListData.as
 
b/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/itemRenderers/RemoveTableItemRendererForArrayListData.as
index 06685ba..52c21be 100644
--- 
a/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/itemRenderers/RemoveTableItemRendererForArrayListData.as
+++ 
b/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/itemRenderers/RemoveTableItemRendererForArrayListData.as
@@ -21,12 +21,12 @@ package org.apache.royale.jewel.beads.itemRenderers
        import org.apache.royale.core.IBead;
        import org.apache.royale.core.IItemRendererParent;
        import org.apache.royale.core.IList;
-       import org.apache.royale.core.ISelectableItemRenderer;
        import org.apache.royale.core.ISelectionModel;
        import org.apache.royale.core.IStrand;
        import org.apache.royale.events.CollectionEvent;
        import org.apache.royale.events.Event;
        import org.apache.royale.events.IEventDispatcher;
+       import org.apache.royale.html.supportClasses.DataItemRenderer;
        import org.apache.royale.jewel.beads.models.TableModel;
        import org.apache.royale.jewel.supportClasses.table.TableCell;
        import org.apache.royale.jewel.supportClasses.table.TableRow;
@@ -122,12 +122,12 @@ package org.apache.royale.jewel.beads.itemRenderers
                 */
                protected function handleItemRemoved(event:CollectionEvent):void
                {
-                       var ir:ISelectableItemRenderer;
+                       var ir:DataItemRenderer;
                        var cell:TableCell;
                        var processedRow:TableRow = 
itemRendererParent.getElementAt(event.index) as TableRow;
                        while (processedRow.numElements > 0) {
                                cell = processedRow.getElementAt(0) as 
TableCell;
-                               ir = cell.getElementAt(0) as 
ISelectableItemRenderer;
+                               ir = cell.getElementAt(0) as DataItemRenderer;
                                itemRendererParent.removeItemRenderer(ir);
                                cell.removeElement(ir);
                                processedRow.removeElement(cell);
@@ -135,11 +135,18 @@ package org.apache.royale.jewel.beads.itemRenderers
                        itemRendererParent.removeElement(processedRow);
 
                        // adjust the itemRenderers' index to adjust for the 
shift
-                       var n:int = itemRendererParent.numElements;
-                       for (var i:int = event.index; i < n; i++)
+                       var len:int = itemRendererParent.numElements;
+                       for (var i:int = event.index; i < len; i++)
                        {
-                               ir = itemRendererParent.getElementAt(i) as 
ISelectableItemRenderer;
-                               ir.index = i;
+                               processedRow = 
itemRendererParent.getElementAt(i) as TableRow;
+                               var n:int = processedRow.numElements;
+                               for (var j:int = 0; j < n; j++)
+                               {
+                                       cell = processedRow.getElementAt(j) as 
TableCell;
+                                       ir = cell.getElementAt(0) as 
DataItemRenderer;
+                                       ir.index = i;
+                                       ir.rowIndex = i;
+                               }
                        }
 
                        (_strand as IEventDispatcher).dispatchEvent(new 
Event("layoutNeeded"));
diff --git 
a/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/supportClasses/table/TBodyContentArea.as
 
b/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/supportClasses/table/TBodyContentArea.as
index 9463d2f..afe0b2c 100644
--- 
a/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/supportClasses/table/TBodyContentArea.as
+++ 
b/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/supportClasses/table/TBodyContentArea.as
@@ -91,6 +91,7 @@ package org.apache.royale.jewel.supportClasses.table
                {
                        // this method is not used for now, so it needs to be 
tested to see if it's correctly implemented
                        var r:DataItemRenderer = renderer as DataItemRenderer;
+                       r.itemRendererParent = host; // easy access from 
renderer to table
                        var tableCell:TableCell = new TableCell();
                        tableCell.addElement(r);
 
@@ -123,6 +124,7 @@ package org.apache.royale.jewel.supportClasses.table
                public function addItemRendererAt(renderer:IItemRenderer, 
index:int):void
                {
                        var r:DataItemRenderer = renderer as DataItemRenderer;
+                       r.itemRendererParent = host; // easy access from 
renderer to table
                        var tableCell:TableCell = new TableCell();
                        tableCell.addElement(r);
 

Reply via email to