You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@flex.apache.org by pi...@apache.org on 2017/08/23 21:53:38 UTC

[1/2] git commit: [flex-asjs] [refs/heads/develop] - FLEX-35354 - Add DynamicItemsRendererFactoryForArrayListData to allow add items dynamically to MDL Table - Bead can be used in other components - Update TabsItemRendererFactoryForArrayListData with new

Repository: flex-asjs
Updated Branches:
  refs/heads/develop 29bef6b10 -> 5b8f1c589


FLEX-35354 - Add DynamicItemsRendererFactoryForArrayListData to allow add items dynamically to MDL Table - Bead can be used in other components
- Update TabsItemRendererFactoryForArrayListData with new DynamicItemsRendererFactoryForArrayListData


Project: http://git-wip-us.apache.org/repos/asf/flex-asjs/repo
Commit: http://git-wip-us.apache.org/repos/asf/flex-asjs/commit/56e467a1
Tree: http://git-wip-us.apache.org/repos/asf/flex-asjs/tree/56e467a1
Diff: http://git-wip-us.apache.org/repos/asf/flex-asjs/diff/56e467a1

Branch: refs/heads/develop
Commit: 56e467a1db22e644c4917b9b012291b94e1f3054
Parents: 29bef6b
Author: piotrz <pi...@apache.org>
Authored: Wed Aug 23 23:43:48 2017 +0200
Committer: piotrz <pi...@apache.org>
Committed: Wed Aug 23 23:43:48 2017 +0200

----------------------------------------------------------------------
 .../Basic/src/main/flex/BasicClasses.as         |   1 +
 ...namicItemsRendererFactoryForArrayListData.as | 200 +++++++++++++++++++
 .../Basic/src/main/resources/basic-manifest.xml |   1 +
 3 files changed, 202 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/56e467a1/frameworks/projects/Basic/src/main/flex/BasicClasses.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/Basic/src/main/flex/BasicClasses.as b/frameworks/projects/Basic/src/main/flex/BasicClasses.as
index 539beaa..697efa8 100644
--- a/frameworks/projects/Basic/src/main/flex/BasicClasses.as
+++ b/frameworks/projects/Basic/src/main/flex/BasicClasses.as
@@ -158,6 +158,7 @@ internal class BasicClasses
 	import org.apache.flex.html.beads.layouts.TileLayout; TileLayout;
     import org.apache.flex.html.beads.TextItemRendererFactoryForArrayData; TextItemRendererFactoryForArrayData;
 	import org.apache.flex.html.beads.DataItemRendererFactoryForArrayData; DataItemRendererFactoryForArrayData;
+    import org.apache.flex.html.beads.DynamicItemsRendererFactoryForArrayListData; DynamicItemsRendererFactoryForArrayListData;
 	import org.apache.flex.html.beads.DataItemRendererFactoryForArrayList; DataItemRendererFactoryForArrayList;
 	import org.apache.flex.html.beads.DataItemRendererFactoryForHierarchicalData; DataItemRendererFactoryForHierarchicalData;
 	import org.apache.flex.html.supportClasses.DataGroup; DataGroup;

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/56e467a1/frameworks/projects/Basic/src/main/flex/org/apache/flex/html/beads/DynamicItemsRendererFactoryForArrayListData.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/Basic/src/main/flex/org/apache/flex/html/beads/DynamicItemsRendererFactoryForArrayListData.as b/frameworks/projects/Basic/src/main/flex/org/apache/flex/html/beads/DynamicItemsRendererFactoryForArrayListData.as
new file mode 100644
index 0000000..6ccd952
--- /dev/null
+++ b/frameworks/projects/Basic/src/main/flex/org/apache/flex/html/beads/DynamicItemsRendererFactoryForArrayListData.as
@@ -0,0 +1,200 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+//  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.flex.html.beads
+{
+    import org.apache.flex.collections.IArrayList;
+    import org.apache.flex.core.IBead;
+    import org.apache.flex.core.IDataProviderItemRendererMapper;
+    import org.apache.flex.core.IItemRendererClassFactory;
+    import org.apache.flex.core.IItemRendererParent;
+    import org.apache.flex.core.IListPresentationModel;
+    import org.apache.flex.core.IStrand;
+    import org.apache.flex.core.SimpleCSSStyles;
+    import org.apache.flex.core.UIBase;
+    import org.apache.flex.core.ValuesManager;
+    import org.apache.flex.events.CollectionEvent;
+
+    import org.apache.flex.events.EventDispatcher;
+    import org.apache.flex.events.IEventDispatcher;
+    import org.apache.flex.html.beads.IListView;
+    import org.apache.flex.events.Event;
+    import org.apache.flex.core.ISelectableItemRenderer;
+    import org.apache.flex.core.ISelectionModel;
+
+    [Event(name="itemRendererCreated",type="org.apache.flex.events.ItemRendererEvent")]
+
+    /**
+     *  The DynamicItemsRendererFactoryForArrayListData class reads an
+     *  array of data and creates an item renderer for every
+     *  ISelectableItemRenderer in the array.
+     *
+     *  @langversion 3.0
+     *  @playerversion Flash 10.2
+     *  @playerversion AIR 2.6
+     *  @productversion FlexJS 0.9
+     */
+    public class DynamicItemsRendererFactoryForArrayListData extends EventDispatcher implements IBead, IDataProviderItemRendererMapper
+    {
+        public function DynamicItemsRendererFactoryForArrayListData(target:Object = null)
+        {
+            super(target);
+        }
+
+        protected var dataProviderModel:ISelectionModel;
+
+        protected var labelField:String;
+
+        protected var _strand:IStrand;
+
+        /**
+         *  @copy org.apache.flex.core.IBead#strand
+         *
+         *  @langversion 3.0
+         *  @playerversion Flash 10.2
+         *  @playerversion AIR 2.6
+         *  @productversion FlexJS 0.8
+         */
+        public function set strand(value:IStrand):void
+        {
+            _strand = value;
+            IEventDispatcher(value).addEventListener("initComplete", initComplete);
+        }
+
+        /**
+         *  finish setup
+         *
+         *  @langversion 3.0
+         *  @playerversion Flash 10.2
+         *  @playerversion AIR 2.6
+         *  @productversion FlexJS 0.8
+         */
+        protected function initComplete(event:Event):void
+        {
+            IEventDispatcher(_strand).removeEventListener("initComplete", initComplete);
+
+            dataProviderModel = _strand.getBeadByType(ISelectionModel) as ISelectionModel;
+            var listView:IListView = _strand.getBeadByType(IListView) as IListView;
+            dataGroup = listView.dataGroup;
+            dataProviderModel.addEventListener("dataProviderChanged", dataProviderChangeHandler);
+            dataProviderModel.addEventListener(CollectionEvent.ITEM_ADDED, itemAddedHandler);
+
+            labelField = dataProviderModel.labelField;
+
+            dataProviderChangeHandler(null);
+        }
+
+        private var _itemRendererFactory:IItemRendererClassFactory;
+
+        /**
+         *  The org.apache.flex.core.IItemRendererClassFactory used
+         *  to generate instances of item renderers.
+         *
+         *  @langversion 3.0
+         *  @playerversion Flash 10.2
+         *  @playerversion AIR 2.6
+         *  @productversion FlexJS 0.8
+         */
+        public function get itemRendererFactory():IItemRendererClassFactory
+        {
+			if (_itemRendererFactory == null) {
+				var factory:IItemRendererClassFactory = _strand.getBeadByType(IItemRendererClassFactory) as IItemRendererClassFactory;
+				if (factory == null) {
+					factory = new (ValuesManager.valuesImpl.getValue(_strand, "iItemRendererClassFactory")) as IItemRendererClassFactory;
+					_strand.addBead(factory);
+				}
+				_itemRendererFactory = factory;
+			}
+            return _itemRendererFactory;
+        }
+
+        /**
+         *  @private
+         */
+        public function set itemRendererFactory(value:IItemRendererClassFactory):void
+        {
+            _itemRendererFactory = value;
+        }
+
+        /**
+         *  The org.apache.flex.core.IItemRendererParent that will
+         *  parent the item renderers.
+         *
+         *  @langversion 3.0
+         *  @playerversion Flash 10.2
+         *  @playerversion AIR 2.6
+         *  @productversion FlexJS 0.8
+         */
+        protected var dataGroup:IItemRendererParent;
+
+        protected function dataProviderChangeHandler(event:Event):void
+        {
+            var dp:IArrayList = dataProviderModel.dataProvider as IArrayList;
+            if (!dp)
+                return;
+
+            dataGroup.removeAllItemRenderers();
+
+            var presentationModel:IListPresentationModel = _strand.getBeadByType(IListPresentationModel) as IListPresentationModel;
+
+            var n:int = dp.length;
+            for (var i:int = 0; i < n; i++)
+            {
+                var ir:ISelectableItemRenderer = itemRendererFactory.createItemRenderer(dataGroup) as ISelectableItemRenderer;
+                var item:Object = dp.getItemAt(i);
+                fillRenderer(i, item, ir, presentationModel);
+            }
+
+            IEventDispatcher(_strand).dispatchEvent(new Event("itemsCreated"));
+        }
+
+        protected function itemAddedHandler(event:CollectionEvent):void
+        {
+            var dp:IArrayList = dataProviderModel.dataProvider as IArrayList;
+            if (!dp)
+                return;
+
+            var presentationModel:IListPresentationModel = _strand.getBeadByType(IListPresentationModel) as IListPresentationModel;
+            var ir:ISelectableItemRenderer = itemRendererFactory.createItemRenderer(dataGroup) as ISelectableItemRenderer;
+
+            fillRenderer(dp.length - 1, event.item, ir, presentationModel);
+
+            IEventDispatcher(_strand).dispatchEvent(new Event("itemsCreated"));
+        }
+
+        protected function fillRenderer(index:int,
+                                      item:Object,
+                                      itemRenderer:ISelectableItemRenderer,
+                                      presentationModel:IListPresentationModel):void
+        {
+            dataGroup.addItemRenderer(itemRenderer);
+
+            itemRenderer.index = 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;
+            }
+            itemRenderer.data = item;
+        }
+    }
+}

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/56e467a1/frameworks/projects/Basic/src/main/resources/basic-manifest.xml
----------------------------------------------------------------------
diff --git a/frameworks/projects/Basic/src/main/resources/basic-manifest.xml b/frameworks/projects/Basic/src/main/resources/basic-manifest.xml
index a07fc40..0ed5f4c 100644
--- a/frameworks/projects/Basic/src/main/resources/basic-manifest.xml
+++ b/frameworks/projects/Basic/src/main/resources/basic-manifest.xml
@@ -141,6 +141,7 @@
 
     <component id="DataItemRendererFactoryForArrayData" class="org.apache.flex.html.beads.DataItemRendererFactoryForArrayData" />
     <component id="DataItemRendererFactoryForArrayList" class="org.apache.flex.html.beads.DataItemRendererFactoryForArrayList" />
+    <component id="DynamicItemsRendererFactoryForArrayListData" class="org.apache.flex.html.beads.DynamicItemsRendererFactoryForArrayListData" />
     <component id="DataItemRendererFactoryForHierarchicalData" class="org.apache.flex.html.beads.DataItemRendererFactoryForHierarchicalData" />
     <component id="TextItemRendererFactoryForArrayData" class="org.apache.flex.html.beads.TextItemRendererFactoryForArrayData" />
     <component id="TextItemRendererFactoryForStringVectorData" class="org.apache.flex.html.beads.TextItemRendererFactoryForStringVectorData" />


Re: [2/2] git commit: [flex-asjs] [refs/heads/develop] - FLEX-35354 - Rename TabsItemRendererFactoryForArrayListData to TabsDynamicItemsRendererFactoryForArrayListData - Update TabsDynamicItemsRendererFactoryForArrayListData with new implementation of ...

Posted by Harbs <ha...@gmail.com>.
Is there a list of all these options somewhere? My understanding was that only “as” coercions are skipped and not function-style coercions. (or whatever it’s called)

My point is that multiple calls to Language.as is wasteful.

For example:

It might be a good idea to have a coercion in the strand setter to make sure that the Strand is an IEventDispatcher. However, once it’s set, there’s no reason to have further Language.as calls every time the _strand is accessed as an IEventDispatcher.

The same goes for multiple calls to UIBase() in the same function. In the case of UIBase, I don’t see how the result can be anything other than a UIBase considering it’s the factory creating it. If so, the Language.as call should probably be avoided completely.

