You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@royale.apache.org by yi...@apache.org on 2020/09/25 16:33:05 UTC

[royale-asjs] 08/11: Got new emulation stubs to compile

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

commit a57545fed9e60193d122c8141635749fceb952b7
Author: Yishay Weiss <yi...@yell.com>
AuthorDate: Fri Sep 25 13:24:31 2020 +0100

    Got new emulation stubs to compile
---
 .../MXRoyale/src/main/royale/MXRoyaleClasses.as    |  12 +
 .../mx/controls/scrollClasses/ScrollThumb.as       | 124 ++++----
 .../main/royale/mx/effects/EffectTargetFilter.as   | 331 +++++++++++++++++++++
 .../main/royale/mx/effects/IEffectTargetHost.as    | 122 ++++++++
 .../mx/effects/effectClasses/PropertyChanges.as    | 151 ++++++++++
 .../MXRoyale/src/main/royale/mx/events/RSLEvent.as |   3 +-
 6 files changed, 679 insertions(+), 64 deletions(-)

diff --git a/frameworks/projects/MXRoyale/src/main/royale/MXRoyaleClasses.as b/frameworks/projects/MXRoyale/src/main/royale/MXRoyaleClasses.as
index 16c1f13..57be249 100644
--- a/frameworks/projects/MXRoyale/src/main/royale/MXRoyaleClasses.as
+++ b/frameworks/projects/MXRoyale/src/main/royale/MXRoyaleClasses.as
@@ -282,6 +282,18 @@ internal class MXRoyaleClasses
     import mx.controls.beads.models.ComboBoxModel; ComboBoxModel;
     import mx.controls.beads.models.CascadingMenuModel; CascadingMenuModel;
     
+	import mx.collections.errors.ItemPendingError; ItemPendingError;
+	import mx.controls.scrollClasses.ScrollThumb; ScrollThumb;
+	import mx.effects.EffectTargetFilter; EffectTargetFilter;
+	import mx.effects.effectClasses.PropertyChanges; PropertyChanges;
+	import mx.effects.IEffect; IEffect;
+	import mx.effects.IEffectTargetHost; IEffectTargetHost;
+	import mx.events.RSLEvent; RSLEvent;
+	import mx.skins.halo.DataGridHeaderSeparator; DataGridHeaderSeparator;
+	import mx.filters.BaseDimensionFilter; BaseDimensionFilter;
+	import mx.filters.BaseFilter; BaseFilter;
+	import mx.filters.IBitmapFilter; IBitmapFilter;
+
     import mx.controls.beads.models.SingleSelectionICollectionViewModel; SingleSelectionICollectionViewModel;
 	import mx.controls.beads.models.DataGridColumnICollectionViewModel; DataGridColumnICollectionViewModel;
     import mx.controls.beads.models.DataGridICollectionViewModel; DataGridICollectionViewModel;
diff --git a/frameworks/projects/MXRoyale/src/main/royale/mx/controls/scrollClasses/ScrollThumb.as b/frameworks/projects/MXRoyale/src/main/royale/mx/controls/scrollClasses/ScrollThumb.as
index 31b5f89..65bcd10 100644
--- a/frameworks/projects/MXRoyale/src/main/royale/mx/controls/scrollClasses/ScrollThumb.as
+++ b/frameworks/projects/MXRoyale/src/main/royale/mx/controls/scrollClasses/ScrollThumb.as
@@ -65,7 +65,7 @@ public class ScrollThumb extends Button
 				
 		explicitMinHeight = 10;
 
-		stickyHighlighting = true;
+		//stickyHighlighting = true;
 	}
 	
 	//--------------------------------------------------------------------------
@@ -109,12 +109,12 @@ public class ScrollThumb extends Button
 	/**
 	 *  @private
 	 */
-	override mx_internal function buttonReleased():void
-	{
-		super.buttonReleased();
-
-		stopDragThumb();
-	}
+	//override mx_internal function buttonReleased():void
+	//{
+		//super.buttonReleased();
+//
+		//stopDragThumb();
+	//}
 	
 	//--------------------------------------------------------------------------
 	//
