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 6efdb47  jewel-dropdownlist: change mapper to basic one, and add its 
own render initializer
6efdb47 is described below

commit 6efdb47863a9752dd97b33959e47adc70f71b39d
Author: Carlos Rovira <[email protected]>
AuthorDate: Fri Mar 13 13:16:30 2020 +0100

    jewel-dropdownlist: change mapper to basic one, and add its own render 
initializer
---
 .../projects/Jewel/src/main/resources/defaults.css |  1 +
 .../projects/Jewel/src/main/royale/JewelClasses.as |  1 +
 ...DownListItemRendererFactoryForCollectionView.as | 67 ++++++++++++-------
 .../DropDownListItemRendererInitializer.as         | 76 ++++++++++++++++++++++
 .../src/main/sass/components/_dropdownlist.sass    |  4 +-
 5 files changed, 122 insertions(+), 27 deletions(-)

diff --git a/frameworks/projects/Jewel/src/main/resources/defaults.css 
b/frameworks/projects/Jewel/src/main/resources/defaults.css
index 0b80757..e05a0d2 100644
--- a/frameworks/projects/Jewel/src/main/resources/defaults.css
+++ b/frameworks/projects/Jewel/src/main/resources/defaults.css
@@ -844,6 +844,7 @@ j|DropDownList {
   IBeadModel: 
ClassReference("org.apache.royale.jewel.beads.models.DropDownListModel");
   IDataProviderItemRendererMapper: 
ClassReference("org.apache.royale.jewel.beads.itemRenderers.DropDownListItemRendererFactoryForCollectionView");
   IItemRendererClassFactory: 
ClassReference("org.apache.royale.core.ItemRendererClassFactory");
+  IItemRendererInitializer: 
ClassReference("org.apache.royale.jewel.beads.itemRenderers.DropDownListItemRendererInitializer");
   IItemRenderer: 
ClassReference("org.apache.royale.jewel.itemRenderers.DropDownListItemRenderer");
   IBeadController: 
ClassReference("org.apache.royale.jewel.beads.controllers.DropDownListController");
 }
diff --git a/frameworks/projects/Jewel/src/main/royale/JewelClasses.as 
b/frameworks/projects/Jewel/src/main/royale/JewelClasses.as
index f5fb7e2..09ea966 100644
--- a/frameworks/projects/Jewel/src/main/royale/JewelClasses.as
+++ b/frameworks/projects/Jewel/src/main/royale/JewelClasses.as
@@ -139,6 +139,7 @@ package
         import 
org.apache.royale.jewel.beads.itemRenderers.ButtonBarItemRendererInitializer; 
ButtonBarItemRendererInitializer;
         import 
org.apache.royale.jewel.beads.itemRenderers.TabBarItemRendererInitializer; 
TabBarItemRendererInitializer;
         import 
org.apache.royale.jewel.beads.itemRenderers.NavigationItemRendererInitializer; 
NavigationItemRendererInitializer;
+        import 
org.apache.royale.jewel.beads.itemRenderers.DropDownListItemRendererInitializer;
 DropDownListItemRendererInitializer;
 
     }
 }
diff --git 
a/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/itemRenderers/DropDownListItemRendererFactoryForCollectionView.as
 
