You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@royale.apache.org by ah...@apache.org on 2018/12/04 06:33:48 UTC

[royale-asjs] 03/03: get Spark List working on SkinnableContainer and move the SkinnableDataContainer APIs out of SkinnableComponent and into ListBase

This is an automated email from the ASF dual-hosted git repository.

aharui pushed a commit to branch develop
in repository https://gitbox.apache.org/repos/asf/royale-asjs.git

commit ce3fca99665f19628d98f70d779ac0fead1edf67
Author: Alex Harui <ah...@apache.org>
AuthorDate: Mon Dec 3 22:33:08 2018 -0800

    get Spark List working on SkinnableContainer and move the SkinnableDataContainer APIs out of SkinnableComponent and into ListBase
---
 .../src/main/royale/spark/components/DataGrid.as   |   8 +-
 .../spark/components/supportClasses/ListBase.as    | 122 ++++++++++++++++++++-
 .../supportClasses/SkinnableComponent.as           |  79 -------------
 3 files changed, 125 insertions(+), 84 deletions(-)

diff --git a/frameworks/projects/SparkRoyale/src/main/royale/spark/components/DataGrid.as b/frameworks/projects/SparkRoyale/src/main/royale/spark/components/DataGrid.as
index 6707fed..3766cb4 100644
--- a/frameworks/projects/SparkRoyale/src/main/royale/spark/components/DataGrid.as
+++ b/frameworks/projects/SparkRoyale/src/main/royale/spark/components/DataGrid.as
@@ -1465,7 +1465,7 @@ public class DataGrid extends SkinnableContainerBase
      *  @playerversion AIR 2.5
      *  @productversion Flex 4.5
      */
-    override public function get dataProvider():IList
+    public function get dataProvider():IList
     {
         return getGridProperty("dataProvider");
     }
@@ -1473,7 +1473,7 @@ public class DataGrid extends SkinnableContainerBase
     /**
      *  @private
      */