@@ -143,18 +143,18 @@ public class ScrollThumb extends Button
 	 */
 	private function stopDragThumb():void
 	{
-		var scrollBar:ScrollBar = ScrollBar(parent);
-		
-		scrollBar.isScrolling = false;
-		
-		scrollBar.dispatchScrollEvent(scrollBar.oldPosition, 
-                                      ScrollEventDetail.THUMB_POSITION);
-        
-		scrollBar.oldPosition = NaN;
-		
-		systemManager.getSandboxRoot().removeEventListener(
-			MouseEvent.MOUSE_MOVE, mouseMoveHandler, true);
-
+		//var scrollBar:ScrollBar = ScrollBar(parent);
+		//
+		//scrollBar.isScrolling = false;
+		//
+		//scrollBar.dispatchScrollEvent(scrollBar.oldPosition, 
+                                      //ScrollEventDetail.THUMB_POSITION);
+        //
+		//scrollBar.oldPosition = NaN;
+		//
+		//systemManager.getSandboxRoot().removeEventListener(
+			//MouseEvent.MOUSE_MOVE, mouseMoveHandler, true);
+//
 	}
 	
 	//--------------------------------------------------------------------------
@@ -167,19 +167,19 @@ public class ScrollThumb extends Button
 	 *  @private
 	 *  User pressed on the thumb, so start tracking in case they drag it.
 	 */
- 	override protected function mouseDownHandler(event:MouseEvent):void
-	{
-		super.mouseDownHandler(event);
-
-		var scrollBar:ScrollBar = ScrollBar(parent);
-        scrollBar.oldPosition = scrollBar.scrollPosition;
-		
-		lastY = event.localY;
-		
-		systemManager.getSandboxRoot().addEventListener(
-			MouseEvent.MOUSE_MOVE, mouseMoveHandler, true);
-
-	}
+ 	//override protected function mouseDownHandler(event:MouseEvent):void
+	//{
+		//super.mouseDownHandler(event);
+//
+		//var scrollBar:ScrollBar = ScrollBar(parent);
+        //scrollBar.oldPosition = scrollBar.scrollPosition;
+		//
+		//lastY = event.localY;
+		//
+		//systemManager.getSandboxRoot().addEventListener(
+			//MouseEvent.MOUSE_MOVE, mouseMoveHandler, true);
+//
+	//}
 
 	//--------------------------------------------------------------------------
 	//
@@ -193,36 +193,36 @@ public class ScrollThumb extends Button
 	 */
 	private function mouseMoveHandler(event:MouseEvent):void
 	{
-		if (ymin == ymax)
-			return;
-
-		var pt:Point = new Point(event.stageX, event.stageY);
-		pt = globalToLocal(pt);
-		
-		var scrollMove:Number = pt.y - lastY;
-		scrollMove += y;
-		
-		if (scrollMove < ymin)
-			scrollMove = ymin;
-		else if (scrollMove > ymax)
-			scrollMove = ymax;
-
-		var scrollBar:ScrollBar = ScrollBar(parent);
-		
-		scrollBar.isScrolling = true;
-		
-		$y = scrollMove;
-
-		// In an ideal world, this would probably dispatch an event,
-		// however this object is rather hardwired into a scroll bar
-		// so we'll just have it tell the scroll bar to change its position.
-        var oldPosition:Number = scrollBar.scrollPosition;
-		var pos:Number = Math.round(
-			(datamax - datamin) * (y - ymin) / (ymax - ymin)) + datamin;
-		scrollBar.scrollPosition = pos;
-		scrollBar.dispatchScrollEvent(oldPosition,
-									  ScrollEventDetail.THUMB_TRACK);
-		event.updateAfterEvent();									  
+		//if (ymin == ymax)
+			//return;
+//
+		//var pt:Point = new Point(event.stageX, event.stageY);
+		//pt = globalToLocal(pt);
+		//
+		//var scrollMove:Number = pt.y - lastY;
+		//scrollMove += y;
+		//
+		//if (scrollMove < ymin)
+			//scrollMove = ymin;
+		//else if (scrollMove > ymax)
+			//scrollMove = ymax;
+//
+		//var scrollBar:ScrollBar = ScrollBar(parent);
+		//
+		//scrollBar.isScrolling = true;
+		//
+		//$y = scrollMove;
+//
+		//// In an ideal world, this would probably dispatch an event,
+		//// however this object is rather hardwired into a scroll bar
+		//// so we'll just have it tell the scroll bar to change its position.
+        //var oldPosition:Number = scrollBar.scrollPosition;
+		//var pos:Number = Math.round(
+			//(datamax - datamin) * (y - ymin) / (ymax - ymin)) + datamin;
+		//scrollBar.scrollPosition = pos;
+		//scrollBar.dispatchScrollEvent(oldPosition,
+									  //ScrollEventDetail.THUMB_TRACK);
+		//event.updateAfterEvent();									  
 	}
 
 }