> On Aug 27, 2017, at 8:33 AM, Alex Harui <ah...@adobe.com.INVALID> wrote:
> 
> I'm not sure I understand.  Why is this not what's needed?  Just because
> you are trying to get the compiler to not complain?  There is a
> skipFunctionCoercions option that turns off all calls to Language.is.  We
> don't have a directive per occurrence, but I suppose we could.
> 
> -Alex
> 
> On 8/26/17, 9:41 PM, "Harbs" <ha...@gmail.com> wrote:
> 
>> FYI:
>> 
>> The pattern of MyClass(myObject) will always produce JS code which calls
>> Language.as which throws an RTE if the object cannot be coerced as the
>> class. Using compiler options to ignore coercion has no effect on this
>> case.
>> 
>> Most of the time, this is not what’s needed.
>> 
>> Generally a better pattern is (myObject as MyClass). This will produce JS
>> code which calls Language.as unless coercion is ignored in which case the
>> cast is simply dropped and more efficient JS code is used.
>> 
>> There are a  number of casts to IEventDispatcher and UIBase which should
>> probably be redone.
>> 
>> Thanks,
>> Harbs
>> 
>>> On Aug 24, 2017, at 12:53 AM, piotrz@apache.org wrote:
>>> 
>>> FLEX-35354 - Rename TabsItemRendererFactoryForArrayListData  to
>>> TabsDynamicItemsRendererFactoryForArrayListData
>>> - Update TabsDynamicItemsRendererFactoryForArrayListData with new
>>> implementation of DynamicItemsRendererFactoryForArrayListData
>>> - Update example MDLDynamicTabsExample
>>> 
>>> 
>>> Project: 
>>> https://na01.safelinks.protection.outlook.com/?url=http%3A%2F%2Fgit-wip-u
>>> s.apache.org%2Frepos%2Fasf%2Fflex-asjs%2Frepo&data=02%7C01%7C%7C468a0ef52
>>> 6744f407ac408d4ed05e30c%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%7C6363
>>> 94056917929660&sdata=ywP24lHiNv9U2%2FYYts%2FExMJf3XjnY%2BUJZ%2FW5BekcEFo%
>>> 3D&reserved=0
>>> Commit: 
>>> https://na01.safelinks.protection.outlook.com/?url=http%3A%2F%2Fgit-wip-u
>>> s.apache.org%2Frepos%2Fasf%2Fflex-asjs%2Fcommit%2F5b8f1c58&data=02%7C01%7
>>> C%7C468a0ef526744f407ac408d4ed05e30c%7Cfa7b1b5a7b34438794aed2c178decee1%7
>>> C0%7C0%7C636394056917929660&sdata=yieFxBWlW9k%2ByWpzlHwaFRt71MWQAAbyh9uGm
>>> klciVQ%3D&reserved=0
>>> Tree: 
>>> https://na01.safelinks.protection.outlook.com/?url=http%3A%2F%2Fgit-wip-u
>>> s.apache.org%2Frepos%2Fasf%2Fflex-asjs%2Ftree%2F5b8f1c58&data=02%7C01%7C%
>>> 7C468a0ef526744f407ac408d4ed05e30c%7Cfa7b1b5a7b34438794aed2c178decee1%7C0
>>> %7C0%7C636394056917929660&sdata=lx5%2F2Bchvdta6%2B3GLNbsU1QxjOo3XVCU9w0Jb
>>> fhiGf0%3D&reserved=0
>>> Diff: 
>>> https://na01.safelinks.protection.outlook.com/?url=http%3A%2F%2Fgit-wip-u
>>> s.apache.org%2Frepos%2Fasf%2Fflex-asjs%2Fdiff%2F5b8f1c58&data=02%7C01%7C%
>>> 7C468a0ef526744f407ac408d4ed05e30c%7Cfa7b1b5a7b34438794aed2c178decee1%7C0
>>> %7C0%7C636394056917929660&sdata=8kjuuPIDmkRV77SkM8P3vTzOQw9eVM3wicCZ6deva
>>> Cg%3D&reserved=0
>>> 
>>> Branch: refs/heads/develop
>>> Commit: 5b8f1c5898c776eb7470e855073833e68e794a6d
>>> Parents: 56e467a
>>> Author: piotrz <pi...@apache.org>
>>> Authored: Wed Aug 23 23:53:09 2017 +0200
>>> Committer: piotrz <pi...@apache.org>
>>> Committed: Wed Aug 23 23:53:09 2017 +0200
>>> 
>>> ----------------------------------------------------------------------
>>> .../src/main/flex/views/InitialView.mxml        |  24 ++-
>>> .../src/main/resources/mdl-styles.css           |   2 +-
>>> .../src/main/flex/MDLClasses.as                 |   2 +-
>>> ...namicItemsRendererFactoryForArrayListData.as | 108 ++++++++++
>>> .../TabsItemRendererFactoryForArrayListData.as  | 206
>>> -------------------
>>> .../org/apache/flex/mdl/beads/views/TabsView.as |   6 +-
>>> .../src/main/resources/defaults.css             |   4 +-
>>> 7 files changed, 129 insertions(+), 223 deletions(-)
>>> ----------------------------------------------------------------------
>>> 
>>> 
>>> 
>>> https://na01.safelinks.protection.outlook.com/?url=http%3A%2F%2Fgit-wip-u
>>> s.apache.org%2Frepos%2Fasf%2Fflex-asjs%2Fblob%2F5b8f1c58%2Fexamples%2Ffle
>>> xjs%2FMDLDynamicTabsExample%2Fsrc%2Fmain%2Fflex%2Fviews%2FInitialView.mxm
>>> l&data=02%7C01%7C%7C468a0ef526744f407ac408d4ed05e30c%7Cfa7b1b5a7b34438794
>>> aed2c178decee1%7C0%7C0%7C636394056917929660&sdata=6UIGaZ%2FWGyCUrbpACPlAW
>>> bOsjRpPyTOXU%2FfYQ6pGe%2Fs%3D&reserved=0
>>> ----------------------------------------------------------------------
>>> diff --git 
>>> a/examples/flexjs/MDLDynamicTabsExample/src/main/flex/views/InitialView.m
>>> xml 
>>> b/examples/flexjs/MDLDynamicTabsExample/src/main/flex/views/InitialView.m
>>> xml
>>> index 5523b6f..1482982 100644
>>> --- 
>>> a/examples/flexjs/MDLDynamicTabsExample/src/main/flex/views/InitialView.m
>>> xml
>>> +++ 
>>> b/examples/flexjs/MDLDynamicTabsExample/src/main/flex/views/InitialView.m
>>> xml
>>> @@ -39,14 +39,18 @@ limitations under the License.
>>> 	<mdl:model>
>>> 		<models:TabsModel id="tabsModel"/>
>>> 	</mdl:model>
>>> -	<mdl:Tabs id="myTabs" selectedIndex="1" tabIdField="tabId"
>>> labelField="label" className="customTabs"
>>> -			  dataProvider="{tabsModel.tabs}" width="500">
>>> -		<mdl:beads>
>>> -			<js:DataProviderCollectionChangeNotifier sourceID="tabsModel"
>>> propertyName="tabs"
>>> -													 destinationPropertyName="dataProvider"
>>> changeEventName="dataProviderChanged"  />
>>> -			<js:DataProviderItemsChangeNotifier sourceID="tabsModel"
>>> propertyName="tabs"
>>> -												destinationPropertyName="dataProvider"
>>> changeEventName="dataProviderChanged"  />
>>> -		</mdl:beads>
>>> -	</mdl:Tabs>
>>> -	<mdl:Button text="Add new Tab" click="onAddNewTabClick(event)"/>
>>> +	<mdl:GridCell column="6">
>>> +		<mdl:Tabs id="myTabs" selectedIndex="1" tabIdField="tabId"
>>> labelField="label" className="customTabs"
>>> +				  dataProvider="{tabsModel.tabs}" width="500">
>>> +			<mdl:beads>
>>> +				<js:DataProviderCollectionChangeNotifier sourceID="tabsModel"
>>> propertyName="tabs"
>>> +														 destinationPropertyName="dataProvider"
>>> changeEventName="dataProviderChanged"  />
>>> +				<js:DataProviderItemsChangeNotifier sourceID="tabsModel"
>>> propertyName="tabs"
>>> +													destinationPropertyName="dataProvider"
>>> changeEventName="dataProviderChanged"  />
>>> +			</mdl:beads>
>>> +		</mdl:Tabs>
>>> +	</mdl:GridCell>
>>> +	<mdl:GridCell>
>>> +		<mdl:Button text="Add new Tab" click="onAddNewTabClick(event)"/>
>>> +	</mdl:GridCell>
>>> </mdl:Grid>
>>> \ No newline at end of file
>>> 
>>> 
>>> https://na01.safelinks.protection.outlook.com/?url=http%3A%2F%2Fgit-wip-u
>>> s.apache.org%2Frepos%2Fasf%2Fflex-asjs%2Fblob%2F5b8f1c58%2Fexamples%2Ffle
>>> xjs%2FMDLDynamicTabsExample%2Fsrc%2Fmain%2Fresources%2Fmdl-styles.css&dat
>>> a=02%7C01%7C%7C468a0ef526744f407ac408d4ed05e30c%7Cfa7b1b5a7b34438794aed2c
>>> 178decee1%7C0%7C0%7C636394056917929660&sdata=nEVi%2BuNLD%2Bo5kGBb7oLC3XmW
>>> gUYbuPO7RD3S919OZdA%3D&reserved=0
>>> ----------------------------------------------------------------------
>>> diff --git 
>>> a/examples/flexjs/MDLDynamicTabsExample/src/main/resources/mdl-styles.css
>>> 
>>> b/examples/flexjs/MDLDynamicTabsExample/src/main/resources/mdl-styles.css
>>> index 8d52a54..e713389 100644
>>> --- 
>>> a/examples/flexjs/MDLDynamicTabsExample/src/main/resources/mdl-styles.css
>>> +++ 
>>> b/examples/flexjs/MDLDynamicTabsExample/src/main/resources/mdl-styles.css
>>> @@ -27,5 +27,5 @@
>>> {
>>>  IItemRenderer:
>>> ClassReference("itemRenderers.CustomTabBarPanelItemRenderer");
>>>  IBeadModel: 
>>> ClassReference("org.apache.flex.mdl.beads.models.TabArrayListModel");
>>> -  IDataProviderItemRendererMapper:
>>> ClassReference("org.apache.flex.mdl.beads.TabsItemRendererFactoryForArray
>>> ListData");
>>> +  IDataProviderItemRendererMapper:
>>> ClassReference("org.apache.flex.mdl.beads.TabsDynamicItemsRendererFactory
>>> ForArrayListData");
>>> }
>>> \ No newline at end of file
>>> 
>>> 
>>> https://na01.safelinks.protection.outlook.com/?url=http%3A%2F%2Fgit-wip-u
>>> s.apache.org%2Frepos%2Fasf%2Fflex-asjs%2Fblob%2F5b8f1c58%2Fframeworks%2Fp
>>> rojects%2FMaterialDesignLite%2Fsrc%2Fmain%2Fflex%2FMDLClasses.as&data=02%
>>> 7C01%7C%7C468a0ef526744f407ac408d4ed05e30c%7Cfa7b1b5a7b34438794aed2c178de
>>> cee1%7C0%7C0%7C636394056917929660&sdata=RMYR%2BVdF6xwn%2FTckqgg2cLec5J8nm
>>> N9rXekVroqa7lc%3D&reserved=0
>>> ----------------------------------------------------------------------
>>> diff --git 
>>> a/frameworks/projects/MaterialDesignLite/src/main/flex/MDLClasses.as
>>> b/frameworks/projects/MaterialDesignLite/src/main/flex/MDLClasses.as
>>> index d9ac1ac..00ffe9d 100644
>>> --- a/frameworks/projects/MaterialDesignLite/src/main/flex/MDLClasses.as
>>> +++ b/frameworks/projects/MaterialDesignLite/src/main/flex/MDLClasses.as
>>> @@ -28,7 +28,7 @@ package
>>> 	internal class MDLClasses
>>> 	{
>>> 		import org.apache.flex.mdl.beads.TabsItemRendererFactoryForArrayData;
>>> TabsItemRendererFactoryForArrayData;
>>> -		import 
>>> org.apache.flex.mdl.beads.TabsItemRendererFactoryForArrayListData;
>>> TabsItemRendererFactoryForArrayListData;
>>> +		import 
>>> org.apache.flex.mdl.beads.TabsDynamicItemsRendererFactoryForArrayListData
>>> ; TabsDynamicItemsRendererFactoryForArrayListData;
>>> 		import org.apache.flex.mdl.beads.models.TabArrayModel; TabArrayModel;
>>> 		import org.apache.flex.mdl.beads.models.TabArrayListModel;
>>> TabArrayListModel;
>>> 		import org.apache.flex.mdl.beads.models.ToastModel; ToastModel;
>>> 
>>> 
>>> https://na01.safelinks.protection.outlook.com/?url=http%3A%2F%2Fgit-wip-u
>>> s.apache.org%2Frepos%2Fasf%2Fflex-asjs%2Fblob%2F5b8f1c58%2Fframeworks%2Fp
>>> rojects%2FMaterialDesignLite%2Fsrc%2Fmain%2Fflex%2Forg%2Fapache%2Fflex%2F
>>> mdl%2Fbeads%2FTabsDynamicItemsRendererFactoryForArrayListData.as&data=02%
>>> 7C01%7C%7C468a0ef526744f407ac408d4ed05e30c%7Cfa7b1b5a7b34438794aed2c178de
>>> cee1%7C0%7C0%7C636394056917929660&sdata=%2BapbeLMt3Jv2PIDUOvAjWptKCMWp%2B
>>> mTKXx06sbZMn80%3D&reserved=0
>>> ----------------------------------------------------------------------
>>> diff --git 
>>> a/frameworks/projects/MaterialDesignLite/src/main/flex/org/apache/flex/md
>>> l/beads/TabsDynamicItemsRendererFactoryForArrayListData.as
>>> b/frameworks/projects/MaterialDesignLite/src/main/flex/org/apache/flex/md
>>> l/beads/TabsDynamicItemsRendererFactoryForArrayListData.as
>>> new file mode 100644
>>> index 0000000..371f79b
>>> --- /dev/null
>>> +++ 
>>> b/frameworks/projects/MaterialDesignLite/src/main/flex/org/apache/flex/md
>>> l/beads/TabsDynamicItemsRendererFactoryForArrayListData.as
>>> @@ -0,0 +1,108 @@
>>> 
>>> +////////////////////////////////////////////////////////////////////////
>>> ////////
>>> +//
>>> +//  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
>>> +//
>>> +//      
>>> https://na01.safelinks.protection.outlook.com/?url=http%3A%2F%2Fwww.apach
>>> e.org%2Flicenses%2FLICENSE-2.0&data=02%7C01%7C%7C468a0ef526744f407ac408d4
>>> ed05e30c%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%7C636394056917929660&
>>> sdata=eby%2BNBek4IgNDs2RDn%2F%2F4Gf62h70N7cAe0zfQbmRRqY%3D&reserved=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.flex.mdl.beads
>>> +{
>>> +    import org.apache.flex.collections.IArrayList;
>>> +    import org.apache.flex.core.IListPresentationModel;
>>> +    import org.apache.flex.events.CollectionEvent;
>>> +
>>> +    import org.apache.flex.events.IEventDispatcher;
>>> +    import 
>>> org.apache.flex.html.beads.DynamicItemsRendererFactoryForArrayListData;
>>> +    import org.apache.flex.mdl.beads.models.ITabModel;
>>> +    import org.apache.flex.mdl.supportClasses.ITabItemRenderer;
>>> +    import org.apache.flex.events.Event;
>>> +
>>> +    
>>> [Event(name="itemRendererCreated",type="org.apache.flex.events.ItemRender
>>> erEvent")]
>>> +
>>> +    /**
>>> +     *  The TabsDynamicItemsRendererFactoryForArrayListData class
>>> reads an
>>> +     *  array of data and creates an item renderer for every
>>> +     *  ITabItemRenderer in the array.
>>> +     *
>>> +     *  @langversion 3.0
>>> +     *  @playerversion Flash 10.2
>>> +     *  @playerversion AIR 2.6
>>> +     *  @productversion FlexJS 0.8
>>> +     */
>>> +    public class TabsDynamicItemsRendererFactoryForArrayListData
>>> extends DynamicItemsRendererFactoryForArrayListData
>>> +    {
>>> +        public function
>>> TabsDynamicItemsRendererFactoryForArrayListData(target:Object = null)
>>> +        {
>>> +            super(target);
>>> +        }
>>> +
>>> +        protected var tabsIdField:String;
>>> +
>>> +        /**
>>> +         *  finish setup
>>> +         *
>>> +         *  @langversion 3.0
>>> +         *  @playerversion Flash 10.2
>>> +         *  @playerversion AIR 2.6
>>> +         *  @productversion FlexJS 0.8
>>> +         */
>>> +        override protected function initComplete(event:Event):void
>>> +        {
>>> +            var model:ITabModel = _strand.getBeadByType(ITabModel) as
>>> ITabModel;
>>> +            tabsIdField = model.tabIdField;
>>> +
>>> +            super.initComplete(event);
>>> +        }
>>> +
>>> +        override protected function
>>> dataProviderChangeHandler(event:Event):void
>>> +        {
>>> +            var dp:IArrayList = dataProviderModel.dataProvider as
>>> IArrayList;
>>> +            if (!dp)
>>> +                return;
>>> +
>>> +            dataGroup.removeAllItemRenderers();
>>> +
>>> +            var presentationModel:IListPresentationModel =
>>> _strand.getBeadByType(IListPresentationModel) as IListPresentationModel;
>>> +
>>> +            var n:int = dp.length;
>>> +            for (var i:int = 0; i < n; i++)
>>> +            {
>>> +                var ir:ITabItemRenderer =
>>> itemRendererFactory.createItemRenderer(dataGroup) as ITabItemRenderer;
>>> +                ir.tabIdField = tabsIdField;
>>> +
>>> +                var item:Object = dp.getItemAt(i);
>>> +                fillRenderer(i, item, ir, presentationModel);
>>> +            }
>>> +
>>> +            IEventDispatcher(_strand).dispatchEvent(new
>>> Event("itemsCreated"));
>>> +        }
>>> +
>>> +        override protected function
>>> itemAddedHandler(event:CollectionEvent):void
>>> +        {
>>> +            var dp:IArrayList = dataProviderModel.dataProvider as
>>> IArrayList;
>>> +            if (!dp)
>>> +                return;
>>> +
>>> +            var presentationModel:IListPresentationModel =
>>> _strand.getBeadByType(IListPresentationModel) as IListPresentationModel;
>>> +
>>> +            var ir:ITabItemRenderer =
>>> itemRendererFactory.createItemRenderer(dataGroup) as ITabItemRenderer;
>>> +            ir.tabIdField = tabsIdField;
>>> +
>>> +            var index:int = dp.length - 1;
>>> +            fillRenderer(index, event.item, ir, presentationModel);
>>> +
>>> +            IEventDispatcher(_strand).dispatchEvent(new
>>> Event("itemsCreated"));
>>> +        }
>>> +    }
>>> +}
>>> 
>>> 
>>> https://na01.safelinks.protection.outlook.com/?url=http%3A%2F%2Fgit-wip-u
>>> s.apache.org%2Frepos%2Fasf%2Fflex-asjs%2Fblob%2F5b8f1c58%2Fframeworks%2Fp
>>> rojects%2FMaterialDesignLite%2Fsrc%2Fmain%2Fflex%2Forg%2Fapache%2Fflex%2F
>>> mdl%2Fbeads%2FTabsItemRendererFactoryForArrayListData.as&data=02%7C01%7C%
>>> 7C468a0ef526744f407ac408d4ed05e30c%7Cfa7b1b5a7b34438794aed2c178decee1%7C0
>>> %7C0%7C636394056917929660&sdata=ed9O6dzBKiMa5HKK7MQuoOfOuyFksehYMp3ZokvwH
>>> vc%3D&reserved=0
>>> ----------------------------------------------------------------------
>>> diff --git 
>>> a/frameworks/projects/MaterialDesignLite/src/main/flex/org/apache/flex/md
>>> l/beads/TabsItemRendererFactoryForArrayListData.as
>>> b/frameworks/projects/MaterialDesignLite/src/main/flex/org/apache/flex/md
>>> l/beads/TabsItemRendererFactoryForArrayListData.as
>>> deleted file mode 100644
>>> index c323332..0000000
>>> --- 
>>> a/frameworks/projects/MaterialDesignLite/src/main/flex/org/apache/flex/md
>>> l/beads/TabsItemRendererFactoryForArrayListData.as
>>> +++ /dev/null
>>> @@ -1,206 +0,0 @@
>>> 
>>> -////////////////////////////////////////////////////////////////////////
>>> ////////
>>> -//
>>> -//  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
>>> -//
>>> -//      
>>> https://na01.safelinks.protection.outlook.com/?url=http%3A%2F%2Fwww.apach
>>> e.org%2Flicenses%2FLICENSE-2.0&data=02%7C01%7C%7C468a0ef526744f407ac408d4
>>> ed05e30c%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%7C636394056917929660&
>>> sdata=eby%2BNBek4IgNDs2RDn%2F%2F4Gf62h70N7cAe0zfQbmRRqY%3D&reserved=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.flex.mdl.beads
>>> -{
>>> -    import org.apache.flex.collections.IArrayList;
>>> -    import org.apache.flex.core.IBead;
>>> -    import org.apache.flex.core.IDataProviderItemRendererMapper;
>>> -    import org.apache.flex.core.IItemRendererClassFactory;
>>> -    import org.apache.flex.core.IItemRendererParent;
>>> -    import org.apache.flex.core.IListPresentationModel;
>>> -    import org.apache.flex.core.IStrand;
>>> -    import org.apache.flex.core.SimpleCSSStyles;
>>> -    import org.apache.flex.core.UIBase;
>>> -    import org.apache.flex.core.ValuesManager;
>>> -    import org.apache.flex.events.CollectionEvent;
>>> -
>>> -    import org.apache.flex.events.EventDispatcher;
>>> -    import org.apache.flex.events.IEventDispatcher;
>>> -    import org.apache.flex.html.beads.IListView;
>>> -    import org.apache.flex.mdl.beads.models.ITabModel;
>>> -    import org.apache.flex.mdl.supportClasses.ITabItemRenderer;
>>> -    import org.apache.flex.events.Event;
>>> -
>>> -    
>>> [Event(name="itemRendererCreated",type="org.apache.flex.events.ItemRender
>>> erEvent")]
>>> -
>>> -    /**
>>> -     *  The TabsItemRendererFactoryForArrayListData class reads an
>>> -     *  array of data and creates an item renderer for every
>>> -     *  ITabItemRenderer in the array.
>>> -     *
>>> -     *  @langversion 3.0
>>> -     *  @playerversion Flash 10.2
>>> -     *  @playerversion AIR 2.6
>>> -     *  @productversion FlexJS 0.8
>>> -     */
>>> -    public class TabsItemRendererFactoryForArrayListData extends
>>> EventDispatcher implements IBead, IDataProviderItemRendererMapper
>>> -    {
>>> -        public function
>>> TabsItemRendererFactoryForArrayListData(target:Object = null)
>>> -        {
>>> -            super(target);
>>> -        }
>>> -
>>> -        protected var dataProviderModel:ITabModel;
>>> -
>>> -        protected var labelField:String;
>>> -        protected var tabsIdField:String;
>>> -
>>> -        private var _strand:IStrand;
>>> -
>>> -        /**
>>> -         *  @copy org.apache.flex.core.IBead#strand
>>> -         *
>>> -         *  @langversion 3.0
>>> -         *  @playerversion Flash 10.2
>>> -         *  @playerversion AIR 2.6
>>> -         *  @productversion FlexJS 0.8
>>> -         */
>>> -        public function set strand(value:IStrand):void
>>> -        {
>>> -            _strand = value;
>>> -            
>>> IEventDispatcher(value).addEventListener("initComplete",finishSetup);
>>> -        }
>>> -
>>> -        /**
>>> -         *  finish setup
>>> -         *
>>> -         *  @langversion 3.0
>>> -         *  @playerversion Flash 10.2
>>> -         *  @playerversion AIR 2.6
>>> -         *  @productversion FlexJS 0.8
>>> -         */
>>> -        private function finishSetup(event:Event):void
>>> -        {
>>> -            
>>> IEventDispatcher(_strand).removeEventListener("initComplete",finishSetup)
>>> ;
>>> -
>>> -            dataProviderModel = _strand.getBeadByType(ITabModel) as
>>> ITabModel;
>>> -            var listView:IListView = _strand.getBeadByType(IListView)
>>> as IListView;
>>> -            dataGroup = listView.dataGroup;
>>> -            dataProviderModel.addEventListener("dataProviderChanged",
>>> dataProviderChangeHandler);
>>> -            
>>> dataProviderModel.addEventListener(CollectionEvent.ITEM_ADDED,
>>> itemAddedHandler);
>>> -
>>> -            tabsIdField = dataProviderModel.tabIdField;
>>> -            labelField = dataProviderModel.labelField;
>>> -
>>> -            dataProviderChangeHandler(null);
>>> -        }
>>> -
>>> -        private var _itemRendererFactory:IItemRendererClassFactory;
>>> -
>>> -        /**
>>> -         *  The org.apache.flex.core.IItemRendererClassFactory used
>>> -         *  to generate instances of item renderers.
>>> -         *
>>> -         *  @langversion 3.0
>>> -         *  @playerversion Flash 10.2
>>> -         *  @playerversion AIR 2.6
>>> -         *  @productversion FlexJS 0.8
>>> -         */
>>> -        public function get
>>> itemRendererFactory():IItemRendererClassFactory
>>> -        {
>>> -			if (_itemRendererFactory == null) {
>>> -				var factory:IItemRendererClassFactory =
>>> _strand.getBeadByType(IItemRendererClassFactory) as
>>> IItemRendererClassFactory;
>>> -				if (factory == null) {
>>> -					factory = new (ValuesManager.valuesImpl.getValue(_strand,
>>> "iItemRendererClassFactory")) as IItemRendererClassFactory;
>>> -					_strand.addBead(factory);
>>> -				}
>>> -				_itemRendererFactory = factory;
>>> -			}
>>> -            return _itemRendererFactory;
>>> -        }
>>> -
>>> -        /**
>>> -         *  @private
>>> -         */
>>> -        public function set
>>> itemRendererFactory(value:IItemRendererClassFactory):void
>>> -        {
>>> -            _itemRendererFactory = value;
>>> -        }
>>> -
>>> -        /**
>>> -         *  The org.apache.flex.core.IItemRendererParent that will
>>> -         *  parent the item renderers.
>>> -         *
>>> -         *  @langversion 3.0
>>> -         *  @playerversion Flash 10.2
>>> -         *  @playerversion AIR 2.6
>>> -         *  @productversion FlexJS 0.8
>>> -         */
>>> -        protected var dataGroup:IItemRendererParent;
>>> -
>>> -        protected function dataProviderChangeHandler(event:Event):void
>>> -        {
>>> -            var dp:IArrayList = dataProviderModel.dataProvider as
>>> IArrayList;
>>> -            if (!dp)
>>> -                return;
>>> -
>>> -            dataGroup.removeAllItemRenderers();
>>> -
>>> -            var presentationModel:IListPresentationModel =
>>> _strand.getBeadByType(IListPresentationModel) as IListPresentationModel;
>>> -
>>> -            var n:int = dp.length;
>>> -            for (var i:int = 0; i < n; i++)
>>> -            {
>>> -                var ir:ITabItemRenderer =
>>> itemRendererFactory.createItemRenderer(dataGroup) as ITabItemRenderer;
>>> -                dataGroup.addItemRenderer(ir);
>>> -                ir.index = i;
>>> -                ir.labelField = labelField;
>>> -                ir.tabIdField = tabsIdField;
>>> -
>>> -                if (presentationModel) {
>>> -                    var style:SimpleCSSStyles = new SimpleCSSStyles();
>>> -                    style.marginBottom =
>>> presentationModel.separatorThickness;
>>> -                    UIBase(ir).style = style;
>>> -                    UIBase(ir).height = presentationModel.rowHeight;
>>> -                    UIBase(ir).percentWidth = 100;
>>> -                }
>>> -                ir.data = dp.getItemAt(i);
>>> -            }
>>> -
>>> -            IEventDispatcher(_strand).dispatchEvent(new
>>> Event("itemsCreated"));
>>> -        }
>>> -
>>> -        private function itemAddedHandler(event:CollectionEvent):void
>>> -        {
>>> -            var dp:IArrayList = dataProviderModel.dataProvider as
>>> IArrayList;
>>> -            if (!dp)
>>> -                return;
>>> -
>>> -            var presentationModel:IListPresentationModel =
>>> _strand.getBeadByType(IListPresentationModel) as IListPresentationModel;
>>> -
>>> -            var ir:ITabItemRenderer =
>>> itemRendererFactory.createItemRenderer(dataGroup) as ITabItemRenderer;
>>> -            dataGroup.addItemRenderer(ir);
>>> -            
>>> -            ir.index = dp.length - 1;
>>> -            ir.labelField = labelField;
>>> -            ir.tabIdField = tabsIdField;
>>> -
>>> -            if (presentationModel) {
>>> -                var style:SimpleCSSStyles = new SimpleCSSStyles();
>>> -                style.marginBottom =
>>> presentationModel.separatorThickness;
>>> -                UIBase(ir).style = style;
>>> -                UIBase(ir).height = presentationModel.rowHeight;
>>> -                UIBase(ir).percentWidth = 100;
>>> -            }
>>> -            ir.data = event.item;
>>> -
>>> -            IEventDispatcher(_strand).dispatchEvent(new
>>> Event("itemsCreated"));
>>> -        }
>>> -    }
>>> -}
>>> 
>>> 
>>> https://na01.safelinks.protection.outlook.com/?url=http%3A%2F%2Fgit-wip-u
>>> s.apache.org%2Frepos%2Fasf%2Fflex-asjs%2Fblob%2F5b8f1c58%2Fframeworks%2Fp
>>> rojects%2FMaterialDesignLite%2Fsrc%2Fmain%2Fflex%2Forg%2Fapache%2Fflex%2F
>>> mdl%2Fbeads%2Fviews%2FTabsView.as&data=02%7C01%7C%7C468a0ef526744f407ac40
>>> 8d4ed05e30c%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%7C6363940569179296
>>> 60&sdata=664hX%2BBKf1rJvAy0khpJSiCJk4fe9hkbkvYCzVf6iTA%3D&reserved=0
>>> ----------------------------------------------------------------------
>>> diff --git 
>>> a/frameworks/projects/MaterialDesignLite/src/main/flex/org/apache/flex/md
>>> l/beads/views/TabsView.as
>>> b/frameworks/projects/MaterialDesignLite/src/main/flex/org/apache/flex/md
>>> l/beads/views/TabsView.as
>>> index ffe291a..34c09f2 100644
>>> --- 
>>> a/frameworks/projects/MaterialDesignLite/src/main/flex/org/apache/flex/md
>>> l/beads/views/TabsView.as
>>> +++ 
>>> b/frameworks/projects/MaterialDesignLite/src/main/flex/org/apache/flex/md
>>> l/beads/views/TabsView.as
>>> @@ -26,7 +26,7 @@ package org.apache.flex.mdl.beads.views
>>>    import org.apache.flex.core.IStrand;
>>>    import org.apache.flex.mdl.TabBar;
>>>    import org.apache.flex.mdl.TabBarPanel;
>>> -    import 
>>> org.apache.flex.mdl.beads.TabsItemRendererFactoryForArrayListData;
>>> +    import 
>>> org.apache.flex.mdl.beads.TabsDynamicItemsRendererFactoryForArrayListData
>>> ;
>>>    import org.apache.flex.mdl.supportClasses.ITabItemRenderer;
>>> 
>>>    /**
>>> @@ -166,8 +166,8 @@ package org.apache.flex.mdl.beads.views
>>> 
>>>        public function isTabsDynamic():Boolean
>>>        {
>>> -            var
>>> arrayListMapper:TabsItemRendererFactoryForArrayListData =
>>> -               
>>> _strand.getBeadByType(IDataProviderItemRendererMapper) as
>>> TabsItemRendererFactoryForArrayListData;
>>> +            var
>>> arrayListMapper:TabsDynamicItemsRendererFactoryForArrayListData =
>>> +               
>>> _strand.getBeadByType(IDataProviderItemRendererMapper) as
>>> TabsDynamicItemsRendererFactoryForArrayListData;
>>>            return arrayListMapper != null;
>>>        }
>>>    }
>>> 
>>> 
>>> https://na01.safelinks.protection.outlook.com/?url=http%3A%2F%2Fgit-wip-u
>>> s.apache.org%2Frepos%2Fasf%2Fflex-asjs%2Fblob%2F5b8f1c58%2Fframeworks%2Fp
>>> rojects%2FMaterialDesignLite%2Fsrc%2Fmain%2Fresources%2Fdefaults.css&data
>>> =02%7C01%7C%7C468a0ef526744f407ac408d4ed05e30c%7Cfa7b1b5a7b34438794aed2c1
>>> 78decee1%7C0%7C0%7C636394056917929660&sdata=yM%2Bu3tP0EamD3bb7vDTMQqkqNqv
>>> W4LrFU8c3JJ0jocY%3D&reserved=0
>>> ----------------------------------------------------------------------
>>> diff --git 
>>> a/frameworks/projects/MaterialDesignLite/src/main/resources/defaults.css
>>> b/frameworks/projects/MaterialDesignLite/src/main/resources/defaults.css
>>> index f8b3b05..9e5ece7 100644
>>> --- 
>>> a/frameworks/projects/MaterialDesignLite/src/main/resources/defaults.css
>>> +++ 
>>> b/frameworks/projects/MaterialDesignLite/src/main/resources/defaults.css
>>> @@ -122,7 +122,7 @@ Tabs
>>>    IBeadView: 
>>> ClassReference("org.apache.flex.mdl.beads.views.TabsView");
>>>    IBeadModel: 
>>> ClassReference("org.apache.flex.mdl.beads.models.TabArrayModel");
>>>    IBeadLayout: ClassReference(null);
>>> -    IDataProviderItemRendererMapper:
>>> ClassReference("org.apache.flex.mdl.beads.TabsItemRendererFactoryForArray
>>> ListData");
>>> +    IDataProviderItemRendererMapper:
>>> ClassReference("org.apache.flex.mdl.beads.TabsDynamicItemsRendererFactory
>>> ForArrayListData");
>>>    IItemRendererClassFactory:
>>> ClassReference("org.apache.flex.core.ItemRendererClassFactory");
>>>    IItemRenderer:
>>> ClassReference("org.apache.flex.mdl.itemRenderers.TabBarPanelItemRenderer
>>> ");
>>> }
>>> @@ -132,7 +132,7 @@ TabBar
>>>    IBeadView: 
>>> ClassReference("org.apache.flex.mdl.beads.views.TabBarView");
>>>    IBeadModel: 
>>> ClassReference("org.apache.flex.mdl.beads.models.TabArrayModel");
>>>    IBeadLayout: ClassReference(null);
>>> -    IDataProviderItemRendererMapper:
>>> ClassReference("org.apache.flex.mdl.beads.TabsItemRendererFactoryForArray
>>> ListData");
>>> +    IDataProviderItemRendererMapper:
>>> ClassReference("org.apache.flex.mdl.beads.TabsDynamicItemsRendererFactory
>>> ForArrayListData");
>>>    IItemRendererClassFactory:
>>> ClassReference("org.apache.flex.core.ItemRendererClassFactory");
>>>    IItemRenderer:
>>> ClassReference("org.apache.flex.mdl.itemRenderers.TabBarButtonTabsItemRen
>>> derer");
>>> }
>>> 
>> 
> 


Re: [2/2] git commit: [flex-asjs] [refs/heads/develop] - FLEX-35354 - Rename TabsItemRendererFactoryForArrayListData to TabsDynamicItemsRendererFactoryForArrayListData - Update TabsDynamicItemsRendererFactoryForArrayListData with new implementation of ...

Posted by Alex Harui <ah...@adobe.com.INVALID>.
I'm not sure I understand.  Why is this not what's needed?  Just because
you are trying to get the compiler to not complain?  There is a
skipFunctionCoercions option that turns off all calls to Language.is.  We
don't have a directive per occurrence, but I suppose we could.

-Alex

On 8/26/17, 9:41 PM, "Harbs" <ha...@gmail.com> wrote:

>FYI:
>
>The pattern of MyClass(myObject) will always produce JS code which calls
>Language.as which throws an RTE if the object cannot be coerced as the
>class. Using compiler options to ignore coercion has no effect on this
>case.
>
>Most of the time, this is not what’s needed.
>
>Generally a better pattern is (myObject as MyClass). This will produce JS
>code which calls Language.as unless coercion is ignored in which case the
>cast is simply dropped and more efficient JS code is used.
>
>There are a  number of casts to IEventDispatcher and UIBase which should
>probably be redone.
>
>Thanks,
>Harbs
>
>> On Aug 24, 2017, at 12:53 AM, piotrz@apache.org wrote:
>> 
>> FLEX-35354 - Rename TabsItemRendererFactoryForArrayListData  to
>>TabsDynamicItemsRendererFactoryForArrayListData
>> - Update TabsDynamicItemsRendererFactoryForArrayListData with new
>>implementation of DynamicItemsRendererFactoryForArrayListData
>> - Update example MDLDynamicTabsExample
>> 
>> 
>> Project: 
>>https://na01.safelinks.protection.outlook.com/?url=http%3A%2F%2Fgit-wip-u
>>s.apache.org%2Frepos%2Fasf%2Fflex-asjs%2Frepo&data=02%7C01%7C%7C468a0ef52
>>6744f407ac408d4ed05e30c%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%7C6363
>>94056917929660&sdata=ywP24lHiNv9U2%2FYYts%2FExMJf3XjnY%2BUJZ%2FW5BekcEFo%
>>3D&reserved=0
>> Commit: 
>>https://na01.safelinks.protection.outlook.com/?url=http%3A%2F%2Fgit-wip-u
>>s.apache.org%2Frepos%2Fasf%2Fflex-asjs%2Fcommit%2F5b8f1c58&data=02%7C01%7
>>C%7C468a0ef526744f407ac408d4ed05e30c%7Cfa7b1b5a7b34438794aed2c178decee1%7
>>C0%7C0%7C636394056917929660&sdata=yieFxBWlW9k%2ByWpzlHwaFRt71MWQAAbyh9uGm
>>klciVQ%3D&reserved=0
>> Tree: 
>>https://na01.safelinks.protection.outlook.com/?url=http%3A%2F%2Fgit-wip-u
>>s.apache.org%2Frepos%2Fasf%2Fflex-asjs%2Ftree%2F5b8f1c58&data=02%7C01%7C%
>>7C468a0ef526744f407ac408d4ed05e30c%7Cfa7b1b5a7b34438794aed2c178decee1%7C0
>>%7C0%7C636394056917929660&sdata=lx5%2F2Bchvdta6%2B3GLNbsU1QxjOo3XVCU9w0Jb
>>fhiGf0%3D&reserved=0
>> Diff: 
>>https://na01.safelinks.protection.outlook.com/?url=http%3A%2F%2Fgit-wip-u
>>s.apache.org%2Frepos%2Fasf%2Fflex-asjs%2Fdiff%2F5b8f1c58&data=02%7C01%7C%
>>7C468a0ef526744f407ac408d4ed05e30c%7Cfa7b1b5a7b34438794aed2c178decee1%7C0
>>%7C0%7C636394056917929660&sdata=8kjuuPIDmkRV77SkM8P3vTzOQw9eVM3wicCZ6deva
>>Cg%3D&reserved=0
>> 
>> Branch: refs/heads/develop
>> Commit: 5b8f1c5898c776eb7470e855073833e68e794a6d
>> Parents: 56e467a
>> Author: piotrz <pi...@apache.org>
>> Authored: Wed Aug 23 23:53:09 2017 +0200
>> Committer: piotrz <pi...@apache.org>
>> Committed: Wed Aug 23 23:53:09 2017 +0200
>> 
>> ----------------------------------------------------------------------
>> .../src/main/flex/views/InitialView.mxml        |  24 ++-
>> .../src/main/resources/mdl-styles.css           |   2 +-
>> .../src/main/flex/MDLClasses.as                 |   2 +-
>> ...namicItemsRendererFactoryForArrayListData.as | 108 ++++++++++
>> .../TabsItemRendererFactoryForArrayListData.as  | 206
>>-------------------
>> .../org/apache/flex/mdl/beads/views/TabsView.as |   6 +-
>> .../src/main/resources/defaults.css             |   4 +-
>> 7 files changed, 129 insertions(+), 223 deletions(-)
>> ----------------------------------------------------------------------
>> 
>> 
>> 
>>https://na01.safelinks.protection.outlook.com/?url=http%3A%2F%2Fgit-wip-u
>>s.apache.org%2Frepos%2Fasf%2Fflex-asjs%2Fblob%2F5b8f1c58%2Fexamples%2Ffle
>>xjs%2FMDLDynamicTabsExample%2Fsrc%2Fmain%2Fflex%2Fviews%2FInitialView.mxm
>>l&data=02%7C01%7C%7C468a0ef526744f407ac408d4ed05e30c%7Cfa7b1b5a7b34438794
>>aed2c178decee1%7C0%7C0%7C636394056917929660&sdata=6UIGaZ%2FWGyCUrbpACPlAW
>>bOsjRpPyTOXU%2FfYQ6pGe%2Fs%3D&reserved=0
>> ----------------------------------------------------------------------
>> diff --git 
>>a/examples/flexjs/MDLDynamicTabsExample/src/main/flex/views/InitialView.m
>>xml 
>>b/examples/flexjs/MDLDynamicTabsExample/src/main/flex/views/InitialView.m
>>xml
>> index 5523b6f..1482982 100644
>> --- 
>>a/examples/flexjs/MDLDynamicTabsExample/src/main/flex/views/InitialView.m
>>xml
>> +++ 
>>b/examples/flexjs/MDLDynamicTabsExample/src/main/flex/views/InitialView.m
>>xml
>> @@ -39,14 +39,18 @@ limitations under the License.
>> 	<mdl:model>
>> 		<models:TabsModel id="tabsModel"/>
>> 	</mdl:model>
>> -	<mdl:Tabs id="myTabs" selectedIndex="1" tabIdField="tabId"
>>labelField="label" className="customTabs"
>> -			  dataProvider="{tabsModel.tabs}" width="500">
>> -		<mdl:beads>
>> -			<js:DataProviderCollectionChangeNotifier sourceID="tabsModel"
>>propertyName="tabs"
>> -													 destinationPropertyName="dataProvider"
>>changeEventName="dataProviderChanged"  />
>> -			<js:DataProviderItemsChangeNotifier sourceID="tabsModel"
>>propertyName="tabs"
>> -												destinationPropertyName="dataProvider"
>>changeEventName="dataProviderChanged"  />
>> -		</mdl:beads>
>> -	</mdl:Tabs>
>> -	<mdl:Button text="Add new Tab" click="onAddNewTabClick(event)"/>
>> +	<mdl:GridCell column="6">
>> +		<mdl:Tabs id="myTabs" selectedIndex="1" tabIdField="tabId"
>>labelField="label" className="customTabs"
>> +				  dataProvider="{tabsModel.tabs}" width="500">
>> +			<mdl:beads>
>> +				<js:DataProviderCollectionChangeNotifier sourceID="tabsModel"
>>propertyName="tabs"
>> +														 destinationPropertyName="dataProvider"
>>changeEventName="dataProviderChanged"  />
>> +				<js:DataProviderItemsChangeNotifier sourceID="tabsModel"
>>propertyName="tabs"
>> +													destinationPropertyName="dataProvider"
>>changeEventName="dataProviderChanged"  />
>> +			</mdl:beads>
>> +		</mdl:Tabs>
>> +	</mdl:GridCell>
>> +	<mdl:GridCell>
>> +		<mdl:Button text="Add new Tab" click="onAddNewTabClick(event)"/>
>> +	</mdl:GridCell>
>> </mdl:Grid>
>> \ No newline at end of file
>> 
>> 
>>https://na01.safelinks.protection.outlook.com/?url=http%3A%2F%2Fgit-wip-u
>>s.apache.org%2Frepos%2Fasf%2Fflex-asjs%2Fblob%2F5b8f1c58%2Fexamples%2Ffle
>>xjs%2FMDLDynamicTabsExample%2Fsrc%2Fmain%2Fresources%2Fmdl-styles.css&dat
>>a=02%7C01%7C%7C468a0ef526744f407ac408d4ed05e30c%7Cfa7b1b5a7b34438794aed2c
>>178decee1%7C0%7C0%7C636394056917929660&sdata=nEVi%2BuNLD%2Bo5kGBb7oLC3XmW
>>gUYbuPO7RD3S919OZdA%3D&reserved=0
>> ----------------------------------------------------------------------
>> diff --git 
>>a/examples/flexjs/MDLDynamicTabsExample/src/main/resources/mdl-styles.css
>> 
>>b/examples/flexjs/MDLDynamicTabsExample/src/main/resources/mdl-styles.css
>> index 8d52a54..e713389 100644
>> --- 
>>a/examples/flexjs/MDLDynamicTabsExample/src/main/resources/mdl-styles.css
>> +++ 
>>b/examples/flexjs/MDLDynamicTabsExample/src/main/resources/mdl-styles.css
>> @@ -27,5 +27,5 @@
>> {
>>   IItemRenderer:
>>ClassReference("itemRenderers.CustomTabBarPanelItemRenderer");
>>   IBeadModel: 
>>ClassReference("org.apache.flex.mdl.beads.models.TabArrayListModel");
>> -  IDataProviderItemRendererMapper:
>>ClassReference("org.apache.flex.mdl.beads.TabsItemRendererFactoryForArray
>>ListData");
>> +  IDataProviderItemRendererMapper:
>>ClassReference("org.apache.flex.mdl.beads.TabsDynamicItemsRendererFactory
>>ForArrayListData");
>> }
>> \ No newline at end of file
>> 
>> 
>>https://na01.safelinks.protection.outlook.com/?url=http%3A%2F%2Fgit-wip-u
>>s.apache.org%2Frepos%2Fasf%2Fflex-asjs%2Fblob%2F5b8f1c58%2Fframeworks%2Fp
>>rojects%2FMaterialDesignLite%2Fsrc%2Fmain%2Fflex%2FMDLClasses.as&data=02%
>>7C01%7C%7C468a0ef526744f407ac408d4ed05e30c%7Cfa7b1b5a7b34438794aed2c178de
>>cee1%7C0%7C0%7C636394056917929660&sdata=RMYR%2BVdF6xwn%2FTckqgg2cLec5J8nm
>>N9rXekVroqa7lc%3D&reserved=0
>> ----------------------------------------------------------------------
>> diff --git 
>>a/frameworks/projects/MaterialDesignLite/src/main/flex/MDLClasses.as
>>b/frameworks/projects/MaterialDesignLite/src/main/flex/MDLClasses.as
>> index d9ac1ac..00ffe9d 100644
>> --- a/frameworks/projects/MaterialDesignLite/src/main/flex/MDLClasses.as
>> +++ b/frameworks/projects/MaterialDesignLite/src/main/flex/MDLClasses.as
>> @@ -28,7 +28,7 @@ package
>> 	internal class MDLClasses
>> 	{
>> 		import org.apache.flex.mdl.beads.TabsItemRendererFactoryForArrayData;
>>TabsItemRendererFactoryForArrayData;
>> -		import 
>>org.apache.flex.mdl.beads.TabsItemRendererFactoryForArrayListData;
>>TabsItemRendererFactoryForArrayListData;
>> +		import 
>>org.apache.flex.mdl.beads.TabsDynamicItemsRendererFactoryForArrayListData
>>; TabsDynamicItemsRendererFactoryForArrayListData;
>> 		import org.apache.flex.mdl.beads.models.TabArrayModel; TabArrayModel;
>> 		import org.apache.flex.mdl.beads.models.TabArrayListModel;
>>TabArrayListModel;
>> 		import org.apache.flex.mdl.beads.models.ToastModel; ToastModel;
>> 
>> 
>>https://na01.safelinks.protection.outlook.com/?url=http%3A%2F%2Fgit-wip-u
>>s.apache.org%2Frepos%2Fasf%2Fflex-asjs%2Fblob%2F5b8f1c58%2Fframeworks%2Fp
>>rojects%2FMaterialDesignLite%2Fsrc%2Fmain%2Fflex%2Forg%2Fapache%2Fflex%2F
>>mdl%2Fbeads%2FTabsDynamicItemsRendererFactoryForArrayListData.as&data=02%
>>7C01%7C%7C468a0ef526744f407ac408d4ed05e30c%7Cfa7b1b5a7b34438794aed2c178de
>>cee1%7C0%7C0%7C636394056917929660&sdata=%2BapbeLMt3Jv2PIDUOvAjWptKCMWp%2B
>>mTKXx06sbZMn80%3D&reserved=0
>> ----------------------------------------------------------------------
>> diff --git 
>>a/frameworks/projects/MaterialDesignLite/src/main/flex/org/apache/flex/md
>>l/beads/TabsDynamicItemsRendererFactoryForArrayListData.as
>>b/frameworks/projects/MaterialDesignLite/src/main/flex/org/apache/flex/md
>>l/beads/TabsDynamicItemsRendererFactoryForArrayListData.as
>> new file mode 100644
>> index 0000000..371f79b
>> --- /dev/null
>> +++ 
>>b/frameworks/projects/MaterialDesignLite/src/main/flex/org/apache/flex/md
>>l/beads/TabsDynamicItemsRendererFactoryForArrayListData.as
>> @@ -0,0 +1,108 @@
>> 
>>+////////////////////////////////////////////////////////////////////////
>>////////
>> +//
>> +//  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
>> +//
>> +//      
>>https://na01.safelinks.protection.outlook.com/?url=http%3A%2F%2Fwww.apach
>>e.org%2Flicenses%2FLICENSE-2.0&data=02%7C01%7C%7C468a0ef526744f407ac408d4
>>ed05e30c%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%7C636394056917929660&
>>sdata=eby%2BNBek4IgNDs2RDn%2F%2F4Gf62h70N7cAe0zfQbmRRqY%3D&reserved=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.flex.mdl.beads
>> +{
>> +    import org.apache.flex.collections.IArrayList;
>> +    import org.apache.flex.core.IListPresentationModel;
>> +    import org.apache.flex.events.CollectionEvent;
>> +
>> +    import org.apache.flex.events.IEventDispatcher;
>> +    import 
>>org.apache.flex.html.beads.DynamicItemsRendererFactoryForArrayListData;
>> +    import org.apache.flex.mdl.beads.models.ITabModel;
>> +    import org.apache.flex.mdl.supportClasses.ITabItemRenderer;
>> +    import org.apache.flex.events.Event;
>> +
>> +    
>>[Event(name="itemRendererCreated",type="org.apache.flex.events.ItemRender
>>erEvent")]
>> +
>> +    /**
>> +     *  The TabsDynamicItemsRendererFactoryForArrayListData class
>>reads an
>> +     *  array of data and creates an item renderer for every
>> +     *  ITabItemRenderer in the array.
>> +     *
>> +     *  @langversion 3.0
>> +     *  @playerversion Flash 10.2
>> +     *  @playerversion AIR 2.6
>> +     *  @productversion FlexJS 0.8
>> +     */
>> +    public class TabsDynamicItemsRendererFactoryForArrayListData
>>extends DynamicItemsRendererFactoryForArrayListData
>> +    {
>> +        public function
>>TabsDynamicItemsRendererFactoryForArrayListData(target:Object = null)
>> +        {
>> +            super(target);
>> +        }
>> +
>> +        protected var tabsIdField:String;
>> +
>> +        /**
>> +         *  finish setup
>> +         *
>> +         *  @langversion 3.0
>> +         *  @playerversion Flash 10.2
>> +         *  @playerversion AIR 2.6
>> +         *  @productversion FlexJS 0.8
>> +         */
>> +        override protected function initComplete(event:Event):void
>> +        {
>> +            var model:ITabModel = _strand.getBeadByType(ITabModel) as
>>ITabModel;
>> +            tabsIdField = model.tabIdField;
>> +
>> +            super.initComplete(event);
>> +        }
>> +
>> +        override protected function
>>dataProviderChangeHandler(event:Event):void
>> +        {
>> +            var dp:IArrayList = dataProviderModel.dataProvider as
>>IArrayList;
>> +            if (!dp)
>> +                return;
>> +
>> +            dataGroup.removeAllItemRenderers();
>> +
>> +            var presentationModel:IListPresentationModel =
>>_strand.getBeadByType(IListPresentationModel) as IListPresentationModel;
>> +
>> +            var n:int = dp.length;
>> +            for (var i:int = 0; i < n; i++)
>> +            {
>> +                var ir:ITabItemRenderer =
>>itemRendererFactory.createItemRenderer(dataGroup) as ITabItemRenderer;
>> +                ir.tabIdField = tabsIdField;
>> +
>> +                var item:Object = dp.getItemAt(i);
>> +                fillRenderer(i, item, ir, presentationModel);
>> +            }
>> +
>> +            IEventDispatcher(_strand).dispatchEvent(new
>>Event("itemsCreated"));
>> +        }
>> +
>> +        override protected function
>>itemAddedHandler(event:CollectionEvent):void
>> +        {
>> +            var dp:IArrayList = dataProviderModel.dataProvider as
>>IArrayList;
>> +            if (!dp)
>> +                return;
>> +
>> +            var presentationModel:IListPresentationModel =
>>_strand.getBeadByType(IListPresentationModel) as IListPresentationModel;
>> +
>> +            var ir:ITabItemRenderer =
>>itemRendererFactory.createItemRenderer(dataGroup) as ITabItemRenderer;
>> +            ir.tabIdField = tabsIdField;
>> +
>> +            var index:int = dp.length - 1;
>> +            fillRenderer(index, event.item, ir, presentationModel);
>> +
>> +            IEventDispatcher(_strand).dispatchEvent(new
>>Event("itemsCreated"));
>> +        }
>> +    }
>> +}
>> 
>> 
>>https://na01.safelinks.protection.outlook.com/?url=http%3A%2F%2Fgit-wip-u
>>s.apache.org%2Frepos%2Fasf%2Fflex-asjs%2Fblob%2F5b8f1c58%2Fframeworks%2Fp
>>rojects%2FMaterialDesignLite%2Fsrc%2Fmain%2Fflex%2Forg%2Fapache%2Fflex%2F
>>mdl%2Fbeads%2FTabsItemRendererFactoryForArrayListData.as&data=02%7C01%7C%
>>7C468a0ef526744f407ac408d4ed05e30c%7Cfa7b1b5a7b34438794aed2c178decee1%7C0
>>%7C0%7C636394056917929660&sdata=ed9O6dzBKiMa5HKK7MQuoOfOuyFksehYMp3ZokvwH
>>vc%3D&reserved=0
>> ----------------------------------------------------------------------
>> diff --git 
>>a/frameworks/projects/MaterialDesignLite/src/main/flex/org/apache/flex/md
>>l/beads/TabsItemRendererFactoryForArrayListData.as
>>b/frameworks/projects/MaterialDesignLite/src/main/flex/org/apache/flex/md
>>l/beads/TabsItemRendererFactoryForArrayListData.as
>> deleted file mode 100644
>> index c323332..0000000
>> --- 
>>a/frameworks/projects/MaterialDesignLite/src/main/flex/org/apache/flex/md
>>l/beads/TabsItemRendererFactoryForArrayListData.as
>> +++ /dev/null
>> @@ -1,206 +0,0 @@
>> 
>>-////////////////////////////////////////////////////////////////////////
>>////////
>> -//
>> -//  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
>> -//
>> -//      
>>https://na01.safelinks.protection.outlook.com/?url=http%3A%2F%2Fwww.apach
>>e.org%2Flicenses%2FLICENSE-2.0&data=02%7C01%7C%7C468a0ef526744f407ac408d4
>>ed05e30c%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%7C636394056917929660&
>>sdata=eby%2BNBek4IgNDs2RDn%2F%2F4Gf62h70N7cAe0zfQbmRRqY%3D&reserved=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.flex.mdl.beads
>> -{
>> -    import org.apache.flex.collections.IArrayList;
>> -    import org.apache.flex.core.IBead;
>> -    import org.apache.flex.core.IDataProviderItemRendererMapper;
>> -    import org.apache.flex.core.IItemRendererClassFactory;
>> -    import org.apache.flex.core.IItemRendererParent;
>> -    import org.apache.flex.core.IListPresentationModel;
>> -    import org.apache.flex.core.IStrand;
>> -    import org.apache.flex.core.SimpleCSSStyles;
>> -    import org.apache.flex.core.UIBase;
>> -    import org.apache.flex.core.ValuesManager;
>> -    import org.apache.flex.events.CollectionEvent;
>> -
>> -    import org.apache.flex.events.EventDispatcher;
>> -    import org.apache.flex.events.IEventDispatcher;
>> -    import org.apache.flex.html.beads.IListView;
>> -    import org.apache.flex.mdl.beads.models.ITabModel;
>> -    import org.apache.flex.mdl.supportClasses.ITabItemRenderer;
>> -    import org.apache.flex.events.Event;
>> -
>> -    
>>[Event(name="itemRendererCreated",type="org.apache.flex.events.ItemRender
>>erEvent")]
>> -
>> -    /**
>> -     *  The TabsItemRendererFactoryForArrayListData class reads an
>> -     *  array of data and creates an item renderer for every
>> -     *  ITabItemRenderer in the array.
>> -     *
>> -     *  @langversion 3.0
>> -     *  @playerversion Flash 10.2
>> -     *  @playerversion AIR 2.6
>> -     *  @productversion FlexJS 0.8
>> -     */
>> -    public class TabsItemRendererFactoryForArrayListData extends
>>EventDispatcher implements IBead, IDataProviderItemRendererMapper
>> -    {
>> -        public function
>>TabsItemRendererFactoryForArrayListData(target:Object = null)
>> -        {
>> -            super(target);
>> -        }
>> -
>> -        protected var dataProviderModel:ITabModel;
>> -
>> -        protected var labelField:String;
>> -        protected var tabsIdField:String;
>> -
>> -        private var _strand:IStrand;
>> -
>> -        /**
>> -         *  @copy org.apache.flex.core.IBead#strand
>> -         *
>> -         *  @langversion 3.0
>> -         *  @playerversion Flash 10.2
>> -         *  @playerversion AIR 2.6
>> -         *  @productversion FlexJS 0.8
>> -         */
>> -        public function set strand(value:IStrand):void
>> -        {
>> -            _strand = value;
>> -            
>>IEventDispatcher(value).addEventListener("initComplete",finishSetup);
>> -        }
>> -
>> -        /**
>> -         *  finish setup
>> -         *
>> -         *  @langversion 3.0
>> -         *  @playerversion Flash 10.2
>> -         *  @playerversion AIR 2.6
>> -         *  @productversion FlexJS 0.8
>> -         */
>> -        private function finishSetup(event:Event):void
>> -        {
>> -            
>>IEventDispatcher(_strand).removeEventListener("initComplete",finishSetup)
>>;
>> -
>> -            dataProviderModel = _strand.getBeadByType(ITabModel) as
>>ITabModel;
>> -            var listView:IListView = _strand.getBeadByType(IListView)
>>as IListView;
>> -            dataGroup = listView.dataGroup;
>> -            dataProviderModel.addEventListener("dataProviderChanged",
>>dataProviderChangeHandler);
>> -            
>>dataProviderModel.addEventListener(CollectionEvent.ITEM_ADDED,
>>itemAddedHandler);
>> -
>> -            tabsIdField = dataProviderModel.tabIdField;
>> -            labelField = dataProviderModel.labelField;
>> -
>> -            dataProviderChangeHandler(null);
>> -        }
>> -
>> -        private var _itemRendererFactory:IItemRendererClassFactory;
>> -
>> -        /**
>> -         *  The org.apache.flex.core.IItemRendererClassFactory used
>> -         *  to generate instances of item renderers.
>> -         *
>> -         *  @langversion 3.0
>> -         *  @playerversion Flash 10.2
>> -         *  @playerversion AIR 2.6
>> -         *  @productversion FlexJS 0.8
>> -         */
>> -        public function get
>>itemRendererFactory():IItemRendererClassFactory
>> -        {
>> -			if (_itemRendererFactory == null) {
>> -				var factory:IItemRendererClassFactory =
>>_strand.getBeadByType(IItemRendererClassFactory) as
>>IItemRendererClassFactory;
>> -				if (factory == null) {
>> -					factory = new (ValuesManager.valuesImpl.getValue(_strand,
>>"iItemRendererClassFactory")) as IItemRendererClassFactory;
>> -					_strand.addBead(factory);
>> -				}
>> -				_itemRendererFactory = factory;
>> -			}
>> -            return _itemRendererFactory;
>> -        }
>> -
>> -        /**
>> -         *  @private
>> -         */
>> -        public function set
>>itemRendererFactory(value:IItemRendererClassFactory):void
>> -        {
>> -            _itemRendererFactory = value;
>> -        }
>> -
>> -        /**
>> -         *  The org.apache.flex.core.IItemRendererParent that will
>> -         *  parent the item renderers.
>> -         *
>> -         *  @langversion 3.0
>> -         *  @playerversion Flash 10.2
>> -         *  @playerversion AIR 2.6
>> -         *  @productversion FlexJS 0.8
>> -         */
>> -        protected var dataGroup:IItemRendererParent;
>> -
>> -        protected function dataProviderChangeHandler(event:Event):void
>> -        {
>> -            var dp:IArrayList = dataProviderModel.dataProvider as
>>IArrayList;
>> -            if (!dp)
>> -                return;
>> -
>> -            dataGroup.removeAllItemRenderers();
>> -
>> -            var presentationModel:IListPresentationModel =
>>_strand.getBeadByType(IListPresentationModel) as IListPresentationModel;
>> -
>> -            var n:int = dp.length;
>> -            for (var i:int = 0; i < n; i++)
>> -            {
>> -                var ir:ITabItemRenderer =
>>itemRendererFactory.createItemRenderer(dataGroup) as ITabItemRenderer;
>> -                dataGroup.addItemRenderer(ir);
>> -                ir.index = i;
>> -                ir.labelField = labelField;
>> -                ir.tabIdField = tabsIdField;
>> -
>> -                if (presentationModel) {
>> -                    var style:SimpleCSSStyles = new SimpleCSSStyles();
>> -                    style.marginBottom =
>>presentationModel.separatorThickness;
>> -                    UIBase(ir).style = style;
>> -                    UIBase(ir).height = presentationModel.rowHeight;
>> -                    UIBase(ir).percentWidth = 100;
>> -                }
>> -                ir.data = dp.getItemAt(i);
>> -            }
>> -
>> -            IEventDispatcher(_strand).dispatchEvent(new
>>Event("itemsCreated"));
>> -        }
>> -
>> -        private function itemAddedHandler(event:CollectionEvent):void
>> -        {
>> -            var dp:IArrayList = dataProviderModel.dataProvider as
>>IArrayList;
>> -            if (!dp)
>> -                return;
>> -
>> -            var presentationModel:IListPresentationModel =
>>_strand.getBeadByType(IListPresentationModel) as IListPresentationModel;
>> -
>> -            var ir:ITabItemRenderer =
>>itemRendererFactory.createItemRenderer(dataGroup) as ITabItemRenderer;
>> -            dataGroup.addItemRenderer(ir);
>> -            
>> -            ir.index = dp.length - 1;
>> -            ir.labelField = labelField;
>> -            ir.tabIdField = tabsIdField;
>> -
>> -            if (presentationModel) {
>> -                var style:SimpleCSSStyles = new SimpleCSSStyles();
>> -                style.marginBottom =
>>presentationModel.separatorThickness;
>> -                UIBase(ir).style = style;
>> -                UIBase(ir).height = presentationModel.rowHeight;
>> -                UIBase(ir).percentWidth = 100;
>> -            }
>> -            ir.data = event.item;
>> -
>> -            IEventDispatcher(_strand).dispatchEvent(new
>>Event("itemsCreated"));
>> -        }
>> -    }
>> -}
>> 
>> 
>>https://na01.safelinks.protection.outlook.com/?url=http%3A%2F%2Fgit-wip-u
>>s.apache.org%2Frepos%2Fasf%2Fflex-asjs%2Fblob%2F5b8f1c58%2Fframeworks%2Fp
>>rojects%2FMaterialDesignLite%2Fsrc%2Fmain%2Fflex%2Forg%2Fapache%2Fflex%2F
>>mdl%2Fbeads%2Fviews%2FTabsView.as&data=02%7C01%7C%7C468a0ef526744f407ac40
>>8d4ed05e30c%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%7C6363940569179296
>>60&sdata=664hX%2BBKf1rJvAy0khpJSiCJk4fe9hkbkvYCzVf6iTA%3D&reserved=0
>> ----------------------------------------------------------------------
>> diff --git 
>>a/frameworks/projects/MaterialDesignLite/src/main/flex/org/apache/flex/md
>>l/beads/views/TabsView.as
>>b/frameworks/projects/MaterialDesignLite/src/main/flex/org/apache/flex/md
>>l/beads/views/TabsView.as
>> index ffe291a..34c09f2 100644
>> --- 
>>a/frameworks/projects/MaterialDesignLite/src/main/flex/org/apache/flex/md
>>l/beads/views/TabsView.as
>> +++ 
>>b/frameworks/projects/MaterialDesignLite/src/main/flex/org/apache/flex/md
>>l/beads/views/TabsView.as
>> @@ -26,7 +26,7 @@ package org.apache.flex.mdl.beads.views
>>     import org.apache.flex.core.IStrand;
>>     import org.apache.flex.mdl.TabBar;
>>     import org.apache.flex.mdl.TabBarPanel;
>> -    import 
>>org.apache.flex.mdl.beads.TabsItemRendererFactoryForArrayListData;
>> +    import 
>>org.apache.flex.mdl.beads.TabsDynamicItemsRendererFactoryForArrayListData
>>;
>>     import org.apache.flex.mdl.supportClasses.ITabItemRenderer;
>> 
>>     /**
>> @@ -166,8 +166,8 @@ package org.apache.flex.mdl.beads.views
>> 
>>         public function isTabsDynamic():Boolean
>>         {
>> -            var
>>arrayListMapper:TabsItemRendererFactoryForArrayListData =
>> -               
>>_strand.getBeadByType(IDataProviderItemRendererMapper) as
>>TabsItemRendererFactoryForArrayListData;
>> +            var
>>arrayListMapper:TabsDynamicItemsRendererFactoryForArrayListData =
>> +               
>>_strand.getBeadByType(IDataProviderItemRendererMapper) as
>>TabsDynamicItemsRendererFactoryForArrayListData;
>>             return arrayListMapper != null;
>>         }
>>     }
>> 
>> 
>>https://na01.safelinks.protection.outlook.com/?url=http%3A%2F%2Fgit-wip-u
>>s.apache.org%2Frepos%2Fasf%2Fflex-asjs%2Fblob%2F5b8f1c58%2Fframeworks%2Fp
>>rojects%2FMaterialDesignLite%2Fsrc%2Fmain%2Fresources%2Fdefaults.css&data
>>=02%7C01%7C%7C468a0ef526744f407ac408d4ed05e30c%7Cfa7b1b5a7b34438794aed2c1
>>78decee1%7C0%7C0%7C636394056917929660&sdata=yM%2Bu3tP0EamD3bb7vDTMQqkqNqv
>>W4LrFU8c3JJ0jocY%3D&reserved=0
>> ----------------------------------------------------------------------
>> diff --git 
>>a/frameworks/projects/MaterialDesignLite/src/main/resources/defaults.css
>>b/frameworks/projects/MaterialDesignLite/src/main/resources/defaults.css
>> index f8b3b05..9e5ece7 100644
>> --- 
>>a/frameworks/projects/MaterialDesignLite/src/main/resources/defaults.css
>> +++ 
>>b/frameworks/projects/MaterialDesignLite/src/main/resources/defaults.css
>> @@ -122,7 +122,7 @@ Tabs
>>     IBeadView: 
>>ClassReference("org.apache.flex.mdl.beads.views.TabsView");
>>     IBeadModel: 
>>ClassReference("org.apache.flex.mdl.beads.models.TabArrayModel");
>>     IBeadLayout: ClassReference(null);
>> -    IDataProviderItemRendererMapper:
>>ClassReference("org.apache.flex.mdl.beads.TabsItemRendererFactoryForArray
>>ListData");
>> +    IDataProviderItemRendererMapper:
>>ClassReference("org.apache.flex.mdl.beads.TabsDynamicItemsRendererFactory
>>ForArrayListData");
>>     IItemRendererClassFactory:
>>ClassReference("org.apache.flex.core.ItemRendererClassFactory");
>>     IItemRenderer:
>>ClassReference("org.apache.flex.mdl.itemRenderers.TabBarPanelItemRenderer
>>");
>> }
>> @@ -132,7 +132,7 @@ TabBar
>>     IBeadView: 
>>ClassReference("org.apache.flex.mdl.beads.views.TabBarView");
>>     IBeadModel: 
>>ClassReference("org.apache.flex.mdl.beads.models.TabArrayModel");
>>     IBeadLayout: ClassReference(null);
>> -    IDataProviderItemRendererMapper:
>>ClassReference("org.apache.flex.mdl.beads.TabsItemRendererFactoryForArray
>>ListData");
>> +    IDataProviderItemRendererMapper:
>>ClassReference("org.apache.flex.mdl.beads.TabsDynamicItemsRendererFactory
>>ForArrayListData");
>>     IItemRendererClassFactory:
>>ClassReference("org.apache.flex.core.ItemRendererClassFactory");
>>     IItemRenderer:
>>ClassReference("org.apache.flex.mdl.itemRenderers.TabBarButtonTabsItemRen
>>derer");
>> }
>> 
>


Re: [2/2] git commit: [flex-asjs] [refs/heads/develop] - FLEX-35354 - Rename TabsItemRendererFactoryForArrayListData to TabsDynamicItemsRendererFactoryForArrayListData - Update TabsDynamicItemsRendererFactoryForArrayListData with new implementation of Dynam

Posted by Harbs <ha...@gmail.com>.
FYI:

The pattern of MyClass(myObject) will always produce JS code which calls Language.as which throws an RTE if the object cannot be coerced as the class. Using compiler options to ignore coercion has no effect on this case.

Most of the time, this is not what’s needed.

Generally a better pattern is (myObject as MyClass). This will produce JS code which calls Language.as unless coercion is ignored in which case the cast is simply dropped and more efficient JS code is used.

There are a  number of casts to IEventDispatcher and UIBase which should probably be redone.

Thanks,
Harbs

> On Aug 24, 2017, at 12:53 AM, piotrz@apache.org wrote:
> 
> FLEX-35354 - Rename TabsItemRendererFactoryForArrayListData  to TabsDynamicItemsRendererFactoryForArrayListData
> - Update TabsDynamicItemsRendererFactoryForArrayListData with new implementation of DynamicItemsRendererFactoryForArrayListData
> - Update example MDLDynamicTabsExample
> 
> 
> Project: http://git-wip-us.apache.org/repos/asf/flex-asjs/repo
> Commit: http://git-wip-us.apache.org/repos/asf/flex-asjs/commit/5b8f1c58
> Tree: http://git-wip-us.apache.org/repos/asf/flex-asjs/tree/5b8f1c58
> Diff: http://git-wip-us.apache.org/repos/asf/flex-asjs/diff/5b8f1c58
> 
> Branch: refs/heads/develop
> Commit: 5b8f1c5898c776eb7470e855073833e68e794a6d
> Parents: 56e467a
> Author: piotrz <pi...@apache.org>
> Authored: Wed Aug 23 23:53:09 2017 +0200
> Committer: piotrz <pi...@apache.org>
> Committed: Wed Aug 23 23:53:09 2017 +0200
> 
> ----------------------------------------------------------------------
> .../src/main/flex/views/InitialView.mxml        |  24 ++-
> .../src/main/resources/mdl-styles.css           |   2 +-
> .../src/main/flex/MDLClasses.as                 |   2 +-
> ...namicItemsRendererFactoryForArrayListData.as | 108 ++++++++++
> .../TabsItemRendererFactoryForArrayListData.as  | 206 -------------------
> .../org/apache/flex/mdl/beads/views/TabsView.as |   6 +-
> .../src/main/resources/defaults.css             |   4 +-
> 7 files changed, 129 insertions(+), 223 deletions(-)
> ----------------------------------------------------------------------
> 
> 
> http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/5b8f1c58/examples/flexjs/MDLDynamicTabsExample/src/main/flex/views/InitialView.mxml
> ----------------------------------------------------------------------
> diff --git a/examples/flexjs/MDLDynamicTabsExample/src/main/flex/views/InitialView.mxml b/examples/flexjs/MDLDynamicTabsExample/src/main/flex/views/InitialView.mxml
> index 5523b6f..1482982 100644
> --- a/examples/flexjs/MDLDynamicTabsExample/src/main/flex/views/InitialView.mxml
> +++ b/examples/flexjs/MDLDynamicTabsExample/src/main/flex/views/InitialView.mxml
> @@ -39,14 +39,18 @@ limitations under the License.
> 	<mdl:model>
> 		<models:TabsModel id="tabsModel"/>
> 	</mdl:model>
> -	<mdl:Tabs id="myTabs" selectedIndex="1" tabIdField="tabId" labelField="label" className="customTabs"
> -			  dataProvider="{tabsModel.tabs}" width="500">
> -		<mdl:beads>
> -			<js:DataProviderCollectionChangeNotifier sourceID="tabsModel" propertyName="tabs"
> -													 destinationPropertyName="dataProvider" changeEventName="dataProviderChanged"  />
> -			<js:DataProviderItemsChangeNotifier sourceID="tabsModel" propertyName="tabs"
> -												destinationPropertyName="dataProvider" changeEventName="dataProviderChanged"  />
> -		</mdl:beads>
> -	</mdl:Tabs>
> -	<mdl:Button text="Add new Tab" click="onAddNewTabClick(event)"/>
> +	<mdl:GridCell column="6">
> +		<mdl:Tabs id="myTabs" selectedIndex="1" tabIdField="tabId" labelField="label" className="customTabs"
> +				  dataProvider="{tabsModel.tabs}" width="500">
> +			<mdl:beads>
> +				<js:DataProviderCollectionChangeNotifier sourceID="tabsModel" propertyName="tabs"
> +														 destinationPropertyName="dataProvider" changeEventName="dataProviderChanged"  />
> +				<js:DataProviderItemsChangeNotifier sourceID="tabsModel" propertyName="tabs"
> +													destinationPropertyName="dataProvider" changeEventName="dataProviderChanged"  />
> +			</mdl:beads>
> +		</mdl:Tabs>
> +	</mdl:GridCell>
> +	<mdl:GridCell>
> +		<mdl:Button text="Add new Tab" click="onAddNewTabClick(event)"/>
> +	</mdl:GridCell>
> </mdl:Grid>
> \ No newline at end of file
> 
> http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/5b8f1c58/examples/flexjs/MDLDynamicTabsExample/src/main/resources/mdl-styles.css
> ----------------------------------------------------------------------
> diff --git a/examples/flexjs/MDLDynamicTabsExample/src/main/resources/mdl-styles.css b/examples/flexjs/MDLDynamicTabsExample/src/main/resources/mdl-styles.css
> index 8d52a54..e713389 100644
> --- a/examples/flexjs/MDLDynamicTabsExample/src/main/resources/mdl-styles.css
> +++ b/examples/flexjs/MDLDynamicTabsExample/src/main/resources/mdl-styles.css
> @@ -27,5 +27,5 @@
> {
>   IItemRenderer: ClassReference("itemRenderers.CustomTabBarPanelItemRenderer");
>   IBeadModel: ClassReference("org.apache.flex.mdl.beads.models.TabArrayListModel");
> -  IDataProviderItemRendererMapper: ClassReference("org.apache.flex.mdl.beads.TabsItemRendererFactoryForArrayListData");
> +  IDataProviderItemRendererMapper: ClassReference("org.apache.flex.mdl.beads.TabsDynamicItemsRendererFactoryForArrayListData");
> }
> \ No newline at end of file
> 
> http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/5b8f1c58/frameworks/projects/MaterialDesignLite/src/main/flex/MDLClasses.as
> ----------------------------------------------------------------------
> diff --git a/frameworks/projects/MaterialDesignLite/src/main/flex/MDLClasses.as b/frameworks/projects/MaterialDesignLite/src/main/flex/MDLClasses.as
> index d9ac1ac..00ffe9d 100644
> --- a/frameworks/projects/MaterialDesignLite/src/main/flex/MDLClasses.as
> +++ b/frameworks/projects/MaterialDesignLite/src/main/flex/MDLClasses.as
> @@ -28,7 +28,7 @@ package
> 	internal class MDLClasses
> 	{
> 		import org.apache.flex.mdl.beads.TabsItemRendererFactoryForArrayData; TabsItemRendererFactoryForArrayData;
> -		import org.apache.flex.mdl.beads.TabsItemRendererFactoryForArrayListData; TabsItemRendererFactoryForArrayListData;
> +		import org.apache.flex.mdl.beads.TabsDynamicItemsRendererFactoryForArrayListData; TabsDynamicItemsRendererFactoryForArrayListData;
> 		import org.apache.flex.mdl.beads.models.TabArrayModel; TabArrayModel;
> 		import org.apache.flex.mdl.beads.models.TabArrayListModel; TabArrayListModel;
> 		import org.apache.flex.mdl.beads.models.ToastModel; ToastModel;
> 
> http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/5b8f1c58/frameworks/projects/MaterialDesignLite/src/main/flex/org/apache/flex/mdl/beads/TabsDynamicItemsRendererFactoryForArrayListData.as
> ----------------------------------------------------------------------
> diff --git a/frameworks/projects/MaterialDesignLite/src/main/flex/org/apache/flex/mdl/beads/TabsDynamicItemsRendererFactoryForArrayListData.as b/frameworks/projects/MaterialDesignLite/src/main/flex/org/apache/flex/mdl/beads/TabsDynamicItemsRendererFactoryForArrayListData.as
> new file mode 100644
> index 0000000..371f79b
> --- /dev/null
> +++ b/frameworks/projects/MaterialDesignLite/src/main/flex/org/apache/flex/mdl/beads/TabsDynamicItemsRendererFactoryForArrayListData.as
> @@ -0,0 +1,108 @@
> +////////////////////////////////////////////////////////////////////////////////
> +//
> +//  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.flex.mdl.beads
> +{
> +    import org.apache.flex.collections.IArrayList;
> +    import org.apache.flex.core.IListPresentationModel;
> +    import org.apache.flex.events.CollectionEvent;
> +
> +    import org.apache.flex.events.IEventDispatcher;
> +    import org.apache.flex.html.beads.DynamicItemsRendererFactoryForArrayListData;
> +    import org.apache.flex.mdl.beads.models.ITabModel;
> +    import org.apache.flex.mdl.supportClasses.ITabItemRenderer;
> +    import org.apache.flex.events.Event;
> +
> +    [Event(name="itemRendererCreated",type="org.apache.flex.events.ItemRendererEvent")]
> +
> +    /**
> +     *  The TabsDynamicItemsRendererFactoryForArrayListData class reads an
> +     *  array of data and creates an item renderer for every
> +     *  ITabItemRenderer in the array.
> +     *
> +     *  @langversion 3.0
> +     *  @playerversion Flash 10.2
> +     *  @playerversion AIR 2.6
> +     *  @productversion FlexJS 0.8
> +     */
> +    public class TabsDynamicItemsRendererFactoryForArrayListData extends DynamicItemsRendererFactoryForArrayListData
> +    {
> +        public function TabsDynamicItemsRendererFactoryForArrayListData(target:Object = null)
> +        {
> +            super(target);
> +        }
> +
> +        protected var tabsIdField:String;
> +
> +        /**
> +         *  finish setup
> +         *
> +         *  @langversion 3.0
> +         *  @playerversion Flash 10.2
> +         *  @playerversion AIR 2.6
> +         *  @productversion FlexJS 0.8
> +         */
> +        override protected function initComplete(event:Event):void
> +        {
> +            var model:ITabModel = _strand.getBeadByType(ITabModel) as ITabModel;
> +            tabsIdField = model.tabIdField;
> +
> +            super.initComplete(event);
> +        }
> +
> +        override protected function dataProviderChangeHandler(event:Event):void
> +        {
> +            var dp:IArrayList = dataProviderModel.dataProvider as IArrayList;
> +            if (!dp)
> +                return;
> +
> +            dataGroup.removeAllItemRenderers();
> +
> +            var presentationModel:IListPresentationModel = _strand.getBeadByType(IListPresentationModel) as IListPresentationModel;
> +
> +            var n:int = dp.length;
> +            for (var i:int = 0; i < n; i++)
> +            {
> +                var ir:ITabItemRenderer = itemRendererFactory.createItemRenderer(dataGroup) as ITabItemRenderer;
> +                ir.tabIdField = tabsIdField;
> +
> +                var item:Object = dp.getItemAt(i);
> +                fillRenderer(i, item, ir, presentationModel);
> +            }
> +
> +            IEventDispatcher(_strand).dispatchEvent(new Event("itemsCreated"));
> +        }
> +
> +        override protected function itemAddedHandler(event:CollectionEvent):void
> +        {
> +            var dp:IArrayList = dataProviderModel.dataProvider as IArrayList;
> +            if (!dp)
> +                return;
> +
> +            var presentationModel:IListPresentationModel = _strand.getBeadByType(IListPresentationModel) as IListPresentationModel;
> +
> +            var ir:ITabItemRenderer = itemRendererFactory.createItemRenderer(dataGroup) as ITabItemRenderer;
> +            ir.tabIdField = tabsIdField;
> +
> +            var index:int = dp.length - 1;
> +            fillRenderer(index, event.item, ir, presentationModel);
> +
> +            IEventDispatcher(_strand).dispatchEvent(new Event("itemsCreated"));
> +        }
> +    }
> +}
> 
> http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/5b8f1c58/frameworks/projects/MaterialDesignLite/src/main/flex/org/apache/flex/mdl/beads/TabsItemRendererFactoryForArrayListData.as
> ----------------------------------------------------------------------
> diff --git a/frameworks/projects/MaterialDesignLite/src/main/flex/org/apache/flex/mdl/beads/TabsItemRendererFactoryForArrayListData.as b/frameworks/projects/MaterialDesignLite/src/main/flex/org/apache/flex/mdl/beads/TabsItemRendererFactoryForArrayListData.as
> deleted file mode 100644
> index c323332..0000000
> --- a/frameworks/projects/MaterialDesignLite/src/main/flex/org/apache/flex/mdl/beads/TabsItemRendererFactoryForArrayListData.as
> +++ /dev/null
> @@ -1,206 +0,0 @@
> -////////////////////////////////////////////////////////////////////////////////
> -//
> -//  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.flex.mdl.beads
> -{
> -    import org.apache.flex.collections.IArrayList;
> -    import org.apache.flex.core.IBead;
> -    import org.apache.flex.core.IDataProviderItemRendererMapper;
> -    import org.apache.flex.core.IItemRendererClassFactory;
> -    import org.apache.flex.core.IItemRendererParent;
> -    import org.apache.flex.core.IListPresentationModel;
> -    import org.apache.flex.core.IStrand;
> -    import org.apache.flex.core.SimpleCSSStyles;
> -    import org.apache.flex.core.UIBase;
> -    import org.apache.flex.core.ValuesManager;
> -    import org.apache.flex.events.CollectionEvent;
> -
> -    import org.apache.flex.events.EventDispatcher;
> -    import org.apache.flex.events.IEventDispatcher;
> -    import org.apache.flex.html.beads.IListView;
> -    import org.apache.flex.mdl.beads.models.ITabModel;
> -    import org.apache.flex.mdl.supportClasses.ITabItemRenderer;
> -    import org.apache.flex.events.Event;
> -
> -    [Event(name="itemRendererCreated",type="org.apache.flex.events.ItemRendererEvent")]
> -
> -    /**
> -     *  The TabsItemRendererFactoryForArrayListData class reads an
> -     *  array of data and creates an item renderer for every
> -     *  ITabItemRenderer in the array.
> -     *
> -     *  @langversion 3.0
> -     *  @playerversion Flash 10.2
> -     *  @playerversion AIR 2.6
> -     *  @productversion FlexJS 0.8
> -     */
> -    public class TabsItemRendererFactoryForArrayListData extends EventDispatcher implements IBead, IDataProviderItemRendererMapper
> -    {
> -        public function TabsItemRendererFactoryForArrayListData(target:Object = null)
> -        {
> -            super(target);
> -        }
> -
> -        protected var dataProviderModel:ITabModel;
> -
> -        protected var labelField:String;
> -        protected var tabsIdField:String;
> -
> -        private var _strand:IStrand;
> -
> -        /**
> -         *  @copy org.apache.flex.core.IBead#strand
> -         *
> -         *  @langversion 3.0
> -         *  @playerversion Flash 10.2
> -         *  @playerversion AIR 2.6
> -         *  @productversion FlexJS 0.8
> -         */
> -        public function set strand(value:IStrand):void
> -        {
> -            _strand = value;
> -            IEventDispatcher(value).addEventListener("initComplete",finishSetup);
> -        }
> -
> -        /**
> -         *  finish setup
> -         *
> -         *  @langversion 3.0
> -         *  @playerversion Flash 10.2
> -         *  @playerversion AIR 2.6
> -         *  @productversion FlexJS 0.8
> -         */
> -        private function finishSetup(event:Event):void
> -        {
> -            IEventDispatcher(_strand).removeEventListener("initComplete",finishSetup);
> -
> -            dataProviderModel = _strand.getBeadByType(ITabModel) as ITabModel;
> -            var listView:IListView = _strand.getBeadByType(IListView) as IListView;
> -            dataGroup = listView.dataGroup;
> -            dataProviderModel.addEventListener("dataProviderChanged", dataProviderChangeHandler);
> -            dataProviderModel.addEventListener(CollectionEvent.ITEM_ADDED, itemAddedHandler);
> -
> -            tabsIdField = dataProviderModel.tabIdField;
> -            labelField = dataProviderModel.labelField;
> -
> -            dataProviderChangeHandler(null);
> -        }
> -
> -        private var _itemRendererFactory:IItemRendererClassFactory;
> -
> -        /**
> -         *  The org.apache.flex.core.IItemRendererClassFactory used
> -         *  to generate instances of item renderers.
> -         *
> -         *  @langversion 3.0
> -         *  @playerversion Flash 10.2
> -         *  @playerversion AIR 2.6
> -         *  @productversion FlexJS 0.8
> -         */
> -        public function get itemRendererFactory():IItemRendererClassFactory
> -        {
> -			if (_itemRendererFactory == null) {
> -				var factory:IItemRendererClassFactory = _strand.getBeadByType(IItemRendererClassFactory) as IItemRendererClassFactory;
> -				if (factory == null) {
> -					factory = new (ValuesManager.valuesImpl.getValue(_strand, "iItemRendererClassFactory")) as IItemRendererClassFactory;
> -					_strand.addBead(factory);
> -				}
> -				_itemRendererFactory = factory;
> -			}
> -            return _itemRendererFactory;
> -        }
> -
> -        /**
> -         *  @private
> -         */
> -        public function set itemRendererFactory(value:IItemRendererClassFactory):void
> -        {
> -            _itemRendererFactory = value;
> -        }
> -
> -        /**
> -         *  The org.apache.flex.core.IItemRendererParent that will
> -         *  parent the item renderers.
> -         *
> -         *  @langversion 3.0
> -         *  @playerversion Flash 10.2
> -         *  @playerversion AIR 2.6
> -         *  @productversion FlexJS 0.8
> -         */
> -        protected var dataGroup:IItemRendererParent;
> -
> -        protected function dataProviderChangeHandler(event:Event):void
> -        {
> -            var dp:IArrayList = dataProviderModel.dataProvider as IArrayList;
> -            if (!dp)
> -                return;
> -
> -            dataGroup.removeAllItemRenderers();
> -
> -            var presentationModel:IListPresentationModel = _strand.getBeadByType(IListPresentationModel) as IListPresentationModel;
> -
> -            var n:int = dp.length;
> -            for (var i:int = 0; i < n; i++)
> -            {
> -                var ir:ITabItemRenderer = itemRendererFactory.createItemRenderer(dataGroup) as ITabItemRenderer;
> -                dataGroup.addItemRenderer(ir);
> -                ir.index = i;
> -                ir.labelField = labelField;
> -                ir.tabIdField = tabsIdField;
> -
> -                if (presentationModel) {
> -                    var style:SimpleCSSStyles = new SimpleCSSStyles();
> -                    style.marginBottom = presentationModel.separatorThickness;
> -                    UIBase(ir).style = style;
> -                    UIBase(ir).height = presentationModel.rowHeight;
> -                    UIBase(ir).percentWidth = 100;
> -                }
> -                ir.data = dp.getItemAt(i);
> -            }
> -
> -            IEventDispatcher(_strand).dispatchEvent(new Event("itemsCreated"));
> -        }
> -
> -        private function itemAddedHandler(event:CollectionEvent):void
> -        {
> -            var dp:IArrayList = dataProviderModel.dataProvider as IArrayList;
> -            if (!dp)
> -                return;
> -
> -            var presentationModel:IListPresentationModel = _strand.getBeadByType(IListPresentationModel) as IListPresentationModel;
> -
> -            var ir:ITabItemRenderer = itemRendererFactory.createItemRenderer(dataGroup) as ITabItemRenderer;
> -            dataGroup.addItemRenderer(ir);
> -            
> -            ir.index = dp.length - 1;
> -            ir.labelField = labelField;
> -            ir.tabIdField = tabsIdField;
> -
> -            if (presentationModel) {
> -                var style:SimpleCSSStyles = new SimpleCSSStyles();
> -                style.marginBottom = presentationModel.separatorThickness;
> -                UIBase(ir).style = style;
> -                UIBase(ir).height = presentationModel.rowHeight;
> -                UIBase(ir).percentWidth = 100;
> -            }
> -            ir.data = event.item;
> -
> -            IEventDispatcher(_strand).dispatchEvent(new Event("itemsCreated"));
> -        }
> -    }
> -}
> 
> http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/5b8f1c58/frameworks/projects/MaterialDesignLite/src/main/flex/org/apache/flex/mdl/beads/views/TabsView.as
> ----------------------------------------------------------------------
> diff --git a/frameworks/projects/MaterialDesignLite/src/main/flex/org/apache/flex/mdl/beads/views/TabsView.as b/frameworks/projects/MaterialDesignLite/src/main/flex/org/apache/flex/mdl/beads/views/TabsView.as
> index ffe291a..34c09f2 100644
> --- a/frameworks/projects/MaterialDesignLite/src/main/flex/org/apache/flex/mdl/beads/views/TabsView.as
> +++ b/frameworks/projects/MaterialDesignLite/src/main/flex/org/apache/flex/mdl/beads/views/TabsView.as
> @@ -26,7 +26,7 @@ package org.apache.flex.mdl.beads.views
>     import org.apache.flex.core.IStrand;
>     import org.apache.flex.mdl.TabBar;
>     import org.apache.flex.mdl.TabBarPanel;
> -    import org.apache.flex.mdl.beads.TabsItemRendererFactoryForArrayListData;
> +    import org.apache.flex.mdl.beads.TabsDynamicItemsRendererFactoryForArrayListData;
>     import org.apache.flex.mdl.supportClasses.ITabItemRenderer;
> 
>     /**
> @@ -166,8 +166,8 @@ package org.apache.flex.mdl.beads.views
> 
>         public function isTabsDynamic():Boolean
>         {
> -            var arrayListMapper:TabsItemRendererFactoryForArrayListData =
> -                    _strand.getBeadByType(IDataProviderItemRendererMapper) as TabsItemRendererFactoryForArrayListData;
> +            var arrayListMapper:TabsDynamicItemsRendererFactoryForArrayListData =
> +                    _strand.getBeadByType(IDataProviderItemRendererMapper) as TabsDynamicItemsRendererFactoryForArrayListData;
>             return arrayListMapper != null;
>         }
>     }
> 
> http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/5b8f1c58/frameworks/projects/MaterialDesignLite/src/main/resources/defaults.css
> ----------------------------------------------------------------------
> diff --git a/frameworks/projects/MaterialDesignLite/src/main/resources/defaults.css b/frameworks/projects/MaterialDesignLite/src/main/resources/defaults.css
> index f8b3b05..9e5ece7 100644
> --- a/frameworks/projects/MaterialDesignLite/src/main/resources/defaults.css
> +++ b/frameworks/projects/MaterialDesignLite/src/main/resources/defaults.css
> @@ -122,7 +122,7 @@ Tabs
>     IBeadView: ClassReference("org.apache.flex.mdl.beads.views.TabsView");
>     IBeadModel: ClassReference("org.apache.flex.mdl.beads.models.TabArrayModel");
>     IBeadLayout: ClassReference(null);
> -    IDataProviderItemRendererMapper: ClassReference("org.apache.flex.mdl.beads.TabsItemRendererFactoryForArrayListData");
> +    IDataProviderItemRendererMapper: ClassReference("org.apache.flex.mdl.beads.TabsDynamicItemsRendererFactoryForArrayListData");
>     IItemRendererClassFactory: ClassReference("org.apache.flex.core.ItemRendererClassFactory");
>     IItemRenderer: ClassReference("org.apache.flex.mdl.itemRenderers.TabBarPanelItemRenderer");
> }
> @@ -132,7 +132,7 @@ TabBar
>     IBeadView: ClassReference("org.apache.flex.mdl.beads.views.TabBarView");
>     IBeadModel: ClassReference("org.apache.flex.mdl.beads.models.TabArrayModel");
>     IBeadLayout: ClassReference(null);
> -    IDataProviderItemRendererMapper: ClassReference("org.apache.flex.mdl.beads.TabsItemRendererFactoryForArrayListData");
> +    IDataProviderItemRendererMapper: ClassReference("org.apache.flex.mdl.beads.TabsDynamicItemsRendererFactoryForArrayListData");
>     IItemRendererClassFactory: ClassReference("org.apache.flex.core.ItemRendererClassFactory");
>     IItemRenderer: ClassReference("org.apache.flex.mdl.itemRenderers.TabBarButtonTabsItemRenderer");
> }
> 


[2/2] git commit: [flex-asjs] [refs/heads/develop] - FLEX-35354 - Rename TabsItemRendererFactoryForArrayListData to TabsDynamicItemsRendererFactoryForArrayListData - Update TabsDynamicItemsRendererFactoryForArrayListData with new implementation of Dynam

Posted by pi...@apache.org.
FLEX-35354 - Rename TabsItemRendererFactoryForArrayListData  to TabsDynamicItemsRendererFactoryForArrayListData
- Update TabsDynamicItemsRendererFactoryForArrayListData with new implementation of DynamicItemsRendererFactoryForArrayListData
- Update example MDLDynamicTabsExample


Project: http://git-wip-us.apache.org/repos/asf/flex-asjs/repo
Commit: http://git-wip-us.apache.org/repos/asf/flex-asjs/commit/5b8f1c58
Tree: http://git-wip-us.apache.org/repos/asf/flex-asjs/tree/5b8f1c58
Diff: http://git-wip-us.apache.org/repos/asf/flex-asjs/diff/5b8f1c58

Branch: refs/heads/develop
Commit: 5b8f1c5898c776eb7470e855073833e68e794a6d
Parents: 56e467a
Author: piotrz <pi...@apache.org>
Authored: Wed Aug 23 23:53:09 2017 +0200
Committer: piotrz <pi...@apache.org>
Committed: Wed Aug 23 23:53:09 2017 +0200

----------------------------------------------------------------------
 .../src/main/flex/views/InitialView.mxml        |  24 ++-
 .../src/main/resources/mdl-styles.css           |   2 +-
 .../src/main/flex/MDLClasses.as                 |   2 +-
 ...namicItemsRendererFactoryForArrayListData.as | 108 ++++++++++
 .../TabsItemRendererFactoryForArrayListData.as  | 206 -------------------
 .../org/apache/flex/mdl/beads/views/TabsView.as |   6 +-
 .../src/main/resources/defaults.css             |   4 +-
 7 files changed, 129 insertions(+), 223 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/5b8f1c58/examples/flexjs/MDLDynamicTabsExample/src/main/flex/views/InitialView.mxml
----------------------------------------------------------------------
diff --git a/examples/flexjs/MDLDynamicTabsExample/src/main/flex/views/InitialView.mxml b/examples/flexjs/MDLDynamicTabsExample/src/main/flex/views/InitialView.mxml
index 5523b6f..1482982 100644
--- a/examples/flexjs/MDLDynamicTabsExample/src/main/flex/views/InitialView.mxml
+++ b/examples/flexjs/MDLDynamicTabsExample/src/main/flex/views/InitialView.mxml
@@ -39,14 +39,18 @@ limitations under the License.
 	<mdl:model>
 		<models:TabsModel id="tabsModel"/>
 	</mdl:model>
-	<mdl:Tabs id="myTabs" selectedIndex="1" tabIdField="tabId" labelField="label" className="customTabs"
-			  dataProvider="{tabsModel.tabs}" width="500">
-		<mdl:beads>
-			<js:DataProviderCollectionChangeNotifier sourceID="tabsModel" propertyName="tabs"
-													 destinationPropertyName="dataProvider" changeEventName="dataProviderChanged"  />
-			<js:DataProviderItemsChangeNotifier sourceID="tabsModel" propertyName="tabs"
-												destinationPropertyName="dataProvider" changeEventName="dataProviderChanged"  />
-		</mdl:beads>
-	</mdl:Tabs>
-	<mdl:Button text="Add new Tab" click="onAddNewTabClick(event)"/>
+	<mdl:GridCell column="6">
+		<mdl:Tabs id="myTabs" selectedIndex="1" tabIdField="tabId" labelField="label" className="customTabs"
+				  dataProvider="{tabsModel.tabs}" width="500">
+			<mdl:beads>
+				<js:DataProviderCollectionChangeNotifier sourceID="tabsModel" propertyName="tabs"
+														 destinationPropertyName="dataProvider" changeEventName="dataProviderChanged"  />
+				<js:DataProviderItemsChangeNotifier sourceID="tabsModel" propertyName="tabs"
+													destinationPropertyName="dataProvider" changeEventName="dataProviderChanged"  />
+			</mdl:beads>
+		</mdl:Tabs>
+	</mdl:GridCell>
+	<mdl:GridCell>
+		<mdl:Button text="Add new Tab" click="onAddNewTabClick(event)"/>
+	</mdl:GridCell>
 </mdl:Grid>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/5b8f1c58/examples/flexjs/MDLDynamicTabsExample/src/main/resources/mdl-styles.css
----------------------------------------------------------------------
diff --git a/examples/flexjs/MDLDynamicTabsExample/src/main/resources/mdl-styles.css b/examples/flexjs/MDLDynamicTabsExample/src/main/resources/mdl-styles.css
index 8d52a54..e713389 100644
--- a/examples/flexjs/MDLDynamicTabsExample/src/main/resources/mdl-styles.css
+++ b/examples/flexjs/MDLDynamicTabsExample/src/main/resources/mdl-styles.css
@@ -27,5 +27,5 @@
 {
   IItemRenderer: ClassReference("itemRenderers.CustomTabBarPanelItemRenderer");
   IBeadModel: ClassReference("org.apache.flex.mdl.beads.models.TabArrayListModel");
-  IDataProviderItemRendererMapper: ClassReference("org.apache.flex.mdl.beads.TabsItemRendererFactoryForArrayListData");
+  IDataProviderItemRendererMapper: ClassReference("org.apache.flex.mdl.beads.TabsDynamicItemsRendererFactoryForArrayListData");
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/5b8f1c58/frameworks/projects/MaterialDesignLite/src/main/flex/MDLClasses.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/MaterialDesignLite/src/main/flex/MDLClasses.as b/frameworks/projects/MaterialDesignLite/src/main/flex/MDLClasses.as
index d9ac1ac..00ffe9d 100644
--- a/frameworks/projects/MaterialDesignLite/src/main/flex/MDLClasses.as
+++ b/frameworks/projects/MaterialDesignLite/src/main/flex/MDLClasses.as
@@ -28,7 +28,7 @@ package
 	internal class MDLClasses
 	{
 		import org.apache.flex.mdl.beads.TabsItemRendererFactoryForArrayData; TabsItemRendererFactoryForArrayData;
-		import org.apache.flex.mdl.beads.TabsItemRendererFactoryForArrayListData; TabsItemRendererFactoryForArrayListData;
+		import org.apache.flex.mdl.beads.TabsDynamicItemsRendererFactoryForArrayListData; TabsDynamicItemsRendererFactoryForArrayListData;
 		import org.apache.flex.mdl.beads.models.TabArrayModel; TabArrayModel;
 		import org.apache.flex.mdl.beads.models.TabArrayListModel; TabArrayListModel;
 		import org.apache.flex.mdl.beads.models.ToastModel; ToastModel;

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/5b8f1c58/frameworks/projects/MaterialDesignLite/src/main/flex/org/apache/flex/mdl/beads/TabsDynamicItemsRendererFactoryForArrayListData.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/MaterialDesignLite/src/main/flex/org/apache/flex/mdl/beads/TabsDynamicItemsRendererFactoryForArrayListData.as b/frameworks/projects/MaterialDesignLite/src/main/flex/org/apache/flex/mdl/beads/TabsDynamicItemsRendererFactoryForArrayListData.as
new file mode 100644
index 0000000..371f79b
--- /dev/null
+++ b/frameworks/projects/MaterialDesignLite/src/main/flex/org/apache/flex/mdl/beads/TabsDynamicItemsRendererFactoryForArrayListData.as
@@ -0,0 +1,108 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+//  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.flex.mdl.beads
+{
+    import org.apache.flex.collections.IArrayList;
+    import org.apache.flex.core.IListPresentationModel;
+    import org.apache.flex.events.CollectionEvent;
+
+    import org.apache.flex.events.IEventDispatcher;
+    import org.apache.flex.html.beads.DynamicItemsRendererFactoryForArrayListData;
+    import org.apache.flex.mdl.beads.models.ITabModel;
+    import org.apache.flex.mdl.supportClasses.ITabItemRenderer;
+    import org.apache.flex.events.Event;
+
+    [Event(name="itemRendererCreated",type="org.apache.flex.events.ItemRendererEvent")]
+
+    /**
+     *  The TabsDynamicItemsRendererFactoryForArrayListData class reads an
+     *  array of data and creates an item renderer for every
+     *  ITabItemRenderer in the array.
+     *
+     *  @langversion 3.0
+     *  @playerversion Flash 10.2
+     *  @playerversion AIR 2.6
+     *  @productversion FlexJS 0.8
+     */
+    public class TabsDynamicItemsRendererFactoryForArrayListData extends DynamicItemsRendererFactoryForArrayListData
+    {
+        public function TabsDynamicItemsRendererFactoryForArrayListData(target:Object = null)
+        {
+            super(target);
+        }
+
+        protected var tabsIdField:String;
+
+        /**
+         *  finish setup
+         *
+         *  @langversion 3.0
+         *  @playerversion Flash 10.2
+         *  @playerversion AIR 2.6
+         *  @productversion FlexJS 0.8
+         */
+        override protected function initComplete(event:Event):void
+        {
+            var model:ITabModel = _strand.getBeadByType(ITabModel) as ITabModel;
+            tabsIdField = model.tabIdField;
+
+            super.initComplete(event);
+        }
+
+        override protected function dataProviderChangeHandler(event:Event):void
+        {
+            var dp:IArrayList = dataProviderModel.dataProvider as IArrayList;
+            if (!dp)
+                return;
+
+            dataGroup.removeAllItemRenderers();
+
+            var presentationModel:IListPresentationModel = _strand.getBeadByType(IListPresentationModel) as IListPresentationModel;
+
+            var n:int = dp.length;
+            for (var i:int = 0; i < n; i++)
+            {
+                var ir:ITabItemRenderer = itemRendererFactory.createItemRenderer(dataGroup) as ITabItemRenderer;
+                ir.tabIdField = tabsIdField;
+
+                var item:Object = dp.getItemAt(i);
+                fillRenderer(i, item, ir, presentationModel);
+            }
+
+            IEventDispatcher(_strand).dispatchEvent(new Event("itemsCreated"));
+        }
+
+        override protected function itemAddedHandler(event:CollectionEvent):void
+        {
+            var dp:IArrayList = dataProviderModel.dataProvider as IArrayList;
+            if (!dp)
+                return;
+
+            var presentationModel:IListPresentationModel = _strand.getBeadByType(IListPresentationModel) as IListPresentationModel;
+
+            var ir:ITabItemRenderer = itemRendererFactory.createItemRenderer(dataGroup) as ITabItemRenderer;
+            ir.tabIdField = tabsIdField;
+
+            var index:int = dp.length - 1;
+            fillRenderer(index, event.item, ir, presentationModel);
+
+            IEventDispatcher(_strand).dispatchEvent(new Event("itemsCreated"));
+        }
+    }
+}

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/5b8f1c58/frameworks/projects/MaterialDesignLite/src/main/flex/org/apache/flex/mdl/beads/TabsItemRendererFactoryForArrayListData.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/MaterialDesignLite/src/main/flex/org/apache/flex/mdl/beads/TabsItemRendererFactoryForArrayListData.as b/frameworks/projects/MaterialDesignLite/src/main/flex/org/apache/flex/mdl/beads/TabsItemRendererFactoryForArrayListData.as
deleted file mode 100644
index c323332..0000000
--- a/frameworks/projects/MaterialDesignLite/src/main/flex/org/apache/flex/mdl/beads/TabsItemRendererFactoryForArrayListData.as
+++ /dev/null
@@ -1,206 +0,0 @@
-////////////////////////////////////////////////////////////////////////////////
-//
-//  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.flex.mdl.beads
-{
-    import org.apache.flex.collections.IArrayList;
-    import org.apache.flex.core.IBead;
-    import org.apache.flex.core.IDataProviderItemRendererMapper;
-    import org.apache.flex.core.IItemRendererClassFactory;
-    import org.apache.flex.core.IItemRendererParent;
-    import org.apache.flex.core.IListPresentationModel;
-    import org.apache.flex.core.IStrand;
-    import org.apache.flex.core.SimpleCSSStyles;
-    import org.apache.flex.core.UIBase;
-    import org.apache.flex.core.ValuesManager;
-    import org.apache.flex.events.CollectionEvent;
-
-    import org.apache.flex.events.EventDispatcher;
-    import org.apache.flex.events.IEventDispatcher;
-    import org.apache.flex.html.beads.IListView;
-    import org.apache.flex.mdl.beads.models.ITabModel;
-    import org.apache.flex.mdl.supportClasses.ITabItemRenderer;
-    import org.apache.flex.events.Event;
-
-    [Event(name="itemRendererCreated",type="org.apache.flex.events.ItemRendererEvent")]
-
-    /**
-     *  The TabsItemRendererFactoryForArrayListData class reads an
-     *  array of data and creates an item renderer for every
-     *  ITabItemRenderer in the array.
-     *
-     *  @langversion 3.0
-     *  @playerversion Flash 10.2
-     *  @playerversion AIR 2.6
-     *  @productversion FlexJS 0.8
-     */
-    public class TabsItemRendererFactoryForArrayListData extends EventDispatcher implements IBead, IDataProviderItemRendererMapper
-    {
-        public function TabsItemRendererFactoryForArrayListData(target:Object = null)
-        {
-            super(target);
-        }
-
-        protected var dataProviderModel:ITabModel;
-
-        protected var labelField:String;
-        protected var tabsIdField:String;
-
-        private var _strand:IStrand;
-
-        /**
-         *  @copy org.apache.flex.core.IBead#strand
-         *
-         *  @langversion 3.0
-         *  @playerversion Flash 10.2
-         *  @playerversion AIR 2.6
-         *  @productversion FlexJS 0.8
-         */
-        public function set strand(value:IStrand):void
-        {
-            _strand = value;
-            IEventDispatcher(value).addEventListener("initComplete",finishSetup);
-        }
-
-        /**
-         *  finish setup
-         *
-         *  @langversion 3.0
-         *  @playerversion Flash 10.2
-         *  @playerversion AIR 2.6
-         *  @productversion FlexJS 0.8
-         */
-        private function finishSetup(event:Event):void
-        {
-            IEventDispatcher(_strand).removeEventListener("initComplete",finishSetup);
-
-            dataProviderModel = _strand.getBeadByType(ITabModel) as ITabModel;
-            var listView:IListView = _strand.getBeadByType(IListView) as IListView;
-            dataGroup = listView.dataGroup;
-            dataProviderModel.addEventListener("dataProviderChanged", dataProviderChangeHandler);
-            dataProviderModel.addEventListener(CollectionEvent.ITEM_ADDED, itemAddedHandler);
-
-            tabsIdField = dataProviderModel.tabIdField;
-            labelField = dataProviderModel.labelField;
-
-            dataProviderChangeHandler(null);
-        }
-
-        private var _itemRendererFactory:IItemRendererClassFactory;
-
-        /**
-         *  The org.apache.flex.core.IItemRendererClassFactory used
-         *  to generate instances of item renderers.
-         *
-         *  @langversion 3.0
-         *  @playerversion Flash 10.2
-         *  @playerversion AIR 2.6
-         *  @productversion FlexJS 0.8
-         */
-        public function get itemRendererFactory():IItemRendererClassFactory
-        {
-			if (_itemRendererFactory == null) {
-				var factory:IItemRendererClassFactory = _strand.getBeadByType(IItemRendererClassFactory) as IItemRendererClassFactory;
-				if (factory == null) {
-					factory = new (ValuesManager.valuesImpl.getValue(_strand, "iItemRendererClassFactory")) as IItemRendererClassFactory;
-					_strand.addBead(factory);
-				}
-				_itemRendererFactory = factory;
-			}
-            return _itemRendererFactory;
-        }
-
-        /**
-         *  @private
-         */
-        public function set itemRendererFactory(value:IItemRendererClassFactory):void
-        {
-            _itemRendererFactory = value;
-        }
-
-        /**
-         *  The org.apache.flex.core.IItemRendererParent that will
-         *  parent the item renderers.
-         *
-         *  @langversion 3.0
-         *  @playerversion Flash 10.2
-         *  @playerversion AIR 2.6
-         *  @productversion FlexJS 0.8
-         */
-        protected var dataGroup:IItemRendererParent;
-
-        protected function dataProviderChangeHandler(event:Event):void
-        {
-            var dp:IArrayList = dataProviderModel.dataProvider as IArrayList;
-            if (!dp)
-                return;
-
-            dataGroup.removeAllItemRenderers();
-
-            var presentationModel:IListPresentationModel = _strand.getBeadByType(IListPresentationModel) as IListPresentationModel;
-
-            var n:int = dp.length;
-            for (var i:int = 0; i < n; i++)
-            {
-                var ir:ITabItemRenderer = itemRendererFactory.createItemRenderer(dataGroup) as ITabItemRenderer;
-                dataGroup.addItemRenderer(ir);
-                ir.index = i;
-                ir.labelField = labelField;
-                ir.tabIdField = tabsIdField;
-
-                if (presentationModel) {
-                    var style:SimpleCSSStyles = new SimpleCSSStyles();
-                    style.marginBottom = presentationModel.separatorThickness;
-                    UIBase(ir).style = style;
-                    UIBase(ir).height = presentationModel.rowHeight;
-                    UIBase(ir).percentWidth = 100;
-                }
-                ir.data = dp.getItemAt(i);
-            }
-
-            IEventDispatcher(_strand).dispatchEvent(new Event("itemsCreated"));
-        }
-
-        private function itemAddedHandler(event:CollectionEvent):void
-        {
-            var dp:IArrayList = dataProviderModel.dataProvider as IArrayList;
-            if (!dp)
-                return;
-
-            var presentationModel:IListPresentationModel = _strand.getBeadByType(IListPresentationModel) as IListPresentationModel;
-
-            var ir:ITabItemRenderer = itemRendererFactory.createItemRenderer(dataGroup) as ITabItemRenderer;
-            dataGroup.addItemRenderer(ir);
-            
-            ir.index = dp.length - 1;
-            ir.labelField = labelField;
-            ir.tabIdField = tabsIdField;
-
-            if (presentationModel) {
-                var style:SimpleCSSStyles = new SimpleCSSStyles();
-                style.marginBottom = presentationModel.separatorThickness;
-                UIBase(ir).style = style;
-                UIBase(ir).height = presentationModel.rowHeight;
-                UIBase(ir).percentWidth = 100;
-            }
-            ir.data = event.item;
-
-            IEventDispatcher(_strand).dispatchEvent(new Event("itemsCreated"));
-        }
-    }
-}

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/5b8f1c58/frameworks/projects/MaterialDesignLite/src/main/flex/org/apache/flex/mdl/beads/views/TabsView.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/MaterialDesignLite/src/main/flex/org/apache/flex/mdl/beads/views/TabsView.as b/frameworks/projects/MaterialDesignLite/src/main/flex/org/apache/flex/mdl/beads/views/TabsView.as
index ffe291a..34c09f2 100644
--- a/frameworks/projects/MaterialDesignLite/src/main/flex/org/apache/flex/mdl/beads/views/TabsView.as
+++ b/frameworks/projects/MaterialDesignLite/src/main/flex/org/apache/flex/mdl/beads/views/TabsView.as
@@ -26,7 +26,7 @@ package org.apache.flex.mdl.beads.views
     import org.apache.flex.core.IStrand;
     import org.apache.flex.mdl.TabBar;
     import org.apache.flex.mdl.TabBarPanel;
-    import org.apache.flex.mdl.beads.TabsItemRendererFactoryForArrayListData;
+    import org.apache.flex.mdl.beads.TabsDynamicItemsRendererFactoryForArrayListData;
     import org.apache.flex.mdl.supportClasses.ITabItemRenderer;
 
     /**
@@ -166,8 +166,8 @@ package org.apache.flex.mdl.beads.views
 
         public function isTabsDynamic():Boolean
         {
-            var arrayListMapper:TabsItemRendererFactoryForArrayListData =
-                    _strand.getBeadByType(IDataProviderItemRendererMapper) as TabsItemRendererFactoryForArrayListData;
+            var arrayListMapper:TabsDynamicItemsRendererFactoryForArrayListData =
+                    _strand.getBeadByType(IDataProviderItemRendererMapper) as TabsDynamicItemsRendererFactoryForArrayListData;
             return arrayListMapper != null;
         }
     }

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/5b8f1c58/frameworks/projects/MaterialDesignLite/src/main/resources/defaults.css
----------------------------------------------------------------------
diff --git a/frameworks/projects/MaterialDesignLite/src/main/resources/defaults.css b/frameworks/projects/MaterialDesignLite/src/main/resources/defaults.css
index f8b3b05..9e5ece7 100644
--- a/frameworks/projects/MaterialDesignLite/src/main/resources/defaults.css
+++ b/frameworks/projects/MaterialDesignLite/src/main/resources/defaults.css
@@ -122,7 +122,7 @@ Tabs
     IBeadView: ClassReference("org.apache.flex.mdl.beads.views.TabsView");
     IBeadModel: ClassReference("org.apache.flex.mdl.beads.models.TabArrayModel");
     IBeadLayout: ClassReference(null);
-    IDataProviderItemRendererMapper: ClassReference("org.apache.flex.mdl.beads.TabsItemRendererFactoryForArrayListData");
+    IDataProviderItemRendererMapper: ClassReference("org.apache.flex.mdl.beads.TabsDynamicItemsRendererFactoryForArrayListData");
     IItemRendererClassFactory: ClassReference("org.apache.flex.core.ItemRendererClassFactory");
     IItemRenderer: ClassReference("org.apache.flex.mdl.itemRenderers.TabBarPanelItemRenderer");
 }
@@ -132,7 +132,7 @@ TabBar
     IBeadView: ClassReference("org.apache.flex.mdl.beads.views.TabBarView");
     IBeadModel: ClassReference("org.apache.flex.mdl.beads.models.TabArrayModel");
     IBeadLayout: ClassReference(null);
-    IDataProviderItemRendererMapper: ClassReference("org.apache.flex.mdl.beads.TabsItemRendererFactoryForArrayListData");
+    IDataProviderItemRendererMapper: ClassReference("org.apache.flex.mdl.beads.TabsDynamicItemsRendererFactoryForArrayListData");
     IItemRendererClassFactory: ClassReference("org.apache.flex.core.ItemRendererClassFactory");
     IItemRenderer: ClassReference("org.apache.flex.mdl.itemRenderers.TabBarButtonTabsItemRenderer");
 }