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 505571b  jewel-datagrid: add AddDataGridItemRendererForArrayListData 
bead used to add a whole item record (row) to the DataGrid
505571b is described below

commit 505571bf100de922f4f3d7daf7d52ea2040555b4
Author: Carlos Rovira <[email protected]>
AuthorDate: Sun Jan 12 18:42:48 2020 +0100

    jewel-datagrid: add AddDataGridItemRendererForArrayListData bead used to 
add a whole item record (row) to the DataGrid
---
 .../src/main/royale/DataGridPlayGround.mxml        |   7 +-
 .../Jewel/src/main/resources/jewel-manifest.xml    |   2 +
 .../AddDataGridItemRendererForArrayListData.as     | 243 +++++++++++++++++++++
 .../AddListItemRendererForArrayListData.as         |  16 +-
 4 files changed, 263 insertions(+), 5 deletions(-)

diff --git 
a/examples/royale/TourDeJewel/src/main/royale/DataGridPlayGround.mxml 
b/examples/royale/TourDeJewel/src/main/royale/DataGridPlayGround.mxml
index f1a6d41..13cb9d1 100644
--- a/examples/royale/TourDeJewel/src/main/royale/DataGridPlayGround.mxml
+++ b/examples/royale/TourDeJewel/src/main/royale/DataGridPlayGround.mxml
@@ -53,7 +53,7 @@ limitations under the License.
                private function addData():void
                {
                        var product:Product = new Product("xx100","New 
Item",44,10,"assets/smallbluerect.jpg");
-                       productModel.productList.addItemAt(product, 2);
+                       productModel.productList.addItem(product);
                }
                
                private function removeData():void
@@ -119,12 +119,15 @@ limitations under the License.
                                                <j:DataGridColumn label="Title" 
dataField="title" columnWidth="140"/>
                                                <j:DataGridColumn label="Sales" 
dataField="sales" columnWidth="80" align="right"/>
                                        </j:columns>
+                                       <j:beads>
+                                               
<j:AddDataGridItemRendererForArrayListData/>
+                                       </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="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:HGroup>
diff --git a/frameworks/projects/Jewel/src/main/resources/jewel-manifest.xml 
b/frameworks/projects/Jewel/src/main/resources/jewel-manifest.xml
index 434d066..6d8614d 100644
--- a/frameworks/projects/Jewel/src/main/resources/jewel-manifest.xml
+++ b/frameworks/projects/Jewel/src/main/resources/jewel-manifest.xml
@@ -211,6 +211,8 @@
     <component id="RemoveListItemRendererForArrayListData" 
class="org.apache.royale.jewel.beads.itemRenderers.RemoveListItemRendererForArrayListData"
 />
     <component id="UpdateListItemRendererForArrayListData" 
class="org.apache.royale.jewel.beads.itemRenderers.UpdateListItemRendererForArrayListData"
 />
     <component id="CollectionChangeUpdateForArrayListData" 
class="org.apache.royale.jewel.beads.itemRenderers.CollectionChangeUpdateForArrayListData"
 />
+    
+    <component id="AddDataGridItemRendererForArrayListData" 
class="org.apache.royale.jewel.beads.itemRenderers.AddDataGridItemRendererForArrayListData"
 />
 
     <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
new file mode 100644
index 0000000..4e67575
--- /dev/null
+++ 
b/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/itemRenderers/AddDataGridItemRendererForArrayListData.as
@@ -0,0 +1,243 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+//  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 adding 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 AddDataGridItemRendererForArrayListData implements IBead
+       {
+               /**
+                * Constructor
+                *
+                *  @langversion 3.0
+                *  @playerversion Flash 10.2
+                *  @playerversion AIR 2.6
+                *  @productversion Royale 0.9.7
+                */
+               public function AddDataGridItemRendererForArrayListData()
+               {
+               }
+               
+               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 
addItemBead:AddListItemRendererForArrayListData = new 
AddListItemRendererForArrayListData();
+                               list.addBead(addItemBead);
+                               addItemBead.setUp();
+                               // 
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/AddListItemRendererForArrayListData.as
 
b/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/itemRenderers/AddListItemRendererForArrayListData.as
index 7c9f77c..0730446 100644
--- 
a/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/itemRenderers/AddListItemRendererForArrayListData.as
+++ 
b/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/itemRenderers/AddListItemRendererForArrayListData.as
@@ -57,10 +57,9 @@ package org.apache.royale.jewel.beads.itemRenderers
                {
                }
 
-               protected var _strand:IStrand;
-
         protected var labelField:String;
-
+               
+               protected var _strand:IStrand;
                /**
                 * @copy org.apache.royale.core.IStrand
                 *
@@ -85,6 +84,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;

Reply via email to