-	override public function set dataProvider(value:IList):void
+	public function set dataProvider(value:IList):void
     {
         if (setGridProperty("dataProvider", value))
             dispatchChangeEvent("dataProviderChanged");
@@ -2077,7 +2077,7 @@ public class DataGrid extends SkinnableContainerBase
      *  @playerversion AIR 2.5
      *  @productversion Flex 4.5
      */
-	override public function get itemRenderer():IFactory
+	public function get itemRenderer():IFactory
     {
         return getGridProperty("itemRenderer");
     }
@@ -2085,7 +2085,7 @@ public class DataGrid extends SkinnableContainerBase
     /**
      *  @private
      */
-	override public function set itemRenderer(value:IFactory):void
+	public function set itemRenderer(value:IFactory):void
     {
         if (setGridProperty("itemRenderer", value))
             dispatchChangeEvent("itemRendererChanged");
diff --git a/frameworks/projects/SparkRoyale/src/main/royale/spark/components/supportClasses/ListBase.as b/frameworks/projects/SparkRoyale/src/main/royale/spark/components/supportClasses/ListBase.as
index 660e28d..60706c5 100644
--- a/frameworks/projects/SparkRoyale/src/main/royale/spark/components/supportClasses/ListBase.as
+++ b/frameworks/projects/SparkRoyale/src/main/royale/spark/components/supportClasses/ListBase.as
@@ -41,8 +41,17 @@ import spark.events.ListEvent;
 import spark.events.RendererExistenceEvent;
 import spark.layouts.supportClasses.LayoutBase;
 import spark.utils.LabelUtil;*/
+import mx.collections.IList;
+import mx.core.IFactory;
 import mx.core.mx_internal;
 
+import spark.components.DataGroup;
+import spark.components.SkinnableContainer;
+import spark.components.beads.SkinnableContainerView;
+
+import org.apache.royale.core.IBeadLayout;
+import org.apache.royale.core.ItemRendererClassFactory;
+
 use namespace mx_internal;   //ListBase and List share selection properties that are mx_internal
 
 /**
@@ -166,7 +175,7 @@ use namespace mx_internal;   //ListBase and List share selection properties that
  *  @productversion Royale 0.9.4
  *  @royalesuppresspublicvarwarning
  */
-public class ListBase  extends SkinnableComponent
+public class ListBase  extends SkinnableContainer
 { //extends SkinnableDataContainer implements IDataProviderEnhance
     //include "../../core/Version.as";
 
@@ -443,6 +452,83 @@ public class ListBase  extends SkinnableComponent
         return _caretIndex;
     }
     
+    //----------------------------------
+    //  dataProvider copied from SkinnableDataContainer
+    //----------------------------------    
+    
+    /**
+     *  @copy spark.components.DataGroup#dataProvider
+     *
+     *  @see #itemRenderer
+     *  @see #itemRendererFunction
+     *  @see mx.collections.IList
+     *  @see mx.collections.ArrayCollection
+     *  @see mx.collections.ArrayList
+     *  @see mx.collections.XMLListCollection
+     *  
+     *  @langversion 3.0
+     *  @playerversion Flash 10
+     *  @playerversion AIR 1.5
+     *  @productversion Royale 0.9.4
+     * 
+     *  @royaleignorecoercion spark.components.DataGroup
+     *  @royaleignorecoercion spark.components.beads.SkinnableContainerView
+     */
+    [Bindable("dataProviderChanged")]
+    [Inspectable(category="Data")]
+    
+    public function get dataProvider():IList
+    {       
+        return ((view as SkinnableContainerView).contentView as DataGroup).dataProvider;
+    }
+    
+    /**
+     *  @private
+     *  @royaleignorecoercion spark.components.DataGroup
+     *  @royaleignorecoercion spark.components.beads.SkinnableContainerView
+     */
+    public function set dataProvider(value:IList):void
+    {
+        ((view as SkinnableContainerView).contentView as DataGroup).dataProvider = value;
+    }
+    
+    //----------------------------------
+    //  itemRenderer copied from SkinnableDataContainer
+    //----------------------------------
+    
+    [Inspectable(category="Data")]
+    
+    /**
+     *  @copy spark.components.DataGroup#itemRenderer
+     *  
+     *  @langversion 3.0
+     *  @playerversion Flash 10
+     *  @playerversion AIR 1.5
+     *  @productversion Royale 0.9.4
+     * 
+     *  @royaleignorecoercion spark.components.DataGroup
+     *  @royaleignorecoercion spark.components.beads.SkinnableContainerView
+     */
+    public function get itemRenderer():IFactory
+    {
+        return ((view as SkinnableContainerView).contentView as DataGroup).itemRenderer;
+    }
+    
+    /**
+     *  @private
+     *  @royaleignorecoercion spark.components.DataGroup
+     *  @royaleignorecoercion spark.components.beads.SkinnableContainerView
+     */
+    public function set itemRenderer(value:IFactory):void
+    {
+        ((view as SkinnableContainerView).contentView as DataGroup).itemRenderer = value;
+        // the ItemRendererFactory was already put on the DataGroup's strand and
+        // determined which factory to use so we have to set it up later here.
+        var factory:ItemRendererClassFactory = ((view as SkinnableContainerView).contentView as DataGroup).getBeadByType(ItemRendererClassFactory) as ItemRendererClassFactory;
+        factory.createFunction = factory.createFromClass;
+        factory.itemRendererFactory = value;
+    }
+    
     /**
      *  @private
      */
@@ -2071,6 +2157,40 @@ public class ListBase  extends SkinnableComponent
         }
             
     } */
