implemented VectorUtils.union().

implemented VectorUtils.union().

--- WeaveData/src/weave/utils/VectorUtils.as
+++ WeaveData/src/weave/utils/VectorUtils.as
@@ -19,6 +19,8 @@

 package weave.utils
 {
+	import flash.utils.Dictionary;
+
 	import mx.utils.ObjectUtil;

 	/**
@@ -30,6 +32,44 @@
 	 */
 	public class VectorUtils
 	{
+		/**
+		 * Computes the union of a list of Arrays.
+		 * @param arrays A list of Arrays.
+		 * @return The union of the items in both Arrays, in the order that they appear in the first Array.
+		 */
+		public static function union(...arrays):Array
+		{
+			if (arrays.length == 0)
+				return arrays;
+			if (arrays.length == 1)
+				return arrays[0]
+
+			var result:Array = [];
+			var item:*;
+			var firstArray:* = arrays.shift();
+			var lastArray:* = arrays.pop();
+
+			_unionId++;
+			for each (item in lastArray)
+				_unionLookup[item] = _unionId;
+
+			for each (var array:* in arrays)
+			{
+				for each (item in array)
+					if (_unionLookup[item] === _unionId)
+						_unionLookup[item] = _unionId + 1;
+				_unionId++;
+			}
+
+			for each (item in firstArray)
+				if (_unionLookup[item] === _unionId)
+					result.push(item);
+
+			return result;
+		}
+		private static var _unionLookup:Dictionary = new Dictionary(true);
+		private static var _unionId:int = 0;
+
 		/**
 		 * This function copies the contents of the source to the destination.
 		 * Either parameter may be either an Array or a Vector.


OOPS: fixed a straggling compile error.

OOPS: fixed a straggling compile error.

--- asunit-4.0/src/asunit/core/AsUnitCore.as
+++ asunit-4.0/src/asunit/core/AsUnitCore.as
@@ -120,7 +120,6 @@
        protected function onRunCompleted(event:Event):void {
 			runner.removeEventListener(Event.COMPLETE, onRunCompleted);
 			result.onRunCompleted(result);
-            onRunCompleted();
             dispatchEvent(event);
         }
 	}


fix bug move image path to textureAtlas.xml

--- src/model/XMLDataProxy.as
+++ src/model/XMLDataProxy.as
@@ -108,7 +108,7 @@

 		public function setImagePath(imagePath:String):void
 		{
-			_xml.@[ConstValues.A_IMAGE_PATH] = imagePath;
+			_textureAtlasXML.@[ConstValues.A_IMAGE_PATH] = imagePath;
 		}

 		public function getArmatureXMLList(armatureName:String = null):XMLList


Small VCard tweak to prevent possible error while saving.

--- src/org/igniterealtime/xiff/vcard/VCard.as
+++ src/org/igniterealtime/xiff/vcard/VCard.as
@@ -245,7 +245,7 @@
 		/**
 		 * @private
 		 */
-		private var extensionNames:Array;
+		private var extensionNames:Array = [];

 		/**
 		 * @private
@@ -255,7 +255,7 @@
 		/**
 		 * @private
 		 */
-		private var _extensions:Dictionary;
+		private var _extensions:Dictionary = new Dictionary();

 		/**
 		 * Don't call directly, use the static method getVCard() and add a callback.
@@ -385,9 +385,6 @@
 			}

 			version = vCardNode.@version;
-
-			extensionNames = [];
-			_extensions = new Dictionary();

 			var nodes:XMLList = vCardNode.children();


Transferred from the Adobe Open Source Subversion Repository

Revision: 1570
Author:   jimurphy@adobe.com
Date:     2008-05-06T17:43:41.713917Z

Log Message:
-----------
Merge 3.0.x revision [1569] -> trunk

Modified Paths:
--------------
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/MenuBar.as</path>
<path kind="dir" action="M">/flex/sdk/trunk</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/containers/TitleWindow.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/DataGrid.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/Tree.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/managers/DragManager.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/containers/DividedBox.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/containers/FormItem.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/Menu.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/SWFLoader.as</path>

git-svn-id: 7146a936b37d36e51ea0d66f8acbe0b8281bc7b7@1267626 13f79535-47bb-0310-9956-ffa450edef68

--- frameworks/projects/mx/src/mx/containers/FormItem.as
+++ frameworks/projects/mx/src/mx/containers/FormItem.as
@@ -56,7 +56,7 @@
 /**
  *  Specifies the skin to use for the required field indicator.
  *
- *  @default mx.containers.FormItem.Required
+ *  The default value is the "mx.containers.FormItem.Required" symbol in the Assets.swf file.
  */
 [Style(name="indicatorSkin", type="Class", inherit="no")]

@@ -137,11 +137,12 @@
  *    direction="vertical|horizontal"
  *    label=""
  *    required="false|true"
+ *
  *    Styles
  *    horizontalAlign="left|center|right"
  *    horizontalGap="8"
  *    indicatorGap="14"
- *    indicatorSkin="Class; mx.container.FormItem.Required"
+ *    indicatorSkin="'mx.containers.FormItem.Required' symbol in Assets.swf"
  *    labelStyleName=""
  *    labelWidth="Calculated"
  *    paddingBottom="0"


Transferred from the Adobe Open Source Subversion Repository

Revision: 14095
Author:   cframpto@adobe.com
Date:     2010-02-10T17:33:30.511669Z

Log Message:
-----------
Merge 14076 from 4.x branch to trunk.

Revision: 14076
Author:   cframpto@adobe.com
Date:     2010-02-09 15:23:15 -0800 (Tue, 09 Feb 2010)
Log Message:
***********
Add UIComponent.mapKeycodeForLayoutDirection().  This should be called by any keyDownHandlers() which handles Keyboard.LEFT and Keyboard.RIGHT, and optionally for Keyboard.UP and Keyboard.DOWN, if they behave like Keyboard.LEFT and Keyboard.RIGHT.  If the layoutDirection="rtl", it maps LEFT to RIGHT, RIGHT to LEFT, UP to RIGHT and DOWN to LEFT.  This allows the keyDownHandler() to perform the correct action without adding lots of special case code to the key handling code.

QE notes: For layoutDirection="rtl" need to test LEFT, RIGHT, UP and DOWN keys.
Doc notes: None
Bugs: SDK-25330
Reviewed By: Hans
Tests run: checkintests
Is noteworthy for integration: No

Ticket Links:
***********
    http://bugs.adobe.com/jira/browse/SDK-25330

Modified Paths:
--------------
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/MenuBar.as</path>
<path kind="dir" action="M">/flex/sdk/trunk/frameworks</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/RadioButton.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/components/RadioButton.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/HScrollBar.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/Tree.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/listClasses/ListBase.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/ButtonBar.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/containers/Accordion.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/colorPickerClasses/SwatchPanel.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/Menu.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/CalendarLayout.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/core/Container.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/components/supportClasses/SliderBase.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/ColorPicker.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/components/Spinner.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/listClasses/TileBase.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/sliderClasses/SliderThumb.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/core/UIComponent.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/components/Scroller.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/components/supportClasses/ButtonBarBase.as</path>

git-svn-id: 7146a936b37d36e51ea0d66f8acbe0b8281bc7b7@1268178 13f79535-47bb-0310-9956-ffa450edef68

--- frameworks/projects/mx/src/mx/controls/HScrollBar.as
+++ frameworks/projects/mx/src/mx/controls/HScrollBar.as
@@ -293,15 +293,19 @@
      */
     override mx_internal function isScrollBarKey(key:uint):Boolean
     {
+        var direction:int;
+
         if (key == Keyboard.LEFT)
         {
-            lineScroll(-1);
+            direction = layoutDirection == "ltr" ? -1 : 1;
+            lineScroll(direction);
             return true;
         }

         else if (key == Keyboard.RIGHT)
         {
-            lineScroll(1);
+            direction = layoutDirection == "ltr" ? 1 : -1;
+            lineScroll(direction);
             return true;
         }


Transferred from the Adobe Open Source Subversion Repository

Revision: 2863
Author:   dloverin@adobe.com
Date:     2008-08-16T03:28:51.231298Z

Log Message:
-----------
Changes recommend from API review.

QE: YES
Doc: YES
Checkintests: YES
Reviewer:
Bugs:

Move APIs from IFocusManager2 into IFocusManager and remove IFocusManager2.
Rename SandboxUtil -> SecurityUtil
* mx.utils.SecurityUtil
Remove hasMutualTrustWithParent()
Remove hasMutualTrustWithChild()
Add hasMutualTrustBetweenParentAndChild()

Rename SWFLoader.compatibleLoad -> SWFLoader.loadForCompatibility
Create mx.managers.FocusDirection
Rename SystemManager.dispatchEventToSandboxes -> SystemManager.dispatchEventFromSWFBridges

* mx.managers.IFocusManager

addFocusManagerBridge() -> addSWFBridge
removeFocusManagerBridge() -> removeSWFBridge

* mx.managers.SystemManagerProxy
activateProxy() -> activateByProxy()
deactivateProxy() -> deactivateByProxy()

* mx.managers.ISystemManager
useBridge() -> useSWFBridge()

Move/Rename mx.sandbox.ISandboxBridgeProvider -> mx.core.ISWFBridgeProvider
Move/Rename mx.sandbox.ISandboxBridgeGroup -> mx.core.ISWFBridgeGroup
Move/Rename mx.sandbox.SandboxBridgeGroup -> mx.core.SWFBridgeGroup

Delete ISandboxGroupAccess, IParentAccess, IChildAccess

Rename many methods in mx.core.ISWFBridgeGroup
Rename mx.core.IAppliationLoader -> mx.core.ISWFLoader

* mx.core.ISWFBridgeProvider
Rename sandboxBridge -> swfBridge
add parentAllowsChild property
add childAllowsParent property

Modified Paths:
--------------
<path kind="file" copyfrom-path="/flex/sdk/branches/3.0.x/frameworks/projects/framework/src/mx/utils/SandboxUtil.as" copyfrom-rev="2851" action="A">/flex/sdk/branches/3.0.x/frameworks/projects/framework/src/mx/utils/SecurityUtil.as</path>
<path kind="file" action="M">/flex/sdk/branches/3.0.x/frameworks/projects/framework/src/mx/managers/FocusManager.as</path>
<path kind="file" action="M">/flex/sdk/branches/3.0.x/frameworks/projects/airframework/src/mx/managers/WindowedSystemManager.as</path>
<path kind="file" action="M">/flex/sdk/branches/3.0.x/frameworks/projects/framework/src/mx/controls/Alert.as</path>
<path kind="file" action="M">/flex/sdk/branches/3.0.x/frameworks/projects/framework/src/mx/managers/SystemManager.as</path>
<path kind="file" action="M">/flex/sdk/branches/3.0.x/frameworks/projects/framework/src/mx/managers/PopUpManagerImpl.as</path>
<path kind="file" action="A">/flex/sdk/branches/3.0.x/frameworks/projects/framework/src/mx/managers/FocusDirection.as</path>
<path kind="file" action="M">/flex/sdk/branches/3.0.x/frameworks/projects/framework/src/mx/managers/SystemManagerProxy.as</path>
<path kind="file" action="M">/flex/sdk/branches/3.0.x/frameworks/projects/framework/src/mx/utils/EventUtil.as</path>
<path kind="file" action="A">/flex/sdk/branches/3.0.x/frameworks/projects/framework/src/mx/core/SandboxBridgeGroup.as</path>
<path kind="file" action="M">/flex/sdk/branches/3.0.x/frameworks/projects/framework/src/mx/managers/IFocusManager.as</path>
<path kind="file" action="A">/flex/sdk/branches/3.0.x/frameworks/projects/framework/src/mx/core/SWFBridgeGroup.as</path>
<path kind="file" action="M">/flex/sdk/branches/3.0.x/frameworks/projects/framework/src/mx/managers/IFocusManagerContainer.as</path>
<path kind="file" action="M">/flex/sdk/branches/3.0.x/frameworks/projects/framework/src/mx/core/IContainer.as</path>
<path kind="file" action="M">/flex/sdk/branches/3.0.x/tools/dependencychecker/flex/tools/dependencychecker/FrameworkSwcDependencyRules.java</path>
<path kind="file" action="M">/flex/sdk/branches/3.0.x/frameworks/projects/framework/src/mx/managers/ISystemManager.as</path>
<path kind="file" action="M">/flex/sdk/branches/3.0.x/frameworks/projects/framework/src/mx/managers/CursorManagerImpl.as</path>
<path kind="file" copyfrom-path="/flex/sdk/branches/3.0.x/frameworks/projects/framework/src/mx/core/IApplicationLoader.as" copyfrom-rev="2851" action="A">/flex/sdk/branches/3.0.x/frameworks/projects/framework/src/mx/core/ISWFLoader.as</path>
<path kind="file" action="M">/flex/sdk/branches/3.0.x/frameworks/projects/framework/src/mx/core/UIComponent.as</path>
<path kind="file" action="A">/flex/sdk/branches/3.0.x/frameworks/projects/framework/src/mx/core/ISWFBridgeProvider.as</path>
<path kind="file" action="M">/flex/sdk/branches/3.0.x/frameworks/projects/framework/src/mx/controls/SWFLoader.as</path>
<path kind="file" action="A">/flex/sdk/branches/3.0.x/frameworks/projects/framework/src/mx/core/ISWFBridgeGroup.as</path>
<path kind="file" action="D">/flex/sdk/branches/3.0.x/frameworks/projects/framework/src/mx/core/IApplicationLoader.as</path>
<path kind="file" action="M">/flex/sdk/branches/3.0.x/frameworks/projects/framework/src/mx/events/FocusRequest.as</path>
<path kind="file" action="D">/flex/sdk/branches/3.0.x/frameworks/projects/framework/src/mx/utils/SandboxUtil.as</path>
<path kind="dir" action="D">/flex/sdk/branches/3.0.x/frameworks/projects/framework/src/mx/sandbox</path>
<path kind="file" action="D">/flex/sdk/branches/3.0.x/frameworks/projects/framework/src/mx/managers/IFocusManager2.as</path>

git-svn-id: 7146a936b37d36e51ea0d66f8acbe0b8281bc7b7@1259502 13f79535-47bb-0310-9956-ffa450edef68

--- frameworks/projects/framework/src/mx/core/ISWFLoader.as
+++ frameworks/projects/framework/src/mx/core/ISWFLoader.as
@@ -13,13 +13,13 @@
 {
 import flash.geom.Rectangle;

-import mx.sandbox.ISandboxBridgeProvider;
+import mx.core.ISWFBridgeProvider;

 /**
- *  The IApplicationLoader interface defines an API with special properties
+ *  The ISWFLoader interface defines an API with special properties
  *  and method required when loading compatible applications and untrusted applications.
  */
-public interface IApplicationLoader extends ISandboxBridgeProvider
+public interface ISWFLoader extends ISWFBridgeProvider
 {
     //--------------------------------------------------------------------------
     //
@@ -28,26 +28,27 @@
     //--------------------------------------------------------------------------

     //----------------------------------
-    //  compatibleLoad
+    //  loadForCompatibility
     //----------------------------------

     /**
-     *  A flag that indictes whether content is loaded into a peer
-     *  AppicationDomain. Loading into a peer ApplicationDomain
-     *  will allow the loaded application to interop with applications build with other verions of Flex.
+     *  A flag that indictes whether the content is loaded so it can
+     *  interop with applications built with a different verion of Flex.
+     *  Compatibility with other Flex Applications is accomplished by loading
+     *  the application into a sibling ApplicationDomain.
      *  This flag is not respected if the content needs to be loaded into differnt
      *  SecurityDomain.
-     *  If true, the content loads into a peer ApplicationDomain.
+     *  If true, the content loads into a sibling ApplicationDomain.
      *  If false, the content loaded into a child ApplicationDomain.
      *
      *  @default false
      */
-    function get compatibleLoad():Boolean;
+    function get loadForCompatibility():Boolean;

     /**
      *  @private
      */
-    function set compatibleLoad(value:Boolean):void;
+    function set loadForCompatibility(value:Boolean):void;

     /**
      *  Get the bounds of the loaded application that are visible to the user


Transferred from the Adobe Open Source Subversion Repository

Revision: 4329
Author:   clucier@adobe.com
Date:     2008-12-16T17:49:19.377301Z

Log Message:
-----------
A fix for Thermo team.  If an element does not exist when a SetProperty override is applied, the override should not then try to restore the value later (null) when the override is removed.
QE Notes: None
Doc Notes: None
Bugs : None
Tests: checkintests

Modified Paths:
--------------
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/states/SetStyle.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/states/SetProperty.as</path>

git-svn-id: 7146a936b37d36e51ea0d66f8acbe0b8281bc7b7@1262411 13f79535-47bb-0310-9956-ffa450edef68

--- frameworks/projects/framework/src/mx/states/SetStyle.as
+++ frameworks/projects/framework/src/mx/states/SetStyle.as
@@ -283,7 +283,7 @@
     public function remove(parent:UIComponent):void
     {
         var obj:IStyleClient = IStyleClient(getOverrideContext(target, parent));
-        if (obj != null)
+        if (obj != null && applied)
         {
 	        // Restore the old value
 	        if (oldValue is Number)


Transferred from the Adobe Open Source Subversion Repository

Revision: 17699
Author:   clucier@adobe.com
Date:     2010-09-14T19:07:33.076891Z

Log Message:
-----------
State-specific property overrides now disable bindings for the base property if present when applied.  Bindings are re-enabled once the override is removed.

QE notes: None
Doc notes: None
Bugs: SDK-25390
Reviewer: Paul
Tests run: Checkin
Is noteworthy for integration: No

Modified Paths:
--------------
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/modules/compiler/src/java/flex2/compiler/mxml/rep/StatesModel.java</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/framework/src/mx/states/OverrideBase.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/framework/src/mx/states/SetEventHandler.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/framework/src/mx/binding/BindingManager.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/framework/src/mx/states/SetStyle.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/framework/src/mx/states/SetProperty.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/modules/compiler/src/java/flex2/compiler/mxml/rep/Model.java</path>

git-svn-id: 7146a936b37d36e51ea0d66f8acbe0b8281bc7b7@1262419 13f79535-47bb-0310-9956-ffa450edef68

--- frameworks/projects/framework/src/mx/states/SetStyle.as
+++ frameworks/projects/framework/src/mx/states/SetStyle.as
@@ -349,6 +349,11 @@
             {
                 obj.setStyle(name, value);
             }
+
+            // Disable bindings for the base style if appropriate. If the binding
+            // fires while our override is applied, the correct value will automatically
+            // be applied when the binding is later enabled.
+            enableBindings(obj, name, false);
         }
         else if (!applied)
         {
@@ -394,6 +399,11 @@
                 obj.clearStyle(name);
             }

+            // Re-enable bindings for the base style if appropriate. If the binding
+            // fired while our override was applied, the current value will automatically
+            // be applied once enabled.
+            enableBindings(obj, name);
+
             var relatedProps:Array = RELATED_PROPERTIES[name] ?
                                      RELATED_PROPERTIES[name] :
                                      null;
@@ -406,6 +416,7 @@
                     obj[relatedProps[i]] = oldRelatedValues[i];
                 }
             }
+
         }
         else
         {


FLEX-34854 FLEX-34885 Added a unit test for complex field sorting based on FLEX-34885. Passes.

--- frameworks/projects/framework/tests/FLEX_34854_Tests.as
+++ frameworks/projects/framework/tests/FLEX_34854_Tests.as
@@ -187,6 +187,39 @@
             assertEquals("the new item should have been moved to the end of the list", _sut.length - 1, _sut.getItemIndex(firstItemFromNewList));
         }

+        [Test]
+        public function test_marking_entire_item_as_updated_gets_the_old_object_out_of_the_list():void
+        {
+            //given
+            var from0To4:IList = generateVOs(5, true); //values["address.street"]: Street4, Street3, Street2, Street1, Street0
+            _sut.addAll(from0To4);
+
+            _sut.complexFieldWatcher = new ComplexFieldChangeWatcher();
+
+            const sortByNameAscending:Sort = new Sort();
+            sortByNameAscending.fields = [new ComplexSortField("address.street", false, false, false)];
+            _sut.sort = sortByNameAscending;
+            _sut.refresh(); //values["name"]: Street0, Street1, Street2, Street3, Street4
+
+            //when
+            const removedItem:ListCollectionView_FLEX_34854_VO = (_sut.list as ArrayList).source[0] as ListCollectionView_FLEX_34854_VO;
+            var newItem:ListCollectionView_FLEX_34854_VO = generateOneObject(-1);
+            (_sut.list as ArrayList).source[0] = newItem;
+            _sut.itemUpdated(newItem, null, removedItem, newItem);
+
+            removedItem.address.street = "Street7"; //should make no difference
+            newItem.address.street = "Street8"; //should place it at the end of the list
+
+            //then
+            const indexOfRemovedItem:int = _sut.getItemIndex(removedItem);
+            assertEquals("the item should have been removed from the list", -1, indexOfRemovedItem);
+            for(var i:int = 0; i < _sut.length; i++)
+            {
+                assertThat(_sut.getItemAt(i) != removedItem);
+            }
+            assertEquals("the new item should have been moved to the end of the list", _sut.length - 1, _sut.getItemIndex(newItem));
+        }
+
         private function assertIndexesAre(indexes:Array):void
         {
             assertEquals(indexes.length, _sut.length);


Transferred from the Adobe Open Source Subversion Repository

Revision: 2803
Author:   rfrishbe@adobe.com
Date:     2008-08-11T18:31:30.575706Z

Log Message:
-----------
Changes based on MXMLComponent discussion.  Removed the data property from Group, which meant adding it (and the IDataRenderer interface).  Also did some cleanup on Button and ItemRenderer around adding event listeners.

QE: Yes - I already updated the affected mustella tests and Steve looked at those changes
Doc: No
Bugs: -
Reviewer: Glenn

Modified Paths:
--------------
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/flex/core/Skin.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/flex/component/Button.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/flex/core/Group.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/flex/component/ItemRenderer.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/flex/core/MXMLComponent.as</path>

git-svn-id: 7146a936b37d36e51ea0d66f8acbe0b8281bc7b7@1279081 13f79535-47bb-0310-9956-ffa450edef68

--- frameworks/projects/spark/src/spark/components/Group.as
+++ frameworks/projects/spark/src/spark/components/Group.as
@@ -73,7 +73,7 @@
 /**
  *  The Group class.
  */
-public class Group extends UIComponent implements IDataRenderer, IGraphicElementHost // TODO!! , IDisplayObjectElement
+public class Group extends UIComponent implements IGraphicElementHost // TODO!! , IDisplayObjectElement
 {
     public function Group():void
     {
@@ -131,18 +131,6 @@
     public function get content():*
     {
         return _content;
-    }
-
-    private var _data:Object;
-    [Bindable]
-    public function get data():Object
-    {
-        return _data;
-    }
-
-    public function set data(value:Object):void
-    {
-        _data = value;
     }

     public function get layout():Class


TSDemuxer.as: improve debug logs

TSDemuxer.as: improve debug logs

--- src/org/mangui/hls/demux/TSDemuxer.as
+++ src/org/mangui/hls/demux/TSDemuxer.as
@@ -226,7 +226,7 @@
                     }
                 } else {
                     CONFIG::LOGGING {
-                        Log.debug("TS: partial AVC PES at end of segment");
+                        Log.debug("TS: partial AVC PES at end of segment expected/current len:" + pes.payload_len + "/" + ( pes.data.length - pes.payload));
                     }
                     _curVideoPES.position = _curVideoPES.length;
                 }
@@ -752,6 +752,9 @@
                 } else if (typ == 0x15) {
                     // ID3 pid
                     _id3Id = sid;
+                    CONFIG::LOGGING {
+                        Log.debug("TS: Selected ID3 PID: " + _id3Id);
+                    }
                 }
                 // es_info_length
                 var sel : uint = _data.readUnsignedShort() & 0xFFF;


Added addGraphic() and addMask() to World as a shorthand for creating non-moving Entities with assigned Graphics/Masks.

--- net/flashpunk/World.as
+++ net/flashpunk/World.as
@@ -165,6 +165,38 @@
 				return;
 			}
 			for each (e in list) remove(e);
+		}
+
+		/**
+		 * Adds an Entity to the World with the Graphic object.
+		 * @param	graphic		Graphic to assign the Entity.
+		 * @param	x			X position of the Entity.
+		 * @param	y			Y position of the Entity.
+		 * @param	layer		Layer of the Entity.
+		 * @return	The Entity that was added.
+		 */
+		public function addGraphic(graphic:Graphic, layer:int = 0, x:int = 0, y:int = 0):Entity
+		{
+			var e:Entity = new Entity(x, y, graphic);
+			if (layer != 0) e.layer = layer;
+			e.active = false;
+			return add(e);
+		}
+
+		/**
+		 * Adds an Entity to the World with the Mask object.
+		 * @param	mask	Mask to assign the Entity.
+		 * @param	type	Collision type of the Entity.
+		 * @param	x		X position of the Entity.
+		 * @param	y		Y position of the Entity.
+		 * @return	The Entity that was added.
+		 */
+		public function addMask(mask:Mask, type:String, x:int = 0, y:int = 0):Entity
+		{
+			var e:Entity = new Entity(x, y, null, mask);
+			if (type) e.type = type;
+			e.active = e.visible = false;
+			return add(e);
 		}

 		/**


Pending contact (among others) fixes from Armando

git-svn-id: c197267f952b24206666de142881703007ca05d5@9577 b35dd754-fafc-0310-a699-88a17e54d16e

--- src/org/jivesoftware/xiff/im/Roster.as
+++ src/org/jivesoftware/xiff/im/Roster.as
@@ -479,12 +479,22 @@
 										break;
 								}
 							}
-							else if( item.subscription.toLowerCase() != RosterExtension.SUBSCRIBE_TYPE_REMOVE &&  item.subscription.toLowerCase() != RosterExtension.SUBSCRIBE_TYPE_NONE)
-							{
-								// Add this item to the roster if it's not there and if the subscription type is not equal to 'remove' or 'none'
-								for each(var group:String in item.getGroups())
+							else {
+								var groups:Array = item.getGroups();
+								if(groups.length == 0)
 								{
-									addRosterItem( item.jid, item.name, RosterExtension.SHOW_UNAVAILABLE, "Offline", group, item.subscription.toLowerCase(), item.askType != null ? item.askType.toLowerCase() : RosterExtension.ASK_TYPE_NONE );
+									groups.push("General");
+								}
+								for each(var group:String in groups)
+								{
+									if( item.subscription.toLowerCase() != RosterExtension.SUBSCRIBE_TYPE_REMOVE &&  item.subscription.toLowerCase() != RosterExtension.SUBSCRIBE_TYPE_NONE) {
+										// Add this item to the roster if it's not there and if the subscription type is not equal to 'remove' or 'none'
+										addRosterItem( item.jid, item.name, RosterExtension.SHOW_UNAVAILABLE, "Offline", group, item.subscription.toLowerCase(), item.askType != null ? item.askType.toLowerCase() : RosterExtension.ASK_TYPE_NONE );
+									}
+									else if( item.subscription.toLowerCase() == RosterExtension.SUBSCRIBE_TYPE_NONE && item.askType == RosterExtension.ASK_TYPE_SUBSCRIBE ) {
+										// A contact was added to the roster, and its authorization is still pending.
+										addRosterItem( item.jid, item.name, RosterExtension.SHOW_PENDING, "Pending", group, item.subscription.toLowerCase(), item.askType != null ? item.askType.toLowerCase() : RosterExtension.ASK_TYPE_NONE );
+									}
 								}
 							}
 						}


Slight simplification to GraphMLDataSource; made backcompat for old session states more complete.

--- WeaveData/src/weave/data/DataSources/GraphMLDataSource.as
+++ WeaveData/src/weave/data/DataSources/GraphMLDataSource.as
@@ -133,7 +133,7 @@
             var data_remap_src:Object = null;
             var key_remap_src:Object = null;
             var keyType:String;
-            var filter_value:String = null;
+            var columnName:String = metadata[COLUMNNAME_META];

             if (metadata[GROUP_META] == GraphMLConverter.NODE)
             {
@@ -141,14 +141,20 @@

                 key_remap_src = nodeIdToKey;

+                if (nodeSchema[columnName] === undefined)
+                    columnName = nodeReverseSchema[columnName];
+
                 keyType = nodeKeyType.value;
             }
             else if (metadata[GROUP_META] == GraphMLConverter.EDGE)
             {
                 raw_rows = edgeColumnData;

-                data_remap_src = (metadata[COLUMNNAME_META] == GraphMLConverter.SOURCE ||
-                                 metadata[COLUMNNAME_META] == GraphMLConverter.TARGET) ? nodeIdToKey : null;
+                if (edgeSchema[columnName] === undefined)
+                    columnName = edgeReverseSchema[columnName];
+
+                data_remap_src = (columnName == GraphMLConverter.SOURCE ||
+                                 columnName == GraphMLConverter.TARGET) ? nodeIdToKey : null;

                 if (data_remap_src)
                     metadata[ColumnMetadata.DATA_TYPE] = nodeKeyType.value;
@@ -160,7 +166,7 @@

             if (!raw_rows) return;

-            var data_column:Array = getPropertyArray(raw_rows, metadata[COLUMNNAME_META], data_remap_src);
+            var data_column:Array = getPropertyArray(raw_rows, columnName, data_remap_src);
             var key_column:Array = getPropertyArray(raw_rows, GraphMLConverter.ID, key_remap_src);

             if (!metadata[ColumnMetadata.KEY_TYPE])
@@ -170,7 +176,7 @@

             if (!metadata[ColumnMetadata.TITLE])
             {
-                metadata[ColumnMetadata.TITLE] = metadata[COLUMNNAME_META];
+                metadata[ColumnMetadata.TITLE] = columnName;
             }

             /* TODO: Add type autodetection and proper handling of numeric types. */
@@ -197,18 +203,10 @@

         private static function getPropertyArray(objects:Array, property:String, mapping:Object):Array
         {
-            var output:Array = new Array(objects.length);
-            for (var idx:int = objects.length - 1; idx >= 0; idx--)
-            {
-                if (mapping)
-                {
-                    output[idx] = mapping[objects[idx][property]];
-                }
-                else
-                {
-                    output[idx] = objects[idx][property];
-                }
-            }
+            var output:Array = VectorUtils.pluck(objects, property);
+
+            if (mapping) output = output.map(function(d,i,a){return mapping[d];});
+
             return output;
         }


Switching variable prefix from $ to underscores.

--- Templates/Singleton.tmTemplate/class.as
+++ Templates/Singleton.tmTemplate/class.as
@@ -25,17 +25,17 @@
 		//  SINGLETON CONSTRUCTION
 		//--------------------------------------

-		private static var $instance : ${TM_NEW_FILE_BASENAME};
+		private static var _instance : ${TM_NEW_FILE_BASENAME};

 		public static function get instance() : ${TM_NEW_FILE_BASENAME} {
 			return initialize();
 		}

 		public static function initialize() : ${TM_NEW_FILE_BASENAME} {
-			if ($instance == null){
-				$instance = new ${TM_NEW_FILE_BASENAME}();
+			if (_instance == null){
+				_instance = new ${TM_NEW_FILE_BASENAME}();
 			}
-			return $instance;
+			return _instance;
 		}

 		/**
@@ -46,8 +46,8 @@
 		*/
 		public function ${TM_NEW_FILE_BASENAME}(){
 			super();
-			if( $instance != null ) throw new Error( "Error:${TM_NEW_FILE_BASENAME} already initialised." );
-			if( $instance == null ) $instance = this;
+			if( _instance != null ) throw new Error( "Error:${TM_NEW_FILE_BASENAME} already initialised." );
+			if( _instance == null ) _instance = this;
 		}

 		//--------------------------------------


libraryItem for the TextureMold's name

libraryItem for the TextureMold's name

--- exporter/src/main/as/flump/export/Atlas.as
+++ exporter/src/main/as/flump/export/Atlas.as
@@ -82,7 +82,7 @@
         _root.forEach(function (node :Node) :void {
             var tex :SwfTexture = node.texture;
             const texMold :AtlasTextureMold = new AtlasTextureMold();
-            texMold.name = tex.symbol;
+            texMold.name = tex.libraryItem;
             texMold.bounds = new Rectangle(node.bounds.x, node.bounds.y, tex.w, tex.h);
             texMold.offset = new Point(tex.offset.x, tex.offset.y);
             texMold.md5 = tex.md5;


Use a big ol' bitmap rather than lots of little ones.

git-svn-id: 41360ad359616a519dfba9f2f48af1afe653c9f7@100 be230a1c-449f-4488-b524-6273046f66f0

--- src/as/client/ClientApp.as
+++ src/as/client/ClientApp.as
@@ -106,19 +106,19 @@
         _width = loaderInfo.width / _charWidth;
         _height = loaderInfo.height / _charHeight;

-        // center the display
-        _x = (loaderInfo.width - (_charWidth * _width)) / 2;
-        _y = (loaderInfo.height - (_charHeight * _height)) / 2;
+        // create and add the big ol' bitmap with all the characters
+        var bitmapData :BitmapData = new BitmapData(
+            _charWidth*_width, _charHeight*_height, false, 0x0);
+        _bitmap = new Bitmap(bitmapData);
+        _bitmap.x = (loaderInfo.width - (_charWidth * _width)) / 2;
+        _bitmap.y = (loaderInfo.height - (_charHeight * _height)) / 2;
+        addChild(_bitmap);

         // create and initialize the combined contents array
         _contents = new Array(_width * _height);
         for (var ii :int = 0; ii < _contents.length; ii++) {
             _contents[ii] = 0x20;
         }
-
-        // create the bitmap data cache and bitmap array
-        _bitmapData = new Object();
-        _bitmaps = new Array(_width * _height);

         // add the context menu to change colors
         contextMenu = new ContextMenu();
@@ -143,8 +143,10 @@
         var mousePad :Sprite = new Sprite();
         addChild(mousePad);
         mousePad.graphics.beginFill(0x0, 0.0);
-        mousePad.graphics.drawRect(_x, _y, _width*_charWidth, _height*_charHeight);
+        mousePad.graphics.drawRect(0, 0, _bitmap.width, _bitmap.height);
         mousePad.graphics.endFill();
+        mousePad.x = _bitmap.x;
+        mousePad.y = _bitmap.y;
         mousePad.addEventListener(MouseEvent.MOUSE_DOWN, sendMouseMessage);
         mousePad.addEventListener(MouseEvent.MOUSE_UP, sendMouseMessage);
         addEventListener(KeyboardEvent.KEY_DOWN, sendKeyMessage);
@@ -156,7 +158,9 @@
             addClientWindow(int.MAX_VALUE - 1, "Click to restore input focus.");

             // attempt to reacquire
-            stage.focus = mousePad.parent;
+            if (stage.focus == null) {
+                stage.focus = _bitmap.parent;
+            }
         });
         addEventListener(FocusEvent.FOCUS_IN, function (event :FocusEvent) :void {
             removeWindow(int.MAX_VALUE - 1, false);
@@ -430,15 +434,12 @@
         }
         _bitmapData = new Object();

-        for (var yy :int = 0; yy < _height; yy++) {
-            for (var xx :int = 0; xx < _width; xx++) {
-                var idx :int = yy*_width + xx;
-                var bitmap :Bitmap = _bitmaps[idx];
-                if (bitmap != null) {
-                    bitmap.bitmapData = getBitmapData(_contents[idx]);
-                }
-            }
-        }
+        // invalidate the contents, make everything dirty, refresh
+        for (var ii :int = 0; ii < _contents.length; ii++) {
+            _contents[ii] = -1;
+        }
+        _dirty.setTo(0, 0, _width, _height);
+        updateDisplay();
     }

     /**
@@ -500,8 +501,8 @@
         if (!_socket.connected) {
             return;
         }
-        var x :int = (event.stageX - _x) / _charWidth;
-        var y :int = (event.stageY - _y) / _charHeight;
+        var x :int = (event.stageX - _bitmap.x) / _charWidth;
+        var y :int = (event.stageY - _bitmap.y) / _charHeight;
         if (x < 0 || y < 0 || x >= _width || y >= _height) {
             return;
         }
@@ -812,8 +813,8 @@
             var shape :Shape = new Shape();
             shape.graphics.lineStyle(1, color);
             shape.graphics.drawRect(0, 0, _charWidth*region.width, _charHeight*region.height);
-            shape.x = _x + _charWidth*region.x;
-            shape.y = _y + _charHeight*region.y;
+            shape.x = _bitmap.x + _charWidth*region.x;
+            shape.y = _bitmap.y + _charHeight*region.y;
             addChild(shape);

             // remove it after a second
@@ -856,7 +857,11 @@
             }
         }

-        // now update the field/highlights with the new contents
+        // now update the bitmap with the new contents
+        _bitmap.bitmapData.lock();
+        var srect :Rectangle = new Rectangle(0, 0, _charWidth, _charHeight);
+        var dpoint :Point = new Point();
+        var drect :Rectangle = new Rectangle(0, 0, _charWidth, _charHeight);
         for (yy = bounds.top; yy < bounds.bottom; yy++) {
             for (xx = bounds.left; xx < bounds.right; xx++) {
                 var obj :Object = combined[(yy - bounds.y) * bounds.width + (xx - bounds.x)];
@@ -868,25 +873,19 @@
                 }
                 _contents[idx] = nvalue;

-                var bitmap :Bitmap = _bitmaps[idx];
-                if (nvalue != 0x20) {
-                    if (bitmap == null) {
-                        _bitmaps[idx] = bitmap = (_bitmapPool.length == 0) ?
-                            new Bitmap() : _bitmapPool.pop();
-                        bitmap.x = _x + xx*_charWidth;
-                        bitmap.y = _y + yy*_charHeight;
-                        addChildAt(bitmap, 1);
-                    }
-                    bitmap.bitmapData = getBitmapData(nvalue);
-
-                } else if (bitmap != null) {
-                    removeChild(bitmap);
-                    _bitmaps[idx] = null;
-                    bitmap.bitmapData = null;
-                    _bitmapPool.push(bitmap);
+                if (nvalue == 0x20) {
+                    drect.x = xx*_charWidth;
+                    drect.y = yy*_charHeight;
+                    _bitmap.bitmapData.fillRect(drect, stage.color);
+
+                } else {
+                    dpoint.x = xx*_charWidth;
+                    dpoint.y = yy*_charHeight;
+                    _bitmap.bitmapData.copyPixels(getBitmapData(nvalue), srect, dpoint);
                 }
             }
         }
+        _bitmap.bitmapData.unlock();
     }

     /**
@@ -1039,23 +1038,17 @@
     /** The field we reuse to create character bitmaps. */
     protected var _charField :TextField;

-    /** The character bitmaps for each location. */
-    protected var _bitmaps :Array;
-
-    /** A pool of bitmaps to reuse. */
-    protected var _bitmapPool :Array = new Array();
+    /** Big ol' bitmap. */
+    protected var _bitmap :Bitmap;

     /** The cached bitmap data for each character. */
-    protected var _bitmapData :Object;
+    protected var _bitmapData :Object = new Object();

     /** The width and height of the display in characters. */
     protected var _width :int, _height :int;

     /** The width and height of each character. */
     protected var _charWidth :int, _charHeight :int;
-
-    /** The location of the character grid. */
-    protected var _x :int, _y :int;

     /** The socket via which we communicate with the server. */
     protected var _socket :Socket;
@@ -1143,7 +1136,6 @@
 }
 }

-import flash.display.Sprite;
 import flash.geom.Point;
 import flash.geom.Rectangle;


updated backwards compatibility code for r service url

Change-Id: Ib6de6b3e33cf072d7e4b7e3f5dd6da45fe976327

--- WeaveUI/src/weave/WeaveProperties.as
+++ WeaveUI/src/weave/WeaveProperties.as
@@ -291,6 +291,7 @@

 		private function handleRServiceURLChange():void
 		{
+			rServiceURL.value = rServiceURL.value.replace('OpenIndicatorsRServices', 'WeaveServices');
 			if (rServiceURL.value == '/WeaveServices')
 				rServiceURL.value += '/RService';
 		}
@@ -369,7 +370,7 @@
 		}
 		[Deprecated(replacement="rServiceURL")] public function set rServicesURL(value:String):void
 		{
-			if (value != '/OpenIndicatorsDataServices')
+			if (value != '/OpenIndicatorsRServices')
 				rServiceURL.value = value + '/RService';
 		}
 		//--------------------------------------------


