This is an automated email from the ASF dual-hosted git repository.
yishayw pushed a commit to branch develop
in repository https://gitbox.apache.org/repos/asf/royale-asjs.git
The following commit(s) were added to refs/heads/develop by this push:
new 500343d Implement Spark SkinnableDataContainer, reconfigure
DataGroup, adjust List, and add SelfItemRendererInitializer.
new 963af8b Merge pull request #992 from
estanglerbm/skinnabledatacontainer
500343d is described below
commit 500343ddb420f962861a018a5a9399478ef9cd6d
Author: Edward Stangler <[email protected]>
AuthorDate: Tue Dec 8 23:05:41 2020 -0600
Implement Spark SkinnableDataContainer, reconfigure DataGroup, adjust List,
and add SelfItemRendererInitializer.
---
.../SparkRoyale/src/main/resources/defaults.css | 39 ++-
.../src/main/resources/spark-royale-manifest.xml | 4 +
.../src/main/royale/SparkRoyaleClasses.as | 2 +-
.../spark/components/SkinnableDataContainer.as | 285 +++++++++++++++++----
.../royale/spark/components/VirtualVDataGroup.as | 49 ++++
.../spark/components/beads/SelfItemRenderer.as | 52 ++++
.../beads/SelfItemRendererInitializer.as | 88 +++++++
.../components/beads/SkinnableDataContainerView.as | 143 +++++++++++
.../components/beads/SparkDataContainerView.as | 130 ++++++++++
.../components/beads/SparkSkinScrollingViewport.as | 1 -
.../spark/components/beads/SparkSkinViewport.as | 40 +--
.../spark/components/supportClasses/ListBase.as | 18 +-
.../supportClasses/SkinnableComponent.as | 13 -
.../main/royale/spark/layouts/HorizontalLayout.as | 2 +-
.../main/royale/spark/layouts/VerticalLayout.as | 2 +-
.../layouts/supportClasses/SparkLayoutBead.as | 3 +
16 files changed, 785 insertions(+), 86 deletions(-)
diff --git a/frameworks/projects/SparkRoyale/src/main/resources/defaults.css
b/frameworks/projects/SparkRoyale/src/main/resources/defaults.css
index 7a1d0d0..4ea8482 100644
--- a/frameworks/projects/SparkRoyale/src/main/resources/defaults.css
+++ b/frameworks/projects/SparkRoyale/src/main/resources/defaults.css
@@ -68,6 +68,19 @@ Image
DataGroup
{
+ IDataProviderItemRendererMapper:
ClassReference("mx.controls.listClasses.DataItemRendererFactoryForIListData");
+ IBeadModel:
ClassReference("mx.controls.beads.models.SingleSelectionIListModel");
+ IBeadView:
ClassReference("org.apache.royale.html.beads.DataContainerView");
+ IBeadLayout:
ClassReference("spark.layouts.supportClasses.SparkLayoutBead");
+ IItemRendererClassFactory:
ClassReference("org.apache.royale.core.ItemRendererClassFactory");
+ IItemRenderer:
ClassReference("spark.components.beads.SelfItemRenderer");
+ IItemRendererInitializer:
ClassReference("spark.components.beads.SelfItemRendererInitializer");
+ IViewport:
ClassReference("org.apache.royale.html.supportClasses.ScrollingViewport");
+ IViewportModel:
ClassReference("org.apache.royale.html.beads.models.ViewportModel");
+}
+
+VirtualVDataGroup
+{
IDataProviderItemRendererMapper:
ClassReference("mx.controls.listClasses.VirtualDataItemRendererFactoryForIListData");
IBeadModel:
ClassReference("mx.controls.beads.models.SingleSelectionIListModel");
IBeadView:
ClassReference("org.apache.royale.html.beads.VirtualListView");
@@ -90,12 +103,13 @@ NonVirtualHDataGroup
IBeadLayout: ClassReference("spark.layouts.HorizontalLayout");
IItemRendererClassFactory:
ClassReference("org.apache.royale.core.SelectableItemRendererClassFactory");
IItemRenderer:
ClassReference("spark.components.supportClasses.SparkTextButtonItemRenderer");
- IItemRendererInitializer:
ClassReference("org.apache.royale.html.beads.ListItemRendererInitializer");
+ IItemRendererInitializer:
ClassReference("mx.controls.beads.ListItemRendererInitializer");
ISelectableItemRenderer:
ClassReference("org.apache.royale.html.beads.SolidBackgroundSelectableItemRendererBead");
IViewport:
ClassReference("org.apache.royale.html.supportClasses.ScrollingViewport");
IViewportModel:
ClassReference("org.apache.royale.html.beads.models.ViewportModel");
}
+/* not used
NonVirtualVDataGroup
{
IDataProviderItemRendererMapper:
ClassReference("mx.controls.listClasses.DataItemRendererFactoryForIListData");
@@ -104,12 +118,12 @@ NonVirtualVDataGroup
IBeadController:
ClassReference("org.apache.royale.html.beads.controllers.ListSingleSelectionMouseController");
IBeadLayout:
ClassReference("org.apache.royale.html.beads.layouts.VerticalLayout");
IItemRendererClassFactory:
ClassReference("org.apache.royale.core.SelectableItemRendererClassFactory");
+ IItemRenderer:
ClassReference("mx.controls.listClasses.ListItemRenderer");
IItemRendererInitializer:
ClassReference("mx.controls.beads.ListItemRendererInitializer");
ISelectableItemRenderer:
ClassReference("org.apache.royale.html.beads.SolidBackgroundSelectableItemRendererBead");
- IItemRenderer:
ClassReference("mx.controls.listClasses.ListItemRenderer");
IViewport:
ClassReference("org.apache.royale.html.supportClasses.ScrollingViewport");
IViewportModel:
ClassReference("org.apache.royale.html.beads.models.ViewportModel");
-}
+} */
DropDownList
{
@@ -140,7 +154,7 @@ List
IBeadLayout:
ClassReference("spark.layouts.supportClasses.SparkLayoutBead");
IViewport:
ClassReference("org.apache.royale.html.supportClasses.ScrollingViewport");
IViewportModel:
ClassReference("org.apache.royale.html.beads.models.ViewportModel");
- IContentView: ClassReference("spark.components.DataGroup");
+ IContentView: ClassReference("spark.components.VirtualVDataGroup");
}
NumericStepper
@@ -190,6 +204,16 @@ SkinnableContainer
border-width: 1px;
}
+SkinnableDataContainer
+{
+ IBeadView:
ClassReference("spark.components.beads.SkinnableDataContainerView");
+ IBeadLayout:
ClassReference("spark.layouts.supportClasses.SparkLayoutBead");
+ IViewport:
ClassReference("spark.components.beads.SparkSkinScrollingViewport");
+ IViewportModel:
ClassReference("org.apache.royale.html.beads.models.ViewportModel");
+ IContentView: ClassReference("spark.components.DataGroup");
+ border-width: 1px;
+}
+
TabBar
{
IBeadView: ClassReference("spark.components.beads.TabBarView");
@@ -274,6 +298,13 @@ TitleWindow
IContentView:
ClassReference("org.apache.royale.html.supportClasses.ContainerContentArea");
}
+ SkinnableDataContainer
+ {
+ IBackgroundBead:
ClassReference("org.apache.royale.html.beads.SolidBackgroundBead");
+ IBorderBead:
ClassReference("org.apache.royale.html.beads.SingleLineBorderBead");
+ IContentView:
ClassReference("org.apache.royale.html.supportClasses.DataGroup");
+ }
+
Label
{
IBeadModel:
ClassReference("org.apache.royale.html.beads.models.TextModel");
diff --git
a/frameworks/projects/SparkRoyale/src/main/resources/spark-royale-manifest.xml
b/frameworks/projects/SparkRoyale/src/main/resources/spark-royale-manifest.xml
index 8c69271..fcadee4 100644
---
a/frameworks/projects/SparkRoyale/src/main/resources/spark-royale-manifest.xml
+++
b/frameworks/projects/SparkRoyale/src/main/resources/spark-royale-manifest.xml
@@ -46,6 +46,7 @@
<component id="Skin" class="spark.components.supportClasses.Skin"/>
<component id="SkinnableComponent"
class="spark.components.supportClasses.SkinnableComponent"/>
<component id="SkinnableContainer"
class="spark.components.SkinnableContainer"/>
+ <component id="SkinnableDataContainer"
class="spark.components.SkinnableDataContainer"/>
<component id="ToggleButton" class="spark.components.ToggleButton"/>
<component id="ToggleButtonBase"
class="spark.components.supportClasses.ToggleButtonBase"/>
<component id="ButtonBase"
class="spark.components.supportClasses.ButtonBase"/>
@@ -117,6 +118,7 @@
<component id="ButtonBar" class="spark.components.ButtonBar"/>
<component id="SkinnablePopUpContainer"
class="spark.components.SkinnablePopUpContainer"/>
+ <component id="VirtualVDataGroup"
class="spark.components.VirtualVDataGroup"/>
<component id="NonVirtualHDataGroup"
class="spark.components.NonVirtualHDataGroup"/>
<component id="NonVirtualVDataGroup"
class="spark.components.NonVirtualVDataGroup"/>
<component id="TabBarView" class="spark.components.beads.TabBarView"/>
@@ -137,6 +139,8 @@
<component id="SparkButtonSkin" class="spark.skins.SparkButtonSkin"/>
<component id="Graphic" class="spark.primitives.Graphic"/>
<component id="Move" class="spark.effects.Move"/>
+ <component id="SelfItemRenderer"
class="spark.components.beads.SelfItemRenderer"/>
+ <component id="SelfItemRendererInitializer"
class="spark.components.beads.SelfItemRendererInitializer"/>
</componentPackage>
diff --git
a/frameworks/projects/SparkRoyale/src/main/royale/SparkRoyaleClasses.as
b/frameworks/projects/SparkRoyale/src/main/royale/SparkRoyaleClasses.as
index b712a64..0572a8e 100644
--- a/frameworks/projects/SparkRoyale/src/main/royale/SparkRoyaleClasses.as
+++ b/frameworks/projects/SparkRoyale/src/main/royale/SparkRoyaleClasses.as
@@ -92,6 +92,7 @@ internal class SparkRoyaleClasses
import spark.components.beads.PanelView; PanelView;
import spark.components.beads.GroupView; GroupView;
import spark.components.beads.SkinnableContainerView;
SkinnableContainerView;
+ import spark.components.beads.SkinnableDataContainerView;
SkinnableDataContainerView;
import spark.components.beads.SparkSkinScrollingViewport;
SparkSkinScrollingViewport;
import
spark.components.beads.SparkSkinWithClipAndEnableScrollingViewport;
SparkSkinWithClipAndEnableScrollingViewport;
import spark.components.beads.DropDownListView; DropDownListView;
@@ -103,7 +104,6 @@ internal class SparkRoyaleClasses
import spark.components.IItemRenderer; IItemRenderer;
-//import spark.components.SkinnableDataContainer; SkinnableDataContainer;
//import spark.components.VideoDisplay; VideoDisplay;
//import spark.components.mediaClasses.ScrubBar; ScrubBar;
//import spark.components.mediaClasses.VolumeBar; VolumeBar;
diff --git
a/frameworks/projects/SparkRoyale/src/main/royale/spark/components/SkinnableDataContainer.as
b/frameworks/projects/SparkRoyale/src/main/royale/spark/components/SkinnableDataContainer.as
index 319ecf3..af4acfb 100644
---
a/frameworks/projects/SparkRoyale/src/main/royale/spark/components/SkinnableDataContainer.as
+++
b/frameworks/projects/SparkRoyale/src/main/royale/spark/components/SkinnableDataContainer.as
@@ -20,23 +20,46 @@
package spark.components
{
-import org.apache.royale.events.Event;
-
import mx.collections.IList;
import mx.core.IDataRenderer;
import mx.core.IFactory;
+import mx.core.IUIComponent;
import mx.core.IVisualElement;
import mx.core.mx_internal;
import mx.events.PropertyChangeEvent;
import mx.utils.BitFlagUtil;
import spark.components.supportClasses.SkinnableContainerBase;
+import spark.components.supportClasses.GroupBase;
+import spark.components.beads.SkinnableDataContainerView;
+import spark.components.beads.SparkDataContainerView;
import spark.core.IViewport;
-import spark.events.RendererExistenceEvent;
+//import spark.events.RendererExistenceEvent;
import spark.layouts.supportClasses.LayoutBase;
use namespace mx_internal;
+import org.apache.royale.core.IBead;
+import org.apache.royale.core.IItemRendererProvider;
+import org.apache.royale.core.IStrandWithPresentationModel;
+import org.apache.royale.core.IListPresentationModel;
+import org.apache.royale.html.beads.models.ListPresentationModel;
+
+import org.apache.royale.binding.ContainerDataBinding;
+import org.apache.royale.binding.DataBindingBase;
+import org.apache.royale.core.IBeadLayout;
+import org.apache.royale.core.IBeadView;
+import org.apache.royale.core.IChild;
+import org.apache.royale.core.ILayoutHost;
+import org.apache.royale.core.IParent;
+import org.apache.royale.core.ItemRendererClassFactory;
+import org.apache.royale.core.ValuesManager;
+import org.apache.royale.events.Event;
+import org.apache.royale.events.IEventDispatcher;
+import org.apache.royale.events.ValueEvent;
+import org.apache.royale.utils.loadBeadFromValuesManager;
+
+
/**
* Dispatched when a renderer is added to the container.
* The <code>event.renderer</code> property contains
@@ -49,7 +72,7 @@ use namespace mx_internal;
* @playerversion AIR 1.5
* @productversion Flex 4
*/
-[Event(name="rendererAdd", type="spark.events.RendererExistenceEvent")]
+//[Event(name="rendererAdd", type="spark.events.RendererExistenceEvent")]
/**
* Dispatched when a renderer is removed from the container.
@@ -63,7 +86,7 @@ use namespace mx_internal;
* @playerversion AIR 1.5
* @productversion Flex 4
*/
-[Event(name="rendererRemove", type="spark.events.RendererExistenceEvent")]
+//[Event(name="rendererRemove", type="spark.events.RendererExistenceEvent")]
//include "../styles/metadata/BasicInheritingTextStyles.as"
@@ -204,10 +227,10 @@ use namespace mx_internal;
* @langversion 3.0
* @playerversion Flash 10
* @playerversion AIR 1.5
- * @productversion Flex 4
+ * @productversion Royale 0.9.8
*/
-public class SkinnableDataContainer extends SkinnableContainerBase implements
IItemRendererOwner
-{
+public class SkinnableDataContainer extends SkinnableContainerBase implements
IItemRendererProvider, IStrandWithPresentationModel
+{ //implements IItemRendererOwner
//include "../core/Version.as";
//--------------------------------------------------------------------------
@@ -258,12 +281,49 @@ public class SkinnableDataContainer extends
SkinnableContainerBase implements II
* @langversion 3.0
* @playerversion Flash 10
* @playerversion AIR 1.5
- * @productversion Flex 4
+ * @productversion Royale 0.9.8
*/
public function SkinnableDataContainer()
{
super();
+ typeNames = "SkinnableDataContainer";
+ }
+
+
+ /**
+ * Returns the ILayoutHost which is its view. From ILayoutParent.
+ *
+ * @langversion 3.0
+ * @playerversion Flash 10.2
+ * @playerversion AIR 2.6
+ * @productversion Royale 0.8
+ */
+ public function getLayoutHost():ILayoutHost
+ {
+ return view as ILayoutHost;
}
+
+
+ /**
+ * The presentation model for the list.
+ *
+ * @langversion 3.0
+ * @playerversion Flash 10.2
+ * @playerversion AIR 2.6
+ * @productversion Royale 0.9
+ * @royaleignorecoercion org.apache.royale.core.IListPresentationModel
+ */
+ public function get presentationModel():IBead
+ {
+ var presModel:IListPresentationModel =
getBeadByType(IListPresentationModel) as IListPresentationModel;
+ if (presModel == null) {
+ presModel = new ListPresentationModel();
+ presModel.rowHeight = 18;
+ addBead(presModel);
+ }
+ return presModel;
+ }
+
//--------------------------------------------------------------------------
//
@@ -283,7 +343,7 @@ public class SkinnableDataContainer extends
SkinnableContainerBase implements II
* @playerversion AIR 1.5
* @productversion Flex 4
*/
- public var dataGroup:DataGroup;
+ //public var dataGroup:DataGroup;
/**
* @private
@@ -302,7 +362,7 @@ public class SkinnableDataContainer extends
SkinnableContainerBase implements II
* dataGroupProperties stores booleans as to whether these properties
* have been explicitly set or not.
*/
- private var dataGroupProperties:Object = {};
+ //private var dataGroupProperties:Object = {};
//--------------------------------------------------------------------------
//
@@ -320,7 +380,7 @@ public class SkinnableDataContainer extends
SkinnableContainerBase implements II
// autoLayout
//----------------------------------
- [Inspectable(defaultValue="true")]
+ //[Inspectable(defaultValue="true")]
/**
* @copy spark.components.supportClasses.GroupBase#autoLayout
@@ -332,7 +392,7 @@ public class SkinnableDataContainer extends
SkinnableContainerBase implements II
* @playerversion AIR 1.5
* @productversion Flex 4
*/
- public function get autoLayout():Boolean
+ /* public function get autoLayout():Boolean
{
if (dataGroup)
return dataGroup.autoLayout;
@@ -342,12 +402,12 @@ public class SkinnableDataContainer extends
SkinnableContainerBase implements II
var v:* = dataGroupProperties.autoLayout;
return (v === undefined) ? true : v;
}
- }
+ } */
/**
* @private
*/
- public function set autoLayout(value:Boolean):void
+ /* public function set autoLayout(value:Boolean):void
{
if (dataGroup)
{
@@ -358,7 +418,7 @@ public class SkinnableDataContainer extends
SkinnableContainerBase implements II
else
dataGroupProperties.autoLayout = value;
}
-
+ */
//----------------------------------
// dataProvider
//----------------------------------
@@ -376,21 +436,31 @@ public class SkinnableDataContainer extends
SkinnableContainerBase implements II
* @langversion 3.0
* @playerversion Flash 10
* @playerversion AIR 1.5
- * @productversion Flex 4
+ * @productversion Royale 0.9.8
+ *
+ * @royaleignorecoercion spark.components.DataGroup
+ * @royaleignorecoercion spark.components.beads.SparkDataContainerView
*/
[Bindable("dataProviderChanged")]
[Inspectable(category="Data")]
public function get dataProvider():IList
{
- return (dataGroup)
+ /* return (dataGroup)
? dataGroup.dataProvider
- : dataGroupProperties.dataProvider;
+ : dataGroupProperties.dataProvider; */
+
+ return ((view as SparkDataContainerView).contentView as
DataGroup).dataProvider;
}
+ /**
+ * @private
+ * @royaleignorecoercion spark.components.DataGroup
+ * @royaleignorecoercion spark.components.beads.SparkDataContainerView
+ */
public function set dataProvider(value:IList):void
{
- if (dataGroup)
+ /* if (dataGroup)
{
dataGroup.dataProvider = value;
dataGroupProperties = BitFlagUtil.update(dataGroupProperties as
uint,
@@ -398,7 +468,27 @@ public class SkinnableDataContainer extends
SkinnableContainerBase implements II
}
else
dataGroupProperties.dataProvider = value;
- dispatchEvent(new Event("dataProviderChanged"));
+ dispatchEvent(new Event("dataProviderChanged")); */
+
+ if (isWidthSizedToContent() || isHeightSizedToContent())
+ ((view as SparkDataContainerView).contentView as
DataGroup).addEventListener("itemsCreated", itemsCreatedHandler);
+ ((view as SparkDataContainerView).contentView as
DataGroup).dataProvider = value;
+ }
+
+ private function itemsCreatedHandler(event:Event):void
+ {
+ if (parent)
+ {
+ COMPILE::JS
+ {
+ // clear last width/height so elements size to content
+ element.style.width = "";
+ element.style.height = "";
+ ((view as SparkDataContainerView).contentView as
DataGroup).element.style.width = "";
+ ((view as SparkDataContainerView).contentView as
DataGroup).element.style.height = "";
+ }
+ (parent as IEventDispatcher).dispatchEvent(new
Event("layoutNeeded"));
+ }
}
//----------------------------------
@@ -413,28 +503,39 @@ public class SkinnableDataContainer extends
SkinnableContainerBase implements II
* @langversion 3.0
* @playerversion Flash 10
* @playerversion AIR 1.5
- * @productversion Flex 4
+ * @productversion Royale 0.9.8
*/
+ [SWFOverride(returns="org.apache.royale.core.IFactory")]
public function get itemRenderer():IFactory
{
- return (dataGroup)
+ /* return (dataGroup)
? dataGroup.itemRenderer
- : dataGroupProperties.itemRenderer;
+ : dataGroupProperties.itemRenderer; */
+
+ return ((view as SparkDataContainerView).contentView as
DataGroup).itemRenderer;
}
/**
* @private
*/
+ [SWFOverride(params="org.apache.royale.core.IFactory",
altparams="mx.core.IFactory")]
public function set itemRenderer(value:IFactory):void
{
- if (dataGroup)
+ /* if (dataGroup)
{
dataGroup.itemRenderer = value;
dataGroupProperties = BitFlagUtil.update(dataGroupProperties as
uint,
ITEM_RENDERER_PROPERTY_FLAG, true);
}
else
- dataGroupProperties.itemRenderer = value;
+ dataGroupProperties.itemRenderer = value; */
+
+ ((view as SparkDataContainerView).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
SparkDataContainerView).contentView as
DataGroup).getBeadByType(ItemRendererClassFactory) as ItemRendererClassFactory;
+ factory.createFunction = factory.createFromClass;
+ factory.itemRendererFactory = value;
}
//----------------------------------
@@ -449,13 +550,15 @@ public class SkinnableDataContainer extends
SkinnableContainerBase implements II
* @langversion 3.0
* @playerversion Flash 10
* @playerversion AIR 1.5
- * @productversion Flex 4
+ * @productversion Royale 0.9.8
*/
public function get itemRendererFunction():Function
{
- return (dataGroup)
+ /* return (dataGroup)
? dataGroup.itemRendererFunction
- : dataGroupProperties.itemRendererFunction;
+ : dataGroupProperties.itemRendererFunction; */
+
+ return null;
}
/**
@@ -463,19 +566,21 @@ public class SkinnableDataContainer extends
SkinnableContainerBase implements II
*/
public function set itemRendererFunction(value:Function):void
{
- if (dataGroup)
+ /* if (dataGroup)
{
dataGroup.itemRendererFunction = value;
dataGroupProperties = BitFlagUtil.update(dataGroupProperties as
uint,
ITEM_RENDERER_FUNCTION_PROPERTY_FLAG, true);
}
else
- dataGroupProperties.itemRendererFunction = value;
+ dataGroupProperties.itemRendererFunction = value; */
}
//----------------------------------
// layout
//----------------------------------
+
+ private var _layout:LayoutBase;
[Inspectable(category="General")]
@@ -487,20 +592,27 @@ public class SkinnableDataContainer extends
SkinnableContainerBase implements II
* @langversion 3.0
* @playerversion Flash 10
* @playerversion AIR 1.5
- * @productversion Flex 4
+ * @productversion Royale 0.9.8
*/
public function get layout():LayoutBase
{
- return (dataGroup)
+ /* return (dataGroup)
? dataGroup.layout
: dataGroupProperties.layout;
+ */
+ //if (!_layout)
+ // _layout = new BasicLayout();
+ return _layout;
}
/**
* @private
+ * @royaleignorecoercion spark.components.GroupBase
+ * @royaleignorecoercion spark.components.beads.SparkDataContainerView
*/
public function set layout(value:LayoutBase):void
{
+ /*
if (dataGroup)
{
dataGroup.layout = value;
@@ -509,13 +621,21 @@ public class SkinnableDataContainer extends
SkinnableContainerBase implements II
}
else
dataGroupProperties.layout = value;
+ */
+ _layout = value;
+ if (getBeadByType(IBeadView))
+ {
+ ((view as SkinnableDataContainerView).contentView as
GroupBase).layout = value;
+ if (parent)
+ ((view as SkinnableDataContainerView).contentView as
GroupBase).dispatchEvent(new Event("layoutNeeded"));
+ }
}
//----------------------------------
// typicalItem
//----------------------------------
- [Inspectable(category="Data")]
+ //[Inspectable(category="Data")]
/**
* @copy spark.components.DataGroup#typicalItem
@@ -525,17 +645,17 @@ public class SkinnableDataContainer extends
SkinnableContainerBase implements II
* @playerversion AIR 1.5
* @productversion Flex 4
*/
- public function get typicalItem():Object
+ /* public function get typicalItem():Object
{
return (dataGroup)
? dataGroup.typicalItem
: dataGroupProperties.typicalItem;
- }
+ } */
/**
* @private
*/
- public function set typicalItem(value:Object):void
+ /* public function set typicalItem(value:Object):void
{
if (dataGroup)
{
@@ -545,7 +665,7 @@ public class SkinnableDataContainer extends
SkinnableContainerBase implements II
}
else
dataGroupProperties.typicalItem = value;
- }
+ } */
//--------------------------------------------------------------------------
//
@@ -567,7 +687,7 @@ public class SkinnableDataContainer extends
SkinnableContainerBase implements II
* @langversion 3.0
* @playerversion Flash 10
* @playerversion AIR 1.5
- * @productversion Flex 4
+ * @productversion Royale 0.9.8
*/
public function itemToLabel(item:Object):String
{
@@ -596,7 +716,7 @@ public class SkinnableDataContainer extends
SkinnableContainerBase implements II
* @productversion Flex 4
*
*/
- public function updateRenderer(renderer:IVisualElement, itemIndex:int,
data:Object):void
+ /* public function updateRenderer(renderer:IVisualElement, itemIndex:int,
data:Object):void
{
// set the owner
renderer.owner = this;
@@ -613,7 +733,7 @@ public class SkinnableDataContainer extends
SkinnableContainerBase implements II
if ((renderer is IDataRenderer) && (renderer !== data))
IDataRenderer(renderer).data = data;
}
-
+ */
//--------------------------------------------------------------------------
//
// Overridden methods
@@ -627,7 +747,7 @@ public class SkinnableDataContainer extends
SkinnableContainerBase implements II
{
super.partAdded(partName, instance);
- if (instance == dataGroup)
+ /* if (instance == dataGroup)
{
// copy proxied values from dataGroupProperties (if set) to
dataGroup
@@ -694,7 +814,7 @@ public class SkinnableDataContainer extends
SkinnableContainerBase implements II
dataGroup.addEventListener(
RendererExistenceEvent.RENDERER_REMOVE, dispatchEvent);
}
- }
+ } */
}
/**
@@ -702,7 +822,7 @@ public class SkinnableDataContainer extends
SkinnableContainerBase implements II
*/
override protected function partRemoved(partName:String,
instance:Object):void
{
- super.partRemoved(partName, instance);
+ /* super.partRemoved(partName, instance);
if (instance == dataGroup)
{
@@ -738,7 +858,7 @@ public class SkinnableDataContainer extends
SkinnableContainerBase implements II
dataGroup.dataProvider = null;
dataGroup.layout = null;
dataGroup.rendererUpdateDelegate = null;
- }
+ } */
}
/**
@@ -748,7 +868,7 @@ public class SkinnableDataContainer extends
SkinnableContainerBase implements II
* for property change events. If no one's listening for them, then we
don't
* listen for them on our dataGroup.
*/
- override public function addEventListener(
+ /* override public function addEventListener(
type:String, listener:Function, useCapture:Boolean=false,
priority:int=0, useWeakReference:Boolean=false) : void
{
super.addEventListener(type, listener, useCapture, priority,
useWeakReference);
@@ -772,7 +892,7 @@ public class SkinnableDataContainer extends
SkinnableContainerBase implements II
dataGroup.addEventListener(
RendererExistenceEvent.RENDERER_REMOVE, dispatchEvent);
}
- }
+ } */
/**
* @private
@@ -781,7 +901,7 @@ public class SkinnableDataContainer extends
SkinnableContainerBase implements II
* for property change events. If no one's listening for them, then we
don't
* listen for them on our dataGroup.
*/
- override public function removeEventListener(type:String,
listener:Function, useCapture:Boolean=false) : void
+ /* override public function removeEventListener(type:String,
listener:Function, useCapture:Boolean=false) : void
{
super.removeEventListener(type, listener, useCapture);
@@ -804,7 +924,76 @@ public class SkinnableDataContainer extends
SkinnableContainerBase implements II
RendererExistenceEvent.RENDERER_REMOVE, dispatchEvent);
}
}
+ } */
+
+
//--------------------------------------------------------------------------
+ //
+ // Overridden methods
+ //
+
//--------------------------------------------------------------------------
+
+
//--------------------------------------------------------------------------
+ //
+ // IMXMLDocument et al
+ //
+
//--------------------------------------------------------------------------
+
+ private var _mxmlDescriptor:Array;
+ private var _mxmlDocument:Object = this;
+
+ /**
+ * @private
+ * @royaleignorecoercion spark.components.DataGroup
+ * @royaleignorecoercion spark.components.beads.SparkDataContainerView
+ */
+ override public function addedToParent():void
+ {
+// if (!getBeadByType(IBeadLayout))
+// addBead(new VerticalLayout());
+
+ if (!initialized) {
+ // each MXML file can also have styles in fx:Style block
+ ValuesManager.valuesImpl.init(this);
+ }
+
+ super.addedToParent();
+
+ // Load the layout bead if it hasn't already been loaded.
+ loadBeadFromValuesManager(IBeadLayout, "iBeadLayout", this);
+
+ dispatchEvent(new Event("beadsAdded"));
+ dispatchEvent(new Event("initComplete"));
+ if ((isHeightSizedToContent() || !isNaN(explicitHeight)) &&
+ (isWidthSizedToContent() || !isNaN(explicitWidth)))
+ dispatchEvent(new Event("layoutNeeded"));
+
+// ((view as SparkDataContainerView).contentView as
DataGroup).addEventListener("change", redispatcher);
+ ((view as SparkDataContainerView).contentView as
DataGroup).addEventListener("itemClick", redispatcher);
+ ((view as SparkDataContainerView).contentView as
DataGroup).addEventListener("doubleClick", redispatcher);
+
+ setActualSize(getExplicitOrMeasuredWidth(),
getExplicitOrMeasuredHeight());
+ }
+
+ override protected function createChildren():void
+ {
+ super.createChildren();
+
+ if (getBeadByType(DataBindingBase) == null)
+ addBead(new ContainerDataBinding());
+
+ dispatchEvent(new Event("initBindings"));
+ }
+
+ override public function setActualSize(w:Number, h:Number):void
+ {
+ super.setActualSize(w, h);
+ ((view as SparkDataContainerView).contentView as
DataGroup).setActualSize(w, h);
}
+
+ private function redispatcher(event:Event):void
+ {
+ dispatchEvent(new Event(event.type));
+ }
}
}
diff --git
a/frameworks/projects/SparkRoyale/src/main/royale/spark/components/VirtualVDataGroup.as
b/frameworks/projects/SparkRoyale/src/main/royale/spark/components/VirtualVDataGroup.as
new file mode 100644
index 0000000..5a1d0d2
--- /dev/null
+++
b/frameworks/projects/SparkRoyale/src/main/royale/spark/components/VirtualVDataGroup.as
@@ -0,0 +1,49 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+// 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 spark.components
+{
+
+/**
+ * The VirtualVDataGroup class is a DataGroup that defaults to
+ * virtual vertical layout
+ *
+ * @langversion 3.0
+ * @playerversion Flash 10
+ * @playerversion AIR 1.5
+ * @productversion Flex 4
+ */
+public class VirtualVDataGroup extends DataGroup
+{
+ /**
+ * Constructor.
+ *
+ * @langversion 3.0
+ * @playerversion Flash 10
+ * @playerversion AIR 1.5
+ * @productversion Flex 4
+ */
+ public function VirtualVDataGroup()
+ {
+ super();
+ typeNames = "VirtualVDataGroup";
+
+ }
+}
+}
diff --git
a/frameworks/projects/SparkRoyale/src/main/royale/spark/components/beads/SelfItemRenderer.as
b/frameworks/projects/SparkRoyale/src/main/royale/spark/components/beads/SelfItemRenderer.as
new file mode 100644
index 0000000..764f838
--- /dev/null
+++
b/frameworks/projects/SparkRoyale/src/main/royale/spark/components/beads/SelfItemRenderer.as
@@ -0,0 +1,52 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+// 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 spark.components.beads
+{
+ import spark.components.supportClasses.ItemRenderer;
+ import org.apache.royale.core.IBeadLayout;
+ import org.apache.royale.core.IIndexedItemRenderer;
+ import org.apache.royale.events.Event;
+
+ /**
+ * The SelfItemRenderer class defines the Spark item renderer class
+ * these uses the item to render itself.
+ *
+ * @langversion 3.0
+ * @playerversion Flash 10
+ * @playerversion AIR 1.5
+ * @productversion Royale 0.9.8
+ */
+ public class SelfItemRenderer extends ItemRenderer implements
IIndexedItemRenderer
+ {
+ /**
+ * Constructor.
+ *
+ * @langversion 3.0
+ * @playerversion Flash 10
+ * @playerversion AIR 1.5
+ * @productversion Royale 0.9.8
+ */
+ public function SelfItemRenderer()
+ {
+ super();
+ typeNames = "SelfItemRenderer";
+ }
+ }
+}
diff --git
a/frameworks/projects/SparkRoyale/src/main/royale/spark/components/beads/SelfItemRendererInitializer.as
b/frameworks/projects/SparkRoyale/src/main/royale/spark/components/beads/SelfItemRendererInitializer.as
new file mode 100644
index 0000000..c627e00
--- /dev/null
+++
b/frameworks/projects/SparkRoyale/src/main/royale/spark/components/beads/SelfItemRendererInitializer.as
@@ -0,0 +1,88 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+// 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 spark.components.beads
+{
+ import org.apache.royale.core.Bead;
+ import org.apache.royale.core.IChild;
+ import org.apache.royale.core.IItemRenderer;
+ import org.apache.royale.core.IIndexedItemRenderer;
+ import org.apache.royale.core.IItemRendererInitializer;
+ import org.apache.royale.core.IIndexedItemRendererInitializer;
+ import org.apache.royale.core.ILayoutChild;
+
+ /**
+ * The SelfItemRendererInitializer class initializes self item
renderers.
+ *
+ * @langversion 3.0
+ * @playerversion Flash 10.2
+ * @playerversion AIR 2.6
+ * @productversion Royale 0.9.8
+ */
+ public class SelfItemRendererInitializer extends Bead implements
IItemRendererInitializer, IIndexedItemRendererInitializer
+ {
+ /**
+ * Constructor.
+ *
+ * @langversion 3.0
+ * @playerversion Flash 10.2
+ * @playerversion AIR 2.6
+ * @productversion Royale 0.9.8
+ */
+ public function SelfItemRendererInitializer()
+ {
+ }
+
+ /**
+ * @private
+ */
+ public function initializeItemRenderer(renderer:IItemRenderer,
data:Object):void
+ {
+ var child:IChild = data as IChild;
+ if (child == null) return;
+
+ var sir:SelfItemRenderer = renderer as SelfItemRenderer;
+ if (sir == null) return;
+
+ var plc:ILayoutChild = sir.parent as ILayoutChild;
+ var clc:ILayoutChild = child as ILayoutChild;
+ if (plc && clc)
+ {
+ sir.explicitWidth = NaN;
+ sir.percentWidth = NaN;
+ if (!plc.isWidthSizedToContent() &&
!clc.isWidthSizedToContent()) sir.percentWidth = 100;
+ sir.explicitHeight = NaN;
+ sir.percentHeight = NaN;
+ if (!plc.isHeightSizedToContent() &&
!clc.isHeightSizedToContent()) sir.percentHeight = 100;
+ sir.invalidateSize();
+ }
+
+ sir.removeAllElements();
+ sir.addElement(child);
+ }
+
+ /**
+ * @private
+ */
+ public function
initializeIndexedItemRenderer(renderer:IIndexedItemRenderer, data:Object,
index:int):void
+ {
+ initializeItemRenderer(renderer, data);
+ }
+ }
+}
diff --git
a/frameworks/projects/SparkRoyale/src/main/royale/spark/components/beads/SkinnableDataContainerView.as
b/frameworks/projects/SparkRoyale/src/main/royale/spark/components/beads/SkinnableDataContainerView.as
new file mode 100644
index 0000000..bfd5e8d
--- /dev/null
+++
b/frameworks/projects/SparkRoyale/src/main/royale/spark/components/beads/SkinnableDataContainerView.as
@@ -0,0 +1,143 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+// 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 spark.components.beads
+{
+
+import spark.components.SkinnableDataContainer;
+import spark.components.supportClasses.GroupBase;
+import spark.components.supportClasses.SkinnableComponent;
+import spark.components.supportClasses.Skin;
+import spark.layouts.BasicLayout;
+
+import org.apache.royale.core.IBead;
+import org.apache.royale.core.IContainer;
+import org.apache.royale.core.ILayoutChild;
+import org.apache.royale.core.IStrand;
+import org.apache.royale.core.UIBase;
+
+/**
+ * @private
+ * The SkinnableDataContainerView for emulation.
+ */
+public class SkinnableDataContainerView extends SparkDataContainerView
+{
+
//--------------------------------------------------------------------------
+ //
+ // Constructor
+ //
+
//--------------------------------------------------------------------------
+
+ /**
+ * Constructor.
+ *
+ * @langversion 3.0
+ * @playerversion Flash 9
+ * @playerversion AIR 1.1
+ * @productversion Flex 3
+ */
+ public function SkinnableDataContainerView()
+ {
+ super();
+ }
+
+ override protected function prepareContentView():void
+ {
+ var host:SkinnableDataContainer = _strand as SkinnableDataContainer;
+ if (host.skin)
+ {
+ if (!host.isWidthSizedToContent())
+ host.skin.percentWidth = 100;
+ if (!host.isHeightSizedToContent())
+ host.skin.percentHeight = 100;
+ }
+ else
+ super.prepareContentView();
+ }
+
+ /**
+ * Adjusts the size of the host after the layout has been run if needed
+ *
+ * @langversion 3.0
+ * @playerversion Flash 10.2
+ * @playerversion AIR 2.6
+ * @productversion Royale 0.0
+ * @royaleignorecoercion org.apache.royale.core.UIBase
+ */
+ override public function beforeLayout():Boolean
+ {
+ var host:SkinnableDataContainer = _strand as SkinnableDataContainer;
+ if (host.isWidthSizedToContent() && host.isHeightSizedToContent())
+ {
+ if (host.skin)
+ {
+ (host.skin as Skin).layout.measure();
+ host.measuredHeight = host.skin.measuredHeight;
+ host.measuredWidth = host.skin.measuredWidth;
+ }
+ else
+ {
+ if (host.layout == null)
+ host.layout = new BasicLayout();
+ host.layout.measure();
+ }
+ }
+ else
+ {
+ if (host.skin)
+ {
+ (host.skin as Skin).layout.measure();
+ if (host.isWidthSizedToContent())
+ {
+ host.skin.setLayoutBoundsSize(NaN,
host.height);
+ host.measuredWidth =
host.skin.measuredWidth;
+ } else
+ {
+ host.skin.setLayoutBoundsSize(host.width,
NaN);
+ host.measuredHeight =
host.skin.measuredHeight;
+ }
+ }
+ else
+ {
+ if (host.layout == null)
+ host.layout = new BasicLayout();
+ host.layout.measure();
+ var h:Number = host.isHeightSizedToContent() ?
host.measuredHeight : host.height;
+ var w:Number = host.isWidthSizedToContent() ?
host.measuredWidth : host.width;
+ (viewport.contentView as ILayoutChild).setWidthAndHeight(w, h);
+ }
+
+ }
+ return true;
+ }
+
+ override protected function addViewport():void
+ {
+ var chost:IContainer = host as IContainer;
+ var skinhost:SkinnableComponent = host as SkinnableComponent;
+ if (chost != null && chost != viewport.contentView && skinhost.skin) {
+ chost.addElement(skinhost.skin);
+ }
+ else
+ super.addViewport();
+ }
+
+}
+
+}
diff --git
a/frameworks/projects/SparkRoyale/src/main/royale/spark/components/beads/SparkDataContainerView.as
b/frameworks/projects/SparkRoyale/src/main/royale/spark/components/beads/SparkDataContainerView.as
new file mode 100644
index 0000000..be5e9b5
--- /dev/null
+++
b/frameworks/projects/SparkRoyale/src/main/royale/spark/components/beads/SparkDataContainerView.as
@@ -0,0 +1,130 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+// 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 spark.components.beads
+{
+
+import spark.components.SkinnableDataContainer;
+import spark.components.supportClasses.GroupBase;
+import spark.layouts.BasicLayout;
+
+import org.apache.royale.core.IBead;
+import org.apache.royale.core.IContainer;
+import org.apache.royale.core.ILayoutChild;
+import org.apache.royale.core.IStrand;
+import org.apache.royale.core.UIBase;
+import org.apache.royale.html.beads.ContainerView;
+import org.apache.royale.events.Event;
+import org.apache.royale.events.IEventDispatcher;
+
+/**
+ * @private
+ * The SparkDataContainerView for emulation.
+ */
+public class SparkDataContainerView extends ContainerView
+{
+
//--------------------------------------------------------------------------
+ //
+ // Constructor
+ //
+
//--------------------------------------------------------------------------
+
+ /**
+ * Constructor.
+ *
+ * @langversion 3.0
+ * @playerversion Flash 9
+ * @playerversion AIR 1.1
+ * @productversion Flex 3
+ */
+ public function SparkDataContainerView()
+ {
+ super();
+ }
+
+ /**
+ */
+ override public function set strand(value:IStrand):void
+ {
+ super.strand = value;
+ prepareContentView();
+ }
+
+ protected function prepareContentView():void
+ {
+ var host:SkinnableDataContainer = _strand as SkinnableDataContainer;
+ var g:GroupBase = (contentView as GroupBase);
+ if (host.layout != null)
+ g.layout = host.layout;
+ if (g.layout == null)
+ g.layout = new BasicLayout();
+
+ if (!host.isWidthSizedToContent())
+ g.percentWidth = 100;
+ if (!host.isHeightSizedToContent())
+ g.percentHeight = 100;
+
+ }
+
+ /**
+ * Adjusts the size of the host after the layout has been run if needed
+ *
+ * @langversion 3.0
+ * @playerversion Flash 10.2
+ * @playerversion AIR 2.6
+ * @productversion Royale 0.0
+ * @royaleignorecoercion org.apache.royale.core.UIBase
+ */
+ override public function beforeLayout():Boolean
+ {
+ var host:SkinnableDataContainer = _strand as SkinnableDataContainer;
+ if (host.isWidthSizedToContent() || host.isHeightSizedToContent())
+ {
+ host.layout.measure();
+ }
+ return true;
+ }
+
+ /**
+ * Adjusts the size of the host after the layout has been run if needed
+ *
+ * @langversion 3.0
+ * @playerversion Flash 10.2
+ * @playerversion AIR 2.6
+ * @productversion Royale 0.0
+ * @royaleignorecoercion org.apache.royale.core.UIBase
+ */
+ override public function afterLayout():void
+ {
+ var host:SkinnableDataContainer = _strand as SkinnableDataContainer;
+ if (host.isWidthSizedToContent() || host.isHeightSizedToContent())
+ {
+ // request re-run layout on the parent. In theory, we should only
+ // end up in afterLayout if the content size changed.
+ if (host.parent)
+ {
+ (host.parent as IEventDispatcher).dispatchEvent(new
Event("layoutNeeded"));
+ }
+ }
+ }
+
+
+}
+
+}
diff --git
a/frameworks/projects/SparkRoyale/src/main/royale/spark/components/beads/SparkSkinScrollingViewport.as
b/frameworks/projects/SparkRoyale/src/main/royale/spark/components/beads/SparkSkinScrollingViewport.as
index 5ecbdb2..91ec1aa 100644
---
a/frameworks/projects/SparkRoyale/src/main/royale/spark/components/beads/SparkSkinScrollingViewport.as
+++
b/frameworks/projects/SparkRoyale/src/main/royale/spark/components/beads/SparkSkinScrollingViewport.as
@@ -39,7 +39,6 @@ import org.apache.royale.core.ValuesManager;
import org.apache.royale.events.Event;
import org.apache.royale.events.EventDispatcher;
import org.apache.royale.geom.Size;
-import spark.components.SkinnableContainer;
COMPILE::SWF
{
diff --git
a/frameworks/projects/SparkRoyale/src/main/royale/spark/components/beads/SparkSkinViewport.as
b/frameworks/projects/SparkRoyale/src/main/royale/spark/components/beads/SparkSkinViewport.as
index d2839d9..b5dc6df 100644
---
a/frameworks/projects/SparkRoyale/src/main/royale/spark/components/beads/SparkSkinViewport.as
+++
b/frameworks/projects/SparkRoyale/src/main/royale/spark/components/beads/SparkSkinViewport.as
@@ -37,6 +37,8 @@ import org.apache.royale.events.Event;
import org.apache.royale.events.EventDispatcher;
import org.apache.royale.geom.Size;
import spark.components.SkinnableContainer;
+import spark.components.SkinnableDataContainer;
+import spark.layouts.supportClasses.LayoutBase;
COMPILE::SWF
{
@@ -96,7 +98,7 @@ public class SparkSkinViewport extends EventDispatcher
implements IBead, IViewpo
{
host.setSkin(new c());
host.skin.addEventListener("initComplete", initCompleteHandler);
- contentArea = host.skin; // temporary assigment so that
SkinnableContainer.addElement can add the skin
+ contentArea = host.skin; // temporary assigment so that
SkinnableXXContainer.addElement can add the skin
}
else
{
@@ -120,6 +122,12 @@ public class SparkSkinViewport extends EventDispatcher
implements IBead, IViewpo
if (sc.layout)
(contentArea as GroupBase).layout = sc.layout;
}
+ else if (host is SkinnableDataContainer)
+ {
+ var sdc:SkinnableDataContainer = host as SkinnableDataContainer;
+ if (sdc.layout)
+ (contentArea as GroupBase).layout = sdc.layout;
+ }
COMPILE::JS
{
@@ -137,23 +145,25 @@ public class SparkSkinViewport extends EventDispatcher
implements IBead, IViewpo
{
if(host != contentArea)
{
+ var scl:LayoutBase = null;
+
if (host is SkinnableContainer)
{
var sc:SkinnableContainer = host as SkinnableContainer;
- if (sc.layout)
- {
- if (!sc.layout.isWidthSizedToContent())
- contentArea.percentWidth = 100;
- if (!sc.layout.isHeightSizedToContent())
- contentArea.percentHeight = 100;
- }
- else
- {
- if (host.isWidthSizedToContent())
- contentArea.percentWidth = 100;
- if (host.isHeightSizedToContent())
- contentArea.percentHeight = 100;
- }
+ scl = sc.layout;
+ }
+ else if (host is SkinnableDataContainer)
+ {
+ var sdc:SkinnableDataContainer = host as
SkinnableDataContainer;
+ scl = sdc.layout;
+ }
+
+ if (scl)
+ {
+ if (!scl.isWidthSizedToContent())
+ contentArea.percentWidth = 100;
+ if (!scl.isHeightSizedToContent())
+ contentArea.percentHeight = 100;
}
else
{
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 39c602d..ef0e1c5 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
@@ -565,7 +565,7 @@ public class ListBase extends SkinnableContainer
factory.createFunction = factory.createFromClass;
factory.itemRendererFactory = value;
}
-
+
//----------------------------------
// itemRendererFunction
@@ -603,6 +603,7 @@ public class ListBase extends SkinnableContainer
//else
//dataGroupProperties.itemRendererFunction = value;
}
+
/**
* @private
*/
@@ -1157,7 +1158,7 @@ public class ListBase extends SkinnableContainer
* however in this case, always honoring the layout's useVirtalLayout
property seems
* less likely to cause confusion.
*/
- public function set useVirtualLayout(value:Boolean):void
+ public function set useVirtualLayout(value:Boolean):void
{
if (value == useVirtualLayout)
return;
@@ -1349,6 +1350,19 @@ public class ListBase extends SkinnableContainer
}
} */
+ //dataGroup copied from SkinnableDataContainer
+ /**
+ * An optional skin part that defines the DataGroup in the skin class
+ * where data items get pushed into, rendered, and laid out.
+ *
+ * @langversion 3.0
+ * @playerversion Flash 10
+ * @playerversion AIR 1.5
+ * @productversion Royale 0.9.4
+ * @royalesuppresspublicvarwarning
+ */
+ public var dataGroup:DataGroup;
+
/**
* @private
*/
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 8de275a..b7083f2 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
@@ -410,19 +410,6 @@ public class SkinnableComponent extends UIComponent
protected function partRemoved(partName:String, instance:Object):void {}
// not implemented
- //dataGroup copied from SkinnableDataContainer
- /**
- * An optional skin part that defines the DataGroup in the skin class
- * where data items get pushed into, rendered, and laid out.
- *
- * @langversion 3.0
- * @playerversion Flash 10
- * @playerversion AIR 1.5
- * @productversion Royale 0.9.4
- * @royalesuppresspublicvarwarning
- */
- public var dataGroup:DataGroup;
-
// getCurrentSkinState copied from SkinnableContainerBase
/* override */ protected function getCurrentSkinState():String
{
diff --git
a/frameworks/projects/SparkRoyale/src/main/royale/spark/layouts/HorizontalLayout.as
b/frameworks/projects/SparkRoyale/src/main/royale/spark/layouts/HorizontalLayout.as
index daec7e3..7739da7 100644
---
a/frameworks/projects/SparkRoyale/src/main/royale/spark/layouts/HorizontalLayout.as
+++
b/frameworks/projects/SparkRoyale/src/main/royale/spark/layouts/HorizontalLayout.as
@@ -25,7 +25,7 @@ import mx.core.IVisualElement;
import mx.core.mx_internal;
import mx.events.PropertyChangeEvent;
-import spark.components.DataGroup;
+//import spark.components.DataGroup;
import spark.components.supportClasses.GroupBase;
import spark.core.NavigationUnit;
import spark.layouts.supportClasses.DropLocation;
diff --git
a/frameworks/projects/SparkRoyale/src/main/royale/spark/layouts/VerticalLayout.as
b/frameworks/projects/SparkRoyale/src/main/royale/spark/layouts/VerticalLayout.as
index 5094ed2..bf114e8 100644
---
a/frameworks/projects/SparkRoyale/src/main/royale/spark/layouts/VerticalLayout.as
+++
b/frameworks/projects/SparkRoyale/src/main/royale/spark/layouts/VerticalLayout.as
@@ -30,7 +30,7 @@ import mx.core.IVisualElement;
import mx.core.mx_internal;
import mx.events.PropertyChangeEvent;
-import spark.components.DataGroup;
+//import spark.components.DataGroup;
import spark.components.supportClasses.GroupBase;
import spark.core.NavigationUnit;
import spark.layouts.supportClasses.DropLocation;
diff --git
a/frameworks/projects/SparkRoyale/src/main/royale/spark/layouts/supportClasses/SparkLayoutBead.as
b/frameworks/projects/SparkRoyale/src/main/royale/spark/layouts/supportClasses/SparkLayoutBead.as
index e1ed277..c9cfa00 100644
---
a/frameworks/projects/SparkRoyale/src/main/royale/spark/layouts/supportClasses/SparkLayoutBead.as
+++
b/frameworks/projects/SparkRoyale/src/main/royale/spark/layouts/supportClasses/SparkLayoutBead.as
@@ -27,6 +27,7 @@ import mx.core.mx_internal;
import spark.components.supportClasses.GroupBase;
import spark.components.SkinnableContainer;
+import spark.components.SkinnableDataContainer;
import spark.core.NavigationUnit;
import org.apache.royale.core.IBeadLayout;
@@ -88,6 +89,8 @@ public class SparkLayoutBead extends
org.apache.royale.core.LayoutBase
var usingSkin:Boolean = false;
if (host is SkinnableContainer)
usingSkin = (host as SkinnableContainer).skin != null;
+ else if (host is SkinnableDataContainer)
+ usingSkin = (host as SkinnableDataContainer).skin !=
null;
if (!usingSkin && target != host)
{