b/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/itemRenderers/DropDownListItemRendererFactoryForCollectionView.as
index f6b7b55..26c1205 100644
--- 
a/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/itemRenderers/DropDownListItemRendererFactoryForCollectionView.as
+++ 
b/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/itemRenderers/DropDownListItemRendererFactoryForCollectionView.as
@@ -20,8 +20,14 @@ package org.apache.royale.jewel.beads.itemRenderers
 {
        import org.apache.royale.collections.ICollectionView;
        import org.apache.royale.core.IIndexedItemRenderer;
+       import org.apache.royale.core.IIndexedItemRendererInitializer;
+       import org.apache.royale.core.IItemRendererOwnerView;
+       import org.apache.royale.core.IStrandWithModelView;
+       import org.apache.royale.events.CollectionEvent;
        import org.apache.royale.events.Event;
        import org.apache.royale.events.IEventDispatcher;
+       import 
org.apache.royale.html.beads.DataItemRendererFactoryForCollectionView;
+       import org.apache.royale.html.beads.IListView;
        import org.apache.royale.jewel.beads.models.IDropDownListModel;
        import org.apache.royale.jewel.itemRenderers.DropDownListItemRenderer;
        import 
org.apache.royale.jewel.supportClasses.list.IListPresentationModel;
@@ -47,37 +53,49 @@ package org.apache.royale.jewel.beads.itemRenderers
                {
                        if (!dataProviderModel)
                                return;
-                       var dp:ICollectionView = dataProviderModel.dataProvider 
as ICollectionView;
+
+                       var view:IListView = (_strand as 
IStrandWithModelView).view as IListView;
+                       var dataGroup:IItemRendererOwnerView = view.dataGroup;
+                       
+                       removeAllItemRenderers(dataGroup);
+
+                       dp = dataProviderModel.dataProvider;
                        if (!dp)
                                return;
                        
-                       dataGroup.removeAllItemRenderers();
-                       
-                       var presentationModel:IListPresentationModel = 
_strand.getBeadByType(IListPresentationModel) as IListPresentationModel;
-                       labelField = dataProviderModel.labelField;
-                       
-                       var ir:IIndexedItemRenderer;
-                       var item:Object;
-                       
-                       var model:IDropDownListModel = 
_strand.getBeadByType(IDropDownListModel) as IDropDownListModel;
-                       var offset:int = model.offset;
-
-                       if(offset == 1)
-                       {
+                       var offset:int = (dataProviderModel as 
IDropDownListModel).offset;
+                       if(offset == 1) {
                                promptRender = 
itemRendererFactory.createItemRenderer() as IIndexedItemRenderer;
-                               item = DropDownListItemRenderer.OPTION_DISABLED;
-                               fillRenderer(0, item, promptRender, 
presentationModel);
+                               data = DropDownListItemRenderer.OPTION_DISABLED;
+                               (itemRendererInitializer as 
IIndexedItemRendererInitializer).initializeIndexedItemRenderer(promptRender, 
data, 0);
+                               promptRender.data = data;                       
        
+                               dataGroup.addItemRenderer(promptRender, false);
                        }
-
-                       var n:int = dp.length;
+                       
+                       var n:int = dataProviderLength; 
                        for (var i:int = 0; i < n; i++)
-                       {
-                               ir = itemRendererFactory.createItemRenderer() 
as IIndexedItemRenderer;
-                               item = dp.getItemAt(i);
-                               fillRenderer(i + offset, item, ir, 
presentationModel);
+                       {                               
+                               var ir:IIndexedItemRenderer = 
itemRendererFactory.createItemRenderer() as IIndexedItemRenderer;
+
+                               var data:Object = getItemAt(i);
+                               (itemRendererInitializer as 
IIndexedItemRendererInitializer).initializeIndexedItemRenderer(ir, data, i + 
offset);
+                               ir.data = data;                         
+                               dataGroup.addItemRenderer(ir, false);
                        }
                        
-                       IEventDispatcher(_strand).dispatchEvent(new 
Event("itemsCreated"));
+                       dispatchItemCreatedEvent();
+                       
+                       if(dped)
+                       {
+                               
dped.removeEventListener(CollectionEvent.ITEM_ADDED, itemAddedHandler);
+                               
dped.removeEventListener(CollectionEvent.ITEM_REMOVED, itemRemovedHandler);
+                               
dped.removeEventListener(CollectionEvent.ITEM_UPDATED, itemUpdatedHandler);
+                       }
+                       // listen for individual items being added in the 
future.
+                       dped = dp as IEventDispatcher;
+                       dped.addEventListener(CollectionEvent.ITEM_ADDED, 
itemAddedHandler);
+                       dped.addEventListener(CollectionEvent.ITEM_REMOVED, 
itemRemovedHandler);
+                       dped.addEventListener(CollectionEvent.ITEM_UPDATED, 
itemUpdatedHandler);
                }
 
                public var promptRender:IIndexedItemRenderer;
@@ -89,7 +107,8 @@ package org.apache.royale.jewel.beads.itemRenderers
                {
                        if(promptRender)
                        {
-                               setData(promptRender, 
DropDownListItemRenderer.OPTION_DISABLED, 0);
+                               promptRender.index = 0;
+                               promptRender.data = 
DropDownListItemRenderer.OPTION_DISABLED;
                        }
                }
        }
diff --git 
a/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/itemRenderers/DropDownListItemRendererInitializer.as
 
b/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/itemRenderers/DropDownListItemRendererInitializer.as
new file mode 100644
index 0000000..c7ab275
--- /dev/null
+++ 
b/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/itemRenderers/DropDownListItemRendererInitializer.as
@@ -0,0 +1,76 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+//  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.IIndexedItemRenderer;
+       import org.apache.royale.core.IIndexedItemRendererInitializer;
+       import org.apache.royale.core.IItemRendererOwnerView;
+       import org.apache.royale.core.IStrand;
+       import org.apache.royale.core.IStrandWithModelView;
+       import org.apache.royale.html.beads.IndexedItemRendererInitializer;
+       import org.apache.royale.jewel.itemRenderers.DropDownListItemRenderer;
+
+       /**
+        *  The DropDownListItemRendererInitializer class initializes item 
renderers
+     *  in DropDownList classes.
+        *  
+        *  @langversion 3.0
+        *  @playerversion Flash 10.2
+        *  @playerversion AIR 2.6
+        *  @productversion Royale 0.9.7
+        */
+       public class DropDownListItemRendererInitializer extends 
IndexedItemRendererInitializer implements IIndexedItemRendererInitializer
+       {
+               /**
+                *  constructor.
+                *
+                *  @langversion 3.0
+                *  @playerversion Flash 10.2
+                *  @playerversion AIR 2.6
+                *  @productversion Royale 0.9.7
+                */
+               public function DropDownListItemRendererInitializer()
+               {
+               }
+
+        protected var ownerView:IItemRendererOwnerView;
+        
+               /**
+                *  @copy org.apache.royale.core.IBead#strand
+                *  
+                *  @langversion 3.0
+                *  @playerversion Flash 10.2
+                *  @playerversion AIR 2.6
+                *  @productversion Royale 0.9.7
+                *  @royaleignorecoercion HTMLInputElement
+                *  @royaleignorecoercion org.apache.royale.core.UIBase;
+                */
+               override public function set strand(value:IStrand):void
+               {       
+                       super.strand = value;
+            ownerView = (value as IStrandWithModelView).view as 
IItemRendererOwnerView;
+               }
+               
+        override protected function 
setupVisualsForItemRenderer(ir:IIndexedItemRenderer):void
+        {
+            if (ir is DropDownListItemRenderer && ownerView)
+                (ir as DropDownListItemRenderer).itemRendererOwnerView = 
ownerView;
+               }
+       }
+}
diff --git 
a/frameworks/projects/Jewel/src/main/sass/components/_dropdownlist.sass 
b/frameworks/projects/Jewel/src/main/sass/components/_dropdownlist.sass
index 9eeabb3..449538a 100644
--- a/frameworks/projects/Jewel/src/main/sass/components/_dropdownlist.sass
+++ b/frameworks/projects/Jewel/src/main/sass/components/_dropdownlist.sass
@@ -44,15 +44,13 @@ $dropdownlist-button-yoffset: calc(50% - 
#{$dropdownlist-button-size/2})
 
 j|DropDownList
     IBeadView: 
ClassReference("org.apache.royale.jewel.beads.views.DropDownListView")
-    // IBeadModel: 
ClassReference("org.apache.royale.jewel.beads.models.ArrayListSelectionModel")
     IBeadModel: 
ClassReference("org.apache.royale.jewel.beads.models.DropDownListModel")
     IDataProviderItemRendererMapper: 
ClassReference("org.apache.royale.jewel.beads.itemRenderers.DropDownListItemRendererFactoryForCollectionView")
     IItemRendererClassFactory: 
ClassReference("org.apache.royale.core.ItemRendererClassFactory")
+    IItemRendererInitializer: 
ClassReference("org.apache.royale.jewel.beads.itemRenderers.DropDownListItemRendererInitializer")
     IItemRenderer: 
ClassReference("org.apache.royale.jewel.itemRenderers.DropDownListItemRenderer")
     IBeadController: 
ClassReference("org.apache.royale.jewel.beads.controllers.DropDownListController")
 
-    // IDataProviderItemRendererMapper: 
ClassReference("org.apache.royale.html.beads.DataItemRendererFactoryForArrayData")
-
 @media -royale-swf     
     j|DropDownList
         IBeadModel: 
ClassReference("org.apache.royale.jewel.beads.models.ArrayListSelectionModel")

Reply via email to