Ajout de la validation du Sudoku par lignes.

--- tp3.as
+++ tp3.as
@@ -76,7 +76,7 @@
   inc   %l2

   cmp   %l2, 9
-  bg    ValiderLignes       ! Lancer la validation du Sudoku
+  bg    ValiderLignes00     ! Lancer la validation du Sudoku
   nop

   ba  AfficherSudoku04      ! Afficher une ligne du Sudoku avec des chiffres
@@ -154,7 +154,7 @@
 */

 /* Valider le sudoku sur les 9 lignes */
-ValiderLignes:
+ValiderLignes00:
   set   vecteur, %l0        ! Pointeur sur la ligne courante
   mov   0, %l1              ! %l1 va servir pour savoir on est rendu sur quelle ligne

@@ -164,62 +164,105 @@
   nop
   /* end Aff */

-  ba    ValiderLignes00     ! Lancer la validation des lignes
+  ba    ValiderLignes02     ! Lancer la validation des lignes
   nop

 /* Validation de la ligne courante */
-ValiderLignes00:
-  mov   0, %l2        ! %l2 va servir pour savoir on est rendu sur quel chiffre
-
-  /* start Aff */
-  set   validligne2, %o0
+ValiderLignes02:
+  set   validligne2, %o0        ! Afficher qu'on valider la ligne courante
   mov   %l1, %o1
   call  printf
   nop