diff --git a/frameworks/projects/MXRoyale/src/main/royale/mx/effects/EffectTargetFilter.as b/frameworks/projects/MXRoyale/src/main/royale/mx/effects/EffectTargetFilter.as
new file mode 100644
index 0000000..2fc6198
--- /dev/null
+++ b/frameworks/projects/MXRoyale/src/main/royale/mx/effects/EffectTargetFilter.as
@@ -0,0 +1,331 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+//  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 mx.effects
+{
+
+import mx.effects.effectClasses.PropertyChanges;
+
+/**
+ *  The EffectTargetFilter class defines a custom filter that is executed 
+ *  by each transition effect on each target of the effect. 
+ *
+ *  <p>The EffectTargetFilter class defines a
+ *  <code>defaultFilterFunction()</code> method that uses the
+ *  <code>filterProperties</code> and <code>filterStyles</code> properties
+ *  to determine whether to play the effect on each effect target.</p>
+ *  
+ *  <p>You can also define a custom filter function
+ *  to implement your own filtering logic.
+ *  To do so, define your filter function, and then specify that function
+ *  to an EffectTargetFilter object using the <code>filterFunction</code>
+ *  property.</p>
+ *  
+ *  <p>To configure an effect to use a custom filter, you pass an 
+ *  EffectTargetFilter object to the <code>Effect.customFilter</code> property 
+ *  of the effect.</p>
+ *  
+ *  @langversion 3.0
+ *  @playerversion Flash 9
+ *  @playerversion AIR 1.1
+ *  @productversion Flex 3
+ */
+public class EffectTargetFilter
+{
+    //include "../core/Version.as";
+
+    //--------------------------------------------------------------------------
+    //
+    //  Constructor
+    //
+    //--------------------------------------------------------------------------
+
+    /**
+     *  Constructor.
+     *  
+     *  @langversion 3.0
+     *  @playerversion Flash 9
+     *  @playerversion AIR 1.1
+     *  @productversion Flex 3
+     */
+    public function EffectTargetFilter()
+    {
+        super();
+    }
+    
+    //--------------------------------------------------------------------------
+    //
+    //  Properties
+    //
+    //--------------------------------------------------------------------------
+    
+    //----------------------------------
+    //  filterFunction
+    //----------------------------------
+
+    /**
+     *  A function that defines custom filter logic.
+     *  Flex calls this method on every target of the effect.
+     *  If the function returns <code>true</code>,
+     *  the effect plays on the target;
+     *  if it returns <code>false</code>, the target is skipped by the effect.
+     *  A custom filter function gives you greater control over filtering
+     *  than the <code>Effect.filter</code> property. 
+     *
+     *  <p>The filter function has the following signature:</p>
+     *
+     *  <pre>
+     *  filterFunc(propChanges:Array, instanceTarget:Object):Boolean
+     *  {
+     *      // Return true to play the effect on instanceTarget, 
+     *      // or false to not play the effect.
+     *  } 
+     *  </pre>
+     *
+     *  <p>where:</p>
+     *  
+     *  <p><code>propChanges</code> - An Array of PropertyChanges objects, 
+     *  one object per target component of the effect.
+     *  If a property of a target is not modified by the transition,
+     *  it is not included in this Array.</p>
+     *  
+     *  <p><code>instanceTarget</code> - The specific target component
+     *  of the effect that you want to filter.
+     *  Within the custom filter function, you first search the
+     *  <code>propChanges</code> Array for the PropertyChanges object
+     *  that matches the <code>instanceTarget</code> argument
+     *  by comparing the <code>instanceTarget</code> argument
+     *  to the <code>propChanges.target</code> property.</p> 
+     *
+     *  @see mx.effects.effectClasses.PropertyChanges 
+     *  
+     *  @langversion 3.0
+     *  @playerversion Flash 9
+     *  @playerversion AIR 1.1
+     *  @productversion Flex 3
+     */
+    public var filterFunction:Function = defaultFilterFunctionEx;
+        
+    //----------------------------------
+    //  filterProperties
+    //----------------------------------
+
+    /** 
+     *  An Array of Strings specifying component properties. 
+     *  If any of the properties in the Array changed on the target component, 
+     *  play the effect on the target. 
+     *
+     *  <p>If you define a custom filter function, you can examine the 
+     *  <code>filterProperties</code> property from within your function.</p>
+     *  
+     *  @langversion 3.0
+     *  @playerversion Flash 9
+     *  @playerversion AIR 1.1
+     *  @productversion Flex 3
+     */
+    public var filterProperties:Array = [];
+    
+    //----------------------------------
+    //  filterStyles
+    //----------------------------------
+
+    /** 
+     *  An Array of Strings specifying style properties. 
+     *  If any of the style properties in the Array changed on the target component, 
+     *  play the effect on the target. 
+     *
+     *  <p>If you define a custom filter function, you can examine the 
+     *  <code>filterStyles</code> property from within your function.</p>
+     *  
+     *  @langversion 3.0
+     *  @playerversion Flash 9
+     *  @playerversion AIR 1.1
+     *  @productversion Flex 3
+     */
+    public var filterStyles:Array = [];
+
+    //----------------------------------
+    //  requiredSemantics
+    //----------------------------------
+
+    /**
+     *  A collection of properties and associated values which must be associated
+     *  with a target for the effect to be played.
+     *
+     *  <p>When working with data effects, you can use this property to filter effects. 
+     *  If you want to play a data effect on all targets of a list control 
+     *  that are not added by the effect, meaning targets that is removed, replaced, moved, 
+     *  or affected in any other way, you can write the effect definition as shown below: </p>
+     *
+     *  <pre>
+     *  &lt;mx:Blur&gt;
+     *      &lt;mx:customFilter&gt;
+     *          &lt;mx:EffectTargetFilter requiredSemantics="{{'added':false}}"/&gt;
+     *      &lt;/mx:customFilter&gt;
+     *  &lt;/mx:Blur&gt; </pre>
+     *
+     *  <p>To play a data effect on all targets that are not added or not removed by the effect, 
+     *  you can write the effect definition as shown below:</p>
+     *
+     *  <pre>
+     *  &lt;mx:Blur&gt;
+     *      &lt;mx:customFilter&gt;
+     *          &lt;mx:EffectTargetFilter requiredSemantics="{{'added':false}, {'removed':false}}"/&gt;
+     *      &lt;/mx:customFilter&gt;
+     *  &lt;/mx:Blur&gt;</pre>
+     *
+     *  <p>The allowed list of properties that you can specify includes <code>added</code>, 
+     *  <code>removed</code>, <code>replaced</code>, and <code>replacement</code>. 
+     *  The allowed values for the properties are <code>true</code> and <code>false</code>.</p>
+     *  
+     *  @langversion 3.0
+     *  @playerversion Flash 9
+     *  @playerversion AIR 1.1
+     *  @productversion Flex 3
+     */
+    public var requiredSemantics:Object = null;
+    
+    //--------------------------------------------------------------------------
+    //
+    //  Methods
+    //
+    //--------------------------------------------------------------------------
+
+    /** 
+     *  Determines whether a target should be filtered, returning true if it should be
+     *  included in an effect. 
+     *
+     *  The determination is made by calling filterFunction and semanticFilterFunction,
+     *  returning true if and only if both functions return true. The default functions
+     *  with the default values will always return true.
+     *
+     *  Typically, an EffectTargetFilter will use one type of filter or the other, but
+     *  not both.
+     *
+     *  @param propChanges An Array of PropertyChanges objects. The target property of 
+     *  each PropertyChanges object is equal to the effect's target. If a property of 
+     *  a target is not modified by a transition, the corresponding PropertyChanges 
+     *  object is not included in this array.
+     *
+     *  @param semanticsProvider The IEffectTargetHost used to evaluate the properties 
+     *  specified in requiredSemantics for the target, normally the effectTargetHost of 
+     *  the effect. For item change effects, when the targets of the effect are item 
+     *  renderers, this will be the List or TileList containing the item renderers.
+     *
+     *  @param target The target of the EffectInstance that calls this function. If an 
+     *  effect has multiple targets, this function is called once per target.
+     *
+     *  @return Returna <code>true</code>, if the target should be included in the effect; 
+     *  otherwise returns <code>false</code>.
+     *  
+     *  @langversion 3.0
+     *  @playerversion Flash 9
+     *  @playerversion AIR 1.1
+     *  @productversion Flex 3
+     */
+    public function filterInstance(propChanges:Array, semanticsProvider:IEffectTargetHost, 
+                                   target:Object):Boolean
+    {
+        if (filterFunction.length == 2)
+            return filterFunction(propChanges, target);
+        else
+            return filterFunction(propChanges, semanticsProvider, target);
+    }                                   
+
+    /** 
+     *  @private
+     */
+    protected function defaultFilterFunctionEx(propChanges:Array, semanticsProvider:IEffectTargetHost, 
+                                   target:Object):Boolean
+    {
+        if (requiredSemantics)
+        {
+            for (var prop:String in requiredSemantics)
+            {
+                // seems dumb to check this every time
+                // if necessary, we could do something with setters and getters
+                if (!semanticsProvider)
+                    return false;
+                if (semanticsProvider.getRendererSemanticValue(target,prop) != requiredSemantics[prop])
+                    return false;
+            }
+
+            // not clear this is the right thing to do here
+            // the problem is that defaultFilterFunction returns false in 
+            // some cases where we might expect it to return true
+            return true;
+        }
+        // if semantic filtering has passed, do property change filtering
+        return defaultFilterFunction(propChanges, target);
+    }
+                                       
+    /**
+     *  The default filter function for the EffectTargetFilter class. 
+     *  If the <code>instanceTarget</code> has different start and end values
+     *  for any of the values specified by the <code>filterProperties</code>
+     *  or <code>filterStyles</code> properties, play the effect on the target.
+     *
+     *  @param propChanges An Array of PropertyChanges objects.
+     *  The <code>target</code> property of each PropertyChanges object
+     *  is equal to the effect's target. 
+     *  If a property of a target is not modified by a transition, the 
+     *  corresponding PropertyChanges 
+     *  object is not included in this array.
+     *  
+     *  @param instanceTarget The target of the EffectInstance
+     *  that calls this function.
+     *  If an effect has multiple targets,
+     *  this function is called once per target. 
+     *
+     *  @return Returns <code>true</code> to allow the effect instance to play. 
+     *
+     *  @see mx.effects.effectClasses.PropertyChanges 
+     *  
+     *  @langversion 3.0
+     *  @playerversion Flash 9
+     *  @playerversion AIR 1.1
+     *  @productversion Flex 3
+     */
+    protected function defaultFilterFunction(propChanges:Array,
+                                             instanceTarget:Object):Boolean
+    {
+        var n:int = propChanges.length;
+        for (var i:int = 0; i < n; i++)
+        {
+            var props:PropertyChanges = propChanges[i];
+            if (props.target == instanceTarget)
+            {
+                var triggers:Array = filterProperties.concat(filterStyles);
+                var m:int = triggers.length;
+                for (var j:int = 0; j < m; j++)
+                {
+                    if (props.start[triggers[j]] !== undefined &&
+                        props.end[triggers[j]] != props.start[triggers[j]])
+                    {
+                        return true;
+                    }
+                }
+            }
+        }
+            
+        return false;
+    }
+}
+
+}
diff --git a/frameworks/projects/MXRoyale/src/main/royale/mx/effects/IEffectTargetHost.as b/frameworks/projects/MXRoyale/src/main/royale/mx/effects/IEffectTargetHost.as
new file mode 100644
index 0000000..85b3d96
--- /dev/null
+++ b/frameworks/projects/MXRoyale/src/main/royale/mx/effects/IEffectTargetHost.as
@@ -0,0 +1,122 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+//  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 mx.effects
+{
+
+/**
+ *  The IEffectTargetHost interface defines the interface that lets you access the 
+ *  target list-based control of a data effect. 
+ *  All list-based controls implement this interface.
+ *  This interface enables an instance of an effect class to communicate with the 
+ *  list-based control on which the effect is playing. 
+ *  This interface is also used for determining whether to play an effect based on if a data item is 
+ *  added, removed, or replaced in the target control. 
+ *
+ *  @see mx.controls.listClasses.ListBase
+ *  
+ *  @langversion 3.0
+ *  @playerversion Flash 9
+ *  @playerversion AIR 1.1
+ *  @productversion Flex 3
+ */
+public interface IEffectTargetHost
+{
+
+    /**
+     *  Called by an <code>UnconstrainItemAction</code> effect
+     *  as part of a data change effect if the item renderers corresponding
+     *  to certain data items need to move outside the normal positions
+     *  of item renderers in the control. 
+     *  The control does not attempt to position the item render for the 
+     *  duration of the effect.
+     * 
+     *  @param item The item renderer that is a target of the effect.
+     *  
+     *  @langversion 3.0
+     *  @playerversion Flash 9
+     *  @playerversion AIR 1.1
+     *  @productversion Flex 3
+     */
+    function unconstrainRenderer(item:Object):void;
+
+    /**
+     *  Removes an item renderer if a data change effect is running.
+     *  The item renderer must correspond to data that has already
+     *  been removed from the data provider collection.
+     * 
+     *  This function will be called by a <code>RemoveItemAction</code>
+     *  effect as part of a data change effect to specify the point
+     *  at which a data item ceases to displayed by the control using
+     *  an item renderer.
+     * 
+     *  @param item The item renderer to remove from the control's layout.
+     *  
+     *  @langversion 3.0
+     *  @playerversion Flash 9
+     *  @playerversion AIR 1.1
+     *  @productversion Flex 3
+     */
+    function removeDataEffectItem(target:Object):void;
+
+    /**
+     *  Adds an item renderer if a data change effect is running.
+     *  The item renderer should correspond to a recently added
+     *  data item in the data provider's collection that isn't
+     *  yet being displayed.
+     * 
+     *  <p>This function will be called by an <code>AddItemAction</code>
+     *  effect as part of a data change effect to specify the point
+     *  at which a data item added to a collection begins to be displayed
+     *  by the control using an item renderer.</p>
+     * 
+     *  @param item The item renderer to add to the control's layout.
+     *  
+     *  @langversion 3.0
+     *  @playerversion Flash 9
+     *  @playerversion AIR 1.1
+     *  @productversion Flex 3
+     */
+    function addDataEffectItem(target:Object):void;
+
+    /**
+     *  Returns <code>true</code> or <code>false</code> 
+     *  to indicates whether the effect should play on the target.
+     *  The EffectTargetFilter class calls this method when you set 
+     *  the <code>filter</code> property on a data effect. 
+     *  For example, you set <code>filter</code> property 
+     *  to <code>addItem</code> or <code>removeItem</code>.
+     *
+     *  @param target An item renderer
+     * 
+     *  @param semanticProperty The semantic property of the renderer
+     *  whose value will be returned.
+     *  
+     *  @return <code>true</code> or <code>false</code> 
+     *  to indicates whether the effect should play on the target. 
+     *  
+     *  @langversion 3.0
+     *  @playerversion Flash 9
+     *  @playerversion AIR 1.1
+     *  @productversion Flex 3
+     */
+    function getRendererSemanticValue(target:Object,semanticProperty:String):Object;
+
+}
+
+}
diff --git a/frameworks/projects/MXRoyale/src/main/royale/mx/effects/effectClasses/PropertyChanges.as b/frameworks/projects/MXRoyale/src/main/royale/mx/effects/effectClasses/PropertyChanges.as
new file mode 100644
index 0000000..1db7c3d
--- /dev/null
+++ b/frameworks/projects/MXRoyale/src/main/royale/mx/effects/effectClasses/PropertyChanges.as
@@ -0,0 +1,151 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+//  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 mx.effects.effectClasses
+{
+
+import mx.core.IUIComponent;
+
+/**
+ *  The PropertyChanges class defines the start and end values
+ *  for a set of properties of a target component of a transition.
+ *  The <code>start</code> and <code>end</code> fields
+ *  of the PropertyChanges class contain the same set of properties, 
+ *  but with different values. 
+ *
+ *  <p>Target properties that have the same start and end values
+ *  are not included in the <code>start</code> and <code>end</code> fields.</p>
+ *
+ *  @see mx.states.Transition
+ *  
+ *  @langversion 3.0
+ *  @playerversion Flash 9
+ *  @playerversion AIR 1.1
+ *  @productversion Flex 3
+ */
+public class PropertyChanges
+{
+    //include "../../core/Version.as";
+
+	//--------------------------------------------------------------------------
+	//
+	//  Constructor
+	//
+	//--------------------------------------------------------------------------
+
+	/**
+	 *  The PropertyChanges constructor.
+	 *
+	 *  @param target Object that is a target of an effect.
+	 *  
+	 *  @langversion 3.0
+	 *  @playerversion Flash 9
+	 *  @playerversion AIR 1.1
+	 *  @productversion Flex 3
+	 */
+	public function PropertyChanges(target:Object)
+	{
+		super();
+
+		this.target = target;
+	}
+	
+	//--------------------------------------------------------------------------
+	//
+	//  Properties
+	//
+	//--------------------------------------------------------------------------
+
+	//----------------------------------
+	//  end
+	//----------------------------------
+
+	/**
+	 *  An Object containing the ending properties of the <code>target</code>
+	 *  component modified by the change in view state.
+	 *
+	 *  <p>For example, for a <code>target</code> component that is both
+	 *  moved and resized by a change to the view state, <code>end</code>
+	 *  contains the ending position and size of the component, 
+	 *  as the following example shows:
+	 *  <pre>{ x: 100, y: 100, width: 200, height: 200 }</pre></p>
+	 *  
+	 *  @langversion 3.0
+	 *  @playerversion Flash 9
+	 *  @playerversion AIR 1.1
+	 *  @productversion Flex 3
+	 */
+	public var end:Object = {};
+
+	//----------------------------------
+	//  start
+	//----------------------------------
+
+	/**
+	 *  An Object containing the starting properties of the <code>target</code>
+	 *  component modified by the change in view state.
+	 *
+	 *  <p>For example, for a <code>target</code> component that is both
+	 *  moved and resized by a change to the view state, <code>start</code>
+	 *  contains the starting position and size of the component,
+	 *  as the following example shows:
+	 *  <pre>{ x: 0, y: 0, width: 100, height: 100}</pre></p>
+	 *  
+	 *  @langversion 3.0
+	 *  @playerversion Flash 9
+	 *  @playerversion AIR 1.1
+	 *  @productversion Flex 3
+	 */
+	public var start:Object = {};
+
+	//----------------------------------
+	//  target
+	//----------------------------------
+
+	/**
+	 *  A target component of a transition.
+	 *  The <code>start</code> and <code>end</code> fields
+	 *  of the PropertyChanges object define how the target component
+	 *  is modified by the change to the view state.
+	 *  
+	 *  @langversion 3.0
+	 *  @playerversion Flash 9
+	 *  @playerversion AIR 1.1
+	 *  @productversion Flex 3
+	 */
+	public var target:Object;
+
+    // TODO (chaase): This flag is currently used by the transform-related
+    // effects. We should investigate whether we really need it, or can get
+    // by without it
+    /**
+     *  This flag controls whether values that are the same in the
+     *  start and end states are stripped from those objects. 
+     * 
+     *  @default true
+     *  
+     *  @langversion 3.0
+     *  @playerversion Flash 9
+     *  @playerversion AIR 1.1
+     *  @productversion Flex 3
+     */
+    public var stripUnchangedValues:Boolean = true;
+}
+
+}
diff --git a/frameworks/projects/MXRoyale/src/main/royale/mx/events/RSLEvent.as b/frameworks/projects/MXRoyale/src/main/royale/mx/events/RSLEvent.as
index 3f0d9d9..5806236 100644
--- a/frameworks/projects/MXRoyale/src/main/royale/mx/events/RSLEvent.as
+++ b/frameworks/projects/MXRoyale/src/main/royale/mx/events/RSLEvent.as
@@ -22,7 +22,6 @@ package mx.events
 
 //import flash.display.LoaderInfo;
 import org.apache.royale.events.Event;
-import org.apache.royale.events.ProgressEvent;
 import org.apache.royale.net.URLRequest;
 
 /**
@@ -352,7 +351,7 @@ public class RSLEvent extends ProgressEvent
 	/**
 	 *  @private
 	 */
-	override public function clone():Event
+	public function clone():Event
 	{
 		return new RSLEvent(type, bubbles, cancelable,
 							bytesLoaded, bytesTotal, rslIndex,