+    
+    
+    /**
+     *  @private
+     *  @royaleignorecoercion spark.components.DataGroup
+     *  @royaleignorecoercion spark.components.beads.SkinnableContainerView
+     */
+    override public function addedToParent():void
+    {
+        if (!getBeadByType(IBeadLayout))
+            addBead(new ListBaseLayout());
+        super.addedToParent();
+        setActualSize(getExplicitOrMeasuredWidth(), getExplicitOrMeasuredHeight());
+    }
+    
+    override public function setActualSize(w:Number, h:Number):void
+    {
+        super.setActualSize(w, h);
+        ((view as SkinnableContainerView).contentView as DataGroup).setActualSize(w, h);
+    }
 }
 
 }
+
+import spark.components.supportClasses.ListBase;
+import org.apache.royale.core.LayoutBase;
+
+// this disables any layouts from trying to layout the inner DataGroup.
+class ListBaseLayout extends LayoutBase
+{
+    override public function layout():Boolean
+    {
+        var list:ListBase = host as ListBase;
+        return false;
+    }
+}
+
diff --git a/frameworks/projects/SparkRoyale/src/main/royale/spark/components/supportClasses/SkinnableComponent.as b/frameworks/projects/SparkRoyale/src/main/royale/spark/components/supportClasses/SkinnableComponent.as
index cedeafc..b7caff6 100644
--- a/frameworks/projects/SparkRoyale/src/main/royale/spark/components/supportClasses/SkinnableComponent.as
+++ b/frameworks/projects/SparkRoyale/src/main/royale/spark/components/supportClasses/SkinnableComponent.as
@@ -249,85 +249,6 @@ public class SkinnableComponent extends UIComponent
     }
 	
 	
-	//----------------------------------
-    //  dataProvider copied from SkinnableDataContainer
-    //----------------------------------    
-    
-    /**
-     *  @copy spark.components.DataGroup#dataProvider
-     *
-     *  @see #itemRenderer
-     *  @see #itemRendererFunction
-     *  @see mx.collections.IList
-     *  @see mx.collections.ArrayCollection
-     *  @see mx.collections.ArrayList
-     *  @see mx.collections.XMLListCollection
-     *  
-     *  @langversion 3.0
-     *  @playerversion Flash 10
-     *  @playerversion AIR 1.5
-     *  @productversion Royale 0.9.4
-     */
-    [Bindable("dataProviderChanged")]
-    [Inspectable(category="Data")]
-    
-    public function get dataProvider():IList
-    {       
-		return null;
-      /*   return (dataGroup) 
-            ? dataGroup.dataProvider 
-            : dataGroupProperties.dataProvider; */
-    }
-    
-    public function set dataProvider(value:IList):void
-    {
-      /*   if (dataGroup)
-        {
-            dataGroup.dataProvider = value;
-            dataGroupProperties = BitFlagUtil.update(dataGroupProperties as uint, 
-                                                     DATA_PROVIDER_PROPERTY_FLAG, true);
-        }
-        else
-            dataGroupProperties.dataProvider = value;
-        dispatchEvent(new Event("dataProviderChanged")); */
-    }
-
-	//----------------------------------
-    //  itemRenderer copied from SkinnableDataContainer
-    //----------------------------------
-    
-    [Inspectable(category="Data")]
-    
-    /**
-     *  @copy spark.components.DataGroup#itemRenderer
-     *  
-     *  @langversion 3.0
-     *  @playerversion Flash 10
-     *  @playerversion AIR 1.5
-     *  @productversion Royale 0.9.4
-     */
-    public function get itemRenderer():IFactory
-    {
-      /*   return (dataGroup) 
-            ? dataGroup.itemRenderer 
-            : dataGroupProperties.itemRenderer; */ return null;
-    }
-    
-    /**
-     *  @private
-     */
-    public function set itemRenderer(value:IFactory):void
-    {
-       /*  if (dataGroup)
-        {
-            dataGroup.itemRenderer = value;
-            dataGroupProperties = BitFlagUtil.update(dataGroupProperties as uint, 
-                                                     ITEM_RENDERER_PROPERTY_FLAG, true);
-        }
-        else
-            dataGroupProperties.itemRenderer = value; */
-    }
-    
 	
 	//----------------------------------
     //  skin