-  /* end Aff */
-
-  ba    ValiderLignes02     ! Lancer la validation de la ligne
-  nop
-
-
-/* Lancer la validation pour le chiffre à la position de %l0 jusqu'a ce que le 9e chiffre de la ligne soit testé */
-ValiderLignes02:
-  add   %l1, 1, %l2     ! On se sert de l2 pour savoir le chiffre avec lequel on compare le chiffre
-
-  ldub  [%l0], %l3      ! Charger le nombre courant dans l3
-
-  cmp   %l3, 0          ! Si le nombre courant est <= 0, la ligne est invalide
-  ble   ValiderLigne06
-  nop
-
-  cmp   %l3, 10
-  bge   ValiderLigne06  ! Si le chiffre courant est >= 10, la ligne est invalide
-  nop
-
-  ! S'assurer que le nombre est plus grand de 0 et plus petit de 10
-
-
-/* Valider tout les nombres en partant de %l2 en allant jusqu'au 9e chiffre */
+
+  mov   0, %l2                  ! Compteur du nombre courant sur la ligne
+  mov   1, %l3                  ! Compteur du nombre a tester avec le nombre courant sur la ligne
+
+  ba    ValiderLignes04         ! Lancer la validation de la ligne
+  nop
+
+ValiderLignes03:
+  inc   %l1                     ! Ligne suivante
+  add   %l0, 9, %l0             ! Déplacer le pointeur du Sudoku sur la prochaine ligne
+
+  cmp   %l1, 9                  ! Si on a fait le tour du Sudoku, on passe au mode de validation suivant
+  be    ValiderColonnes00
+  nop
+
+  ba    ValiderLignes02
+  nop
+
+
 ValiderLignes04:
