Transferred from the Adobe Open Source Subversion Repository

Revision: 3509
Author:   jimurphy@adobe.com
Date:     2008-10-07T18:19:17.646255Z

Log Message:
-----------
Rename of flex -> mx.

For compatibility reasons it was decided that the new functionality remain integrated with the old framework, although we will continue to build two separate SWCs, one with primarily existing framework classes, and one with new Flex 4 classes. This change removes duplicate names from the Flex 4 framework to avoid class name overlapping with the old framework code.  The naming overlap consists of two major areas:  New Components, and New Effects

Modified Paths:
--------------
386 paths were modified

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

--- frameworks/projects/spark/src/spark/components/supportClasses/Range.as
+++ frameworks/projects/spark/src/spark/components/supportClasses/Range.as
@@ -9,12 +9,12 @@
 //
 ////////////////////////////////////////////////////////////////////////////////

-package flex.component
+package mx.components.baseClasses
 {

 import flash.events.Event;

-import flex.core.SkinnableComponent;
+import mx.components.baseClasses.FxComponent;

 import mx.events.FlexEvent;

@@ -35,12 +35,12 @@
  *
Range is a base class for various controls that require Range
  *  functionality, including TrackBase and Spinner.

  *
- *  @see flex.component.TrackBase
- *  @see flex.component.Spinner
+ *  @see mx.components.TrackBase
+ *  @see mx.components.Spinner
  */
-public class Range extends SkinnableComponent
+public class FxRange extends FxComponent
 {
-    include "../core/Version.as";
+    include "../../core/Version.as";

     //--------------------------------------------------------------------------
     //
@@ -51,7 +51,7 @@
     /**
      *  Constructor.
      */
-    public function Range():void
+    public function FxRange():void
     {
         super();
     }


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@1250496 13f79535-47bb-0310-9956-ffa450edef68

--- frameworks/projects/airspark/src/AIRSparkClasses.as
+++ frameworks/projects/airspark/src/AIRSparkClasses.as
@@ -1,13 +1,3 @@
-////////////////////////////////////////////////////////////////////////////////
-//
-//  ADOBE SYSTEMS INCORPORATED
-//  Copyright 2006-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
 {


Transferred from the Adobe Open Source Subversion Repository

Revision: 1098
Author:   jimurphy@adobe.com
Date:     2008-04-03T21:50:39.896200Z

Log Message:
-----------
Merge 3.0.x -- 362:394, 427:429, 603:608, 644:645, 651:663, 672:676, 755:756, 763:766, 785:790, 812:814, 854:861, 862:866, 866:933,971:1009, 1050:1056 --> trunk

Modified Paths:
--------------
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/listClasses/TileListItemRenderer.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/treeClasses/DefaultDataDescriptor.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/VRule.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/rpc/src/mx/rpc/AsyncRequest.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/collections/IList.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/managers/LayoutManager.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/rpc/src/mx/messaging/channels/StreamingConnectionHandler.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/core/IRepeaterClient.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/videoClasses/VideoError.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/utils/ObjectProxy.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/rpc/src/mx/messaging/messages/HTTPRequestMessage.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/resources/Locale.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/effects/effectClasses/ParallelInstance.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/rpc/src/mx/rpc/Responder.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/rpc/src/mx/messaging/errors/MessageSerializationError.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/rpc/src/mx/messaging/messages/SOAPMessage.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/managers/IBrowserManager.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/core/ComponentDescriptor.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/rpc/src/mx/rpc/events/FaultEvent.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/dataGridClasses/DataGridColumn.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/collections/IViewCursor.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/rpc/src/mx/rpc/soap/AbstractWebService.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/effects/Tween.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/containers/Panel.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/controls/TextInput.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/menuClasses/IMenuItemRenderer.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/rpc/src/mx/messaging/MessageResponder.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/dataGridClasses/DataGridBase.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/managers/SystemManager.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/preloaders/Preloader.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/managers/ILayoutManager.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/Spacer.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/Label.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/rpc/src/mx/rpc/Fault.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/collections/XMLListCollection.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/effects/EffectTargetFilter.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/events/SliderEvent.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/rpc/src/mx/rpc/AsyncToken.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/airframework/src/mx/core/Window.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/resources/ResourceManager.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/events/ScrollEvent.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/rpc/src/mx/rpc/http/mxml/HTTPService.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/videoClasses/CuePointManager.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/core/CrossDomainRSLItem.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/events/NumericStepperEvent.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/managers/BrowserManager.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/rpc/src/mx/messaging/events/ChannelFaultEvent.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/TextArea.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/collections/CursorBookmark.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/rpc/src/mx/rpc/xml/IXMLEncoder.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/rpc/src/mx/rpc/http/HTTPService.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/rpc/src/mx/rpc/events/WSDLLoadEvent.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/ComboBase.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/rpc/src/mx/rpc/soap/LoadEvent.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/collections/ListCollectionView.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/rpc/src/mx/messaging/FlexClient.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/rpc/src/mx/messaging/SubscriptionInfo.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/utils/DescribeTypeCache.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/logging/LogLogger.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/managers/FocusManager.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/rpc/src/mx/messaging/MessageAgent.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/build_framework.xml</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/airframework/src/mx/managers/WindowedSystemManager.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/rpc/src/mx/rpc/events/HeaderEvent.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/airframework/build.xml</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/listClasses/ListItemRenderer.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/dataGridClasses/DataGridDragProxy.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/preloaders/DownloadProgressBar.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/treeClasses/ITreeDataDescriptor.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/rpc/src/mx/rpc/remoting/RemoteObject.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/listClasses/ListItemDragProxy.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/rpc/src/mx/messaging/ChannelSet.as</path>

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

--- frameworks/projects/mx/src/mx/events/SliderEvent.as
+++ frameworks/projects/mx/src/mx/events/SliderEvent.as
@@ -187,6 +187,8 @@
      *  @param thumbIndex The zero-based index of the thumb
      *  whose position has changed.
      *
+     *  @param value The new value of the slider.
+     *
      *  @param triggerEvent The type of input action.
      *  The value is either InteractionInputType.MOUSE
      *  or InteractionInputType.KEYBOARD.


Transferred from the Adobe Open Source Subversion Repository

Revision: 5545
Author:   jimurphy@adobe.com
Date:     2009-03-25T19:00:52.330680Z

Log Message:
-----------
1st pass of rename according to the spec http://opensource.adobe.com/wiki/display/flexsdk/Dropping+the+Fx+Prefix

Flex now requires CSS Style declarations to declare @namespace rules and disambiguate between halo and spark components using CSS 3 namespace prefixes on type selectors. At compile time, this namespace information will be used to map type names to qualified ActionScript class names. At runtime, type selectors are matched on qualified ActionScript class name (for example mx.controls.Button rather than just Button). Flex 3 applications must be compiled with -compatibility-version=3.0.0 to get unqualified CSS type selector behavior.

QE: Yes, this build may help in updating test cases to use the new namespaces and class names.
Dev: Not yet
Doc: Not yet

Modified Paths:
--------------
748 paths were modified

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

--- frameworks/projects/spark/src/spark/effects/Wipe.as
+++ frameworks/projects/spark/src/spark/effects/Wipe.as
@@ -8,12 +8,12 @@
 //  in accordance with the terms of the license agreement accompanying it.
 //
 ////////////////////////////////////////////////////////////////////////////////
-package mx.effects
+package spark.effects
 {
 import flash.display.Shader;
 import flash.utils.ByteArray;
-
-import mx.effects.effectClasses.FxWipeInstance;
+import mx.effects.IEffectInstance;
+import spark.effects.supportClasses.WipeInstance;

 /**
  * This class performs a bitmap transition effect by running a
@@ -28,26 +28,26 @@
  * a different Wipe behavior is desired, a different shader may be
  * supplied, as long as it adheres to the following constraints:
  * obey the constraints specified for the shaderCode
- * property of FxAnimateShaderTransition, and supply three additional
- * parameters. The extra parameters required by the FxWipe shader
+ * property of AnimateShaderTransition, and supply three additional
+ * parameters. The extra parameters required by the Wipe shader
  * are an int direction parameter,
  * whose values mean the same as the related String properties
- * in the FxWipe class, and floating point parameters
+ * in the Wipe class, and floating point parameters
  * imageWidth and imageHeight. All of these
  * parameters will be set on the shader when the effect starts playing,
  * so the parameters need to exist and do something appropriate in
  * order for the effect to function correctly.

  *
- * @see mx.effects.FxAnimateShaderTransition#shaderCode
+ * @see mx.effects.AnimateShaderTransition#shaderCode
  *
  *  @langversion 3.0
  *  @playerversion Flash 10
  *  @playerversion AIR 1.5
  *  @productversion Flex 4
  */
-public class FxWipe extends FxAnimateShaderTransition
+public class Wipe extends AnimateShaderTransition
 {
-    [Embed(source="FxWipe.pbj", mimeType="application/octet-stream")]
+    [Embed(source="Wipe.pbj", mimeType="application/octet-stream")]
     private static var WipeShaderClass:Class;
     private static var wipeShaderCode:ByteArray = new WipeShaderClass();

@@ -70,10 +70,10 @@
      */
     public var direction:String = WipeDirection.RIGHT;

-    public function FxWipe(target:Object=null)
+    public function Wipe(target:Object=null)
     {
         super(target);
-        instanceClass = FxWipeInstance;
+        instanceClass = WipeInstance;
         shaderCode = wipeShaderCode;
     }

@@ -84,7 +84,7 @@
     {
         super.initInstance(instance);

-        var wipeInstance:FxWipeInstance = FxWipeInstance(instance);
+        var wipeInstance:WipeInstance = WipeInstance(instance);
         wipeInstance.direction = direction;
     }


update readme

update readme

--- src/com/kemsky/impl/Stream.as
+++ src/com/kemsky/impl/Stream.as
@@ -33,21 +33,38 @@
          * -------------------------------------------
          */

+        /**
+         * Returns true if Stream does not contain any elements,
+         * else returns false.
+         */
         public function get empty():Boolean
         {
             return length == 0;
         }

+        /**
+         * Creates new Stream that contains items starting from count index.
+         * @param count number of items to skip
+         * @return new Stream that contains items starting from count index.
+         */
         public function skip(count:int):Stream
         {
             return this.slice(count);
         }

+        /**
+         * Returns last item in Stream
+         * Equivalent to expression: stream[stream.length - 1]
+         */
         public function get last():*
         {
             return source.length > 0 ? source[source.length - 1] : null;
         }

+        /**
+         * Returns first item in Stream
+         * Equivalent to expression: stream[0]
+         */
         public function get first():*
         {
             return source.length > 0 ? source[0] : null;
@@ -99,9 +116,15 @@
             return context;
         }

-        public function take(count:int = -1, start:uint = 0):Stream
-        {
-            return slice(start, start + count);
+        /**
+         * Creates new Stream that contains count of items starting from offset.
+         * @param count maximum items to take
+         * @param offset index to start from
+         * @return new Stream that contains count of items starting from offset.
+         */
+        public function take(count:int = -1, offset:uint = 0):Stream
+        {
+            return slice(offset, offset + count);
         }

         public function flatMap(callback:Function = null):Stream
@@ -132,44 +155,68 @@
             return new Stream().concat(mapped);
         }

+        /**
+         * Returns new ArrayCollection created from items of current Stream
+         */
         public function get collection():ArrayCollection
         {
             return new ArrayCollection(source.concat());
         }

+        /**
+         * Returns new Array created from items of current Stream
+         */
         public function get array():Array
         {
             return source.concat();
         }

+        /**
+         * Returns new ArrayList created from items of current Stream
+         */
         public function get list():ArrayList
         {
             return new ArrayList(this.source.concat());
         }

-        public function dictionary(name:String, weak:Boolean = false):Dictionary
+        /**
+         * Creates new Dictionary from current Stream using specified property as keys
+         * @param property name of the property to be used as key
+         * @param weak create Dictionary with weak keys
+         * @return A new Dictionary from current Stream using specified property as keys
+         */
+        public function dictionary(property:String, weak:Boolean = false):Dictionary
         {
             var dict:Dictionary = new Dictionary(weak);
             for each (var item:* in source)
             {
-                var value:* = item[name];
+                var value:* = item[property];
                 dict[value] = item;
             }
             return dict;
         }

-
-        public function object(name:String):Object
+        /**
+         * Creates new Object from current Stream using specified property as keys
+         * @param property name of the property to be used as key
+         * @return A new Object from current Stream using specified property as keys
+         */
+        public function object(property:String):Object
         {
             var dict:Object = {};
             for each (var item:* in source)
             {
-                var value:* = item[name];
+                var value:* = item[property];
                 dict[value] = item;
             }
             return dict;
         }

+        /**
+         * Creates a copy of current Stream
+         * @param deep create deep copy using AMF serialization trick
+         * @return A copy of current Stream
+         */
         public function clone(deep:Boolean = false):Stream
         {
             if (deep)
@@ -190,7 +237,14 @@
          * -------------------------------------------
          */

-
+        /**
+         * Converts the elements in an array to strings,
+         * inserts the specified separator between the elements,
+         * concatenates them, and returns the resulting string.
+         * @param sep used as separator
+         * @return A string consisting of the elements of an array converted to strings
+         * and separated by the specified parameter.
+         */
         public function join(sep:* = null):String
         {
             return source.join(sep);


spawn_urbi_server.

spawn_urbi_server.

	* build-aux/urbi.as (spawn_urbi_server): New, extracted from
	uconsole.as, and adjust to be more generic.

--- build-aux/urbi.as
+++ build-aux/urbi.as
@@ -142,4 +142,33 @@
     fatal "cannot run $URBI_SERVER --version"
   fi
 }
+
+
+# spawn_urbi_server FLAGS
+# -----------------------
+# Spawn an $URBI_SERVER in back-ground, registering it as the child "server".
+# Wait until the server.port file is created.  Make it fatal if this does
+# not happen with 10s.
+spawn_urbi_server ()
+{
+  rm -f server.port
+  local flags="--port 0 --port-file server.port $*"
+  local cmd="$(instrument "server.val") $URBI_SERVER $flags"
+  echo "$cmd" >server.cmd
+  $cmd </dev/null >server.out 2>server.err &
+  children_register server
+
+  # Wait for the port file to be completed: it must have one full line
+  # (with \n to be sure it is complete).
+  local i=0
+  local imax=10
+  while test ! -f server.port || test $(wc -l <server.port) = 0;
+  do
+    if test $i = $imax; then
+      fatal "$URBI_SERVER did not issue port in server.port in $(my_sleep_duration $imax)s"
+    fi
+    sleep 1
+    i=$(($i + 1))
+  done
+}
 ])


Memory updates as time runs

Memory updates as time runs

--- src/Displays/DMemory.as
+++ src/Displays/DMemory.as
@@ -11,6 +11,7 @@
 	public class DMemory extends FlxGroup {

 		private var bg:FlxSprite;
+		private var moment:int;
 		public var memory:Vector.<Value>;
 		public function DMemory(Memory:Vector.<Value>) {
 			memory = Memory;
@@ -19,6 +20,7 @@
 		}

 		public function init():void {
+			moment = U.state.time.moment;
 			makeBG();
 			makePages();
 		}
@@ -75,9 +77,15 @@

 		override public function update():void {
 			super.update();
+			checkTime();
 			checkClick();
 			checkControls();
 			tick++;
+		}
+
+		protected function checkTime():void {
+			if (moment != U.state.time.moment)
+				init();
 		}

 		protected function checkClick():void {


ButtonHelper label positioning bug fix

ButtonHelper label positioning bug fix

--- vendor/ras3r/ras3r/reaction_view/helpers/ButtonHelper.as
+++ vendor/ras3r/ras3r/reaction_view/helpers/ButtonHelper.as
@@ -123,6 +123,6 @@
 		// 8 TEXT
 		if (icon) icon.x = 8;
 		textField.x = ((icon ? icon.x : 0) + 8);
-		textField.y = Math.max((height - textField.textHeight) / 2) + 1;
+		textField.y = Math.ceil((height - textField.textHeight) / 2) + 1;
 	}
 }


Улучшения

Улучшения

--- csi/flash/src/main/actionscript/org/shypl/biser/csi/client/ConnectionProcessorMessaging.as
+++ csi/flash/src/main/actionscript/org/shypl/biser/csi/client/ConnectionProcessorMessaging.as
@@ -1,45 +1,44 @@
 package org.shypl.biser.csi.client {
 	import flash.utils.ByteArray;
 	import flash.utils.IDataInput;
-
+
 	import org.shypl.biser.csi.Protocol;
 	import org.shypl.common.timeline.GlobalTimeline;
 	import org.shypl.common.util.Cancelable;
 	import org.shypl.common.util.TimeMeter;
-
+
 	internal class ConnectionProcessorMessaging extends ConnectionProcessor {
 		private var _activity:Boolean;
 		private var _activityTimer:TimeMeter = new TimeMeter();
 		private var _activityTimeout:int;
 		private var _activityChecker:Cancelable;
-
+
 		private var _messageEven:Boolean;
 		private var _messageSizeMode:Boolean;
-
+
 		public function ConnectionProcessorMessaging() {
 		}
-
-
+
 		override public function init(connection:Connection):void {
 			super.init(connection);
 			_activity = true;
 			_activityTimer.start();
-
+
 			_activityTimeout = connection.activityTimeout / 2;
-			_activityChecker = GlobalTimeline.scheduleRepeatable(_activityTimeout * 1000, checkActivity);
+			_activityChecker = GlobalTimeline.scheduleRepeatable(_activityTimeout * 1000 / 2, checkActivity);
 		}
-
+
 		override public function destroy():void {
 			super.destroy();
 			_activityChecker.cancel();
 			_activityChecker = null;
 		}
-
+
 		override public function processClose():void {
 			connection.logger.debug("Messaging: Interrupted, switch to Recovery");
 			connection.setProcessor(new ConnectionProcessorRecovery());
 		}
-
+
 		override public function processData(data:IDataInput):void {
 			_activity = true;
 			_activityTimer.restart();
@@ -48,33 +47,33 @@
 			}
 			while (isCanReadData(data));
 		}
-
+
 		override protected function processDataFlag(flag:uint):void {
 			switch (flag) {
 				case Protocol.PING:
 					break;
-
+
 				case Protocol.MESSAGE_ODD:
 					prepareMessage(false);
 					break;
 				case Protocol.MESSAGE_EVEN:
 					prepareMessage(true);
 					break;
-
+
 				case Protocol.MESSAGE_ODD_RECEIVED:
 					connection.processMessageReceived(false);
 					break;
 				case Protocol.MESSAGE_EVEN_RECEIVED:
 					connection.processMessageReceived(true);
 					break;
-
+
 				default:
 					super.processDataFlag(flag);
 					break;
 			}
-
+
 		}
-
+
 		override protected function processDataBody(buffer:ByteArray):void {
 			if (_messageSizeMode) {
 				_messageSizeMode = false;
@@ -86,13 +85,13 @@
 				connection.receiveMessage(_messageEven, message);
 			}
 		}
-
+
 		private function prepareMessage(even:Boolean):void {
 			_messageEven = even;
 			_messageSizeMode = true;
 			setDataExpectBody(4);
 		}
-
+
 		private function checkActivity():void {
 			if (_activity) {
 				if (_activityTimer.seconds >= _activityTimeout) {


Transferred from the Adobe Open Source Subversion Repository

Revision: 23247
Author:   cframpto@adobe.com
Date:     2011-12-20T19:21:13.134833Z

Log Message:
-----------
Remove ADOBE SYSTEMS license and replace with Apache license in headers - frameworks.  A 2nd pass will be needed to get the files not handled up by the scripts.

Modified Paths:
--------------
4959 paths were modified

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

--- frameworks/projects/spark/src/spark/components/mediaClasses/DynamicStreamingVideoSource.as
+++ frameworks/projects/spark/src/spark/components/mediaClasses/DynamicStreamingVideoSource.as
@@ -1,11 +1,19 @@
 ////////////////////////////////////////////////////////////////////////////////
 //
-//  ADOBE SYSTEMS INCORPORATED
-//  Copyright 2009 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.
+//  Licensed to the Apache Software Foundation (ASF) under one or more
+//  contributor license agreements.  See the NOTICE file distributed with
+//  this work for additional information regarding copyright ownership.
+//  The ASF licenses this file to You under the Apache License, Version 2.0
+//  (the "License"); you may not use this file except in compliance with
+//  the License.  You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+//  Unless required by applicable law or agreed to in writing, software
+//  distributed under the License is distributed on an "AS IS" BASIS,
+//  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//  See the License for the specific language governing permissions and
+//  limitations under the License.
 //
 ////////////////////////////////////////////////////////////////////////////////


RC5 exit fix

RC5 exit fix

--- src/com/asokorea/util/MultiSSH.as
+++ src/com/asokorea/util/MultiSSH.as
@@ -11,7 +11,11 @@
 	import flash.events.NativeProcessExitEvent;
 	import flash.events.ProgressEvent;
 	import flash.filesystem.File;
+	import flash.utils.Dictionary;
+	import flash.utils.clearInterval;
+	import flash.utils.setInterval;

+	import mx.collections.ArrayCollection;
 	import mx.utils.StringUtil;

 	[Event(name="connected", type="com.asokorea.event.MultiSSHEvent")]
@@ -36,6 +40,9 @@
 		private var _edt:Date;
 		private var _timeSpan:int = 0;
 		private var _taskVo:TaskVo;
+		private var _isExit:Boolean;
+
+		public var runningIPList:ArrayCollection = new ArrayCollection();

 		public function execute(taskVo:TaskVo):void
 		{
@@ -68,6 +75,27 @@

 			_edt = new Date();
 			_timeSpan = int(_edt.time - _sdt.time);
+
+			event.preventDefault();
+			event.stopPropagation();
+
+			var e:NativeProcessExitEvent = event.clone() as NativeProcessExitEvent;
+			var i:int = 0;
+			var id:uint = setInterval(function():void{
+
+				if(i < 3)
+				{
+					if(runningIPList is ArrayCollection && runningIPList.length > 0)
+					{
+						i++;
+						return;
+					}
+				}
+
+				clearInterval(id);
+				dispatchEvent(e);
+			}, 1000);
+
 		}

 		protected function onOutputData(event:ProgressEvent):void
@@ -106,6 +134,13 @@
 			trace(data);

 			var event:MultiSSHEvent = null;
+			var matchers:Array = null;
+			var json:Object = null;
+			var hostVo:HostVo = null;
+			var obj:Object = null;
+			var result:String = null;
+			var ip:String = null;
+			var hostName:String = null;

 			if(!data || !StringUtil.trim(data))
 			{
@@ -114,13 +149,7 @@

 			try
 			{
-				var matchers:Array = data.match(/(CONNECTED|COMPLETE|LOGIN_FAIL|TIMEOUT|SSH_ERROR)/);
-				var json:Object = null;
-				var hostVo:HostVo = null;
-				var obj:Object = null;
-				var result:String = null;
-				var ip:String = null;
-				var hostName:String = null;
+				matchers = data.match(/(CONNECTED|COMPLETE|LOGIN_FAIL|TIMEOUT|SSH_ERROR)/);

 				if(!matchers || matchers.length < 1)
 				{
@@ -147,6 +176,7 @@
 							hostVo.ip = ip;
 							hostVo.isConnected = true;
 							result = StringUtil.substitute("[CONNECTED] {0}", ip);
+							runningIPList.addItem(hostVo.ip);
 							event = new MultiSSHEvent(MultiSSHEvent.CONNECTED, result, hostVo);
 							break;
 						}
@@ -167,7 +197,7 @@
 								hostVo.logFile = logFile;
 								result = StringUtil.substitute("[COMPLETE] {0} {1} {2}", ip, hostName, logFile.name);
 							}
-
+							runningIPList.removeItemAt(runningIPList.getItemIndex(hostVo.ip));
 							event = new MultiSSHEvent(MultiSSHEvent.COMPELETE, result, hostVo);
 							break;
 						}
@@ -179,6 +209,7 @@
 							hostVo.ip = ip;
 							hostVo.isConnected = false;
 							result = StringUtil.substitute("[LOGINFAIL] {0} : {1}", ip, obj["message"]);
+							runningIPList.removeItemAt(runningIPList.getItemIndex(hostVo.ip));
 							event = new MultiSSHEvent(MultiSSHEvent.LOGIN_FAIL, result, hostVo);
 							break;
 						}
@@ -190,6 +221,7 @@
 							hostVo.ip = ip;
 							hostVo.isConnected = false;
 							result = StringUtil.substitute("[TIMEOUT] {0} : {1}", ip, obj["message"]);
+							runningIPList.removeItemAt(runningIPList.getItemIndex(hostVo.ip));
 							event = new MultiSSHEvent(MultiSSHEvent.TIMEOUT, result, hostVo);
 							break;
 						}
@@ -201,6 +233,7 @@
 							hostVo.ip = ip;
 							hostVo.isConnected = false;
 							result = StringUtil.substitute("[SSH_ERROR] {0} : {1}", ip, obj["message"]);
+							runningIPList.removeItemAt(runningIPList.getItemIndex(hostVo.ip));
 							event = new MultiSSHEvent(MultiSSHEvent.SSH_ERROR, result, hostVo);
 							break;
 						}
@@ -211,6 +244,17 @@
 			}
 			catch(error:Error)
 			{
+				if(hostVo && hostVo.ip)
+				{
+					ip = hostVo.ip;
+					var idx:int = runningIPList.getItemIndex(ip);
+
+					if(idx >= 0 && idx < runningIPList.length)
+					{
+						runningIPList.removeItemAt(runningIPList.getItemIndex(idx));
+					}
+				}
+
 				event = new MultiSSHEvent(MultiSSHEvent.EXCEPTION, error.name + " : " + error.message);
 			}
 		}


Turned off transparency on Screen BitmapData buffers to improve rendering performance on Linux systems (was redundant anyways).

--- net/flashpunk/Screen.as
+++ net/flashpunk/Screen.as
@@ -18,8 +18,8 @@
 		public function Screen()
 		{
 			// create screen buffers
-			_bitmap[0] = new Bitmap(new BitmapData(FP.width, FP.height, true, 0), PixelSnapping.NEVER);
-			_bitmap[1] = new Bitmap(new BitmapData(FP.width, FP.height, true, 0), PixelSnapping.NEVER);
+			_bitmap[0] = new Bitmap(new BitmapData(FP.width, FP.height, false, 0), PixelSnapping.NEVER);
+			_bitmap[1] = new Bitmap(new BitmapData(FP.width, FP.height, false, 0), PixelSnapping.NEVER);
 			FP.engine.addChild(_bitmap[0]).visible = true;
 			FP.engine.addChild(_bitmap[1]).visible = false;
 			FP.buffer = _bitmap[0].bitmapData;


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@1251451 13f79535-47bb-0310-9956-ffa450edef68

--- frameworks/projects/automation/src/mx/automation/delegates/controls/NavBarAutomationImpl.as
+++ frameworks/projects/automation/src/mx/automation/delegates/controls/NavBarAutomationImpl.as
@@ -1,13 +1,3 @@
-////////////////////////////////////////////////////////////////////////////////
-//
-//  ADOBE SYSTEMS INCORPORATED
-//  Copyright 2009 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.automation.delegates.controls
 {


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@1251353 13f79535-47bb-0310-9956-ffa450edef68

--- frameworks/projects/automation/src/mx/automation/delegates/containers/ViewStackAutomationImpl.as
+++ frameworks/projects/automation/src/mx/automation/delegates/containers/ViewStackAutomationImpl.as
@@ -1,13 +1,3 @@
-////////////////////////////////////////////////////////////////////////////////
-//
-//  ADOBE SYSTEMS INCORPORATED
-//  Copyright 2009 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.automation.delegates.containers
 {


fixed bug where asyncResultCallbacks were triggering regular callbacks

Change-Id: Ia24ec8a62be60a6289e8d7398e84a6c7ca84419e

--- WeaveData/src/weave/data/BinningDefinitions/DynamicBinningDefinition.as
+++ WeaveData/src/weave/data/BinningDefinitions/DynamicBinningDefinition.as
@@ -23,11 +23,12 @@
 	import weave.api.core.ICallbackCollection;
 	import weave.api.data.IAttributeColumn;
 	import weave.api.data.IBinningDefinition;
+	import weave.api.getCallbackCollection;
 	import weave.api.newDisposableChild;
 	import weave.api.newLinkableChild;
 	import weave.core.CallbackCollection;
+	import weave.core.LinkableDynamicObject;
 	import weave.core.LinkableWatcher;
-	import weave.core.LinkableDynamicObject;

 	/**
 	 * This provides a wrapper for a dynamically created IBinningDefinition.
@@ -47,9 +48,7 @@
 		}

 		private var _columnLocked:Boolean = false;
-		private const _asyncResultCallbacks:ICallbackCollection = newDisposableChild(this, CallbackCollection);
-
-		private const internalResultWatcher:LinkableWatcher = newLinkableChild(this, LinkableWatcher, asyncResultCallbacks.triggerCallbacks);
+		private const internalResultWatcher:LinkableWatcher = newDisposableChild(this, LinkableWatcher);
 		private const internalObjectWatcher:LinkableWatcher = newLinkableChild(this, LinkableWatcher, handleInternalObjectChange);
 		private const columnWatcher:LinkableWatcher = newLinkableChild(this, LinkableWatcher, generateBins);
 		private const statsWatcher:LinkableWatcher = newLinkableChild(this, LinkableWatcher, generateBins);
@@ -90,7 +89,7 @@
 		 */
 		public function get asyncResultCallbacks():ICallbackCollection
 		{
-			return _asyncResultCallbacks;
+			return getCallbackCollection(internalResultWatcher);
 		}

 		/**


Added offsetX, offsetY, and setOffset() to TiledImage to allow the user to offset the fill-texture.

--- net/flashpunk/graphics/TiledImage.as
+++ net/flashpunk/graphics/TiledImage.as
@@ -44,9 +44,51 @@
 			}
 			_buffer.fillRect(_bufferRect, 0);
 			_graphics.clear();
-			_graphics.beginBitmapFill(_texture);
+			if (_offsetX != 0 || _offsetY != 0)
+			{
+				FP.matrix.identity();
+				FP.matrix.tx = Math.round(_offsetX);
+				FP.matrix.ty = Math.round(_offsetY);
+				_graphics.beginBitmapFill(_texture, FP.matrix);
+			}
+			else _graphics.beginBitmapFill(_texture);
 			_graphics.drawRect(0, 0, _width, _height);
 			_buffer.draw(FP.sprite, null, _tint);
+		}
+
+		/**
+		 * The x-offset of the texture.
+		 */
+		public function get offsetX():Number { return _offsetX; }
+		public function set offsetX(value:Number):void
+		{
+			if (_offsetX == value) return;
+			_offsetX = value;
+			updateBuffer();
+		}
+
+		/**
+		 * The y-offset of the texture.
+		 */
+		public function get offsetY():Number { return _offsetY; }
+		public function set offsetY(value:Number):void
+		{
+			if (_offsetY == value) return;
+			_offsetY = value;
+			updateBuffer();
+		}
+
+		/**
+		 * Sets the texture offset.
+		 * @param	x		The x-offset.
+		 * @param	y		The y-offset.
+		 */
+		public function setOffset(x:Number, y:Number):void
+		{
+			if (_offsetX == x && _offsetY == y) return;
+			_offsetX = x;
+			_offsetY = y;
+			updateBuffer();
 		}

 		// Drawing information.
@@ -54,5 +96,7 @@
 		/** @private */ private var _texture:BitmapData;
 		/** @private */ private var _width:uint;
 		/** @private */ private var _height:uint;
+		/** @private */ private var _offsetX:Number = 0;
+		/** @private */ private var _offsetY:Number = 0;
 	}
 }


Code clean

Code clean

--- collect-flex/collect-flex-client/src/main/flex/org/openforis/collect/presenter/DetailPresenter.as
+++ collect-flex/collect-flex-client/src/main/flex/org/openforis/collect/presenter/DetailPresenter.as
@@ -1,292 +1,295 @@
-package org.openforis.collect.presenter {
-	/**
-	 *
-	 * @author S. Ricci
-	 * */
-	import flash.events.Event;
-	import flash.events.KeyboardEvent;
-	import flash.events.MouseEvent;
-	import flash.ui.Keyboard;
-
-	import mx.binding.utils.ChangeWatcher;
-	import mx.managers.PopUpManager;
-	import mx.rpc.AsyncResponder;
-	import mx.rpc.events.ResultEvent;
-
-	import org.openforis.collect.Application;
-	import org.openforis.collect.client.ClientFactory;
-	import org.openforis.collect.client.DataClient;
-	import org.openforis.collect.event.ApplicationEvent;
-	import org.openforis.collect.event.UIEvent;
-	import org.openforis.collect.i18n.Message;
-	import org.openforis.collect.metamodel.proxy.EntityDefinitionProxy;
-	import org.openforis.collect.metamodel.proxy.ModelVersionProxy;
-	import org.openforis.collect.model.CollectRecord$Step;
-	import org.openforis.collect.model.proxy.EntityProxy;
-	import org.openforis.collect.model.proxy.RecordProxy;
-	import org.openforis.collect.model.proxy.UserProxy;
-	import org.openforis.collect.ui.UIBuilder;
-	import org.openforis.collect.ui.component.ErrorListPopUp;
-	import org.openforis.collect.ui.component.detail.FormContainer;
-	import org.openforis.collect.ui.view.DetailView;
-	import org.openforis.collect.util.AlertUtil;
-	import org.openforis.collect.util.PopUpUtil;
-	import org.openforis.collect.util.StringUtil;
-
-	public class DetailPresenter extends AbstractPresenter {
-
-		private var _dataClient:DataClient;
-		private var _view:DetailView;
-		private var _errorsListPopUp:ErrorListPopUp;
-
-		public function DetailPresenter(view:DetailView) {
-			this._view = view;
-			this._dataClient = ClientFactory.dataClient;
-			super();
-		}
-
-		override internal function initEventListeners():void {
-			_view.backToListButton.addEventListener(MouseEvent.CLICK, backToListButtonClickHandler);
-			_view.saveButton.addEventListener(MouseEvent.CLICK, saveButtonClickHandler);
-			_view.submitButton.addEventListener(MouseEvent.CLICK, submitButtonClickHandler);
-			_view.rejectButton.addEventListener(MouseEvent.CLICK, rejectButtonClickHandler);
-			eventDispatcher.addEventListener(ApplicationEvent.UPDATE_RESPONSE_RECEIVED, updateResponseReceivedHandler);
-			eventDispatcher.addEventListener(ApplicationEvent.RECORD_SAVED, recordSavedHandler);
-			eventDispatcher.addEventListener(UIEvent.ACTIVE_RECORD_CHANGED, activeRecordChangedListener);
-
-			_view.stage.addEventListener(KeyboardEvent.KEY_DOWN, stageKeyDownHandler);
-		}
-
-		/**
-		 * Active record changed
-		 * */
-		internal function activeRecordChangedListener(event:UIEvent):void {
-			var activeRecord:RecordProxy = Application.activeRecord;
-			var step:CollectRecord$Step = activeRecord.step;
-			var version:ModelVersionProxy = activeRecord.version;
-			var rootEntityDefn:EntityDefinitionProxy = Application.activeRootEntity;
-			var rootEntity:EntityProxy = activeRecord.rootEntity;
-			rootEntity.definition = rootEntityDefn;
-			rootEntity.updateKeyText();
-			updateRecordKeyLabel();
-			ChangeWatcher.watch(rootEntity, "keyText", updateRecordKeyLabel);
-
-			_view.formVersionText.text = version.getLabelText();
-			_view.currentPhaseText.text = getStepLabel(step);
-
-			var user:UserProxy = Application.user;
-			var canSubmit:Boolean = user.canSubmit(activeRecord);
-			_view.submitButton.visible = _view.submitButton.includeInLayout = canSubmit;
-
-			var canReject:Boolean = user.canReject(activeRecord);
-			_view.rejectButton.visible = _view.rejectButton.includeInLayout = canReject;
-
-			_view.saveButton.visible = Application.activeRecordEditable;
-
-			var form:FormContainer = null;
-			if (_view.formsContainer.contatinsForm(version,rootEntityDefn)){
-				_view.currentState = DetailView.EDIT_STATE;
-				form = _view.formsContainer.getForm(version, rootEntityDefn);
-			} else {
-				//build form
-				_view.currentState = DetailView.LOADING_STATE;
-				form = UIBuilder.buildForm(rootEntityDefn, version);
-				_view.formsContainer.addForm(form, version, rootEntityDefn);
-				_view.currentState = DetailView.EDIT_STATE;
-			}
-
-			form = _view.formsContainer.setActiveForm(version, rootEntityDefn);
-			form.record = activeRecord;
-		}
-
-		protected function recordSavedHandler(event:ApplicationEvent):void {
-			var rootEntityLabel:String = Application.activeRootEntity.getLabelText()
-			_view.recordSavedMessage.text = Message.get("edit.recordSaved", [rootEntityLabel]);
-			_view.recordSavedMessage.show();
-		}
-
-		protected function updateRecordKeyLabel(event:Event = null):void {
-			var result:String;
-			var rootEntityLabel:String = Application.activeRootEntity.getLabelText();
-			var keyText:String = Application.activeRecord.rootEntity.keyText;
-			if(StringUtil.isBlank(keyText) && isNaN(Application.activeRecord.id)) {
-				result = Message.get('edit.newRecordKeyLabel', [rootEntityLabel]);
-			} else {
-				result = StringUtil.concat("  ", rootEntityLabel, keyText);
-			}
-			_view.recordKeyLabel.text = result;
-		}
-
-		/**
-		 * Back to list
-		 * */
-		protected function backToListButtonClickHandler(event:Event):void {
-			if(Application.activeRecord.updated) {
-				AlertUtil.showConfirm("edit.confirmBackToList", null, null, performClearActiveRecord);
-			} else {
-				performClearActiveRecord();
-			}
-		}
-
-		protected function performClearActiveRecord():void {
-			//reset immediately activeRecord to avoid concurrency problems
-			//when keepAlive message is sent and record is being unlocked
-			ClientFactory.sessionClient.cancelLastKeepAliveOperation();
-			Application.activeRecord = null;
-			_dataClient.clearActiveRecord(new AsyncResponder(clearActiveRecordHandler, faultHandler));
-		}
-
-		protected function saveButtonClickHandler(event:MouseEvent):void {
-			performSaveActiveRecord();
-		}
-
-		protected function performSaveActiveRecord():void {
-			_dataClient.saveActiveRecord(saveActiveRecordResultHandler, faultHandler);
-		}
-
-		protected function submitButtonClickHandler(event:MouseEvent):void {
-			var r:RecordProxy = Application.activeRecord;
-			r.showErrors();
-			var applicationEvent:ApplicationEvent = new ApplicationEvent(ApplicationEvent.ASK_FOR_SUBMIT);
-			eventDispatcher.dispatchEvent(applicationEvent);
-			var totalErrors:int = r.errors + r.missingErrors + r.skipped;
-			if ( totalErrors > 0 ) {
-				openErrorsListPopUp();
-			} else {
-				var messageResource:String;
-				if(r.step == CollectRecord$Step.ENTRY) {
-					messageResource = "edit.confirmSubmitDataCleansing";
-					AlertUtil.showConfirm(messageResource, null, null, performSubmitToClenasing);
-				} else if(r.step == CollectRecord$Step.CLEANSING) {
-					messageResource = "edit.confirmSubmitDataAnalysis";
-					AlertUtil.showConfirm(messageResource, null, null, performSubmitToAnalysis);
-				}
-			}
-		}
-
-		protected function openErrorsListPopUp():void {
-			if ( _errorsListPopUp != null ) {
-				PopUpManager.removePopUp(_errorsListPopUp);
-				_errorsListPopUp = null;
-			}
-			_errorsListPopUp = ErrorListPopUp(PopUpUtil.createPopUp(ErrorListPopUp, false));
-		}
-
-		protected function rejectButtonClickHandler(event:MouseEvent):void {
-			var messageResource:String;
-			var r:RecordProxy = Application.activeRecord;
-			if(r.step == CollectRecord$Step.CLEANSING) {
-				messageResource = "edit.confirmRejectDataCleansing";
-				AlertUtil.showConfirm(messageResource, null, null, performRejectToEntry);
-			} else if(r.step == CollectRecord$Step.ANALYSIS) {
-				messageResource = "edit.confirmRejectDataAnalysis";
-				AlertUtil.showConfirm(messageResource, null, null, performRejectToCleansing);
-			}
-		}
-
-		protected function performSubmitToClenasing():void {
-			var responder:AsyncResponder = new AsyncResponder(promoteRecordResultHandler, faultHandler);
-			_dataClient.promoteToCleansing(responder);
-		}
-
-		protected function performSubmitToAnalysis():void {
-			var responder:AsyncResponder = new AsyncResponder(promoteRecordResultHandler, faultHandler);
-			_dataClient.promoteToAnalysis(responder);
-		}
-
-		protected function performRejectToCleansing():void {
-			var responder:AsyncResponder = new AsyncResponder(rejectRecordResultHandler, faultHandler);
-			_dataClient.demoteToCleansing(responder);
-		}
-
-		protected function performRejectToEntry():void {
-			var responder:AsyncResponder = new AsyncResponder(rejectRecordResultHandler, faultHandler);
-			_dataClient.demoteToEntry(responder);
-		}
-
-		internal function clearActiveRecordHandler(event:ResultEvent, token:Object = null):void {
-			var uiEvent:UIEvent = new UIEvent(UIEvent.BACK_TO_LIST);
-			eventDispatcher.dispatchEvent(uiEvent);
-		}
-
-		internal function saveActiveRecordResultHandler(event:ResultEvent, token:Object = null):void {
-			Application.activeRecord.showErrors();
-			Application.activeRecord.updated = false;
-			var applicationEvent:ApplicationEvent = new ApplicationEvent(ApplicationEvent.RECORD_SAVED);
-			eventDispatcher.dispatchEvent(applicationEvent);
-		}
-
-		internal function promoteRecordResultHandler(event:ResultEvent, token:Object = null):void {
-			var rootEntity:EntityDefinitionProxy = Application.activeRootEntity;
-			var rootEntityLabel:String = rootEntity.getLabelText();
-			var r:RecordProxy = Application.activeRecord;
-			var keyLabel:String = r.rootEntity.keyText;
-			var actualStep:CollectRecord$Step = getNextStep(r.step);
-			var stepLabel:String = getStepLabel(actualStep).toLowerCase();
-			AlertUtil.showMessage("edit.recordSubmitted", [rootEntityLabel, keyLabel, stepLabel], "edit.recordSubmittedTitle", [rootEntityLabel]);
-			Application.activeRecord = null;
-			var uiEvent:UIEvent = new UIEvent(UIEvent.BACK_TO_LIST);
-			eventDispatcher.dispatchEvent(uiEvent);
-		}
-
-		internal function rejectRecordResultHandler(event:ResultEvent, token:Object = null):void {
-			var rootEntity:EntityDefinitionProxy = Application.activeRootEntity;
-			var rootEntityLabel:String = rootEntity.getLabelText();
-			var r:RecordProxy = Application.activeRecord;
-			var keyLabel:String = r.rootEntity.keyText;
-			var actualStep:CollectRecord$Step = getPreviousStep(r.step);
-			var stepLabel:String = getStepLabel(actualStep).toLowerCase();
-			AlertUtil.showMessage("edit.recordRejected", [rootEntityLabel, keyLabel, stepLabel], "edit.recordRejectedTitle", [rootEntityLabel]);
-			Application.activeRecord = null;
-			var uiEvent:UIEvent = new UIEvent(UIEvent.BACK_TO_LIST);
-			eventDispatcher.dispatchEvent(uiEvent);
-		}
-
-		protected function updateResponseReceivedHandler(event:ApplicationEvent):void {
-			//update
-		}
-
-		protected function stageKeyDownHandler(event:KeyboardEvent):void {
-			if ( Application.activeRecordEditable && event.ctrlKey && event.keyCode == Keyboard.S ) {
-				performSaveActiveRecord();
-			}
-		}
-
-		public static function getNextStep(step:CollectRecord$Step):CollectRecord$Step {
-			switch ( step ) {
-				case CollectRecord$Step.ENTRY:
-					return CollectRecord$Step.CLEANSING;
-				case CollectRecord$Step.CLEANSING:
-					return CollectRecord$Step.ANALYSIS;
-				default:
-					return null;
-
-			}
-		}
-
-		public static function getPreviousStep(step:CollectRecord$Step):CollectRecord$Step {
-			switch ( step ) {
-				case CollectRecord$Step.CLEANSING:
-					return CollectRecord$Step.ENTRY;
-				case CollectRecord$Step.ANALYSIS:
-					return CollectRecord$Step.CLEANSING;
-				default:
-					return null;
-
-			}
-		}
-
-		public static function getStepLabel(step:CollectRecord$Step):String {
-			switch ( step ) {
-				case CollectRecord$Step.ENTRY:
-					return Message.get("edit.dataEntry");
-				case CollectRecord$Step.CLEANSING:
-					return Message.get("edit.dataCleansing");
-				case CollectRecord$Step.ANALYSIS:
-					return Message.get("edit.dataAnalysis");
-				default:
-					return null;
-			}
-		}
-	}
+package org.openforis.collect.presenter {
+	/**
+	 *
+	 * @author S. Ricci
+	 * */
+	import flash.events.Event;
+	import flash.events.KeyboardEvent;
+	import flash.events.MouseEvent;
+	import flash.ui.Keyboard;
+
+	import mx.binding.utils.ChangeWatcher;
+	import mx.managers.PopUpManager;
+	import mx.rpc.AsyncResponder;
+	import mx.rpc.events.ResultEvent;
+
+	import org.openforis.collect.Application;
+	import org.openforis.collect.client.ClientFactory;
+	import org.openforis.collect.client.DataClient;
+	import org.openforis.collect.event.ApplicationEvent;
+	import org.openforis.collect.event.UIEvent;
+	import org.openforis.collect.i18n.Message;
+	import org.openforis.collect.metamodel.proxy.EntityDefinitionProxy;
+	import org.openforis.collect.metamodel.proxy.ModelVersionProxy;
+	import org.openforis.collect.model.CollectRecord$Step;
+	import org.openforis.collect.model.proxy.EntityProxy;
+	import org.openforis.collect.model.proxy.RecordProxy;
+	import org.openforis.collect.model.proxy.UserProxy;
+	import org.openforis.collect.ui.UIBuilder;
+	import org.openforis.collect.ui.component.ErrorListPopUp;
+	import org.openforis.collect.ui.component.detail.FormContainer;
+	import org.openforis.collect.ui.view.DetailView;
+	import org.openforis.collect.util.AlertUtil;
+	import org.openforis.collect.util.PopUpUtil;
+	import org.openforis.collect.util.StringUtil;
+
+	public class DetailPresenter extends AbstractPresenter {
+
+		private var _dataClient:DataClient;
+		private var _view:DetailView;
+		private var _errorsListPopUp:ErrorListPopUp;
+		private var _rootEntityKeyTextChangeWatcher:ChangeWatcher;
+
+		public function DetailPresenter(view:DetailView) {
+			this._view = view;
+			this._dataClient = ClientFactory.dataClient;
+			super();
+		}
+
+		override internal function initEventListeners():void {
+			_view.backToListButton.addEventListener(MouseEvent.CLICK, backToListButtonClickHandler);
+			_view.saveButton.addEventListener(MouseEvent.CLICK, saveButtonClickHandler);
+			_view.submitButton.addEventListener(MouseEvent.CLICK, submitButtonClickHandler);
+			_view.rejectButton.addEventListener(MouseEvent.CLICK, rejectButtonClickHandler);
+			eventDispatcher.addEventListener(ApplicationEvent.UPDATE_RESPONSE_RECEIVED, updateResponseReceivedHandler);
+			eventDispatcher.addEventListener(ApplicationEvent.RECORD_SAVED, recordSavedHandler);
+			eventDispatcher.addEventListener(UIEvent.ACTIVE_RECORD_CHANGED, activeRecordChangedListener);
+
+			_view.stage.addEventListener(KeyboardEvent.KEY_DOWN, stageKeyDownHandler);
+		}
+
+		/**
+		 * Active record changed
+		 * */
+		internal function activeRecordChangedListener(event:UIEvent):void {
+			var activeRecord:RecordProxy = Application.activeRecord;
+			var step:CollectRecord$Step = activeRecord.step;
+			var version:ModelVersionProxy = activeRecord.version;
+			var rootEntityDefn:EntityDefinitionProxy = Application.activeRootEntity;
+			var rootEntity:EntityProxy = activeRecord.rootEntity;
+			rootEntity.updateKeyText();
+			updateRecordKeyLabel();
+			if ( _rootEntityKeyTextChangeWatcher == null ) {
+				_rootEntityKeyTextChangeWatcher = ChangeWatcher.watch(rootEntity, "keyText", updateRecordKeyLabel);
+			} else {
+				_rootEntityKeyTextChangeWatcher.reset(rootEntity);
+			}
+			_view.formVersionText.text = version.getLabelText();
+			_view.currentPhaseText.text = getStepLabel(step);
+
+			var user:UserProxy = Application.user;
+			var canSubmit:Boolean = user.canSubmit(activeRecord);
+			_view.submitButton.visible = _view.submitButton.includeInLayout = canSubmit;
+
+			var canReject:Boolean = user.canReject(activeRecord);
+			_view.rejectButton.visible = _view.rejectButton.includeInLayout = canReject;
+
+			_view.saveButton.visible = Application.activeRecordEditable;
+
+			var form:FormContainer = null;
+			if (_view.formsContainer.contatinsForm(version,rootEntityDefn)){
+				_view.currentState = DetailView.EDIT_STATE;
+				form = _view.formsContainer.getForm(version, rootEntityDefn);
+			} else {
+				//build form
+				_view.currentState = DetailView.LOADING_STATE;
+				form = UIBuilder.buildForm(rootEntityDefn, version);
+				_view.formsContainer.addForm(form, version, rootEntityDefn);
+				_view.currentState = DetailView.EDIT_STATE;
+			}
+
+			form = _view.formsContainer.setActiveForm(version, rootEntityDefn);
+			form.record = activeRecord;
+		}
+
+		protected function recordSavedHandler(event:ApplicationEvent):void {
+			var rootEntityLabel:String = Application.activeRootEntity.getLabelText()
+			_view.recordSavedMessage.text = Message.get("edit.recordSaved", [rootEntityLabel]);
+			_view.recordSavedMessage.show();
+		}
+
+		protected function updateRecordKeyLabel(event:Event = null):void {
+			var result:String;
+			var rootEntityLabel:String = Application.activeRootEntity.getLabelText();
+			var keyText:String = Application.activeRecord.rootEntity.keyText;
+			if(StringUtil.isBlank(keyText) && isNaN(Application.activeRecord.id)) {
+				result = Message.get('edit.newRecordKeyLabel', [rootEntityLabel]);
+			} else {
+				result = StringUtil.concat("  ", rootEntityLabel, keyText);
+			}
+			_view.recordKeyLabel.text = result;
+		}
+
+		/**
+		 * Back to list
+		 * */
+		protected function backToListButtonClickHandler(event:Event):void {
+			if(Application.activeRecord.updated) {
+				AlertUtil.showConfirm("edit.confirmBackToList", null, null, performClearActiveRecord);
+			} else {
+				performClearActiveRecord();
+			}
+		}
+
+		protected function performClearActiveRecord():void {
+			//reset immediately activeRecord to avoid concurrency problems
+			//when keepAlive message is sent and record is being unlocked
+			ClientFactory.sessionClient.cancelLastKeepAliveOperation();
+			Application.activeRecord = null;
+			_dataClient.clearActiveRecord(new AsyncResponder(clearActiveRecordHandler, faultHandler));
+		}
+
+		protected function saveButtonClickHandler(event:MouseEvent):void {
+			performSaveActiveRecord();
+		}
+
+		protected function performSaveActiveRecord():void {
+			_dataClient.saveActiveRecord(saveActiveRecordResultHandler, faultHandler);
+		}
+
+		protected function submitButtonClickHandler(event:MouseEvent):void {
+			var r:RecordProxy = Application.activeRecord;
+			r.showErrors();
+			var applicationEvent:ApplicationEvent = new ApplicationEvent(ApplicationEvent.ASK_FOR_SUBMIT);
+			eventDispatcher.dispatchEvent(applicationEvent);
+			var totalErrors:int = r.errors + r.missingErrors + r.skipped;
+			if ( totalErrors > 0 ) {
+				openErrorsListPopUp();
+			} else {
+				var messageResource:String;
+				if(r.step == CollectRecord$Step.ENTRY) {
+					messageResource = "edit.confirmSubmitDataCleansing";
+					AlertUtil.showConfirm(messageResource, null, null, performSubmitToClenasing);
+				} else if(r.step == CollectRecord$Step.CLEANSING) {
+					messageResource = "edit.confirmSubmitDataAnalysis";
+					AlertUtil.showConfirm(messageResource, null, null, performSubmitToAnalysis);
+				}
+			}
+		}
+
+		protected function openErrorsListPopUp():void {
+			if ( _errorsListPopUp != null ) {
+				PopUpManager.removePopUp(_errorsListPopUp);
+				_errorsListPopUp = null;
+			}
+			_errorsListPopUp = ErrorListPopUp(PopUpUtil.createPopUp(ErrorListPopUp, false));
+		}
+
+		protected function rejectButtonClickHandler(event:MouseEvent):void {
+			var messageResource:String;
+			var r:RecordProxy = Application.activeRecord;
+			if(r.step == CollectRecord$Step.CLEANSING) {
+				messageResource = "edit.confirmRejectDataCleansing";
+				AlertUtil.showConfirm(messageResource, null, null, performRejectToEntry);
+			} else if(r.step == CollectRecord$Step.ANALYSIS) {
+				messageResource = "edit.confirmRejectDataAnalysis";
+				AlertUtil.showConfirm(messageResource, null, null, performRejectToCleansing);
+			}
+		}
+
+		protected function performSubmitToClenasing():void {
+			var responder:AsyncResponder = new AsyncResponder(promoteRecordResultHandler, faultHandler);
+			_dataClient.promoteToCleansing(responder);
+		}
+
+		protected function performSubmitToAnalysis():void {
+			var responder:AsyncResponder = new AsyncResponder(promoteRecordResultHandler, faultHandler);
+			_dataClient.promoteToAnalysis(responder);
+		}
+
+		protected function performRejectToCleansing():void {
+			var responder:AsyncResponder = new AsyncResponder(rejectRecordResultHandler, faultHandler);
+			_dataClient.demoteToCleansing(responder);
+		}
+
+		protected function performRejectToEntry():void {
+			var responder:AsyncResponder = new AsyncResponder(rejectRecordResultHandler, faultHandler);
+			_dataClient.demoteToEntry(responder);
+		}
+
+		internal function clearActiveRecordHandler(event:ResultEvent, token:Object = null):void {
+			var uiEvent:UIEvent = new UIEvent(UIEvent.BACK_TO_LIST);
+			eventDispatcher.dispatchEvent(uiEvent);
+		}
+
+		internal function saveActiveRecordResultHandler(event:ResultEvent, token:Object = null):void {
+			Application.activeRecord.showErrors();
+			Application.activeRecord.updated = false;
+			var applicationEvent:ApplicationEvent = new ApplicationEvent(ApplicationEvent.RECORD_SAVED);
+			eventDispatcher.dispatchEvent(applicationEvent);
+		}
+
+		internal function promoteRecordResultHandler(event:ResultEvent, token:Object = null):void {
+			var rootEntity:EntityDefinitionProxy = Application.activeRootEntity;
+			var rootEntityLabel:String = rootEntity.getLabelText();
+			var r:RecordProxy = Application.activeRecord;
+			var keyLabel:String = r.rootEntity.keyText;
+			var actualStep:CollectRecord$Step = getNextStep(r.step);
+			var stepLabel:String = getStepLabel(actualStep).toLowerCase();
+			AlertUtil.showMessage("edit.recordSubmitted", [rootEntityLabel, keyLabel, stepLabel], "edit.recordSubmittedTitle", [rootEntityLabel]);
+			Application.activeRecord = null;
+			var uiEvent:UIEvent = new UIEvent(UIEvent.BACK_TO_LIST);
+			eventDispatcher.dispatchEvent(uiEvent);
+		}
+
+		internal function rejectRecordResultHandler(event:ResultEvent, token:Object = null):void {
+			var rootEntity:EntityDefinitionProxy = Application.activeRootEntity;
+			var rootEntityLabel:String = rootEntity.getLabelText();
+			var r:RecordProxy = Application.activeRecord;
+			var keyLabel:String = r.rootEntity.keyText;
+			var actualStep:CollectRecord$Step = getPreviousStep(r.step);
+			var stepLabel:String = getStepLabel(actualStep).toLowerCase();
+			AlertUtil.showMessage("edit.recordRejected", [rootEntityLabel, keyLabel, stepLabel], "edit.recordRejectedTitle", [rootEntityLabel]);
+			Application.activeRecord = null;
+			var uiEvent:UIEvent = new UIEvent(UIEvent.BACK_TO_LIST);
+			eventDispatcher.dispatchEvent(uiEvent);
+		}
+
+		protected function updateResponseReceivedHandler(event:ApplicationEvent):void {
+			//update
+		}
+
+		protected function stageKeyDownHandler(event:KeyboardEvent):void {
+			if ( Application.activeRecordEditable && event.ctrlKey && event.keyCode == Keyboard.S ) {
+				performSaveActiveRecord();
+			}
+		}
+
+		public static function getNextStep(step:CollectRecord$Step):CollectRecord$Step {
+			switch ( step ) {
+				case CollectRecord$Step.ENTRY:
+					return CollectRecord$Step.CLEANSING;
+				case CollectRecord$Step.CLEANSING:
+					return CollectRecord$Step.ANALYSIS;
+				default:
+					return null;
+
+			}
+		}
+
+		public static function getPreviousStep(step:CollectRecord$Step):CollectRecord$Step {
+			switch ( step ) {
+				case CollectRecord$Step.CLEANSING:
+					return CollectRecord$Step.ENTRY;
+				case CollectRecord$Step.ANALYSIS:
+					return CollectRecord$Step.CLEANSING;
+				default:
+					return null;
+
+			}
+		}
+
+		public static function getStepLabel(step:CollectRecord$Step):String {
+			switch ( step ) {
+				case CollectRecord$Step.ENTRY:
+					return Message.get("edit.dataEntry");
+				case CollectRecord$Step.CLEANSING:
+					return Message.get("edit.dataCleansing");
+				case CollectRecord$Step.ANALYSIS:
+					return Message.get("edit.dataAnalysis");
+				default:
+					return null;
+			}
+		}
+	}
 }


FLEX-33990 fix for RTE

FLEX-33990 fix for RTE

--- frameworks/projects/advancedgrids/src/mx/controls/advancedDataGridClasses/AdvancedDataGridBase.as
+++ frameworks/projects/advancedgrids/src/mx/controls/advancedDataGridClasses/AdvancedDataGridBase.as
@@ -913,8 +913,10 @@
         for (var i:int = 0; i < n; i++)
         {
             var r:IListItemRenderer = listItems[rowIndex][i];
-			r.validateDisplayList();
-            updateDisplayOfItemRenderer(r);
+			if (r) {
+				r.validateDisplayList();
+            	updateDisplayOfItemRenderer(r);
+			}
         }
     }


Add test for deletePublishedFile

Add test for deletePublishedFile

--- test/src/FRESteamWorksTest.as
+++ test/src/FRESteamWorksTest.as
@@ -30,7 +30,7 @@
 		public var Steamworks:FRESteamWorks = new FRESteamWorks();
 		public var tf:TextField;

-		private var _buttonPos:int = 5;
+		private var _buttonPos:int = 0;
 		private var _appId:uint;

 		public function FRESteamWorksTest()
@@ -46,6 +46,7 @@
 			addButton("Toggle cloud enabled", toggleCloudEnabled);
 			addButton("Toggle file", toggleFile);
 			addButton("Publish file", publishFile);
+			addButton("Delete published file", deletePublishedFile);
 			addButton("Toggle fullscreen", toggleFullscreen);
 			addButton("Show Friends overlay", activateOverlay);
 			addButton("List subscribed files", enumerateSubscribedFiles);
@@ -167,6 +168,20 @@
 			log("fileShare('test.txt') == " + Steamworks.fileShare("test.txt"));
 		}

+		private function deletePublishedFile(e:Event = null):void {
+			if(!Steamworks.isReady) return;
+
+			if(!publishedFile) {
+				log("No file handle set, publish or enumerate first");
+				return;
+			}
+
+			var res:Boolean = Steamworks.unsubscribePublishedFile(publishedFile);
+			log("unsubscribePublishedFile(" + publishedFile + ") == " + res);
+			res = Steamworks.deletePublishedFile(publishedFile);
+			log("deletePublishedFile(" + publishedFile + ") == " + res);
+		}
+
 		private function toggleFullscreen(e:Event = null):void {
 			if(stage.displayState == StageDisplayState.NORMAL)
 				stage.displayState = StageDisplayState.FULL_SCREEN_INTERACTIVE;
@@ -211,12 +226,12 @@
 		}

 		private function updateFile(e:Event = null):void {
-			if(!file) {
+			if(!publishedFile) {
 				log("No file handle set, publish or enumerate first");
 				return;
 			}

-			var handle:String = Steamworks.createPublishedFileUpdateRequest(file);
+			var handle:String = Steamworks.createPublishedFileUpdateRequest(publishedFile);
 			log("createPublishedFileUpdateRequest() == " + handle);
 			if(handle == WorkshopConstants.FILEUPDATEHANDLE_Invalid) return;

@@ -253,7 +268,7 @@

 		private var id:String;
 		private var ugcHandle:String;
-		private var file:String;
+		private var publishedFile:String;
 		private function onSteamResponse(e:SteamEvent):void{
 			var apiCall:Boolean;
 			var i:int;
@@ -279,9 +294,9 @@
 				case SteamConstants.RESPONSE_OnPublishWorkshopFile:
 					log("RESPONSE_OnPublishWorkshopFile: " + e.response);
 					if(e.response != SteamResults.OK) return;
-					file = Steamworks.publishWorkshopFileResult();
-					log("File published as " + file);
-					log("subscribePublishedFile(...) == " + Steamworks.subscribePublishedFile(file));
+					publishedFile = Steamworks.publishWorkshopFileResult();
+					log("File published as " + publishedFile);
+					log("subscribePublishedFile(...) == " + Steamworks.subscribePublishedFile(publishedFile));
 					break;
 				case SteamConstants.RESPONSE_OnEnumerateUserSubscribedFiles:
 					log("RESPONSE_OnEnumerateUserSubscribedFiles: " + e.response);
@@ -320,11 +335,9 @@
 						log(i + ": " + userRes.publishedFileId[i]);
 					}

-					if(userRes.resultsReturned > 0) {
-						file = userRes.publishedFileId[0];
-						apiCall = Steamworks.getPublishedItemVoteDetails(file);
-						log("getPublishedItemVoteDetails(" + file + ") == " + apiCall);
-					}
+					if(userRes.resultsReturned > 0)
+						publishedFile = userRes.publishedFileId[0];
+
 					break;
 				case SteamConstants.RESPONSE_OnEnumeratePublishedWorkshopFiles:
 					log("RESPONSE_OnEnumeratePublishedWorkshopFiles: " + e.response);
@@ -339,6 +352,8 @@
 						log("updateUserPublishedItemVote(" + f + ", true)");
 						apiCall = Steamworks.updateUserPublishedItemVote(f, true);
 						log("updateUserPublishedItemVote(" + f + ", true) == " + apiCall);
+						apiCall = Steamworks.getPublishedItemVoteDetails(f);
+						log("getPublishedItemVoteDetails(" + f + ") == " + apiCall);
 					}
 					break;
 				case SteamConstants.RESPONSE_OnGetPublishedFileDetails:


ParserOptions.clone() method

ParserOptions.clone() method

--- src/aerys/minko/type/loader/parser/ParserOptions.as
+++ src/aerys/minko/type/loader/parser/ParserOptions.as
@@ -95,6 +95,18 @@
 			_loadDependencies = value;
 		}

+		public function clone(): ParserOptions
+		{
+			return new ParserOptions(
+				_loadDependencies,
+				_dependencyLoaderClosure,
+				_mipmapTextures,
+				_meshEffect,
+				_vertexStreamUsage,
+				_indexStreamUsage,
+				_parser
+			);
+		}

 		public function ParserOptions(loadDependencies			: Boolean = false,
 									  dependencyLoaderClosure	: Function = null,


Remove trace

Remove trace

--- src/com/benoitfreslon/layoutmanager/LayoutLoader.as
+++ src/com/benoitfreslon/layoutmanager/LayoutLoader.as
@@ -148,9 +148,7 @@
 			//bt.pivotX 		= bt.width / 2;
 			if ( child.downState )
 				bt.downState = _assetManager.getTexture( child.downState );
-			trace(child.onTouch, bt.hasOwnProperty( "onTouch" ), _displayObject.hasOwnProperty( child.onTouch ));
 			if ( bt.hasOwnProperty( "onTouch" ) && _displayObject.hasOwnProperty( child.onTouch ) ) {
-				trace(bt[ "onTouch" ], child.onTouch)
 				bt[ "onTouch" ] = _displayObject[ child.onTouch ];
 			} else if (bt.hasOwnProperty( "onTouch" )) {
 				trace( new Error("The public method " + child.onTouch + " is not defined in " + _displayObject));


MF-50 Refactor scene

MF-50 Refactor scene

--- src/com/merlinds/miracle_tool/viewer/ViewerView.as
+++ src/com/merlinds/miracle_tool/viewer/ViewerView.as
@@ -138,6 +138,7 @@
 			}else{
 				_current.mesh = mesh;
 				_current.animation = animation;
+				_current.play();
 			}
 		}


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@1268974 13f79535-47bb-0310-9956-ffa450edef68

--- frameworks/projects/mx/src/mx/controls/menuClasses/IMenuItemRenderer.as
+++ frameworks/projects/mx/src/mx/controls/menuClasses/IMenuItemRenderer.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.controls.menuClasses
 {


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@1269757 13f79535-47bb-0310-9956-ffa450edef68

--- frameworks/projects/mx/src/mx/skins/halo/DataGridColumnDropIndicator.as
+++ frameworks/projects/mx/src/mx/skins/halo/DataGridColumnDropIndicator.as
@@ -1,13 +1,3 @@
-////////////////////////////////////////////////////////////////////////////////
-//
-//  ADOBE SYSTEMS INCORPORATED
-//  Copyright 2005-2006 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.skins.halo
 {


Transferred from the Adobe Open Source Subversion Repository

Revision: 16767
Author:   cframpto@adobe.com
Date:     2010-07-01T13:00:43.351767Z

Log Message:
-----------
The following changes apply to Spark DataGrid only.   Code reviews have been deferred until the implementation is closer to completion.

Make the ColumnHeaderBar stretchCursor a style in defaults.css.  Even for Spark, cursors are styles.

Modified Paths:
--------------
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/components/ColumnHeaderBar.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/defaults.css</path>

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

--- frameworks/projects/spark/src/spark/components/GridColumnHeaderGroup.as
+++ frameworks/projects/spark/src/spark/components/GridColumnHeaderGroup.as
@@ -1047,10 +1047,6 @@
             // TBD: size resize graphic and put in initial position
          }

-        // FIXME: does this go in the skin somehow?
-        [Embed(source="Assets.swf",symbol="cursorStretch")]
-        private var stretchCursorClass:Class
-
         /**
          *  @private
          */
@@ -1067,6 +1063,7 @@
                 return;

             // Hide the mouse, attach and show the cursor
+            var stretchCursorClass:Class = getStyle("stretchCursor");
             resizeCursorID = cursorManager.setCursor(
                                     stretchCursorClass,
                                     CursorManagerPriority.HIGH, 0, 0);


http://www.igniterealtime.org/community/message/196922

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

--- src/org/igniterealtime/xiff/core/XMPPConnection.as
+++ src/org/igniterealtime/xiff/core/XMPPConnection.as
@@ -1,20 +1,20 @@
 /*
  * Copyright (C) 2003-2009 Igniterealtime Community Contributors
- *
+ *
  *     Daniel Henninger
  *     Derrick Grigg <dgrigg@rogers.com>
  *     Juga Paazmaya <olavic@gmail.com>
  *     Nick Velloff <nick.velloff@gmail.com>
  *     Sean Treadway <seant@oncotype.dk>
  *     Sean Voisen <sean@voisen.org>
- *
- *
+ *
+ *
  * 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.
@@ -784,7 +784,7 @@
 		{
 			// TODO: Build a proper extension which takes care XML building.
 			var ask:XML = <compress xmlns="http://jabber.org/protocol/compress"><method>zlib</method></compress>;
-			sendXML(ask); // XML
+			sendXML(ask); // XML
 		}

 		/**
@@ -818,7 +818,7 @@
 		{
 			var iq:IQ = new IQ();
 			// Populate the IQ with the incoming data
-			if ( !iq.deserialize( node ) )
+			if ( !iq.deserialize( node ) )
 			{
 				throw new SerializationException();
 			}
@@ -1106,6 +1106,8 @@
 		 */
 		protected function sendXML( someData:* ):void
 		{
+			someData = someData is XML ? XML( someData ).toXMLString() : someData;
+
 			var bytedata:ByteArray = new ByteArray();
 			bytedata.writeUTFBytes(someData);

@@ -1155,6 +1157,7 @@
 				}
 				else
 				{
+					// ? dispatchError( "not-authorized", "Not Authorized", "auth", 401 );
 					dispatchError("Authentication Error", "", "", 401);
 					disconnect();
 				}


needed default prop to compile FlexJSStore correctly

--- frameworks/as/projects/FlexJSUI/src/org/apache/flex/html/supportClasses/UIItemRendererBase.as
+++ frameworks/as/projects/FlexJSUI/src/org/apache/flex/html/supportClasses/UIItemRendererBase.as
@@ -24,7 +24,9 @@
 	import org.apache.flex.events.Event;
 	import org.apache.flex.utils.MXMLDataInterpreter;

-	/**
+    [DefaultProperty("mxmlContent")]
+
+    /**
 	 *  The UIItemRendererBase class is the base class for all itemRenderers. An itemRenderer is used to
 	 *  display a single datum within a collection of data. Components such as a List use itemRenderers to
 	 *  show their dataProviders.
@@ -89,6 +91,16 @@
 			_itemRendererParent = value;
 		}

+        /**
+         *  @copy org.apache.flex.core.ItemRendererClassFactory#mxmlContent
+         *
+         *  @langversion 3.0
+         *  @playerversion Flash 10.2
+         *  @playerversion AIR 2.6
+         *  @productversion FlexJS 0.0
+         */
+        public var mxmlContent:Array;
+
 		/**
 		 * @private
 		 */


Black screen when seeking after playback has finished.

--- HLSPlugin/src/org/osmf/net/httpstreaming/HLSHTTPNetStream.as
+++ HLSPlugin/src/org/osmf/net/httpstreaming/HLSHTTPNetStream.as
@@ -1307,15 +1307,20 @@
 						flushPendingTags();

 						// Disabled to reduce black screen during seek.
-						/*CONFIG::FLASH_10_1
+						CONFIG::FLASH_10_1
 						{
-							CONFIG::LOGGING
+							if(_nextSeekShouldClearScreen)
 							{
-								logger.debug("Emitting RESET_SEEK due to initializing seek.");
+								CONFIG::LOGGING
+								{
+									logger.debug("Emitting RESET_SEEK due to initializing seek.");
+								}
+
+								appendBytesAction(NetStreamAppendBytesAction.RESET_SEEK);
+
+								_nextSeekShouldClearScreen = false;
 							}
-
-							appendBytesAction(NetStreamAppendBytesAction.RESET_SEEK);
-						}*/
+						}

 						_initialTime = NaN;

@@ -2753,6 +2758,8 @@

 				// Also flush our other state.
 				flushPendingTags();
+
+				_nextSeekShouldClearScreen = true;
 			}
 		}

@@ -3346,7 +3353,8 @@
 		private var recoveryBufferMin:Number = 2;// how low the bufferTime can get in seconds before we start trying to recover a stream by seeking
 		private var recoveryDelayTimer:Timer = new Timer(0); // timer that will be set to the required delay of reload attempts in the case of a URL error
 		private var gotBytes:Boolean = false;// If we got bytes- marks a stream that we should attempt to recover
-
+		private var _nextSeekShouldClearScreen:Boolean = false; // When true, we trigger screen clearing behavior on seek.
+
 		private var streamTooSlowTimer:Timer;

 		public static var currentStream:HLSManifestStream;// this is the manifest we are currently using. Used to determine how much to seek forward after a URL error


asdoc added to mediator

asdoc added to mediator

--- src/ru/whitered/kote/Mediator.as
+++ src/ru/whitered/kote/Mediator.as
@@ -3,20 +3,72 @@
 	import flash.utils.Dictionary;

 	/**
-	 * @author whitered
+	 * Mediators are used to manage parts of the application's view model.
 	 */
 	public class Mediator extends Notifier
 	{
+		/**
+		 * Signal onSubscribe is dispatched when the mediator is subscribed for a notification
+		 *
+		 * Signal has arguments:
+		 *

+		 *
mediator:Mediator - current mediator

+		 *
notificationType:NotificationType - notification for which the mediator was subscribed

+		 *

+		 */
 		public const onSubscribe:Signal = new Signal();
+
+		/**
+		 * Signal onUnsubscribe is dispatched when the mediator is unsubscribed for a notification
+		 *
+		 * Signal has arguments:
+		 *

+		 *
mediator:Mediator - current mediator

+		 *
notificationType:NotificationType - notification from which the mediator was unsubscribed

+		 *

+		 */
 		public const onUnsubscribe:Signal = new Signal();

+		/**
+		 * Signal onAdd is dispatched when the mediator is added to a Facade
+		 *
+		 * Signal has arguments:
+		 *

+		 *
facade:Facade - facade that has added the mediator

+		 *
mediator:Mediator - current mediator

+		 *

+		 */
 		public const onAdd:Signal = new Signal();
+
+		/**
+		 * Signal onRemove is dispatched when the mediator is removed from a Facade
+		 *
+		 *
Signal has arguments:

+		 *

+		 *
facade:Facade - facade that has removed the mediator

+		 *
mediator:Mediator - current mediator

+		 *

+		 */
 		public const onRemove:Signal = new Signal();
+

 		private const handlers:Dictionary = new Dictionary();

+		/**
+		 * Subscribes the mediator for specified notification type
+		 *
+		 * @param notificationType
+		 * @param handler shortcut method that will be invoked on the notification
+		 * This method should accept the same parameters types as was specified on notification sending
+		 *
+		 *
If handler is not specified, notification still can be handled by the handleNotification() method

+		 *
+		 * @return true if successfully subscribed; false if there is a subscription for given notification type already
+		 *
+		 * @see handleNotification()
+		 */
 		public function subscribe(notificationType:NotificationType, handler:Function = null):Boolean
 		{
 			if(handlers[notificationType] != null) return false;
@@ -27,6 +79,13 @@

+		/**
+		 * Unsubscribes the mediator from a notification type
+		 *
+		 * @param notificationType
+		 *
+		 * @return true if successfully unsubscribed; false if there was no subscription for that notification type
+		 */
 		public function unsubscribe(notificationType:NotificationType):Boolean
 		{
 			if(handlers[notificationType] == null) return false;
@@ -37,7 +96,10 @@

-		public function listSubscriptions():Vector.<NotificationType>
+		/**
+		 * @return list of notification types the mediator is subscribed to
+		 */
+		public final function listSubscriptions():Vector.<NotificationType>
 		{
 			const subscriptions:Vector.<NotificationType> = new Vector.<NotificationType>();
 			for(var s:* in handlers)
@@ -49,6 +111,14 @@

+		/**
+		 * Executed when the mediator receives a notification
+		 *
+		 *
Override this method to handle unbinded notifications or to work with
+		 * notification object itself instead of its parameters

+		 *
+		 *
Don't forget to call super.handleNotification(notification) when overriding

+		 */
 		public function handleNotification(notification:Notification):void
 		{
 			if(handlers[notification.type] is Function) handlers[notification.type].apply(this, notification.parameters);


Test classes ClassLevelCopyableCloneable and PropertyLevelCopyableCloneable in CopierTest.

--- dolly-framework/src/test/actionscript/dolly/CopierTest.as
+++ dolly-framework/src/test/actionscript/dolly/CopierTest.as
@@ -1,7 +1,9 @@
 package dolly {
 import dolly.core.dolly_internal;
 import dolly.data.ClassLevelCopyable;
+import dolly.data.ClassLevelCopyableCloneable;
 import dolly.data.PropertyLevelCopyable;
+import dolly.data.PropertyLevelCopyableCloneable;

 import org.as3commons.reflect.Field;
 import org.as3commons.reflect.Type;
@@ -16,8 +18,14 @@
 	private var classLevelCopyable:ClassLevelCopyable;
 	private var classLevelCopyableType:Type;

+	private var classLevelCopyableCloneable:ClassLevelCopyableCloneable;
+	private var classLevelCopyableCloneableType:Type;
+
 	private var propertyLevelCopyable:PropertyLevelCopyable;
 	private var propertyLevelCopyableType:Type;
+
+	private var propertyLevelCopyableCloneable:PropertyLevelCopyableCloneable;
+	private var propertyLevelCopyableCloneableType:Type;

 	[Before]
 	public function before():void {
@@ -26,15 +34,28 @@
 		classLevelCopyable.property2 = "value 2";
 		classLevelCopyable.property3 = "value 3";
 		classLevelCopyable.writableField = "value 4";
+		classLevelCopyableType = Type.forInstance(classLevelCopyable);
+
+		classLevelCopyableCloneable = new ClassLevelCopyableCloneable();
+		classLevelCopyableCloneable.property1 = "value 1";
+		classLevelCopyableCloneable.property2 = "value 2";
+		classLevelCopyableCloneable.property3 = "value 3";
+		classLevelCopyableCloneable.writableField = "value 4";
+		classLevelCopyableCloneableType = Type.forInstance(classLevelCopyableCloneable);

 		propertyLevelCopyable = new PropertyLevelCopyable();
 		propertyLevelCopyable.property1 = "value 1";
 		propertyLevelCopyable.property2 = "value 2";
 		propertyLevelCopyable.property3 = "value 3";
 		propertyLevelCopyable.writableField = "value 4";
+		propertyLevelCopyableType = Type.forInstance(propertyLevelCopyable);

-		classLevelCopyableType = Type.forInstance(classLevelCopyable);
-		propertyLevelCopyableType = Type.forInstance(propertyLevelCopyable);
+		propertyLevelCopyableCloneable = new PropertyLevelCopyableCloneable();
+		propertyLevelCopyableCloneable.property1 = "value 1";
+		propertyLevelCopyableCloneable.property2 = "value 2";
+		propertyLevelCopyableCloneable.property3 = "value 3";
+		propertyLevelCopyableCloneable.writableField = "value 4";
+		propertyLevelCopyableCloneableType = Type.forInstance(propertyLevelCopyableCloneable);
 	}

 	[After]
@@ -42,14 +63,27 @@
 		classLevelCopyable = null;
 		classLevelCopyableType = null;

+		classLevelCopyableCloneable = null;
+		classLevelCopyableCloneableType = null;
+
 		propertyLevelCopyable = null;
 		propertyLevelCopyableType = null;
+
+		propertyLevelCopyableCloneable = null;
+		propertyLevelCopyableCloneableType = null;
 	}

 	[Test]
 	public function testGetCopyableFieldsForType():void {
 		var copyableFields:Vector.<Field> = Copier.getCopyableFieldsForType(classLevelCopyableType);
+		assertNotNull(copyableFields);
+		assertEquals(4, copyableFields.length);
+		assertNotNull(copyableFields[0]);
+		assertNotNull(copyableFields[1]);
+		assertNotNull(copyableFields[2]);
+		assertNotNull(copyableFields[3]);

+		copyableFields = Copier.getCopyableFieldsForType(classLevelCopyableCloneableType);
 		assertNotNull(copyableFields);
 		assertEquals(4, copyableFields.length);
 		assertNotNull(copyableFields[0]);
@@ -58,7 +92,13 @@
 		assertNotNull(copyableFields[3]);

 		copyableFields = Copier.getCopyableFieldsForType(propertyLevelCopyableType);
+		assertNotNull(copyableFields);
+		assertEquals(3, copyableFields.length);
+		assertNotNull(copyableFields[0]);
+		assertNotNull(copyableFields[1]);
+		assertNotNull(copyableFields[2]);

+		copyableFields = Copier.getCopyableFieldsForType(propertyLevelCopyableCloneableType);
 		assertNotNull(copyableFields);
 		assertEquals(3, copyableFields.length);
 		assertNotNull(copyableFields[0]);
@@ -68,31 +108,50 @@

 	[Test]
 	public function testCopyWithClassLevelMetadata():void {
-		const copy:ClassLevelCopyable = Copier.copy(classLevelCopyable);
+		const copy1:ClassLevelCopyable = Copier.copy(classLevelCopyable);
+		assertNotNull(copy1);
+		assertNotNull(copy1.property1);
+		assertEquals(copy1.property1, classLevelCopyable.property1);
+		assertNotNull(copy1.property2);
+		assertEquals(copy1.property2, classLevelCopyable.property2);
+		assertNotNull(copy1.property3);
+		assertEquals(copy1.property3, classLevelCopyable.property3);
+		assertNotNull(copy1.writableField);
+		assertEquals(copy1.writableField, classLevelCopyable.writableField);

-		assertNotNull(copy);
-		assertNotNull(copy.property1);
-		assertEquals(copy.property1, classLevelCopyable.property1);
-		assertNotNull(copy.property2);
-		assertEquals(copy.property2, classLevelCopyable.property2);
-		assertNotNull(copy.property3);
-		assertEquals(copy.property3, classLevelCopyable.property3);
-		assertNotNull(copy.writableField);
-		assertEquals(copy.writableField, classLevelCopyable.writableField);
+		const copy2:ClassLevelCopyableCloneable = Copier.copy(classLevelCopyableCloneable);
+		assertNotNull(copy2);
+		assertNotNull(copy2.property1);
+		assertEquals(copy2.property1, classLevelCopyable.property1);
+		assertNotNull(copy2.property2);
+		assertEquals(copy2.property2, classLevelCopyable.property2);
+		assertNotNull(copy2.property3);
+		assertEquals(copy2.property3, classLevelCopyable.property3);
+		assertNotNull(copy2.writableField);
+		assertEquals(copy2.writableField, classLevelCopyable.writableField);
 	}

 	[Test]
 	public function testCopyWithPropertyLevelMetadata():void {
-		const copy:PropertyLevelCopyable = Copier.copy(propertyLevelCopyable);
+		const copy1:PropertyLevelCopyable = Copier.copy(propertyLevelCopyable);
+		assertNotNull(copy1);
+		assertNull(copy1.property1);
+		assertNotNull(copy1.property2);
+		assertEquals(copy1.property2, classLevelCopyable.property2);
+		assertNotNull(copy1.property3);
+		assertEquals(copy1.property3, classLevelCopyable.property3);
+		assertNotNull(copy1.writableField);
+		assertEquals(copy1.writableField, classLevelCopyable.writableField);

-		assertNotNull(copy);
-		assertNull(copy.property1);
-		assertNotNull(copy.property2);
-		assertEquals(copy.property2, classLevelCopyable.property2);
-		assertNotNull(copy.property3);
-		assertEquals(copy.property3, classLevelCopyable.property3);
-		assertNotNull(copy.writableField);
-		assertEquals(copy.writableField, classLevelCopyable.writableField);
+		const copy2:PropertyLevelCopyableCloneable = Copier.copy(propertyLevelCopyableCloneable);
+		assertNotNull(copy2);
+		assertNull(copy2.property1);
+		assertNotNull(copy2.property2);
+		assertEquals(copy2.property2, classLevelCopyable.property2);
+		assertNotNull(copy2.property3);
+		assertEquals(copy2.property3, classLevelCopyable.property3);
+		assertNotNull(copy2.writableField);
+		assertEquals(copy2.writableField, classLevelCopyable.writableField);
 	}
 }
 }


Transferred from the Adobe Open Source Subversion Repository

Revision: 18126
Author:   gruehle@adobe.com
Date:     2010-10-11T18:03:16.346900Z

Log Message:
-----------
Change name MobileTextField to StyleableTextField.

QE notes: Tests using MobileTextField by name will need updating.
Doc notes: Docs mentioning MobileTextField will need updating.
Bugs: SDK-27849
Reviewer: Ryan
Tests run: checkintests, QE cyclone
Is noteworthy for integration: Yes

Modified Paths:
--------------
<path kind="file" copyfrom-path="/private/flex/sdk/branches/hero_private/frameworks/projects/mobilecomponents/src/spark/components/supportClasses/MobileTextField.as" copyfrom-rev="18115" action="A">/private/flex/sdk/branches/hero_private/frameworks/projects/mobilecomponents/src/spark/components/supportClasses/StyleableTextField.as</path>
<path kind="file" action="D">/private/flex/sdk/branches/hero_private/frameworks/projects/mobilecomponents/src/spark/styles/metadata/MobileTextFieldTextStyles.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobiletheme/src/spark/skins/mobile/TextAreaSkin.as</path>
<path kind="file" action="D">/private/flex/sdk/branches/hero_private/frameworks/projects/mobilecomponents/src/spark/components/supportClasses/MobileTextField.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobiletheme/src/spark/skins/mobile/supportClasses/ButtonSkinBase.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobilecomponents/src/spark/components/MobileItemRenderer.as</path>
<path kind="file" action="M">/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/mobilecomponents/src/spark/components/supportClasses/TextInputOperation.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobiletheme/src/spark/skins/mobile/TextInputSkin.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobilecomponents/src/spark/components/ActionBar.as</path>
<path kind="file" action="A">/private/flex/sdk/branches/hero_private/frameworks/projects/mobilecomponents/src/spark/styles/metadata/StyleableTextFieldTextStyles.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobilecomponents/src/MobileComponentsClasses.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobilecomponents/src/spark/components/MobileIconItemRenderer.as</path>

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

--- frameworks/projects/mobilecomponents/src/spark/components/supportClasses/StyleableTextField.as
+++ frameworks/projects/mobilecomponents/src/spark/components/supportClasses/StyleableTextField.as
@@ -37,7 +37,7 @@
 //
 // To use:
 //   in createChildren():
-//       var tf:MobileTextField = createInFontContext(MobileTextField);
+//       var tf:StyleableTextField = createInFontContext(StyleableTextField);
 //       tf.styleProvider = this;
 //       tf.editable = true|false;   // for editable text
 //       tf.multiline = true|false;  // for multiline text
@@ -66,7 +66,7 @@
 //                   textDecoration, textIndent, leading, letterSpacing

 /**
- *  The MobileTextField class is a text primitive for use in ActionScript
+ *  The StyleableTextField class is a text primitive for use in ActionScript
  *  skins and item renderers. It cannot be used in MXML markup.
  *
  *  @langversion 3.0
@@ -74,7 +74,7 @@
  *  @playerversion AIR 2.0
  *  @productversion Flex 4.5
  */
-public class MobileTextField extends TextField implements IEditableText
+public class StyleableTextField extends TextField implements IEditableText
 {

     //--------------------------------------------------------------------------
@@ -109,7 +109,7 @@
      *  @playerversion AIR 2.5
      *  @productversion Flex 4.5
      */
-    public function MobileTextField()
+    public function StyleableTextField()
     {
         super();

@@ -544,7 +544,7 @@
     /**
      *  @private
      *  An mx_internal hook developers can set to control where the styles
-     *  come from for the MobileTextField.  By default, MobileTextField
+     *  come from for the StyleableTextField.  By default, StyleableTextField
      *  uses a function that just grabs the styles from styleProvider.
      *
      *  <p>This takes precedence over styleProvider and should never


Transferred from the Adobe Open Source Subversion Repository

Revision: 8025
Author:   jszeto@adobe.com
Date:     2009-06-20T00:06:30.253117Z

Log Message:
-----------
NumericStepper keyboard bug

http://bugs.adobe.com/jira/browse/SDK-21887 - NumericStepper no longer increments via keyboard keys

Added keyDown listener in capture phase to NumericStepper. Add/remove listeners in the focusIn/Out handler.

QE Notes: None
Doc Notes: None
Bugs: SDK-21887
Reviewer: Alex

Modified Paths:
--------------
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/components/NumericStepper.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/components/Spinner.as</path>

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

--- frameworks/projects/spark/src/spark/components/Spinner.as
+++ frameworks/projects/spark/src/spark/components/Spinner.as
@@ -14,12 +14,12 @@

 import flash.events.Event;
 import flash.events.KeyboardEvent;
-import flash.events.MouseEvent;
 import flash.ui.Keyboard;

-import spark.components.supportClasses.Range;
 import mx.events.FlexEvent;
 import mx.managers.IFocusManagerComponent;
+
+import spark.components.supportClasses.Range;

 /**
  *  Dispatched when the value of the Spinner control changes
@@ -333,9 +333,9 @@
      */
     override protected function keyDownHandler(event:KeyboardEvent):void
     {
-        if (event.isDefaultPrevented())
-            return;
-
+    	if (event.isDefaultPrevented())
+    		return;
+
         var prevValue:Number = this.value;
         var stopPropagation:Boolean = false;


Transferred from the Adobe Open Source Subversion Repository

Revision: 7156
Author:   egeorgie@adobe.com
Date:     2009-05-20T21:43:02.892782Z

Log Message:
-----------
Fix bug http://bugs.adobe.com/jira/browse/SDK-20571 BasicLayout:fractional numbers for size,position of an element not rounded up

Fix: make sure that the measured sizes and the content sizes that are calculated by the layouts are rounded up to the nearest pixel.

QE Notes: Some mustella test may expectedly fail if they are dealing with groups with non-integer sized content (most common case - unconstrained Rect with 1 pixel stroke).

Doc Notes: None
Bugs: SDK-20571
Reviewer: Hans
tests: build, checkintests, mustella (gumbo layouts)

Modified Paths:
--------------
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/layouts/TileLayout.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/layouts/BasicLayout.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/layouts/HorizontalLayout.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/layouts/VerticalLayout.as</path>

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

--- frameworks/projects/spark/src/spark/layouts/TileLayout.as
+++ frameworks/projects/spark/src/spark/layouts/TileLayout.as
@@ -1402,18 +1402,18 @@
             layoutTarget.measuredWidth = layoutTarget.measuredMinWidth = 0;
         else
         {
-            layoutTarget.measuredWidth = Math.round(columnCount * (_columnWidth + _horizontalGap) - _horizontalGap);
+            layoutTarget.measuredWidth = Math.ceil(columnCount * (_columnWidth + _horizontalGap) - _horizontalGap);
             // measured min size is guaranteed to have enough columns to fit all elements
-            layoutTarget.measuredMinWidth = Math.round(_columnCount * (_columnWidth + _horizontalGap) - _horizontalGap);
+            layoutTarget.measuredMinWidth = Math.ceil(_columnCount * (_columnWidth + _horizontalGap) - _horizontalGap);
         }

         if (rowCount == 0)
             layoutTarget.measuredHeight = layoutTarget.measuredMinHeight = 0;
         else
         {
-            layoutTarget.measuredHeight = Math.round(rowCount * (_rowHeight + _verticalGap) - _verticalGap);
+            layoutTarget.measuredHeight = Math.ceil(rowCount * (_rowHeight + _verticalGap) - _verticalGap);
             // measured min size is guaranteed to have enough rows to fit all elements
-            layoutTarget.measuredMinHeight = Math.round(_rowCount * (_rowHeight + _verticalGap) - _verticalGap);
+            layoutTarget.measuredMinHeight = Math.ceil(_rowCount * (_rowHeight + _verticalGap) - _verticalGap);
         }
     }

@@ -1715,8 +1715,10 @@
             }
         }

-        layoutTarget.setContentSize(Math.round(_columnCount * (_columnWidth + _horizontalGap) - _horizontalGap),
-                                    Math.round(_rowCount * (_rowHeight + _verticalGap) - _verticalGap));
+        // Make sure that if the content spans partially over a pixel to the right/bottom,
+        // the content size includes the whole pixel.
+        layoutTarget.setContentSize(Math.ceil(_columnCount * (_columnWidth + _horizontalGap) - _horizontalGap),
+                                    Math.ceil(_rowCount * (_rowHeight + _verticalGap) - _verticalGap));

         // Reset the cache
         if (!useVirtualLayout)