-  nop
-
-
-/* Erreur dans la ligne */
+  ldub  [%l0+%l2], %l4          ! Charger le nombre courant en mémoire
+
+  cmp   %l4, 0                  ! Le chiffre doit être entre 1 et 9
+  ble   LigneInvalide
+  nop
+
+  cmp   %l4, 10
+  bge   LigneInvalide
+  nop
+
+  ba    ValiderLignes06         ! Lancer la validation du nombre courant sur la ligne
+  nop
+
+
+ValiderLignes05:
+  inc   %l2                     ! Passer au nombre suivant pour la validation
+  add   %l2, 1, %l3             ! Le nombre a tester est toujours le nombre après le nombre courant (au début de la validation du nombre courant)
+
+  cmp   %l2, 9                  ! Continuer a valider la ligne si nombre courant n'est pas le dernier
+  bl    ValiderLignes04
+  nop
+
+  set   resvalide, %o0      ! Affichage d'un message disant que la ligne est valide
+  call  printf
+  nop
+
+  ba    ValiderLignes03
+  nop
+
+
 ValiderLignes06:
-  set   validligneinc, %o0      ! Afficher que la ligne est invalide comme résultat de la validation
-  call  printf
-  nop
-
-  call  exit                    ! Et on sort du programme !
-  nop
-
-ValiderLignes08:
-  set   validlignecor, %o0
-  call  printf
-  nop
-
-  ba    ValiderLignes00
+  cmp   %l2, 8
+  bge   ValiderLignes05
+  nop
+
+  ldub  [%l0+%l3], %l5          ! Charger le nombre a tester dans le registre l5
+
+  !set   validligne3, %o0        ! Debug INFOS
+  !mov   %l2, %o1
+  !mov   %l4, %o2
+  !mov   %l3, %o3
+  !mov   %l5, %o4
+  !call  printf
+  !nop
+
+  cmp   %l4, %l5                ! Comparer le nombre courant avec le nombre a tester pour s'assurer qu'ils ne sont pas identique
+  be    LigneInvalide
+  nop
+
+  inc   %l3                     ! Tester le nombre suivant
+
+  cmp   %l3, 9                  ! S'il nous reste des chiffre a tester, on les tests
+  bl    ValiderLignes06
+  nop
+
+  ba    ValiderLignes05
+  nop
+
+
+LigneInvalide:
+  set   redinvalide, %o0      ! Affichage d'un message disant que la ligne est invalide
+  call  printf
+  nop
+
+  call  exit                    ! On quitte le programme
+  nop
+
+ValiderColonnes00:
+  call  exit
   nop

 /*
@@ -235,10 +278,10 @@
   sautligne:         .asciz  "\n"
   lecturecons:       .asciz  "%d"
   validligne1:       .asciz  "Validation des lignes du Sudoku\n"
-  validligne2:       .asciz  "Ligne #%d..."
-  validligne3:       .asciz  "Ligne #%d, validation entre %d[%d] et %d[%d]..."
-  validlignecor:     .asciz  "Valide !\n"
-  validligneinc:     .asciz  "Invalide !\n"
+  validligne2:       .asciz  " - Validation de la ligne #%d... "
+  validligne3:       .asciz  "Validation entre %d[%d] et %d[%d]...\n"
+  resvalide:         .asciz  "Valide !\n"
+  redinvalide:       .asciz  "Invalide !\n"

 /* Espace mémoire */

@@ -250,6 +293,6 @@
 .section ".data"

   lecture:  .byte   0   ! Espace pour la lecture du chiffre en entrée
-  vecteur:  .byte   8,3,2,5,9,1,6,7,4,4,9,6,3,8,7,2,5,1,5,7,1,2,6,4,9,8,3,1,8,5,7,4,6,3,9,2,2,6,7,9,5,3,4,1,8,9,4,3,8,1,2,7,6,5,7,1,4,6,3,8,5,2,9,3,2,9,1,7,5,8,4,6,6,5,8,4,2,9,1,3,7,7
-
-
+  vecteur:  .byte   8,3,2,5,9,1,6,7,4,4,9,6,3,8,7,2,5,1,5,7,1,2,6,4,9,8,3,1,8,5,7,4,6,3,9,2,2,6,7,9,5,3,4,8,1,9,4,3,8,1,2,7,6,5,7,1,4,6,3,8,5,2,9,3,2,9,1,7,5,8,4,6,6,5,8,4,2,9,1,3,7,7
+!3
+


updated comments

updated comments

--- dorkbots/dorkbots_util/TwitterStringParser.as
+++ dorkbots/dorkbots_util/TwitterStringParser.as
@@ -12,6 +12,7 @@
 		private static var _instance:TwitterStringParser;

 		public var textEvent:Boolean = false;
+
 		public var userNameClass:String = "userName";
 		public var hashtagClass:String = "hashtag";
 		public var hyperlinkClass:String = "hyperlink";


That bidness turned out to be unnecessary.

--- exporter/src/main/as/flump/export/FlumpApp.as
+++ exporter/src/main/as/flump/export/FlumpApp.as
@@ -47,17 +47,13 @@
         NA.addEventListener(InvokeEvent.INVOKE, function (event :InvokeEvent) :void {
             if (event.arguments.length > 1 && event.arguments[0] == "--export") {
                 var headless :HeadlessExporter = new HeadlessExporter(new File(event.arguments[1]));
-                _headlesses[_headlesses.length] = headless;
                 headless.complete.connectNotify(function (complete :Boolean) :void {
                     if (!complete) return;

-                    var idx :int = _headlesses.indexOf(headless);
-                    _headlesses.splice(idx, 1);
-
-                    if (_headlesses.length == 0 && _projects.length == 0) {
-                        // nothing holding us here, force a shut down
-                        NA.exit();
-                    }
+                    // Even on Mac, running from the command line spawns a new instance of the app,
+                    // so we can safely assume it's OK to explicitly shut down here (as the command
+                    // line script expects us to).
+                    NA.exit();
                 });
                 return;
             }
@@ -206,7 +202,6 @@
     }

     protected var _projects :Array = [];
-    protected var _headlesses :Array = [];
     protected var _previewController :PreviewController;

     protected static var _app :FlumpApp;


fixed stack overflow

fixed stack overflow

--- WeaveData/src/weave/data/DataSources/GeoJSONDataSource.as
+++ WeaveData/src/weave/data/DataSources/GeoJSONDataSource.as
@@ -311,7 +311,7 @@

 		private function getGeomColumnTitle():String
 		{
-			return lang("{0} geometry", getHierarchyRoot().getLabel());
+			return lang("{0} geometry", WeaveAPI.globalHashMap.getName(this));
 		}
 	}
 }


Fix null exception in txml import.

Fix null exception in txml import.

--- Bin/Data/Scripts/Editor/EditorImport.as
+++ Bin/Data/Scripts/Editor/EditorImport.as
@@ -122,6 +122,7 @@
     ResetScene();

     // Set standard gravity
+    editorScene.CreateComponent("PhysicsWorld");
     editorScene.physicsWorld.gravity = Vector3(0, -9.81, 0);

     // Create zone & global light


Wee Occam Jr., with his shiny oversized plastic "My First Razor"!

git-svn-id: a1a4b28b82a3276cc491891159dd9963a0a72fae@4469 542714f4-19e9-0310-aa3c-eee0fc999fb1

--- src/as/com/threerings/util/Hashtable.as
+++ src/as/com/threerings/util/Hashtable.as
@@ -76,15 +76,13 @@
         var hash :int = hkey.hashCode();
         var index :int = indexFor(hash);
         var e :Entry = (_entries[index] as Entry);
-        while (true) {
-            if (e == null) {
-                return undefined;
-            }
+        while (e != null) {
             if (e.hash == hash && e.key.equals(hkey)) {
                 return e.value;
             }
             e = e.next;
         }
+        return undefined;
     }

     // documentation inherited from interface Map


Added support for --,++,+ unary operators and --,++ postfix operators

Change-Id: I84ec32863a24ea5e49cf380ec9ebc816024aadd8

--- WeaveCore/src/weave/compiler/Compiler.as
+++ WeaveCore/src/weave/compiler/Compiler.as
@@ -61,6 +61,7 @@
 		private static const STATEMENT_IF:String = 'if';
 		private static const STATEMENT_ELSE:String = 'else';
 		private static const STATEMENT_FOR:String = 'for';
+		private static const STATEMENT_EACH:String = 'each';
 		private static const STATEMENT_DO:String = 'do';
 		private static const STATEMENT_WHILE:String = 'while';
 		private static const STATEMENT_RETURN:String = 'return';
@@ -80,7 +81,7 @@
 			STATEMENT_CASE, STATEMENT_DEFAULT, STATEMENT_IN, STATEMENT_THROW, STATEMENT_TRY, STATEMENT_FINALLY
 		];
 		private static const _statementsWithParams:Array = [
-			STATEMENT_IF, STATEMENT_FOR, STATEMENT_WHILE, STATEMENT_SWITCH, STATEMENT_CATCH
+			STATEMENT_IF, STATEMENT_FOR, STATEMENT_EACH, STATEMENT_WHILE, STATEMENT_SWITCH, STATEMENT_CATCH
 		];

 		/**
@@ -223,6 +224,7 @@

 		private const BRANCH_LOOKUP:Dictionary = new Dictionary(); // Function -> true
 		private const ASSIGN_OP_LOOKUP:Object = new Dictionary(); // Function -> true
+		private const MAX_OPERATOR_LENGTH:int = 4;

 		/**
 		 * While this is set to true, compiler optimizations are enabled.
@@ -345,13 +347,25 @@
 			operators["*"] = function(x:*, y:*):Number { return x * y; };
 			operators["/"] = function(x:*, y:*):Number { return x / y; };
 			operators["%"] = function(x:*, y:*):Number { return x % y; };
-			operators["+"] = function(x:*, y:*):* { return x + y; }; // also works for strings
+			operators["+"] = function(...args):* {
+				// this works as a unary or infix operator
+				switch (args.length)
+				{
+					case 1:
+						return +args[0];
+					case 2:
+						return args[0] + args[1];
+				}
+			};
 			operators["-"] = function(...args):* {
 				// this works as a unary or infix operator
-				if (args.length == 1)
-					return -args[0];
-				if (args.length == 2)
-					return args[0] - args[1];
+				switch (args.length)
+				{
+					case 1:
+						return -args[0];
+					case 2:
+						return args[0] - args[1];
+				}
 			};
 			// bitwise
 			operators["~"] = function(x:*):* { return ~x; };
@@ -394,6 +408,11 @@
 			assignmentOperators['&=']   = function(o:*, ...a):* { for (var i:int = 0; i < a.length - 2; i++) o = o[a[i]]; return o[a[i]] &=   a[i + 1]; };
 			assignmentOperators['|=']   = function(o:*, ...a):* { for (var i:int = 0; i < a.length - 2; i++) o = o[a[i]]; return o[a[i]] |=   a[i + 1]; };
 			assignmentOperators['^=']   = function(o:*, ...a):* { for (var i:int = 0; i < a.length - 2; i++) o = o[a[i]]; return o[a[i]] ^=   a[i + 1]; };
+			// special cases: -- and ++ unary operators ignore last parameter
+			assignmentOperators['--']  = function(o:*, ...a):* { for (var i:int = 0; i < a.length - 2; i++) o = o[a[i]]; return --o[a[i]]; };
+			assignmentOperators['++']  = function(o:*, ...a):* { for (var i:int = 0; i < a.length - 2; i++) o = o[a[i]]; return ++o[a[i]]; };
+			assignmentOperators['#--']  = function(o:*, ...a):* { for (var i:int = 0; i < a.length - 2; i++) o = o[a[i]]; return o[a[i]]--; };
+			assignmentOperators['#++']  = function(o:*, ...a):* { for (var i:int = 0; i < a.length - 2; i++) o = o[a[i]]; return o[a[i]]++; };
 			for (var aop:String in assignmentOperators)
 				operators[aop] = assignmentOperators[aop];

@@ -411,7 +430,7 @@
 				['||']
 			];
 			// unary operators
-			unaryOperatorSymbols = ['-','~','!']; // '#' not listed because it has special evaluation order
+			unaryOperatorSymbols = ['--','++','+','-','~','!']; // '#' not listed because it has special evaluation order

 			// create a corresponding function name for each operator
 			for (var op:String in operators)
@@ -509,17 +528,10 @@

 			// handle operators (find the longest matching operator)
 			// this function assumes operators has already been initialized
-			endIndex = index;
-			var op:String = null;
-			while (endIndex < n)
-			{
-				op = expression.substring(index, endIndex + 1);
-				if (operators[op] == undefined)
-					break;
-				endIndex++;
-			}
-			if (index < endIndex)
-				return expression.substring(index, endIndex);
+			if (operators.hasOwnProperty(c))
+				for (var opLength:int = MAX_OPERATOR_LENGTH; opLength > 0; opLength--)
+					if (operators.hasOwnProperty(c = expression.substr(index, opLength)))
+						return c;

 			// handle whitespace (find the longest matching sequence)
 			endIndex = index;
@@ -536,7 +548,7 @@
 				if (WHITESPACE.indexOf(c) >= 0)
 					break;
 				// operator terminates a token
-				if (operators[c] != undefined)
+				if (operators.hasOwnProperty(c))
 					break;
 			}
 			return expression.substring(index, endIndex);
@@ -593,7 +605,7 @@
 			}

 			// next step: compile unary '#' operators (except those immediately followed by other operators)
-			if (operators['#'])
+			if (operators.hasOwnProperty('#'))
 				compileUnaryOperators(tokens, ['#']);

 			// next step: handle operators "..[]{}()"
@@ -609,10 +621,10 @@
 			{
 				token = tokens[i] as String;
 				// skip tokens that have already been compiled and skip operator tokens
-				if (token == null || operators[token] != undefined)
+				if (token == null || operators.hasOwnProperty(token))
 					continue;
 				// evaluate constants
-				if (constants[token] != undefined)
+				if (constants.hasOwnProperty(token))
 				{
 					tokens[i] = new CompiledConstant(token, constants[token]);
 					continue;
@@ -624,11 +636,13 @@
 			}

 			// next step: compile unary '#' operators
-			if (operators['#'])
+			if (operators.hasOwnProperty('#'))
 				compileUnaryOperators(tokens, ['#']);

 			// next step: compile statements
-			compileStatements(tokens);
+			//compileStatements(tokens);
+
+			compilePostfixOperators(tokens, ['--', '++']);

 			// next step: compile infix '**' operators
 			compileInfixOperators(tokens, ['**']);
@@ -1066,9 +1080,9 @@
 			var constantMethod:CompiledConstant = compiledMethod as CompiledConstant;
 			if (!enableOptimizations
 				|| !constantMethod
-				|| operators[constantMethod.name] == undefined
+				|| !operators.hasOwnProperty(constantMethod.name)
 				|| constantMethod.name == OPERATOR_ESCAPE + '['
-				|| assignmentOperators[constantMethod.value] != undefined)
+				|| assignmentOperators.hasOwnProperty(constantMethod.value))
 			{
 				return compiledFunctionCall;
 			}
@@ -1082,11 +1096,47 @@
 		}

 		/**
-		 * This function assumes there are none of the following contained in the top-level of tokens:
-		 *
 		 * @param tokens
+		 * @param start
+		 * @return index of next statement
+		 */
+		private function findNextStatement(tokens:Array, start:int):int
+		{
+			while (++start < tokens.length)
+				if (statements.hasOwnProperty(tokens[start]))
+					break;
+			return start;
+		}
+
+		/**
+		 * This function assumes that bracket operators have already been compiled.
 		 */
 		private function compileStatements(tokens:Array):void
+		{
+			var i:int = -1;
+			var j:int;
+			while (true)
+			{
+				switch (tokens[i = findNextStatement(tokens, i)])
+				{
+					case STATEMENT_IF:
+						assertValidStatementParams(tokens, i);
+						switch (tokens[j = findNextStatement(tokens, i)])
+						{
+							case STATEMENT_ELSE:
+							default:
+						}
+						break;
+					default:
+						return;
+				}
+			}
+
+
+
+
+		}
+		private function compileStatements1(tokens:Array):void
 		{
 			var tokenIndex:int = tokens.length;
 			while (tokenIndex--) // right to left
@@ -1117,21 +1167,16 @@
 						break;
 				}

-				assertValidStatementParams(tokens, firstSiblingIndex, tokenIndex);
-			}
-		}
-
-		private function assertValidStatementParams(tokens:Array, firstIndex:int, lastIndex:int):void
-		{
-			if (firstIndex != lastIndex)
-				for (var i:int = firstIndex; i <= lastIndex; i++)
-					if (statements.hasOwnProperty(tokens[i]))
-						assertValidStatementParams(tokens, i, i);
-
-			var statement:String = tokens[firstIndex] as String;
+//				assertValidStatementParams(tokens, firstSiblingIndex, tokenIndex);
+			}
+		}
+
+		private function assertValidStatementParams(tokens:Array, index:int):void
+		{
+			var statement:String = tokens[index] as String;
 			if (statements[statement]) // requires parameters?
 			{
-				var params:CompiledFunctionCall = tokens[firstIndex + 1] as CompiledFunctionCall;
+				var params:CompiledFunctionCall = tokens[index + 1] as CompiledFunctionCall;
 				if (!params)
 					throwInvalidSyntax(statement);

@@ -1145,15 +1190,6 @@
 				else if (statement == STATEMENT_FOR && params.evaluatedMethod != STATEMENT_IN)
 				{
 					throwInvalidSyntax(statement);
-				}
-
-				if (firstIndex != lastIndex)
-				{
-					//TODO
-
-					var distance:int = statements[statement] ? 3 : 2; // 3 if requires params, 2 if not
-					if (lastIndex - firstIndex != distance)
-						throwInvalidSyntax(statement);
 				}
 			}
 		}
@@ -1178,6 +1214,33 @@
 			return new CompiledFunctionCall(new CompiledConstant(variableName, variableName), null); // params are null as a special case
 		}

+		private function compilePostfixOperators(compiledTokens:Array, operatorSymbols:Array):void
+		{
+			for (var i:int = 1; i < compiledTokens.length; i++)
+			{
+				var op:String = compiledTokens[i] as String;
+				if (operatorSymbols.indexOf(op) < 0)
+					continue;
+
+				var cfc:CompiledFunctionCall = compiledTokens[i - 1] as CompiledFunctionCall;
+				if (!cfc)
+					continue;
+
+				if (cfc.evaluatedMethod is String) // variable lookup
+				{
+					compiledTokens.splice(--i, 2, compileOperator('#' + op, [cfc.compiledMethod, new CompiledConstant("1", 1)]));
+					continue;
+				}
+				else if (cfc.evaluatedMethod == operators['.'])
+				{
+					// switch to the postfix operator
+					cfc.compiledParams.push(new CompiledConstant("1", 1));
+					compiledTokens.splice(--i, 2, compileOperator('#' + op, cfc.compiledParams));
+					continue;
+				}
+			}
+		}
+
 		/**
 		 * This function is for internal use only.
 		 * This will compile unary operators of the given type from right to left.
@@ -1218,7 +1281,29 @@
 				// compile unary operator
 				if (debug)
 					trace("compile unary operator", compiledTokens.slice(index, index + 2).join(' '));
-				compiledTokens.splice(index, 2, compileOperator(token, nextToken === undefined ? [] : [nextToken]));
+
+				if (assignmentOperators.hasOwnProperty(token))
+				{
+					var cfc:CompiledFunctionCall = nextToken as CompiledFunctionCall;
+					if (cfc && cfc.evaluatedMethod is String) // variable lookup
+					{
+						compiledTokens.splice(index, 2, compileOperator(token, [cfc.compiledMethod, new CompiledConstant("1", 1)]));
+					}
+					else if (cfc && cfc.evaluatedMethod == operators['.'])
+					{
+						// switch to the unary operator
+						cfc.compiledParams.push(new CompiledConstant("1", 1));
+						compiledTokens.splice(index, 2, compileOperator(token, cfc.compiledParams));
+					}
+					else
+					{
+						throw new Error("Invalid operand for unary operator " + token);
+					}
+				}
+				else
+				{
+					compiledTokens.splice(index, 2, compileOperator(token, nextToken === undefined ? [] : [nextToken]));
+				}
 			}
 		}

@@ -1281,8 +1366,8 @@
 			*/
 			operatorName = OPERATOR_ESCAPE + operatorName;
 			return compileFunctionCall(new CompiledConstant(operatorName, constants[operatorName]), compiledParams);
-		}
-
+		}
+
 		/**
 		 * @param compiledObject A CompiledFunctionCall or CompiledConstant to decompile into an expression String.
 		 * @return The expression String generated from the compiledObject.
@@ -1321,10 +1406,13 @@
 			if (name.indexOf(OPERATOR_ESCAPE) == 0)
 			{
 				var op:String = name.substr(OPERATOR_ESCAPE.length);
-				if (op == '.' && params.length >= 2)
+				if ((op == '.' || assignmentOperators.hasOwnProperty(op)) && params.length > 0)
 				{
 					var result:String = params[0];
-					for (i = 1; i < params.length; i++)
+					var n:int = params.length;
+					if (op != '.')
+						n--;
+					for (i = 1; i < n; i++)
 					{
 						// if the evaluated param compiles as a variable, use the '.' syntax
 						constant = call.compiledParams[i] as CompiledConstant;
@@ -1340,7 +1428,15 @@
 						else
 							result += '[' + params[i] + ']';
 					}
-					return result;
+					if (op == '.')
+						return result;
+
+					if (op.charAt(0) == '#')
+						return result + op.substr(1);
+					if (op == '--' || op == '++')
+						return op + result;
+
+					return StringUtil.substitute("{0} {1} {2}", result, op, params[params.length - 1]);
 				}
 				// variable number of params
 				if (op == '[')
@@ -1453,7 +1549,7 @@

 							// handle branching and short-circuiting
 							// skip evaluation of true or false branch depending on condition and branch operator
-							if (BRANCH_LOOKUP.hasOwnProperty(call.evaluatedMethod) && call.evalIndex > INDEX_CONDITION)
+							if (BRANCH_LOOKUP[call.evaluatedMethod] && call.evalIndex > INDEX_CONDITION)
 								if (BRANCH_LOOKUP[call.evaluatedMethod] == (call.evalIndex != (call.evaluatedParams[INDEX_CONDITION] ? INDEX_TRUE : INDEX_FALSE)))
 									continue;


fixed error in function typing comment

fixed error in function typing comment

--- WeaveJS/src/weavejs/util/Dictionary2D.as
+++ WeaveJS/src/weavejs/util/Dictionary2D.as
@@ -141,7 +141,7 @@
 		 * @param key1_key2_value A function which may return true to stop iterating.
 		 * @param thisArg The 'this' argument for the function.
 		 */
-		public function forEach(key1_key2_value:/*/(key1:K1, key2:K2, value:V) => void|boolean/*/Function, thisArg:Object):void
+		public function forEach(key1_key2_value:/*/(key1:K1, key2:K2, value:V) => any/*/Function, thisArg:Object):void
 		{
 			if (weak1 || weak2)
 				throwWeakIterationError();


Delete fbApplicationNoTUI.as

Delete fbApplicationNoTUI.as

--- fbApplicationNoTUI.as
+++ fbApplicationNoTUI.as
@@ -1,480 +0,0 @@
-/*
- * Tangible User Interfacer (former TouchAll) demo.
- *
- * Copyright 2016 Gonçalo Amador <g.n.p.amador@gmail.com>
- *
- * Licensed 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 touchAll.demos.tronFiducialsDemo
-{
-	import flash.ui.*;
-	import flash.display.*;
-	//import flash.filters.*;
-	//import flash.events.*;
-	import flash.events.Event;
-	//import flash.events.TouchEvent;
-	import flash.events.MouseEvent;
-	import flash.events.KeyboardEvent;
-	//import flash.events.TransformGestureEvent;
-
-	import org.tuio.*;
-	import org.tuio.connectors.*;
-	import org.tuio.debug.*;
-	import org.tuio.fiducial.*;
-	import org.tuio.gestures.*;
-	import org.tuio.mouse.*;
-	import org.tuio.windows7.*;
-
-	import touchAll.piano.Piano;
-	import touchAll.keyboard.CustomKeyboard;
-	import touchAll.pong.cl.kirill.PongGame;
-
-	/**
-	 * @author Gonçalo Amador
-	 */
-	[SWF(width = "1280", height = "720", frameRate = "60", backgroundColor = "#ffffff")]
-	//[SWF(width = "1280", height = "720", frameRate = "60", backgroundColor = "#000000")]
-	public class ExampleFiducialsDemo extends MovieClip
-	{
-		/* global variables */
-		private var _stage:Stage;
-		private var _width:int = 1280;
-		private var _height:int = 720;
-		private var _color:uint = 0x000000;
-		private var _tm:TuioManager;
-		private var _gm:GestureManager;
-		private var _packets_count:uint = 0;
-		private var _log:String = "";
-		private var _mouseCursor:Sprite;
-		private var _background:Sprite = new Sprite;
-
-		private var _keyboard:CustomKeyboard;
-		private var _pongGame:PongGame;
-		private var _piano:Piano;
-		private var _textColor:uint = 0x8B8B8B;
-		private var _buttonColor:uint = 0x000000;
-		private var _buttonTextColor:uint = 0xFFFFFF;
-		private var _buttonOnColor:uint = 0xBB0000;
-		private var _buttonOffColor:uint = 0x330000;
-		private var _borderColor:uint = 0x000000;
-		private var _white_keys_color:uint = 0xFEFEFE;
-
-		private var _debug:Boolean = true;
-		private var _LCconnector:Boolean = false;
-		private var _UDPconnector:Boolean = true;
-		private var _TCPconnector:Boolean = false;
-		private var _host:String = "127.0.0.1";
-		private var _port:int = 3333;
-		private var _fiducialHandler:Boolean = true;
-		private var _tuioManager:Boolean = true;
-		private var _gestureManager:Boolean = true;
-		private var _mouseToTouch:Boolean = false;
-		private var _tc:TuioClient;
-
-		public function ExampleFiducialsDemo():void
-		{
-			if (stage) init();
-			else addEventListener(Event.ADDED_TO_STAGE, init);
-		}
-
-		private function init(e:Event = null):void
-		{
-			removeEventListener(Event.ADDED_TO_STAGE, init);
-
-			_stage = stage;
-
-			/* LOAD STAGE CONTENT */
-			backgroundLoader();
-			//backgroundEventListenersLoader();
-
-			/* stage set up */
-			stageLoader();
-			stageEventListenersLoader();
-
-			/* tuio set up */
-			tuioLoader();
-		}
-
-		/* BACKGROUND FUNCTIONS */
-		/**
-		 * load default stage background
-		 */
-		public function backgroundLoader():void {
-			/*
-			 * Set blend mode "ALPHA" and
-			 * fill background at the starting position (0,0), with rgb color 0xFFFFFF and alpha blending 1
-			 */
-			_background.blendMode = BlendMode.ALPHA;
-			_background.graphics.beginFill(0xFFFFFF,1);
-			_background.graphics.drawRect(0,0,_stage.stageWidth,_stage.stageHeight);
-			_background.graphics.endFill();
-
-			/* set activate doubleClick mouse checks */
-			trace("set activate doubleClick mouse checks.");
-			_background.doubleClickEnabled = true;
-
-			/* add the background to the stage */
-			trace("add the background to the stage.");
-			_stage.addChild(_background);
-		}
-
-
-		public function backgroundEventListenersLoader():void {
-			trace("backgroundEventListenersLoader.");
-		}
-
-		/**
-		 * stage set up
-		 */
-		public function stageLoader():void {
-			/* STAGE SET UP */
-			trace("STAGE SET UP.");
-			_stage.stageWidth = _width;
-			_stage.stageHeight = _height;
-
-			/* AIR stage settings */
-			trace("AIR stage settings.");
-			//_stage.displayState = StageDisplayState.FULL_SCREEN_INTERACTIVE;
-			_stage.scaleMode = StageScaleMode.NO_SCALE;
-			_stage.align = StageAlign.TOP_LEFT;
-
-			/* set activate doubleClick mouse checks */
-			trace("set activate doubleClick mouse checks.");
-			_stage.doubleClickEnabled = true;
-
-			/* load an circle to track mouse cursor */
-			trace("load an circle to track mouse cursor.");
-			if (_debug) {
-				addMouseCursor();
-			}
-		}
-
-		/**
-		 * stage event listeners set up
-		 */
-		public function stageEventListenersLoader():void {
-			/* STAGE EVENT LISTENERS */
-			/* add stage keyboard event listeners */
-			trace("add stage keyboard event listeners.");
-			if (_tuioManager) {
-				_stage.addEventListener(KeyboardEvent.KEY_DOWN, showTuioNetworkPacketsLog);
-			}
-
-			/* add stage mouse event listeners */
-			trace("add stage mouse event listeners.");
-			if (_debug) {
-				_stage.addEventListener(MouseEvent.MOUSE_MOVE, followMouse);
-				_stage.addEventListener(MouseEvent.MOUSE_DOWN, mouseDown);
-				_stage.addEventListener(MouseEvent.MOUSE_UP, mouseUp);
-			}
-
-			/* add stage Fiducial (object) event listeners */
-			trace("add stage fiducial event listeners.");
-			_stage.addEventListener(FiducialEvent.ADD, fiducialADD);
-			_stage.addEventListener(FiducialEvent.MOVE, fiducialUPDATE);
-			_stage.addEventListener(FiducialEvent.REMOVED, fiducialREMOVE);
-		}
-
-		/* FIDUCIAL FUNCTIONS */
-		/**
-		 * handle fiducial (Object) add events
-		 */
-		public function fiducialADD(e:FiducialEvent):void {
-			// debug mode console message if FiducialEvent.ADD event captured
-			trace("Fiducial #" + e.fiducialId + " fiducial added.");
-
-			if (e.fiducialId == 0)
-			{
-				/* alternative 1: load keyboard class */
-				_keyboard = new CustomKeyboard(e.x, e.y, 718, 200, e.x, e.y + 220, _buttonTextColor, _buttonColor, _borderColor);
-				//_keyboard.filters = [new GlowFilter(0x0055ff, .75, 100, 100, 2, 2, false, false)];
-
-				_stage.addChild(_keyboard);
-
-				/* alternative 2: load the content of *.swf file */
-				//var _objectLoader:Loader = new Loader;
-				//_objectLoader.load(new URLRequest("CustomKeyboard.swf"));
-				//_stage.addChild(_objectLoader);
-			}
-
-			if (e.fiducialId == 1)
-			{
-				_pongGame = new PongGame(_stage, _borderColor);
-				_pongGame.x = e.x;
-				_pongGame.y = e.y;
-				_stage.addChild(_pongGame);
-			}
-
-			if (e.fiducialId == 2)
-			{
-				_piano = new Piano(_textColor, _buttonTextColor, _buttonOnColor, _buttonOffColor, _white_keys_color);
-				//_piano = new Piano();
-				_piano.x = e.x;
-				_piano.y = e.y;
-				_piano.rotation = 90;
-				_piano.scaleX = 2;
-				_piano.scaleY = 2;
-				_stage.addChild(_piano);
-			}
-		}
-
-		/**
-		 * handle fiducial (Object) remove events
-		 */
-		public function fiducialREMOVE(e:FiducialEvent):void {
-			trace("Fiducial #" + e.fiducialId + " fiducial removed.");
-
-			if (e.fiducialId == 0)
-			{
-				/* alternative 1: remove keyboard class from stage */
-				_stage.removeChild(_keyboard);
-
-				/* alternative 2: remove loaded *.swf file from stage */
-				//_stage.removeChild(_objectLoader);
-			}
-
-			if (e.fiducialId == 1)
-			{
-				_pongGame.stopGame();
-				_stage.removeChild(_pongGame);
-			}
-
-			if (e.fiducialId == 2)
-			{
-				_stage.removeChild(_piano);
-			}
-		}
-
-		/**
-		 * handle fiducial (Object) move events
-		 */
-		public function fiducialUPDATE(e:FiducialEvent):void {
-			trace("Fiducial #" + e.fiducialId + " fiducial move.");
-
-			if (e.fiducialId == 0) {
-				_keyboard.update(e.x, e.y, e.x, e.y + 220);
-			}
-
-			if (e.fiducialId == 1) {
-				_pongGame.x = e.x;
-				_pongGame.y = e.y;
-			}
-
-			if (e.fiducialId == 2)
-			{
-				_piano.x = e.x;
-				_piano.y = e.y;
-			}
-		}
-
-		/**
-		 * tuio set up
-		 */
-		public function tuioLoader():void {
-			//var _tc:TuioClient;
-
-			/* tuio client setup (a LC/UDP/TCP socket that connects to the server '_host' using port '_port') creation */
-			if (_LCconnector) {
-				trace("tuioClient LC connector.")
-				_tc = new TuioClient(new LCConnector());
-			}
-
-			if (_TCPconnector) {
-				trace("tuioClient TCP connector.")
-				_tc = new TuioClient(new TCPConnector(_host, _port));
-			}
-
-			if (_UDPconnector) {
-				trace("tuioClient UDP connector.")
-				_tc = new TuioClient(new UDPConnector(_host, _port));
-			}
-
-			/* optional: activate tuio fiducial capture events */
-			if (_fiducialHandler) {
-				trace("fiducial Handler on.")
-				var fiducialDispatcher:TuioFiducialDispatcher = TuioFiducialDispatcher.init(_stage);
-				_tc.addListener(fiducialDispatcher);
-			}
-
-			/* optional: activate tuio debug mode to display touches */
-			if (_debug) {
-				trace("tuioDebug on.")
-				_tc.addListener(TuioDebug.init(_stage));
-			}
-
-			/* tuioManager setup (a container which processes the Tuio tracking data received by the given TuioClient) creation */
-			//if (_tuioManager) {
-			if (_tuioManager) {
-				trace("tuioManager on.")
-				_tm = TuioManager.init(_stage, _tc);
-				//_tm.touchTargetDiscoveryMode = TuioManager.TOUCH_TARGET_DISCOVERY_NONE
-
-				/* add tuioManager tuio event listeners */
-				_tm.addEventListener(TuioEvent.ADD, packetsCount);
-				_tm.addEventListener(TuioEvent.REMOVE, packetsCount);
-				_tm.addEventListener(TuioEvent.UPDATE, packetsCount);
-			}
-
-			/* optional: treat Gestures */
-			if (_gestureManager) {
-				trace("gestureManager on.")
-				_gm = GestureManager.init(_stage, _tc);
-				//_gm.touchTargetDiscoveryMode = GestureManager.TOUCH_TARGET_DISCOVERY_NONE;
-
-				GestureManager.addGesture(new DragGesture());
-				GestureManager.addGesture(new ZoomGesture());
-				GestureManager.addGesture(new RotateGesture());
-
-				//GestureManager.addGesture(new ScrollGesture());
-				GestureManager.addGesture(new PressTapGesture());
-				GestureManager.addGesture(new OneDownOneMoveGesture());
-			}
-
-			/* optional: treat MouseEvents also as TouchEvents */
-			if (_mouseToTouch) {
-				var mouseToTouch:MouseToTouchDispatcher = new MouseToTouchDispatcher(_stage);
-			}
-
-			/* optional: convert the native TouchEvents into tuio TouchEvents */
-			//var winTouch:Windows7TouchToTuioDispatcher = new Windows7TouchToTuioDispatcher(_stage,false,false);
-
-			/* optional: dispatch the events by using the TuioManager */
-			//var winTouch:Windows7TouchToTuioDispatcher = new Windows7TouchToTuioDispatcher(_stage,true,false);
-		}
-
-		/**
-		 * Show total tuio events captured log
-		 */
-		private function packetsCount(e:TuioEvent):void {
-			var date:Date = new Date();
-			_packets_count++;
-
-			_log += _packets_count + " Packet captured TuioEvent at " + date.fullYear;
-
-			if ((date.month + 1) < 10) {
-				_log += "-0" + (date.month + 1);
-			}
-			else {
-				_log += "-" + (date.month + 1);
-			}
-
-			if (date.date < 10) {
-				_log += "-0" + date.date;
-			}
-			else {
-				_log += "-" + date.date;
-			}
-
-			if (date.hours < 10) {
-				_log += " 0" + date.hours;
-			}
-			else {
-				_log += " " + date.hours;
-			}
-
-			if (date.minutes < 10) {
-				_log += ":0" + date.minutes;
-			}
-			else {
-				_log += ":" + date.minutes;
-			}
-
-			if (date.seconds < 10) {
-				_log += ":0" + date.seconds;
-			}
-			else {
-				_log += ":" + date.seconds;
-			}
-
-			if (date.milliseconds < 10) {
-				_log += ".00" + date.milliseconds;
-			} else if (date.milliseconds < 100) {
-				_log += ".0" + date.milliseconds;
-			}
-			else {
-				_log += "." + date.milliseconds;
-			}
-
-			_log += "\n";
-		}
-
-		/**
-		 * handle stage "F1" keyboard events
-		 */
-		private function showTuioNetworkPacketsLog(e:KeyboardEvent):void {
-			if (e.keyCode == Keyboard.F1) {
-				trace("touch hold.");
-				trace(_log);
-				trace("Packets captured " + _packets_count + "\n");
-			}
-		}
-
-		/* MOUSE CURSOR FUNCTIONS */
-		/**
-		 * display a circle where mouse cursor is
-		 */
-		private function addMouseCursor():void {
-			/* Create a Sprite instance called _mouseCursor */
-			_mouseCursor = new Sprite;
-
-			/*
-			 * Set blend mode "DARKEN" and
-			 * fill a circle at the starting position (0,0) of radius 5, with rgb color '_color' and alpha blending 1 or
-			 * draw a circle with line thickness 1.1, with rgb color '_color' and alpha blending 1.
-			 */
-			//_mouseCursor.blendMode = BlendMode.DARKEN;
-			//_mouseCursor.graphics.beginFill(0x770000, 1);
-			_mouseCursor.graphics.lineStyle(1.1, _color, 1, false, LineScaleMode.NONE);
-			_mouseCursor.graphics.drawCircle(0, 0, 20);
-			//_mouseCursor.graphics.endFill();
-
-			/* set circle center at mouse coursor position */
-			_mouseCursor.x = _mouseCursor.mouseX;
-			_mouseCursor.y = _mouseCursor.mouseY;
-
-			/* set circle visibility default value */
-			_mouseCursor.visible = false;
-
-			/* add the circle to the stage */
-			_stage.addChild(_mouseCursor);
-		}
-
-		/**
-		 * handle mouse movement events for the circle
-		 */
-		private function followMouse(e:MouseEvent):void {
-			if (_mouseCursor != null) {
-				_mouseCursor.x = _stage.mouseX;
-				_mouseCursor.y = _stage.mouseY;
-			}
-		}
-
-		/**
-		 * handle mouse down events for circle
-		 */
-		private function mouseDown(e:MouseEvent):void {
-			if (_mouseCursor != null) {
-				_mouseCursor.visible = true;
-			}
-		}
-
-		/**
-		 * handle mouse up events for circle
-		 */
-		private function mouseUp(e:MouseEvent):void {
-			if (_mouseCursor != null) {
-				_mouseCursor.visible = false;
-			}
-		}
-	}
-}


Transferred from the Adobe Open Source Subversion Repository

Revision: 23243
Author:   cframpto@adobe.com
Date:     2011-12-20T00:59:57.384047Z

Log Message:
-----------
In frameworks, remove Adobe headers from all files except xml/mxml file types.  There are also a few .txt files that are license files that I didn't touch yet.

Modified Paths:
--------------
2361 paths were modified

git-svn-id: 7146a936b37d36e51ea0d66f8acbe0b8281bc7b7@1259013 13f79535-47bb-0310-9956-ffa450edef68

--- frameworks/projects/framework/src/mx/core/ButtonAsset.as
+++ frameworks/projects/framework/src/mx/core/ButtonAsset.as
@@ -1,13 +1,3 @@
-////////////////////////////////////////////////////////////////////////////////
-//
-//  ADOBE SYSTEMS INCORPORATED
-//  Copyright 2005-2007 Adobe Systems Incorporated
-//  All Rights Reserved.
-//
-//  NOTICE: Adobe permits you to use, modify, and distribute this file
-//  in accordance with the terms of the license agreement accompanying it.
-//
-////////////////////////////////////////////////////////////////////////////////

 package mx.core
 {


Transferred from the Adobe Open Source Subversion Repository

Revision: 9463
Author:   dloverin@adobe.com
Date:     2009-08-21T19:27:09.831928Z

Log Message:
-----------
Fix ASDoc error.

QE notes: None.
Doc notes: None.
Bugs:
Reviewer: Matt Horn
Tests run: checkintests
Is noteworthy for integration: no

Modified Paths:
--------------
/flex/sdk/trunk/frameworks/projects/framework/src/mx/core/DesignLayer.as

git-svn-id: 7146a936b37d36e51ea0d66f8acbe0b8281bc7b7@1259085 13f79535-47bb-0310-9956-ffa450edef68

--- frameworks/projects/framework/src/mx/core/DesignLayer.as
+++ frameworks/projects/framework/src/mx/core/DesignLayer.as
@@ -150,7 +150,7 @@
          *  The visibility for this design layer instance.
          *
          *
When updated, the appropriate change event for effectiveVisibility
-         *  will be dispatched to all layerPropertyChange listeners for
+         *  will be dispatched to all layerPropertyChange listeners for
          *  this layer, as well as those of affected descendant layers if any.

          *
          *  @default true


Transferred from the Adobe Open Source Subversion Repository

Revision: 8
Author:   open-source-svn-admin@adobe.com
Date:     2007-12-15T01:49:31.087529Z

Log Message:
-----------
The beginning of the open-source Flex SDK.

Populated the flex/sdk/trunk directory with an open-source subset of files from //depot/flex/sdk/...@191097 in the Faramir Perforce server. This changelist is a bit past the 3.0rc0 build.

The Ant scripts will not successfully build yet. They need to be adapted to the open-source subset.

Modified Paths:
--------------
2532 paths were modified

git-svn-id: 7146a936b37d36e51ea0d66f8acbe0b8281bc7b7@1259217 13f79535-47bb-0310-9956-ffa450edef68

--- frameworks/projects/framework/src/mx/core/FlexVersion.as
+++ frameworks/projects/framework/src/mx/core/FlexVersion.as
@@ -0,0 +1,262 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+//  ADOBE SYSTEMS INCORPORATED
+//  Copyright 2007 Adobe Systems Incorporated
+//  All Rights Reserved.
+//
+//  NOTICE: Adobe permits you to use, modify, and distribute this file
+//  in accordance with the terms of the license agreement accompanying it.
+//
+////////////////////////////////////////////////////////////////////////////////
+
+package mx.core
+{
+
+import mx.resources.ResourceManager;
+
+[ResourceBundle("core")]
+
+/**
+ *  This class controls the backward-compatibility of the framework.
+ *  With every new release, some aspects of the framework such as behaviors,
+ *  styles, and default settings, are changed which can affect your application.
+ *  By setting the compatibilityVersion property, the behavior can be changed
+ *  to match previous releases.
+ *  This is a 'global' flag; you cannot apply one version to one component or group of components
+ *  and a different version to another component or group of components.
+ */
+public class FlexVersion
+{
+    include "../core/Version.as";
+
+    //--------------------------------------------------------------------------
+    //
+    //  Class constants
+    //
+    //--------------------------------------------------------------------------
+
+    /**
+     *  The current released version of the Flex SDK, encoded as a uint.
+     */
+    public static const CURRENT_VERSION:uint = 0x03000000;
+
+    /**
+     *  The compatibilityVersion value of Flex 3.0,
+     *  encoded numerically as a uint.
+     *  Code can compare this constant against
+     *  the compatibilityVersion
+     *  to implement version-specific behavior.
+     */
+    public static const VERSION_3_0:uint = 0x03000000;
+
+    /**
+     *  The compatibilityVersion value of Flex 2.0.1,
+     *  encoded numerically as a uint.
+     *  Code can compare this constant against
+     *  the compatibilityVersion
+     *  to implement version-specific behavior.
+     */
+    public static const VERSION_2_0_1:uint = 0x02000001;
+
+    /**
+     *  The compatibilityVersion value of Flex 2.0,
+     *  encoded numerically as a uint.
+     *  Code can compare this constant against
+     *  the compatibilityVersion
+     *  to implement version-specific behavior.
+     */
+    public static const VERSION_2_0:uint = 0x02000000;
+
+    /**
+     *  A String passed as a parameter
+     *  to the compatibilityErrorFunction() method
+     *  if the compatibility version has already been set.
+     */
+    public static const VERSION_ALREADY_SET:String = "versionAlreadySet";
+        // Also used as resource string, so be careful changing it.
+
+    /**
+     *  A String passed as a parameter
+     *  to the compatibilityErrorFunction() method
+     *  if the compatibility version has already been read.
+     */
+    public static const VERSION_ALREADY_READ:String = "versionAlreadyRead";
+        // Also used as resource string, so be careful changing it.
+
+    //--------------------------------------------------------------------------
+    //
+    //  Class properties
+    //
+    //--------------------------------------------------------------------------
+
+    //----------------------------------
+    //  compatibilityErrorFunction
+    //----------------------------------
+
+    /**
+     *  @private
+     *  Storage for the compatibilityErrorFunction property.
+     */
+    private static var _compatibilityErrorFunction:Function;
+
+    /**
+     *  A function that gets called when the compatibility version
+     *  is set more than once, or set after it has been read.
+     *  If this function is not set, the SDK throws an error.
+     *  If set, File calls this function, but it is
+     *  up to the developer to decide how to handle the call.
+     *  This function will also be called if the function is set more than once.
+     *  The function takes two parameters: the first is a uint
+     *  which is the version that was attempted to be set; the second
+     *  is a string that is the reason it failed, either
+     *  VERSION_ALREADY_SET or VERSION_ALREADY_READ.
+     */
+    public static function get compatibilityErrorFunction():Function
+    {
+        return _compatibilityErrorFunction;
+    }
+
+    /**
+     *  @private
+     */
+    public static function set compatibilityErrorFunction(value:Function):void
+    {
+        _compatibilityErrorFunction = value;
+    }
+
+    //----------------------------------
+    //  compatibilityVersion
+    //----------------------------------
+
+    /**
+     *  @private
+     *  Storage for the compatibilityVersion property.
+     */
+    private static var _compatibilityVersion:uint = CURRENT_VERSION;
+
+    /**
+     *  @private
+     */
+    private static var compatibilityVersionChanged:Boolean = false;
+
+    /**
+     *  @private
+     */
+    private static var compatibilityVersionRead:Boolean = false;
+
+    /**
+     *  The current version that the framework maintains compatibility for.
+     *  This defaults to CURRENT_VERSION.
+     *  It can be changed only once; changing it a second time
+     *  results in a call to the compatibilityErrorFunction() method
+     *  if it exists, or results in a runtime error.
+     *  Changing it after the compatibilityVersion property has been read results in an error
+     *  because code that is dependent on the version has already run.
+     *  There are no notifications; the assumption is that this is set only once, and this it is set
+     *  early enough that no code that depends on it has run yet.
+     *
+     *  @default FlexVersion.CURRENT_VERSION
+     */
+    public static function get compatibilityVersion():uint
+    {
+        compatibilityVersionRead = true;
+
+        return _compatibilityVersion;
+    }
+
+    /**
+     *  @private
+     */
+    public static function set compatibilityVersion(value:uint):void
+    {
+        if (value == _compatibilityVersion)
+            return;
+
+        var s:String;
+
+        if (compatibilityVersionChanged)
+        {
+            if (compatibilityErrorFunction == null)
+            {
+                s = ResourceManager.getInstance().getString(
+                    "core", VERSION_ALREADY_SET);
+                throw new Error(s);
+            }
+            else
+                compatibilityErrorFunction(value, VERSION_ALREADY_SET);
+        }
+
+        if (compatibilityVersionRead)
+        {
+            if (compatibilityErrorFunction == null)
+            {
+                s = ResourceManager.getInstance().getString(
+                    "core", VERSION_ALREADY_READ);
+                throw new Error(s);
+            }
+            else
+                compatibilityErrorFunction(value, VERSION_ALREADY_READ);
+        }
+
+        _compatibilityVersion = value;
+        compatibilityVersionChanged = true;
+    }
+
+    //----------------------------------
+    //  compatibilityVersionString
+    //----------------------------------
+
+    /**
+     *  The compatibility version, as a string of the form "X.X.X".
+     *  This is a pass-through to the compatibilityVersion
+     *  property, which converts the number to and from a more
+     *  human-readable String version.
+     */
+    public static function get compatibilityVersionString():String
+    {
+        var major:uint = (compatibilityVersion >> 24) & 0xFF;
+        var minor:uint = (compatibilityVersion >> 16) & 0xFF;
+        var update:uint = compatibilityVersion & 0xFFFF;
+
+        return major.toString() + "." +
+               minor.toString() + "." +
+               update.toString();
+    }
+
+    /**
+     *  @private
+     */
+    public static function set compatibilityVersionString(value:String):void
+    {
+        var pieces:Array = value.split(".");
+
+        var major:uint = parseInt(pieces[0]);
+        var minor:uint = parseInt(pieces[1]);
+        var update:uint = parseInt(pieces[2]);
+
+        compatibilityVersion = (major << 24) + (minor << 16) + update;
+    }
+
+    /**
+     *  @private
+     *  A back door for changing the compatibility version.
+     *  This is provided for FlexBuilder's Design View,
+     *  which needs to be able to change compatibility mode.
+     *  In general, we won't support late changes to compatibility,
+     *  because the framework won't watch for changes.
+     *  Design View will need to set this early during initialization.
+     */
+    mx_internal static function changeCompatibilityVersionString(
+                                        value:String):void
+    {
+        var pieces:Array = value.split(".");
+
+        var major:uint = parseInt(pieces[0]);
+        var minor:uint = parseInt(pieces[1]);
+        var update:uint = parseInt(pieces[2]);
+
+        _compatibilityVersion = (major << 24) + (minor << 16) + update;
+    }
+}
+
+}


Transferred from the Adobe Open Source Subversion Repository

Revision: 16545
Author:   chiedozi@adobe.com
Date:     2010-06-14T03:42:53.505665Z

Log Message:
-----------
Added MobileApplication, ViewNavigator, PersistenceManager and ViewTransition prototypes to mobile components swc.

mobilecomponents and mobiletheme eclipse projects now link to airglobal.swc instead of playerglobal.swc so that MobileApplication can respond to StageOrientation and NativeApplication events.

QE notes:
Doc notes:
Bugs:
Reviewer:
Tests run: checkintests

Modified Paths:
--------------
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobilecomponents/manifest.xml</path>
<path kind="file" action="A">/private/flex/sdk/branches/hero_private/frameworks/projects/mobilecomponents/src/spark/components/View.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobiletheme/.actionScriptProperties</path>
<path kind="file" action="A">/private/flex/sdk/branches/hero_private/frameworks/projects/mobiletheme/src/spark/skins/mobile/ActionBarSkin.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobiletheme/defaults.css</path>
<path kind="file" action="A">/private/flex/sdk/branches/hero_private/frameworks/projects/mobilecomponents/src/spark/core/managers/PersistenceManager.as</path>
<path kind="file" action="A">/private/flex/sdk/branches/hero_private/frameworks/projects/mobilecomponents/src/spark/effects/ViewTransition.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobiletheme/src/MobileThemeClasses.as</path>
<path kind="file" action="A">/private/flex/sdk/branches/hero_private/frameworks/projects/mobilecomponents/src/spark/components/ViewNavigator.as</path>
<path kind="file" action="A">/private/flex/sdk/branches/hero_private/frameworks/projects/mobilecomponents/src/spark/core/managers/IPersistenceManager.as</path>
<path kind="file" action="A">/private/flex/sdk/branches/hero_private/frameworks/projects/mobilecomponents/src/spark/effects/IViewTransition.as</path>
<path kind="file" action="A">/private/flex/sdk/branches/hero_private/frameworks/projects/mobilecomponents/src/spark/components/MobileApplication.as</path>
<path kind="file" action="A">/private/flex/sdk/branches/hero_private/frameworks/projects/mobilecomponents/src/spark/components/supportClasses/ViewData.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobilecomponents/.actionScriptProperties</path>
<path kind="file" action="A">/private/flex/sdk/branches/hero_private/frameworks/projects/mobiletheme/src/spark/skins/mobile/ViewNavigatorSkin.as</path>
<path kind="file" action="A">/private/flex/sdk/branches/hero_private/frameworks/projects/mobilecomponents/src/spark/effects/SlideViewTransition.as</path>
<path kind="file" action="A">/private/flex/sdk/branches/hero_private/frameworks/projects/mobilecomponents/src/spark/components/ActionBar.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/framework/src/mx/events/FlexEvent.as</path>
<path kind="file" action="A">/private/flex/sdk/branches/hero_private/frameworks/projects/mobilecomponents/src/spark/components/supportClasses/ViewNavigatorSection.as</path>
<path kind="file" action="A">/private/flex/sdk/branches/hero_private/frameworks/projects/mobilecomponents/src/spark/events/ViewNavigatorEvent.as</path>
<path kind="file" action="A">/private/flex/sdk/branches/hero_private/frameworks/projects/mobiletheme/src/spark/skins/mobile/MobileApplicationSkin.as</path>

git-svn-id: 7146a936b37d36e51ea0d66f8acbe0b8281bc7b7@1260617 13f79535-47bb-0310-9956-ffa450edef68

--- frameworks/projects/framework/src/mx/events/FlexEvent.as
+++ frameworks/projects/framework/src/mx/events/FlexEvent.as
@@ -34,6 +34,38 @@
     //--------------------------------------------------------------------------

     /**
+     *  The FlexEvent.ACTIVATE constant defines the value of the
+     *  type property of the event object for an activate
+     *  event.  This event is dispatched when a component is activated.
+     *
+     *
The properties of the event object have the following values:

+     *
+     *

+     *
Property	Value

+     *
bubbles	false

+     *
cancelable	false

+     *
returnValue	null

+     *
currentTarget	The Object that defines the
+     *       event listener that handles the event. For example, if you use
+     *       myButton.addEventListener() to register an event listener,
+     *       myButton is the value of the currentTarget.

+     *
target	The Object that dispatched the event;
+     *       it is not always the Object listening for the event.
+     *       Use the currentTarget property to always access the
+     *       Object listening for the event.

+     *
Type	FlexEvent.ACTIVATE

+     *

+     *
+     *  @eventType activate
+     *
+     *  @langversion 3.0
+     *  @playerversion Flash 9
+     *  @playerversion AIR 1.1
+     *  @productversion Flex 3
+     */
+    public static const ACTIVATE:String = "activate";
+
+    /**
      *  The FlexEvent.ADD constant defines the value of the
      *  type property of the event object for an add event.
      *
@@ -347,6 +379,38 @@
      */
     public static const DATA_CHANGE:String = "dataChange";

+    /**
+     *  The FlexEvent.DEACTIVATE constant defines the value of the
+     *  type property of the event object for an deactivate
+     *  event.  This event is dispatched when a component is deactivated.
+     *
+     *
The properties of the event object have the following values:

+     *
+     *

+     *
Property	Value

+     *
bubbles	false

+     *
cancelable	false

+     *
returnValue	null

+     *
currentTarget	The Object that defines the
+     *       event listener that handles the event. For example, if you use
+     *       myButton.addEventListener() to register an event listener,
+     *       myButton is the value of the currentTarget.

+     *
target	The Object that dispatched the event;
+     *       it is not always the Object listening for the event.
+     *       Use the currentTarget property to always access the
+     *       Object listening for the event.

+     *
Type	FlexEvent.DEACTIVATE

+     *

+     *
+     *  @eventType deactivate
+     *
+     *  @langversion 3.0
+     *  @playerversion Flash 9
+     *  @playerversion AIR 1.1
+     *  @productversion Flex 3
+     */
+    public static const DEACTIVATE:String = "deactivate";
+
     /**
      *  The FlexEvent.ENTER constant defines the value of the
      *  type property of the event object for a enter event.
@@ -819,6 +883,40 @@
     public static const PRELOADER_DOC_FRAME_READY:String = "preloaderDocFrameReady";

     /**
+     *  The FlexEvent.REMOVING constant defines the value of the
+     *  type property of the event object for an removing
+     *  event.  This event is dispatched when a screen is about to be replaced by
+     *  another screen through a navigator action.  If preventDefault()
+     *  is called on this event, the view removal will be canceled.
+     *
+     *
The properties of the event object have the following values:

+     *
+     *

+     *
Property	Value

+     *
bubbles	false

+     *
cancelable	true

+     *
returnValue	null

+     *
currentTarget	The Object that defines the
+     *       event listener that handles the event. For example, if you use
+     *       myButton.addEventListener() to register an event listener,
+     *       myButton is the value of the currentTarget.

+     *
target	The Object that dispatched the event;
+     *       it is not always the Object listening for the event.
+     *       Use the currentTarget property to always access the
+     *       Object listening for the event.

+     *
Type	FlexEvent.SCREEN_REMOVING

+     *

+     *
+     *  @eventType removing
+     *
+     *  @langversion 3.0
+     *  @playerversion Flash 9
+     *  @playerversion AIR 1.1
+     *  @productversion Flex 3
+     */
+    public static const REMOVING:String = "removing";
+
+    /**
      *  The FlexEvent.RENDER constant defines the value of the
      *  type property of the event object for an Event.RENDER event.
      *