Transferred from the Adobe Open Source Subversion Repository

Revision: 22608
Author:   smgilson@adobe.com
Date:     2011-09-16T17:19:03.985309Z

Log Message:
-----------
- Add ViewMenu example, add image to ViewMenu.as

- fix typos in ASDoc comments

QE notes:
Doc notes:
Bugs:
Reviewer:
Tests run: checkintests
Is noteworthy for integration:

Modified Paths:
--------------
<path kind="file" action="A">/private/flex/sdk/branches/4.y/frameworks/projects/mobilecomponents/asdoc/en_US/spark/components/examples/ViewMenuExampleHome.mxml</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/mobilecomponents/src/spark/components/TabbedViewNavigator.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/mobilecomponents/src/spark/components/View.as</path>
<path kind="file" action="A">/private/flex/sdk/branches/4.y/frameworks/projects/mobilecomponents/asdoc/en_US/spark/components/examples/ViewMenuExample.mxml</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/mobilecomponents/src/spark/components/ViewMenuItem.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/mobilecomponents/src/spark/components/BusyIndicator.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/mobilecomponents/src/spark/components/CalloutButton.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/mobilecomponents/src/spark/components/ViewMenu.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/mobilecomponents/src/spark/components/SplitViewNavigator.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/mobilecomponents/src/spark/components/ActionBar.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/mobilecomponents/src/spark/components/Callout.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/mobilecomponents/src/spark/components/ToggleSwitch.as</path>

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

--- frameworks/projects/mobilecomponents/src/spark/components/ActionBar.as
+++ frameworks/projects/mobilecomponents/src/spark/components/ActionBar.as
@@ -307,7 +307,7 @@
  *         of the action area.

  *

  *
- *
The following images shows the ActionBar with a home button in the navigation area,
+ *
The following image shows the ActionBar with a home button in the navigation area,
  *  a text input control in the title area, and a search button in the action area:

  *
  *


Transferred from the Adobe Open Source Subversion Repository

Revision: 5098
Author:   gauravj@adobe.com
Date:     2009-02-27T02:21:27.489350Z

Log Message:
-----------
Update action script files with asdoc version tags.

QE Notes: None.
Doc Notes: Please review and update as necessary.
tests: checkintests

Modified Paths:
--------------
151 paths were modified

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

--- frameworks/projects/spark/src/spark/components/supportClasses/Range.as
+++ frameworks/projects/spark/src/spark/components/supportClasses/Range.as
@@ -32,6 +32,11 @@
  *
  *  @see mx.components.baseClasses.FxTrackBase
  *  @see mx.components.FxSpinner
+ *
+ *  @langversion 3.0
+ *  @playerversion Flash 10
+ *  @playerversion AIR 1.5
+ *  @productversion Flex 4
  */
 public class FxRange extends FxComponent
 {
@@ -45,6 +50,11 @@

     /**
      *  Constructor.
+     *
+     *  @langversion 3.0
+     *  @playerversion Flash 10
+     *  @playerversion AIR 1.5
+     *  @productversion Flex 4
      */
     public function FxRange():void
     {
@@ -73,6 +83,11 @@
      *  reflect the new maximum
      *
      *  @default 100
+     *
+     *  @langversion 3.0
+     *  @playerversion Flash 10
+     *  @playerversion AIR 1.5
+     *  @productversion Flex 4
      */
     public function get maximum():Number
     {
@@ -106,6 +121,11 @@
      *  reflect the new minimum
      *
      *  @default 0
+     *
+     *  @langversion 3.0
+     *  @playerversion Flash 10
+     *  @playerversion AIR 1.5
+     *  @productversion Flex 4
      */
     public function get minimum():Number
     {
@@ -141,6 +161,11 @@
      *  multiple >= valueInterval.
      *
      *  @default 1
+     *
+     *  @langversion 3.0
+     *  @playerversion Flash 10
+     *  @playerversion AIR 1.5
+     *  @productversion Flex 4
      */
     public function get stepSize():Number
     {
@@ -177,6 +202,11 @@
      *
      *  @default 0
      *  @see #setValue
+     *
+     *  @langversion 3.0
+     *  @playerversion Flash 10
+     *  @playerversion AIR 1.5
+     *  @productversion Flex 4
      */
     public function get value():Number
     {
@@ -222,6 +252,11 @@
      *  valueInterval and >= valueInterval.
      *
      *  @default 1
+     *
+     *  @langversion 3.0
+     *  @playerversion Flash 10
+     *  @playerversion AIR 1.5
+     *  @productversion Flex 4
      */
     public function get valueInterval():Number
     {
@@ -292,6 +327,11 @@
      *
      *  @return The multiple of interval closest to value.
      *  The minimum returned Number is interval.
+     *
+     *  @langversion 3.0
+     *  @playerversion Flash 10
+     *  @playerversion AIR 1.5
+     *  @productversion Flex 4
      */
     protected function nearestValidInterval(value:Number, interval:Number):Number
     {
@@ -316,6 +356,11 @@
      *  is only bound to the range.
      *
      *  @return The rounded value, or 0 if value is NaN.
+     *
+     *  @langversion 3.0
+     *  @playerversion Flash 10
+     *  @playerversion AIR 1.5
+     *  @productversion Flex 4
      */
     protected function nearestValidValue(value:Number, interval:Number):Number
     {
@@ -373,6 +418,11 @@
      *  @param value The new value of the value property.
      *
      *  @param value The new value of value.
+     *
+     *  @langversion 3.0
+     *  @playerversion Flash 10
+     *  @playerversion AIR 1.5
+     *  @productversion Flex 4
      */
     protected function setValue(value:Number):void
     {
@@ -389,6 +439,11 @@
      *
      *  @param increase Whether the stepping action increases (true) or
      *  decreases (false) the value.
+     *
+     *  @langversion 3.0
+     *  @playerversion Flash 10
+     *  @playerversion AIR 1.5
+     *  @productversion Flex 4
      */
     public function step(increase:Boolean = true):void
     {


Transferred from the Adobe Open Source Subversion Repository

Revision: 11702
Author:   mhorn@adobe.com
Date:     2009-11-12T17:29:17.139504Z

Log Message:
-----------
ASDoc fix for FLEXDOCS-1075

Modified Paths:
--------------
/flex/sdk/trunk/frameworks/projects/spark/src/spark/skins/spark/BorderSkin.as

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

--- frameworks/projects/spark/src/spark/skins/spark/BorderContainerSkin.as
+++ frameworks/projects/spark/src/spark/skins/spark/BorderContainerSkin.as
@@ -25,6 +25,9 @@
 import spark.primitives.Path;
 import spark.primitives.Rect;

+/**
+ * @copy spark.skins.spark.ApplicationSkin#hostComponent
+ */
 [HostComponent("spark.components.Border")]

 /**


fixed wrong variable name

fixed wrong variable name

Change-Id: Ib68960b84c508db7365faa2eaa97dbc58a8c8780

--- WeaveUISpark/src/weave/visualization/layers/SimpleInteractiveVisualization.as
+++ WeaveUISpark/src/weave/visualization/layers/SimpleInteractiveVisualization.as
@@ -304,7 +304,7 @@
 		{
 			super.handleMouseClick(event);

-			if (mouseIsRolledOver && Weave.properties.enableToolSelection.value)
+			if (mouseIsRolledOver && Weave.properties.enableToolControls.value)
 			{
 				var theMargin:LinkableString = getMarginAndSetQueryBounds(event.localX, event.localY, false);
 				var index:int = [plotManager.marginTop, plotManager.marginBottom, plotManager.marginLeft, plotManager.marginRight].indexOf(theMargin);


Transferred from the Adobe Open Source Subversion Repository

Revision: 153
Author:   proberts@adobe.com
Date:     2008-01-10T20:22:23.867658Z

Log Message:
-----------
Severity: ignore
Description: docs update -- added @productVersion tag to Flex AIR classes' class descriptions.

Modified Paths:
--------------
<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/airframework/src/mx/events/FlexNativeMenuEvent.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/airframework/src/mx/core/FlexHTMLLoader.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/airframework/src/mx/controls/FileSystemEnumerationMode.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/airframework/src/mx/skins/halo/WindowMinimizeButtonSkin.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/airframework/src/mx/controls/FileSystemHistoryButton.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/airframework/src/mx/skins/halo/WindowRestoreButtonSkin.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/airframework/src/mx/skins/halo/WindowMaximizeButtonSkin.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/airframework/src/mx/skins/halo/StatusBarBackgroundSkin.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/airframework/src/mx/controls/FileSystemTree.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/airframework/src/mx/controls/HTML.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/airframework/src/mx/core/IWindow.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/airframework/src/mx/utils/DirectoryEnumeration.as</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/airframework/src/mx/controls/FileSystemSizeDisplayMode.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/airframework/src/mx/events/FlexNativeWindowBoundsEvent.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/airframework/src/mx/controls/FileSystemComboBox.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/airframework/src/mx/utils/DirectoryEnumerationMode.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/airframework/src/mx/events/AIREvent.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/airframework/src/mx/skins/halo/WindowBackground.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/airframework/src/mx/controls/FileSystemList.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/airframework/src/mx/events/FileEvent.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/airframework/src/mx/controls/FileSystemDataGrid.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/airframework/src/mx/skins/halo/WindowCloseButtonSkin.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/airframework/src/mx/skins/halo/ApplicationTitleBarBackgroundSkin.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/airframework/src/mx/core/WindowedApplication.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/airframework/src/mx/controls/FlexNativeMenu.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/airframework/src/mx/managers/NativeDragManagerImpl.as</path>

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

--- frameworks/projects/airframework/src/mx/skins/halo/WindowRestoreButtonSkin.as
+++ frameworks/projects/airframework/src/mx/skins/halo/WindowRestoreButtonSkin.as
@@ -21,6 +21,8 @@
 /**
  *  The skin for the restore button in the TitleBar
  *  of a WindowedApplication or Window.
+ *
+ *  @productversion Apollo 1.0
  */
 public class WindowRestoreButtonSkin extends UIComponent
 {


Transferred from the Adobe Open Source Subversion Repository

Revision: 12380
Author:   smgilson@adobe.com
Date:     2009-12-02T18:37:15.838623Z

Log Message:
-----------
ASDoc edits in preparation for localization

QE notes: -
Doc notes: -
Bugs: -
Reviewer: -
Tests run: - checkintests
Is noteworthy for integration: No

Modified Paths:
--------------
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/components/supportClasses/TrackBase.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/components/HScrollBar.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/components/supportClasses/DisplayLayer.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/components/supportClasses/ListBase.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/components/supportClasses/ButtonBase.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/components/supportClasses/ToggleButtonBase.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/components/supportClasses/ButtonBarHorizontalLayout.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/components/supportClasses/SliderBase.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/components/supportClasses/ScrollBarBase.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/components/VScrollBar.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/components/supportClasses/DropDownListBase.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/components/supportClasses/ItemRenderer.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/components/supportClasses/GroupBase.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/components/supportClasses/ListItemDragProxy.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/components/supportClasses/ButtonBarBase.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/components/supportClasses/Range.as</path>

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

--- frameworks/projects/spark/src/spark/components/supportClasses/ItemRenderer.as
+++ frameworks/projects/spark/src/spark/components/supportClasses/ItemRenderer.as
@@ -35,6 +35,7 @@
  *

  *  <s:ItemRenderer
  *    Properties
+ *    autoDrawBackground="true"
  *    selected="false"
  *    showsCaret="false"
  *  />
@@ -110,7 +111,7 @@
      *  Specifies whether the item renderer draws the
      *  background of the data item during user interaction.
      *  Interactions include moving the mouse over the item,
-     *  selecting the item, and moving the caret of the item .
+     *  selecting the item, and moving the caret of the item.
      *
      *
If true, the background for
      *  the item renderer is automatically drawn, and it


add MOPS opcodes to abc-constants.as, and a few tweaks

--- utils/abc-constants.as
+++ utils/abc-constants.as
@@ -143,6 +143,16 @@
 const OP_pushscope:int = 0x30
 const OP_pushnamespace:int = 0x31
 const OP_hasnext2:int = 0x32
+const OP_li8:int = 0x35
+const OP_li16:int = 0x36
+const OP_li32:int = 0x37
+const OP_lf32:int = 0x38
+const OP_lf64:int = 0x39
+const OP_si8:int = 0x3A
+const OP_si16:int = 0x3B
+const OP_si32:int = 0x3C
+const OP_sf32:int = 0x3D
+const OP_sf64:int = 0x3E
 const OP_newfunction:int = 0x40
 const OP_call:int = 0x41
 const OP_construct:int = 0x42
@@ -159,6 +169,9 @@
 const OP_callinterface:int = 0x4D
 const OP_callsupervoid:int = 0x4E
 const OP_callpropvoid:int = 0x4F
+const OP_sxi1:int = 0x50
+const OP_sxi8:int = 0x51
+const OP_sxi16:int = 0x52
 const OP_applytype:int = 0x53
 const OP_newobject:int = 0x55
 const OP_newarray:int = 0x56
@@ -309,16 +322,16 @@
 "hasnext2      ",
 "OP_0x33       ",
 "OP_0x34       ",
-"OP_0x35       ",
-"OP_0x36       ",
-"OP_0x37       ",
-"OP_0x38       ",
-"OP_0x39       ",
-"OP_0x3A       ",
-"OP_0x3B       ",
-"OP_0x3C       ",
-"OP_0x3D       ",
-"OP_0x3E       ",
+"li8           ",
+"li16          ",
+"li32          ",
+"lf32          ",
+"lf64          ",
+"si8           ",
+"si16          ",
+"si32          ",
+"sf32          ",
+"sf64          ",
 "OP_0x3F       ",
 "newfunction   ",
 "call          ",
@@ -336,10 +349,10 @@
 "callinterface ",
 "callsupervoid ",
 "callpropvoid  ",
+"sxi1          ",
+"sxi8          ",
+"sxi16         ",
 "applytype     ",
-"OP_0x51       ",
-"OP_0x52       ",
-"OP_0x53       ",
 "OP_0x54       ",
 "newobject     ",
 "newarray      ",
@@ -347,8 +360,8 @@
 "newclass      ",
 "getdescendants",
 "newcatch      ",
-"OP_0x5B       ",
-"OP_0x5C       ",
+"OP_0x5B       ", // findpropglobalstrict (internal)
+"OP_0x5C       ", // findpropglobal (internal)
 "findpropstrict",
 "findproperty  ",
 "finddef       ",
@@ -363,7 +376,7 @@
 "initproperty  ",
 "OP_0x69       ",
 "deleteproperty",
-"OP_0x6A       ",
+"OP_0x6B       ",
 "getslot       ",
 "setslot       ",
 "getglobalslot ",
@@ -501,17 +514,17 @@
 "bkptline      ",
 "timestamp     ",
 "OP_0xF4       ",
-"verifypass    ",
-"alloc         ",
-"mark          ",
-"wb            ",
-"prologue      ",
-"sendenter     ",
-"doubletoatom  ",
-"sweep         ",
-"codegenop     ",
-"verifyop      ",
-"decode        "
+"OP_0xF5       ",
+"OP_0xF6       ",
+"OP_0xF7       ",
+"OP_0xF8       ",
+"OP_0xF9       ",
+"OP_0xFA       ",
+"OP_0xFB       ",
+"OP_0xFC       ",
+"OP_0xFD       ",
+"OP_0xFE       ",
+"OP_0xFF       "
 ];

 const ATTR_final			:int = 0x01; // 1=final, 0=virtual


macros now catch & report errors

macros now catch & report errors

Change-Id: I53906b96497a48167f5e51d5a92b52e6ae977d76

--- WeaveCore/src/weave/core/LinkableFunction.as
+++ WeaveCore/src/weave/core/LinkableFunction.as
@@ -60,6 +60,7 @@
 			_paramNames = paramNames && paramNames.concat();
 		}

+		private var _catchErrors:Boolean = false;
 		private var _ignoreRuntimeErrors:Boolean = false;
 		private var _useThisScope:Boolean = false;
 		private var _compiledMethod:Function = null;
@@ -79,6 +80,10 @@
 		{
 			if (_triggerCount != triggerCounter)
 			{
+				// if this LinkableFunction is in the macros list, errors should be caught and reported.
+				if (macros.getName(this))
+					_catchErrors = true;
+
 				_triggerCount = triggerCounter;
 				// in case compile fails, prevent re-compiling erroneous code
 				_compiledMethod = RETURN_UNDEFINED;
@@ -103,6 +108,13 @@

 			if (_ignoreRuntimeErrors || debug)
 				return true;
+
+			if (_catchErrors)
+			{
+				reportError(e);
+				return false;
+			}
+
 			throw e;
 		}

@@ -171,13 +183,15 @@
 		}

 		/**
-		 * This function evaluates a macro specified in the macros hash map.
+		 * This function evaluates a macro specified in the macros hash map,
+		 * catching and reporting any errors that are thrown.
 		 * @param macroName The name of the macro to evaluate.
 		 * @param params The parameters to pass to the macro.
 		 * @return The result of evaluating the macro.
 		 */
-		public static function evaluateMacro(macroName:String, ...params):*
-		{
+		public static function evaluateMacro(macroName:String, params:Array = null):*
+		{
+			// error catching/reporting is handled automatically for LinkableFunctions in the macros list.
 			var lf:LinkableFunction = macros.getObject(macroName) as LinkableFunction;
 			return lf ? lf.apply(null, params) : undefined;
 		}


Committing SpatialIndex, previously ommited. Addedunction getKeysGeometryOverlapGeometries()

--- WeaveUISpark/src/weave/utils/SpatialIndex.as
+++ WeaveUISpark/src/weave/utils/SpatialIndex.as
@@ -704,6 +704,38 @@
 		}

 		/**
+		 * This function will get the keys whose geometries intersect with the given array of geometries.
+		 * This function call getKeysOverlapGeometry below for each element in the array.
+		 * @param geometries an Array of ISimpleGeometry objects used to query the spatial index.
+		 * @param minImportance The minimum importance value to use when determining geometry overlap.
+		 * @param filterBoundingBoxesByImportance If true, bounding boxes will be pre-filtered by importance before checking geometry overlap.
+		 * @return An array of IQualifiedKey objects.
+		 **/
+
+
+		public function getKeysGeometryOverlapGeometries(geometries:Array, minImportance:Number = 0, filterBoundingBoxesByImportance:Boolean = false):Array
+		{
+			var queriedKeys:Array = [];
+			var keys:Dictionary = new Dictionary();
+
+			for each ( var geometry:ISimpleGeometry in geometries )
+			{
+				queriedKeys = getKeysGeometryOverlapGeometry(geometry, minImportance, filterBoundingBoxesByImportance);
+
+				for each (var key:IQualifiedKey in queriedKeys)
+				{
+					keys[key] = true;
+				}
+			}
+
+			var result:Array = [];
+			for (var keyObj:* in keys)
+				result.push(keyObj as IQualifiedKey);
+
+			return result;
+		}
+
+		/**
 		 * This function will get the keys whose geometries intersect with the given geometry.
 		 *
 		 * @param geometry An ISimpleGeometry object used to query the spatial index.


Transferred from the Adobe Open Source Subversion Repository

Revision: 19395
Author:   hmuller@adobe.com
Date:     2010-12-15T19:17:26.366313Z

Log Message:
-----------
Improved List scroll positioning after a dataProvider refresh for one case: if the caret item is visible, after a refresh attempt to scroll so that it's in the same relative position, and select it.

DataGroup/getElementAt(index) now returns the item renderer for index, even if index is not a valid dataProvider index (anymore).

QE notes: Four Mustella tests to be updated (Jacob, Ella).
Doc notes:
Bugs: SDK-23283
Reviewer: Ryan
Tests run: checkin, mustella
Is noteworthy for integration: no

Modified Paths:
--------------
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/components/DataGroup.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/components/gridClasses/IGridItemRenderer.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/components/List.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/layouts/supportClasses/LayoutBase.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/components/supportClasses/ListBase.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/components/supportClasses/GroupBase.as</path>

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

--- frameworks/projects/spark/src/spark/components/supportClasses/ListBase.as
+++ frameworks/projects/spark/src/spark/components/supportClasses/ListBase.as
@@ -395,6 +395,19 @@
     mx_internal var doingWholesaleChanges:Boolean = false;

     //----------------------------------
+    //  caretItem
+    //----------------------------------
+
+    /**
+     *  @private
+     *  This private variable differs from selectedItem in that
+     *  the value is not computed, it's cached each time setCurrentCaretIndex() is called.
+     *  It's used by List/dataProviderRefreshed() to provide a little scroll position and
+     *  selection/caret stability after a dataProvider refresh.
+     */
+    mx_internal var caretItem:* = undefined;
+
+    //----------------------------------
     //  labelField
     //----------------------------------

@@ -1164,7 +1177,15 @@
         _caretIndex = value;

         if (caretIndex != CUSTOM_SELECTED_ITEM)
-            itemShowingCaret(caretIndex, true);
+        {
+            itemShowingCaret(_caretIndex, true);
+
+            // Track the caretItem (often the same as the selectedItem), so that
+            // if the dataProvider is refreshed, we can relocate the caretIndex.
+
+            const validIndex:Boolean = dataProvider && (_caretIndex >= 0) && (_caretIndex < dataProvider.length);
+            caretItem = (validIndex) ? dataProvider.getItemAt(_caretIndex) : undefined;
+        }
     }

     /**
@@ -1371,6 +1392,16 @@
             // the selected index backing variable.
             adjustSelection(selectedIndex - 1);
         }
+    }
+
+    /**
+     *  @private
+     *  Default response to dataProvider refresh events: clear the selection and caret.
+     */
+    mx_internal function dataProviderRefreshed():void
+    {
+        setSelectedIndex(NO_SELECTION, false);
+        setCurrentCaretIndex(NO_CARET);
     }

     /**
@@ -1566,8 +1597,7 @@
             }
             else if (ce.kind == CollectionEventKind.REFRESH)
             {
-                setSelectedIndex(NO_SELECTION, false);
-                setCurrentCaretIndex(NO_CARET);
+                dataProviderRefreshed();
             }
             else if (ce.kind == CollectionEventKind.REPLACE ||
                 ce.kind == CollectionEventKind.MOVE)


Transferred from the Adobe Open Source Subversion Repository

Revision: 9433
Author:   clucier@adobe.com
Date:     2009-08-20T23:54:36.373816Z

Log Message:
-----------
Code complete for runtime design layers.  Incorporated PARB renames and refactoring.  Finished off all compiler optimizations that were spec'd.  Some minor bug fixes.

QE notes: Candidate checkin for code complete. You are welcome to write test plan against the current API.
Doc notes:  DesignLayer docs should be scrubbed.
Bugs:  N/A
Reviewer: Peter (compiler), Chet (renames), Paul (will review MXMLDocument post PTO).
Tests run: Checkin, added new basic test.
Is noteworthy for integration: Yes.

Modified Paths:
--------------
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/core/SpriteVisualElement.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/primitives/supportClasses/GraphicElement.as</path>
<path kind="file" action="M">/flex/sdk/trunk/modules/compiler/src/java/flex2/compiler/mxml/builder/ComponentBuilder.java</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/core/DesignLayer.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/core/IVisualElement.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/primitives/supportClasses/TextGraphicElement.as</path>
<path kind="file" action="M">/flex/sdk/trunk/modules/compiler/src/java/flex2/compiler/mxml/rep/MxmlDocument.java</path>
<path kind="file" action="A">/flex/sdk/trunk/frameworks/tests/basicTests/spark/scripts/DesignLayerTestScript.mxml</path>
<path kind="file" action="M">/flex/sdk/trunk/modules/compiler/src/java/flex2/compiler/mxml/lang/StandardDefs.java</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flash-integration/src/mx/flash/UIMovieClip.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/tests/basicTests/BasicTests.mxml</path>
<path kind="file" action="A">/flex/sdk/trunk/frameworks/tests/basicTests/spark/views/DesignLayerTests.mxml</path>
<path kind="file" action="M">/flex/sdk/trunk/modules/compiler/src/java/flex2/compiler/mxml/rep/init/ValueInitializer.java</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/core/UIComponent.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/tests/basicTests/BasicTests-config.xml</path>

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

--- frameworks/projects/spark/src/spark/components/supportClasses/TextBase.as
+++ frameworks/projects/spark/src/spark/components/supportClasses/TextBase.as
@@ -959,7 +959,7 @@
 			var n:int = textLines.length;
 			for (var i:int = 0; i < n; i++)
 			{
-				textLines[i].visible = _computedVisibility;
+				textLines[i].visible = _effectiveVisibility;
 			}
 		}
     }


Transferred from the Adobe Open Source Subversion Repository

Revision: 6020
Author:   cframpto@adobe.com
Date:     2009-04-08T16:15:03.450604Z

Log Message:
-----------
- Tighten up SimpleText truncation a bit.  It's ready for testing.
- Fix optimization to check if there is only one measured line.  If SimpleText, have to check the number of composed lines as well as make sure the text isn't overset.
- Cleanup a bit.

QE Notes:
Doc Notes:
Bugs: SDK-18747 (truncation)
Reviewers: will be Gordon

Modified Paths:
--------------
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/primitives/supportClasses/TextGraphicElement.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/primitives/RichText.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/primitives/SimpleText.as</path>

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

--- frameworks/projects/spark/src/spark/components/supportClasses/TextBase.as
+++ frameworks/projects/spark/src/spark/components/supportClasses/TextBase.as
@@ -140,6 +140,13 @@

     /**
      *  @private
+     *  The textLines created to measure the truncationResourceIndicator.
+     *  The array will be allocated the first time truncation is done.
+     */
+    mx_internal var truncationIndicatorLines:Array;
+
+    /**
+     *  @private
      *  The value of bounds.width, before the compose was done.
      */
     private var _composeWidth:Number;
@@ -173,10 +180,9 @@

     /**
      *  @private
-     *  Cache the number of text lines during measure. We can optimize for
-     *  a single line text reflow, which is a lot of cases.
-     */
-    private var _measuredTextLineCount:int;
+     *  We can optimize for a single line text reflow, which is a lot of cases.
+     */
+    private var _measuredOneTextLine:Boolean = false;

     //--------------------------------------------------------------------------
     //
@@ -656,7 +662,8 @@

         // Remember the number of text lines during measure. We can use this to
         // optimize the double measure scheme for text reflow.
-        _measuredTextLineCount = mx_internal::textLines.length;
+        _measuredOneTextLine = mx_internal::textLines.length == 1 &&
+                               !mx_internal::isOverset;

         //trace(id, drawnDisplayObject.name, "measure", measuredWidth, measuredHeight);
     }
@@ -709,7 +716,7 @@
         // Special case - if we have a single line, then having a constraint larger
         // than the measuredWidth will not result in measuredHeight change, as we
         // will still have only a single line
-        if (_measuredTextLineCount == 1 && width > measuredWidth)
+        if (_measuredOneTextLine && width > measuredWidth)
             return;

         // We support reflow only when we don't have a transform.
@@ -721,6 +728,7 @@
             return;

         _widthConstraint = width;
+
         invalidateSize();
     }

@@ -749,7 +757,7 @@
         // ToDo: optimize for right-to-left text so compose isn't always done
         // when height or width changes.
         if (mx_internal::invalidateCompose ||
-            composeRequired(unscaledWidth, unscaledHeight))
+            composeForAlignStyles(unscaledWidth, unscaledHeight))
         {
             compose = true;
         }
@@ -758,16 +766,12 @@
             // Height changed.
             if ((unscaledHeight > mx_internal::bounds.height &&
                 mx_internal::isOverset) ||
+                composeOnHeightChange(unscaledHeight) ||
                 getStyle("blockProgression") != "tb")
             {
                 // More height is needed and it's possible there is more text
-                // since it didn't all fit before.
-                compose = true;
-            }
-            else if (composeOnHeightChange())
-            {
-                // Height changed and the styles require a recompose so the
-                // text is positioned correctly for the new size.
+                // since it didn't all fit before.  Or the styles require a
+                // recompose if the height changes.
                 compose = true;
             }
             else (unscaledHeight < mx_internal::bounds.height)
@@ -782,7 +786,6 @@
         if (!compose && unscaledWidth != mx_internal::bounds.width)
         {
             if (getStyle("lineBreak") == "toFit" ||
-                composeOnWidthChange() ||
                 getStyle("blockProgression") != "tb")
             {
                 // Width changed and toFit line breaks or the styles
@@ -1031,8 +1034,8 @@
      *  @private
      *  TODO This should be mx_internal, but that causes a compiler error.
      */
-    protected function composeRequired(unscaledWidth:Number,
-                                       unscaledHeight:Number):Boolean
+    protected function composeForAlignStyles(unscaledWidth:Number,
+                                             unscaledHeight:Number):Boolean
     {
         // For textAlign, if the composeWidth isn't the same
         // as the unscaledWidth, and the text isn't left aligned, we need to
@@ -1071,23 +1074,26 @@
      *  @private
      *  TODO This should be mx_internal, but that causes a compiler error.
      */
-    protected function composeOnHeightChange():Boolean
+    protected function composeOnHeightChange(unscaledHeight:Number):Boolean
     {
         if (truncation != 0 && getStyle("lineBreak") == "toFit")
-            return true;
-
-        return false;
-    }
-
-    /**
-     *  @private
-     *  TODO This should be mx_internal, but that causes a compiler error.
-     */
-    protected function composeOnWidthChange():Boolean
-    {
-        if (truncation != 0 && getStyle("lineBreak") == "toFit")
-            return true;
-
+        {
+            // -1 is fill the bounds and the bounds changed so recompose.
+            if (truncation == -1)
+                return true;
+
+            // If truncating at n lines and the height got smaller, may need to
+            // redo the truncation. Or if the height got larger, only have to
+            // redo the truncation if we don't already have the number of
+            // truncation lines needed.
+            if (truncation > 0 &&
+               (unscaledHeight < mx_internal::bounds.height ||
+               mx_internal::textLines.length != truncation))
+            {
+                return true;
+            }
+        }
+
         return false;
     }

@@ -1310,11 +1316,18 @@
         mx_internal::truncationIndicatorResource = resourceManager.getString(
             "core", "truncationIndicator");

+        // Need to remeasure the new truncation indicator for SimpleText.
+        if (mx_internal::truncationIndicatorLines)
+            mx_internal::truncationIndicatorLines.length = 0;
+
+        // If we're truncating, recompose the text.
         if (truncation != 0)
+        {
             mx_internal::invalidateCompose = true;

-        invalidateSize();
-        invalidateDisplayList();
+            invalidateSize();
+            invalidateDisplayList();
+        }
     }

     /**


Camera bug fix

Camera bug fix

M worldLookAt	= worldMatrix.multiplyVector(_lookAt) instead of worldMatrix.deltaMultiplyVector(_lookAt)

--- src/aerys/minko/scene/graph/camera/Camera.as
+++ src/aerys/minko/scene/graph/camera/Camera.as
@@ -125,7 +125,7 @@
 			var cameraData 		: CameraData	= CAMERA_DATA.create(true);
 			var worldMatrix		: Matrix4x4		= transformManager.world;
 			var worldPosition	: Vector4		= worldMatrix.multiplyVector(_position);
-			var worldLookAt		: Vector4		= worldMatrix.deltaMultiplyVector(_lookAt);
+			var worldLookAt		: Vector4		= worldMatrix.multiplyVector(_lookAt);
 			var worldUp			: Vector4		= worldMatrix.deltaMultiplyVector(_up).normalize();

 			cameraData.reset();


remove useless imports

remove useless imports

--- src/aerys/minko/render/material/realistic/RealisticMaterial.as
+++ src/aerys/minko/render/material/realistic/RealisticMaterial.as
@@ -5,10 +5,7 @@
 	import aerys.minko.render.material.phong.PhongEffect;
 	import aerys.minko.render.material.phong.PhongMaterial;
 	import aerys.minko.render.resource.texture.ITextureResource;
-	import aerys.minko.scene.node.Scene;
 	import aerys.minko.type.binding.IDataProvider;
-
-	import flash.utils.Dictionary;

 	public class RealisticMaterial extends PhongMaterial
 	{


All instances in RectUtil made Object, to allow unrelated classes (and dynamic objects) to be used as sources and targets of calculations

--- raw/src/org/yellcorp/lib/geom/RectUtil.as
+++ raw/src/org/yellcorp/lib/geom/RectUtil.as
@@ -8,7 +8,7 @@
 public class RectUtil
 {
     public static function multiply(
-        rect:Rectangle, factor:Number, out:Rectangle = null):Rectangle
+        rect:Object, factor:Number, out:Object = null):Object
     {
         if (!out) out = new Rectangle();
         out.x = rect.x * factor;
@@ -19,10 +19,10 @@
     }

     public static function transform(
-        rect:Rectangle,
+        rect:Object,
         xFactor:Number, yFactor:Number,
         xOffset:Number, yOffset:Number,
-        out:Rectangle = null):Rectangle
+        out:Object = null):Object
     {
         if (!out) out = new Rectangle();
         out.x = rect.x * xFactor + xOffset;
@@ -192,7 +192,7 @@

     public static function roundOut(
-        rect:Rectangle, out:Rectangle = null):Rectangle
+        rect:Object, out:Object = null):Object
     {
         if (!out) out = new Rectangle();

@@ -206,7 +206,7 @@
     }

     public static function roundIn(
-        rect:Rectangle, out:Rectangle = null):Rectangle
+        rect:Object, out:Object = null):Object
     {
         if (!out) out = new Rectangle();

@@ -219,32 +219,28 @@
         return out;
     }

-    public static function mapPoint(
-        point:Point,
-        from:Rectangle, to:Rectangle,
-        out:Rectangle = null):Rectangle
-    {
-        if (!out) out = new Rectangle();
-        out.x = to.x + to.width * (point.x - from.x) / from.width;
-        out.y = to.y + to.height * (point.y - from.y) / from.height;
+    public static function mapPoint(point:Object,
+        source:Object, target:Object, out:Object = null):Object
+    {
+        if (!out) out = new Rectangle();
+        out.x = target.x + target.width * (point.x - source.x) / source.width;
+        out.y = target.y + target.height * (point.y - source.y) / source.height;
         return out;
     }

     public static function mapRect(
-        rect:Rectangle,
-        from:Rectangle, to:Rectangle,
-        out:Rectangle = null):Rectangle
-    {
-        if (!out) out = new Rectangle();
-        out.x = to.x + to.width * (rect.x - from.x) / from.width;
-        out.y = to.y + to.height * (rect.y - from.y) / from.height;
-        out.width = to.width * (rect.right - from.x) / from.width;
-        out.height = to.height * (rect.bottom - from.y) / from.height;
+        rect:Object, source:Object, target:Object, out:Object = null):Object
+    {
+        if (!out) out = new Rectangle();
+        out.x = target.x + target.width * (rect.x - source.x) / source.width;
+        out.y = target.y + target.height * (rect.y - source.y) / source.height;
+        out.width = target.width * (rect.right - source.x) / source.width;
+        out.height = target.height * (rect.bottom - source.y) / source.height;
         return out;
     }

     public static function clampPoint(
-        point:Point, rect:Rectangle, out:Point = null):Point
+        point:Object, rect:Object, out:Object = null):Object
     {
         if (!out) out = new Point();

@@ -259,8 +255,8 @@
         return out;
     }

-    public static function setArea(
-        rect:Rectangle, area:Number, out:Rectangle = null):Rectangle
+    public static function scaleToArea(
+        rect:Object, area:Number, out:Object = null):Object
     {
         if (!out) out = new Rectangle();
         var areaRatio:Number = Math.sqrt(area / (rect.width * rect.height));


Change 20100222-maxcarlson-o by maxcarlson@bank on 2010-02-22 19:35:00 PST
    in /Users/maxcarlson/openlaszlo/trunk-clean
    for http://svn.openlaszlo.org/openlaszlo/trunk

Summary: Conditionalize textfield focus workaround from LPP-7957

Bugs Fixed: LPP-8783 - Text field loses focus when mousing out of canvas and then mousing back in (SWF9)

Technical Reviewer: ptw
QA Reviewer: andre.bargull@udo.edu

Details: Conditionalize workaround to only happen for FF < 3.5 on OS X.

Tests: See LPP-8783.

git-svn-id: d62bde4b5aa582fdf07c8d403e53e0399a7ed285@15797 fa20e4f9-1d0a-0410-b5f3-dc9c16b8b17c

--- WEB-INF/lps/lfc/kernel/swf9/LzMouseKernel.as
+++ WEB-INF/lps/lfc/kernel/swf9/LzMouseKernel.as
@@ -1,7 +1,7 @@
 /**
   * LzMouseKernel.as
   *
-  * @copyright Copyright 2001-2009 Laszlo Systems, Inc.  All Rights Reserved.
+  * @copyright Copyright 2001-2010 Laszlo Systems, Inc.  All Rights Reserved.
   *            Use is subject to license terms.
   *
   * @topic Kernel
@@ -73,14 +73,16 @@
                 // Mouse reentered the app.
                 if (event.buttonDown) __mouseUpOutsideHandler();

-                // TODO [hqm 2009-04] LPP-7957 -- this works
-                // around Firefox bug; if you are making a text
-                // selection, and then drag the mouse outside of
-                // the app while the left button is down, and then
-                // release it. When you bring the mouse back into
-                // the app, the selection is stuck dragging
-                // because Flash plugin never gets the mouse up.
-                LFCApplication.stage.focus = null;
+                if (lz.embed.browser.isFirefox && lz.embed.browser.OS == 'mac' && lz.embed.browser.version < 3.5) {
+                    // TODO [hqm 2009-04] LPP-7957 -- this works
+                    // around Firefox bug; if you are making a text
+                    // selection, and then drag the mouse outside of
+                    // the app while the left button is down, and then
+                    // release it. When you bring the mouse back into
+                    // the app, the selection is stuck dragging
+                    // because Flash plugin never gets the mouse up.
+                    LFCApplication.stage.focus = null;
+                }

                 // generate a 'onmouseenter' event
                 handleMouseEvent(null, 'onmouseenter');


fixed a bug in the 'page' parameter

fixed a bug in the 'page' parameter

--- src/isle/susisu/twitter/api/_users_search.as
+++ src/isle/susisu/twitter/api/_users_search.as
@@ -24,7 +24,7 @@
 		}
 		if(page>0)
 		{
-			parameters["page"]=page.toString
+			parameters["page"]=page.toString();
 		}
 		parameters["include_entities"]=includeEntities?TRUE:FALSE;
 		//make request


That last commit was for http://www.igniterealtime.org/issues/browse/XIFF-26, and was reviewed by Armando

--- src/org/jivesoftware/xiff/conference/Room.as
+++ src/org/jivesoftware/xiff/conference/Room.as
@@ -1073,7 +1073,6 @@

 				if (!isActive && aPresence.type != Presence.UNAVAILABLE_TYPE)
 				{
-					//trace("Room: becoming active: " + presence.getNode());
 					active = true;
 					e = new RoomEvent(RoomEvent.ROOM_JOIN);
 					dispatchEvent(e);


XIFF-83 Currently 152 tests, 5 failures and 1 errors.

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

--- test/org/igniterealtime/xiff/bookmark/GroupChatBookmarkTest.as
+++ test/org/igniterealtime/xiff/bookmark/GroupChatBookmarkTest.as
@@ -1,6 +1,6 @@
 /*
  * Copyright (C) 2003-2012 Igniterealtime Community Contributors
- *
+ *
  *     Daniel Henninger
  *     Derrick Grigg <dgrigg@rogers.com>
  *     Juga Paazmaya <olavic@gmail.com>
@@ -9,14 +9,14 @@
  *     Sean Voisen <sean@voisen.org>
  *     Mark Walters <mark@yourpalmark.com>
  *     Michael McCarthy <mikeycmccarthy@gmail.com>
- *
- *
+ *
+ *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
  * You may obtain a copy of the License at
- *
+ *
  *     http://www.apache.org/licenses/LICENSE-2.0
- *
+ *
  * Unless required by applicable law or agreed to in writing, software
  * distributed under the License is distributed on an "AS IS" BASIS,
  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
@@ -26,16 +26,154 @@
 package org.igniterealtime.xiff.bookmark
 {
 	import org.flexunit.asserts.assertEquals;
+	import org.igniterealtime.xiff.core.EscapedJID;

 	public class GroupChatBookmarkTest
 	{
-		[Test( description="Name checking" )]
+		[Test( description="JID checking" )]
+		public function testJid():void
+		{
+			var testValue:EscapedJID = new EscapedJID("batman@gotham-city.gov");
+			var ext:GroupChatBookmark = new GroupChatBookmark(testValue);
+
+			assertEquals( testValue.toString(), ext.jid.toString() );
+		}
+
+		[Test( description="name checking" )]
 		public function testName():void
 		{
-			var nameAttr:String = "batman";
-			var gcBookmark:GroupChatBookmark = new GroupChatBookmark("batman");
+			var testValue:String = "batman";
+			var ext:GroupChatBookmark = new GroupChatBookmark(new EscapedJID("batman@gotham-city.gov"), testValue);

-			assertEquals( nameAttr, gcBookmark.name );
+			assertEquals( testValue, ext.name );
 		}
+
+		[Test( description="autoJoin true checking" )]
+		public function testAutoJoinTrue():void
+		{
+			var testValue:Boolean = true;
+			var ext:GroupChatBookmark = new GroupChatBookmark(new EscapedJID("batman@gotham-city.gov"), "batman", testValue);
+
+			assertEquals( testValue, ext.autoJoin );
+		}
+
+		[Test( description="autoJoin false checking" )]
+		public function testAutoJoinFalse():void
+		{
+			var ext:GroupChatBookmark = new GroupChatBookmark(new EscapedJID("batman@gotham-city.gov"));
+
+			assertEquals( false, ext.autoJoin );
+		}
+
+		[Test( description="nickname checking" )]
+		public function testNickname():void
+		{
+			var testValue:String = "batman";
+			var ext:GroupChatBookmark = new GroupChatBookmark(new EscapedJID("batman@gotham-city.gov"), null, false, testValue);
+
+			assertEquals( testValue, ext.nickname );
+		}
+
+		[Test( description="password checking" )]
+		public function testPassword():void
+		{
+			var testValue:String = "secret";
+			var ext:GroupChatBookmark = new GroupChatBookmark(new EscapedJID("batman@gotham-city.gov"), null, false, null, testValue);
+
+			assertEquals( testValue, ext.password );
+		}
+
+		[Test( description="XML element name checking" )]
+		public function testElement():void
+		{
+			var elementName:String = "conference";
+
+			var ext:GroupChatBookmark = new GroupChatBookmark(new EscapedJID("batman@gotham-city.gov"));
+			var node:XML = ext.xml;
+
+			assertEquals( elementName, node.localName() );
+		}
+
+		[Test( description="parse from XML - jid" )]
+		public function testParseJid():void
+		{
+			var incoming:XML = <conference name='Council of Oberon'
+                  autojoin='true'
+                  jid='council@conference.underhill.org'>
+				<nick>Puck</nick>
+			  </conference>;
+			var testValue:String = "council@conference.underhill.org";
+
+			var ext:GroupChatBookmark = new GroupChatBookmark(new EscapedJID("temp@temp.tmp"));
+			ext.xml = incoming;
+
+			assertEquals( testValue, ext.jid.toString() );
+		}
+
+		[Test( description="parse from XML - name" )]
+		public function testParseName():void
+		{
+			var incoming:XML = <conference name='Council of Oberon'
+                  autojoin='true'
+                  jid='council@conference.underhill.org'>
+				<nick>Puck</nick>
+			  </conference>;
+			var testValue:String = "Council of Oberon";
+
+			var ext:GroupChatBookmark = new GroupChatBookmark(new EscapedJID("temp@temp.tmp"));
+			ext.xml = incoming;
+
+			assertEquals( testValue, ext.name );
+		}
+
+		[Test( description="parse from XML - autoJoin" )]
+		public function testParseAutoJoin():void
+		{
+			var incoming:XML = <conference name='Council of Oberon'
+                  autojoin='true'
+                  jid='council@conference.underhill.org'>
+				<nick>Puck</nick>
+			  </conference>;
+			var testValue:Boolean = true;
+
+			var ext:GroupChatBookmark = new GroupChatBookmark(new EscapedJID("temp@temp.tmp"));
+			ext.xml = incoming;
+
+			assertEquals( testValue, ext.autoJoin );
+		}
+
+		[Test( description="parse from XML - nickname" )]
+		public function testParseNickname():void
+		{
+			var incoming:XML = <conference name='Council of Oberon'
+                  autojoin='true'
+                  jid='council@conference.underhill.org'>
+				<nick>Puck</nick>
+			  </conference>;
+			var testValue:String = "Puck";
+
+			var ext:GroupChatBookmark = new GroupChatBookmark(new EscapedJID("temp@temp.tmp"));
+			ext.xml = incoming;
+
+			assertEquals( testValue, ext.nickname );
+		}
+
+		[Test( description="parse from XML - password" )]
+		public function testParsePassword():void
+		{
+			var incoming:XML = <conference name='Council of Oberon'
+                  autojoin='true'
+                  jid='council@conference.underhill.org'>
+				<nick>Puck</nick>
+				<password>OMG do not use</password>
+			  </conference>;
+			var testValue:String = "OMG do not use";
+
+			var ext:GroupChatBookmark = new GroupChatBookmark(new EscapedJID("temp@temp.tmp"));
+			ext.xml = incoming;
+
+			assertEquals( testValue, ext.password );
+		}
+
 	}
 }


Transferred from the Adobe Open Source Subversion Repository

Revision: 23246
Author:   cframpto@adobe.com
Date:     2011-12-20T17:40:08.069454Z

Log Message:
-----------
Rollback 23243.  If comment followed header it was stripped as well.

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

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

--- frameworks/projects/automation/src/mx/automation/events/AutomationDragEvent.as
+++ frameworks/projects/automation/src/mx/automation/events/AutomationDragEvent.as
@@ -1,3 +1,13 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+//  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.events
 {


Transferred from the Adobe Open Source Subversion Repository

Revision: 13126
Author:   chaase@adobe.com
Date:     2009-12-21T21:10:02.399245Z

Log Message:
-----------
Fix to bug when ending Parallel effects with Resize effect children. There were three problems here:
- Resize effects were being mis-ordered inside of the Parallel, causing them to be ended out of order. If any of these effects were order-dependent, this caused a problem in ending at the right values.
- Animation usually populates the values of an effect lazily, just when it actually starts. So an effect with a startDelay would not get real from/to values until the startDelay elapsed. This meant that an effect that was end()'d prematurely would send out a bogus final value because it had not yet been populated with real from/to values.
- Repeating/reversing animations were not being end()'d at the proper beginning/end value, based on their repeatCount (they would always end at the full durection of whatever iteration they were currently in).

QE notes: None
Doc notes: None
Bugs: SDK-24755
Reviewer: Jason
Tests run: Checkintests, Mustella spark/effects, mx/effects
Is noteworthy for integration: Yes: reported in Catalyst bug bash

Modified Paths:
--------------
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/effects/Effect.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/effects/animation/Animation.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/effects/effectClasses/ParallelInstance.as</path>

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

--- frameworks/projects/framework/src/mx/effects/effectClasses/ParallelInstance.as
+++ frameworks/projects/framework/src/mx/effects/effectClasses/ParallelInstance.as
@@ -198,9 +198,12 @@
 	{
 		super.addChildSet(childSet);

-		// Make sure that the Rotate is in the beginning of the array because it needs to be
-		// before any Move effects
-		if (childSet.length > 0)
+		// Make sure that spark Resize and mx Rotate are in the beginning of the
+        // array because they need to be before any Move effects
+        // TODO: There is logic at the Animation level to handle processing
+        // width/height values before any others for any animation frame. We
+        // maybe be able to remove this Resize-reordering logic altogether.
+		if (childSets.length > 1 && childSet.length > 0)
 		{
 			var compChild:CompositeEffectInstance = childSet[0] as CompositeEffectInstance;

@@ -216,8 +219,24 @@
             if (resizeEffectType && (childSet[0] is resizeEffectType ||
                 (compChild != null && compChild.hasResizeInstance())))
             {
-                // Remove item we just added to the end and place it at the beginning
-                childSets.unshift(childSets.pop());
+                // Remove item we just added to the end and place it at the beginning,
+                // but after any other Resize effects
+
+                var resizeChildSet:Array = childSets.pop();
+                var insertionIndex:int = 0;
+                for (var i:int = 0; i < childSets.length; ++i)
+                {
+                    var currentChildSet:Array = childSets[i];
+                    var currentChildSetComposite:CompositeEffectInstance =
+                        currentChildSet[0] as CompositeEffectInstance;
+                    if (!(currentChildSet[0] is resizeEffectType) &&
+                        (!currentChildSetComposite || !currentChildSetComposite.hasResizeInstance()))
+                    {
+                        break;
+                    }
+                    ++insertionIndex;
+                }
+                childSets.splice(insertionIndex, 0, resizeChildSet);
             }
 			// Check if the child is a Rotate and also check if it is a composite effect that has a Rotate
             else if (childSet[0] is RotateInstance || (compChild != null && compChild.hasRotateInstance()))


Transferred from the Adobe Open Source Subversion Repository

Revision: 9073
Author:   chaase@adobe.com
Date:     2009-08-04T20:42:36.903355Z

Log Message:
-----------
Fixed a regression with Fade (dealing with non-IVisualElementContainer parented objects, like Popup) and improved seeking behavior with repeatDelay on composite effects. Also improved effect seeking in general, though it's still not perfect.

QE notes: Mustella failure of Sequence_seek_IntoRC2 is erroenous (the test bitmap is wrong, based on bad earlier behavior)
Doc notes: None
Bugs: SDK-22285, sdk-22555
Reviewer: Jason
Tests run: checkintests, Mustella (spark/effects, mx/effects)
Is noteworthy for integration: No

Modified Paths:
--------------
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/effects/animation/Animation.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/effects/effectClasses/CompositeEffectInstance.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/effects/Fade.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/effects/effectClasses/SequenceInstance.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/effects/AnimateTransform.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/effects/effectClasses/ParallelInstance.as</path>

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

--- frameworks/projects/framework/src/mx/effects/effectClasses/SequenceInstance.as
+++ frameworks/projects/framework/src/mx/effects/effectClasses/SequenceInstance.as
@@ -17,6 +17,7 @@
 import mx.effects.Effect;
 import mx.effects.EffectInstance;
 import mx.effects.IEffectInstance;
+import mx.effects.Sequence;
 import mx.effects.Tween;

 use namespace mx_internal;
@@ -142,7 +143,11 @@
      */
     override public function set playheadTime(value:Number):void
     {
-        /**
+        var prevPlayheadTime:Number = playheadTime;
+        // Seek in the SequenceInstance itself, which advances the
+        // Tween timer running on the effect
+        super.playheadTime = value;
+        /*
         * Behavior of this command depends on what state we're in:
         * - if we're in a startDelay, then cut down the playheadTime by
         * the amount of time we have left to sleep
@@ -163,15 +168,35 @@
         *   the beginning (playing effects with no duration or skipping,
         *   then playing and setting the appropriate playheadTime for
         *   the correct child effect)
-        *
-        *  @langversion 3.0
-        *  @playerversion Flash 9
-        *  @playerversion AIR 1.1
-        *  @productversion Flex 3
         */
-        // FIXME (chaase): handle startDelay
-
-        if (value < playheadTime)
+        var compositeDur:Number = Sequence(effect).compositeDuration;
+        var firstCycleDur:Number = compositeDur + startDelay + repeatDelay;
+        var laterCycleDur:Number = compositeDur + repeatDelay;
+        // totalDur is only sensible/used when repeatCount != 0
+        var totalDur:Number = firstCycleDur + laterCycleDur * (repeatCount - 1);
+        var childPlayheadTime:Number;
+        if (value <= firstCycleDur)
+        {
+            childPlayheadTime = Math.min(value - startDelay, compositeDur);
+            playCount = 1;
+        }
+        else
+        {
+            if (value >= totalDur && repeatCount != 0)
+            {
+                childPlayheadTime = compositeDur;
+                playCount = repeatCount;
+            }
+            else
+            {
+                var valueAfterFirstCycle:Number = value - firstCycleDur;
+                childPlayheadTime = valueAfterFirstCycle % laterCycleDur;
+                childPlayheadTime = Math.min(childPlayheadTime, compositeDur);
+                playCount = 1 + valueAfterFirstCycle / laterCycleDur;
+            }
+        }
+
+        if (childPlayheadTime < prevPlayheadTime)
         {
             // FIXME (chaase): Handle seeking back in time
             // idea: Maybe once we get playing a sequence in reverse
@@ -189,7 +214,9 @@
             {
                 // If we end up skipping past all child effects, then
                 // finish this Sequence effect when we're done
-                var finishWhenDone:Boolean = true;
+                var finishWhenDone:Boolean = repeatCount == 0 ?
+                    false :
+                    value >= totalDur;
                 var cumulativeDuration:Number = 0;
                 for (var i:int = 0; i < activeEffectQueue.length; ++i)
                 {
@@ -197,7 +224,7 @@
                     var startTime:Number = cumulativeDuration;
                     var endTime:Number = cumulativeDuration +
                         instances[0].actualDuration;
-                    if (value < endTime)
+                    if (childPlayheadTime < endTime)
                     {
                         finishWhenDone = false;
                         // These are the effects that should be active
@@ -208,7 +235,7 @@
                             playCurrentChildSet();
                         }
                         for (var k:int = 0; k < instances.length; k++)
-                            instances[k].playheadTime = (value - startTime);
+                            instances[k].playheadTime = (childPlayheadTime - startTime);
                         break;
                         // otherwise, skip to the next instance
                     }
@@ -255,9 +282,6 @@

             }
         }
-        // Seek in the SequenceInstance itself, which advances the
-        // Tween timer running on the effect
-        super.playheadTime = value;
     }

@@ -337,11 +361,14 @@
             activeEffectQueue = null;

             // Call stop on the currently playing set
-            var currentInstances:Array = queueCopy[currentSetIndex];
-            var currentCount:int = currentInstances.length;
-
-            for (var i:int = 0; i < currentCount; i++)
-                currentInstances[i].stop();
+            if (currentInstances)
+            {
+                var currentInstances:Array = queueCopy[currentSetIndex];
+                var currentCount:int = currentInstances.length;
+
+                for (var i:int = 0; i < currentCount; i++)
+                    currentInstances[i].stop();
+            }

             // For instances that have yet to run, we will delete them
             // without dispatching events.
@@ -478,18 +505,18 @@
         if (Object(childEffect).suspendBackgroundProcessing)
             UIComponent.resumeBackgroundProcessing();

+        for (var i:int = 0; i < currentSet.length; i++)
+        {
+            if (childEffect == currentSet[i])
+            {
+                currentSet.splice(i, 1);
+                break;
+            }
+        }
+
         // See endEffect, above.
         if (endEffectCalled)
             return;
-
-        for (var i:int = 0; i < currentSet.length; i++)
-        {
-            if (childEffect == currentSet[i])
-            {
-                currentSet.splice(i, 1);
-                break;
-            }
-        }

         if (currentSet.length == 0)
         {


Transferred from the Adobe Open Source Subversion Repository

Revision: 14743
Author:   chaase@adobe.com
Date:     2010-03-12T23:30:57.186697Z

Log Message:
-----------
QE notes: spark/effects/Resize/Controls/Resize_Controls_Button_FromTo needs to be fixed to reflect the new behavior; effects that set playheadTime >= the effect duration no longer automatically dispatch an effectEnd event. Also, basictests EasingTests was updated to reflect new (correct) behavior.
Doc notes: none
Bugs: sdk-25352, sdk-25270, sdk-25269
Reviewer: Jason (+Ely for sdk-25352's AnimateTransformInstance)
Tests run: checkintests, Mustella mx/effects/Parallel|Sequence, spark/effects
Is noteworthy for integration: no

Modified Paths:
--------------
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/effects/animation/Animation.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/effects/effectClasses/CompositeEffectInstance.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/tests/basicTests/spark/scripts/EasingTestScript.mxml</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/effects/supportClasses/AddActionInstance.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/effects/effectClasses/SequenceInstance.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/effects/supportClasses/AnimateTransformInstance.as</path>

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

--- frameworks/projects/framework/src/mx/effects/effectClasses/SequenceInstance.as
+++ frameworks/projects/framework/src/mx/effects/effectClasses/SequenceInstance.as
@@ -97,6 +97,12 @@
      */
     private var startTime:Number = 0;

+    /**
+     *  @private
+     *  Used internally to track when the effect is paused
+     */
+    private var isPaused:Boolean = false;
+
     //--------------------------------------------------------------------------
     //
     //  Properties
@@ -153,133 +159,148 @@
         * the amount of time we have left to sleep
         * - if the playheadTime doesn't get us past the startDelay, then
         * reduce the amount of startDelay appropriately and return
-        * - if the playheadTime is greater than the current playheadTime
-        *   - if the playheadTime puts the sequence into a different
-        *   child effect, end the currently playing child effect,
-        *   play intervening ones with no duration (or skip?),
-        *   and start the ones that should be active and set their
-        *   playheadTime appropriately
-        *   - if the playheadTime is still in the currently playing effects
-        *   just set the appropriate playheadTime in that effect
-        * - else the playheadTime is less than the current time
-        *   - if the playheadTime is still in the currently playing effect
-        *   just set the appropriate playheadTime in the current effect
-        *   - else end the currently playing effect and start over from
-        *   the beginning (playing effects with no duration or skipping,
-        *   then playing and setting the appropriate playheadTime for
-        *   the correct child effect)
+        * - if the playheadTime is still in the currently playing effects
+        * just set the appropriate playheadTime in that effect
+        * - if the playheadTime puts the sequence into a later
+        * child effect, end the currently playing child effect,
+        * play and end the intervening ones,
+        * start the ones that should be active and set their
+        * playheadTime appropriately
+        * - else the playheadTime puts the sequence into an earlier child
+        * effect. Set the playhead time to 0 in the currently playing child
+        * effect and stop it. Play/stop earlier child effects until we get
+        * to the one we should be playing. Play it and set playheadTime
+        * appropriately
         */
+        var i:int, j:int, k:int;
         var compositeDur:Number = Sequence(effect).compositeDuration;
         var firstCycleDur:Number = compositeDur + startDelay + repeatDelay;
         var laterCycleDur:Number = compositeDur + repeatDelay;
         // totalDur is only sensible/used when repeatCount != 0
         var totalDur:Number = firstCycleDur + laterCycleDur * (repeatCount - 1);
-        var childPlayheadTime:Number;
+        var iterationPlayheadTime:Number;
         if (value <= firstCycleDur)
         {
-            childPlayheadTime = Math.min(value - startDelay, compositeDur);
+            iterationPlayheadTime = Math.min(value - startDelay, compositeDur);
             playCount = 1;
         }
         else
         {
             if (value >= totalDur && repeatCount != 0)
             {
-                childPlayheadTime = compositeDur;
+                iterationPlayheadTime = compositeDur;
                 playCount = repeatCount;
             }
             else
             {
                 var valueAfterFirstCycle:Number = value - firstCycleDur;
-                childPlayheadTime = valueAfterFirstCycle % laterCycleDur;
-                childPlayheadTime = Math.min(childPlayheadTime, compositeDur);
+                iterationPlayheadTime = valueAfterFirstCycle % laterCycleDur;
+                iterationPlayheadTime = Math.min(iterationPlayheadTime, compositeDur);
                 playCount = 1 + valueAfterFirstCycle / laterCycleDur;
             }
         }

-        if (childPlayheadTime < prevPlayheadTime)
-        {
-            // TODO (chaase): Handle seeking back in time
-            // idea: Maybe once we get playing a sequence in reverse
-            // working perfectly, seeking back in time should essentially
-            // 'play' (with zero duration) the child effects in reverse until
-            // we get to the proper effect for the seek time
-        }
-        else
-        {
-            // figure out if desired time is in currently playing effects
-            // if so, just seek them to the time
-            // else, end them, skip later effects, and play/seek the
-            // appropriate child effects
-            if (activeEffectQueue && activeEffectQueue.length > 0)
-            {
-                // If we end up skipping past all child effects, then
-                // finish this Sequence effect when we're done
-                var finishWhenDone:Boolean = repeatCount == 0 ?
-                    false :
-                    value >= totalDur;
-                var cumulativeDuration:Number = 0;
-                for (var i:int = 0; i < activeEffectQueue.length; ++i)
+        if (activeEffectQueue && activeEffectQueue.length  > 0)
+        {
+            // cumulativeDuration is the duration of child effects in this
+            // iteration thus far as we walk through the set of child effects
+            var cumulativeDuration:Number = 0;
+
+            // Step through the child effects in the sequence until we find the
+            // set that the requested playheadTime is in
+            for (i = 0; i < activeEffectQueue.length; ++i)
+            {
+                // temp holder for instances that we fast-forward or rewind
+                var childEffectInstances:Array;
+                // start/end times of current child effect we're looking at
+                var startTime:Number = cumulativeDuration;
+                var endTime:Number = cumulativeDuration + childSets[i][0].actualDuration;
+                cumulativeDuration = endTime;
+
+                // If iterationPlayheadTime is in between the start and end time for this
+                // effect, this must be the one we need to seek into
+                if (startTime <= iterationPlayheadTime && iterationPlayheadTime <= endTime)
                 {
-                    var instances:Array = childSets[i];
-                    var startTime:Number = cumulativeDuration;
-                    var endTime:Number = cumulativeDuration +
-                        instances[0].actualDuration;
-                    if (childPlayheadTime < endTime)
+                    // seting endEffectCalled to true keeps the next effect from
+                    // being started when we cause one to end. We'll start effects
+                    // manually when seeking, instead.
+                    endEffectCalled = true;
+
+                    // We're already playing the effect we should seek into
+                    if (currentSetIndex == i)
                     {
-                        finishWhenDone = false;
-                        // These are the effects that should be active
-                        // simply seek to the right time in the effect
-                        if (currentSetIndex != i)
+                        // Since we're already playing the right effect, just seek
+                        for (j = 0; j < currentSet.length; j++)
+                            currentSet[j].playheadTime = (iterationPlayheadTime - startTime);
+                    }
+                    else if (i < currentSetIndex)
+                    {
+                        // We're currently playing a child effect later than the one we
+                        // should seek into. First, rewind and stop the current effect
+                        for (j = 0; j < currentSet.length; j++)
                         {
-                            currentSetIndex = i;
-                            playCurrentChildSet();
+                            currentSet[j].playheadTime = 0;
+                            currentSet[j].stop();
                         }
-                        for (var k:int = 0; k < instances.length; k++)
-                            instances[k].playheadTime = (childPlayheadTime - startTime);
+                        // Next, play(), then stop() the previous effects back to
+                        // the one we want. This will cause these effects to set
+                        // values for their target properties at the start
+                        // of their animations, which is what we want when seeking
+                       // backwards
+                        for (j = currentSetIndex - 1; j > i; --j)
+                        {
+                            childEffectInstances = activeEffectQueue[j];
+                            for (k = 0; k < childEffectInstances.length; k++)
+                            {
+                                childEffectInstances[k].play();
+                                childEffectInstances[k].stop();
+                            }
+                        }
+                        // Now, play the right effect and seek into it
+                        currentSetIndex = i;
+                        playCurrentChildSet();
+                        for (k = 0; k < currentSet.length; k++)
+                        {
+                            currentSet[k].playheadTime = (iterationPlayheadTime - startTime);
+                            if (isPaused)
+                                currentSet[k].pause();
+                        }
                         break;
-                        // otherwise, skip to the next instance
                     }
-                    else
+                    else // i > currentSetIndex
                     {
-                        // setting endEffectCalled works around a side-effect
-                        // of the onEffectEnd() handler where it will
-                        // automatically launch the next child effect
-                        endEffectCalled = true;
-
-                        // if we're seeking past the currently playing
-                        // instance, end it
-                        if (currentSetIndex == i)
+                        // We need to seek into a child effect later than the
+                        // one we're currently playing. First, end the current effect.
+                        var currentEffectInstances:Array = currentSet.concat();
+                        for (j = 0; j < currentEffectInstances.length; j++)
+                            currentEffectInstances[j].end();
+
+                        // Next, play/end all child effects before the one we want
+                        // This will set the animated properties to their end values.
+                        for (k = currentSetIndex + 1; k < i; k++)
                         {
-                            for (var j:int = 0; j < instances.length; j++)
-                                instances[j].end();
+                            childEffectInstances = activeEffectQueue[k];
+                            for (var l:int = 0; l < childEffectInstances.length; l++)
+                            {
+                                childEffectInstances[l].play();
+                                childEffectInstances[l].end();
+                            }
                         }
-                        else
+                        // Finally, set the current child effect and seek into it
+                        currentSetIndex = i;
+                        playCurrentChildSet();
+                        for (k = 0; k < currentSet.length; k++)
                         {
-                            // more child effects to go: set up currentSet vars
-                            // to point to the appropriate ones
-                            currentSetIndex = i;
-                            var nextInstances:Array = activeEffectQueue[currentSetIndex];
-                            currentSet = [];
-                            var childEffect:EffectInstance;
-                            for (var l:int = 0; l < nextInstances.length; l++)
-                            {
-                                childEffect = nextInstances[l];
-                                currentSet.push(childEffect);
-                            }
-                            // Skip past effects by playing them with no duration
-                            for (l = 0; l < instances.length; l++)
-                                instances[l].playWithNoDuration();
+                            currentSet[k].playheadTime = (iterationPlayheadTime - startTime);
+                            if (isPaused)
+                                currentSet[k].pause();
                         }
-                        endEffectCalled = false;
                     }
-                    cumulativeDuration = endTime;
+                    endEffectCalled = false;
+
+                    // We're done, break out of the loop
+                    break;
                 }
-                if (finishWhenDone)
-                {
-                    finishRepeat();
-                    currentSetIndex = -1;
-                }
-
             }
         }
     }
@@ -296,6 +317,8 @@
      */
     override public function play():void
     {
+        isPaused = false;
+
         // Create a new queue.
         activeEffectQueue = [];

@@ -339,7 +362,7 @@
     override public function pause():void
     {
         super.pause();
-
+        isPaused = true;
         if (currentSet && currentSet.length > 0)
         {
             var n:int = currentSet.length;
@@ -355,6 +378,8 @@
      */
     override public function stop():void
     {
+        isPaused = false;
+
         if (activeEffectQueue && activeEffectQueue.length > 0)
         {
             var queueCopy:Array = activeEffectQueue.concat();
@@ -399,7 +424,7 @@
     override public function resume():void
     {
         super.resume();
-
+        isPaused = false;
         if (currentSet && currentSet.length > 0)
         {
             var n:int = currentSet.length;
@@ -477,6 +502,7 @@
                 }
             }
         }
+        isPaused = false;

         super.end();
     }


Transferred from the Adobe Open Source Subversion Repository

Revision: 11511
Author:   gruehle@adobe.com
Date:     2009-11-06T18:56:06.156108Z

Log Message:
-----------
Fix a couple focus styling bugs.

QE notes:
Doc notes:
Bugs: SDK-24019, SDK-24021
Reviewer: Kevin
Tests run: checkintests
Is noteworthy for integration: no

Modified Paths:
--------------
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/skins/spark/DefaultItemRenderer.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/components/supportClasses/ScrollBar.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/components/supportClasses/SkinnableContainerBase.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/components/VideoPlayer.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/components/supportClasses/SkinnableComponent.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/airframework/src/spark/components/windowClasses/TitleBar.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/skins/spark/FocusSkin.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/skins/spark/NumericStepperSkin.mxml</path>

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

--- frameworks/projects/spark/src/spark/components/supportClasses/ScrollBarBase.as
+++ frameworks/projects/spark/src/spark/components/supportClasses/ScrollBarBase.as
@@ -134,6 +134,7 @@
 //  Excluded APIs
 //--------------------------------------

+[Exclude(name="focusBlendMode", kind="style")]
 [Exclude(name="focusThickness", kind="style")]

 /**


replace neutral encampments after captured encampment has been destroyed

--- src/battlecode/client/viewer/render/DrawState.as
+++ src/battlecode/client/viewer/render/DrawState.as
@@ -1,7 +1,4 @@
 package battlecode.client.viewer.render {
-    import battlecode.client.viewer.render.DrawRobot;
-    import battlecode.client.viewer.render.DrawRobot;
-    import battlecode.common.GameConstants;
     import battlecode.common.MapLocation;
     import battlecode.common.ResearchType;
     import battlecode.common.RobotType;
@@ -247,7 +244,7 @@
                 if (o.parent) {
                     o.parent.removeChild(o);
                 }
-                delete neutralEncampments[s.getLocation()]; // TODO dont delete just hide
+                delete neutralEncampments[s.getLocation()];
             }

             var robot:DrawRobot = getRobot(s.getParentID());
@@ -261,6 +258,12 @@
             if (robot.getType() == RobotType.HQ) {
                 var hq:DrawRobot = robot.getTeam() == Team.A ? hqA : hqB;
                 hq.destroyUnit();
+            }
+
+            if (RobotType.isEncampment(robot.getType())) {
+                var encampment:DrawRobot = new DrawRobot(0, RobotType.ENCAMPMENT, Team.NEUTRAL);
+                encampment.setLocation(robot.getLocation());
+                neutralEncampments[robot.getLocation()] = encampment;
             }
         }


fix height map for encampments

fix height map for encampments

--- src/battlecode/client/viewer/render/DrawState.as
+++ src/battlecode/client/viewer/render/DrawState.as
@@ -329,7 +329,6 @@
         override public function visitSpawnSignal(s:SpawnSignal):* {
             var robot:DrawRobot = new DrawRobot(s.getRobotID(), s.getRobotType(), s.getTeam());
             robot.setLocation(s.getLocation());
-            groundRobots[s.getRobotID()] = robot;

             if (s.getRobotType() == RobotType.HQ) {
                 if (s.getTeam() == Team.A) hqA = robot.clone() as DrawRobot;
@@ -344,6 +343,9 @@
                     }
                     delete neutralEncampments[s.getLocation()];
                 }
+                encampments[s.getRobotID()] = robot;
+            } else {
+                groundRobots[s.getRobotID()] = robot;
             }
         }


Transferred from the Adobe Open Source Subversion Repository

Revision: 8031
Author:   egeorgie@adobe.com
Date:     2009-06-20T01:10:03.288554Z

Log Message:
-----------
Scrub the TODOs in the framework, convert to FIXMEs in the new convention and assigning an owner.

Doc Notes: N/A
Bugs: N/A
Reviewer: Deepa
tests: build, checkintests

Modified Paths:
--------------
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/primitives/supportClasses/StrokedElement.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/ProgressBar.as</path>
<path kind="file" action="M">/flex/sdk/trunk/development/eclipse/flex/flex4test/src/layouts/WheelLayout.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/components/Group.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/DateChooser.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/core/Container.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/effects/supportClasses/FadeInstance.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/components/supportClasses/Slider.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/components/supportClasses/ScrollBar.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/components/Spinner.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/effects/animation/Timeline.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/effects/AddAction.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/effects/Scale.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/effects/supportClasses/AnimateInstance.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/effects/Rotate.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/components/mediaClasses/VolumeBar.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/components/supportClasses/DropDownController.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/components/HSlider.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/collections/ModifiedCollectionView.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/skins/spark/ErrorSkin.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/effects/Move.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/components/SkinnableDataContainer.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/effects/AnimateTransform.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/styles/StyleManager.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/components/List.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/DataGrid.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/effects/supportClasses/MoveInstance.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/effects/effectClasses/SequenceInstance.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/flex4/src/spark/components/supportClasses/SkinnableComponent.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/effects/supportClasses/AnimateTransformInstance.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/effects/RemoveAction.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/utils/BitmapUtil.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/components/DataGroup.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/skins/spark/FocusSkin.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/primitives/supportClasses/GraphicElement.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/components/DropDownList.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/effects/CompositeEffect.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/effects/animation/MotionPath.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/utils/MatrixUtil.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/layouts/supportClasses/LayoutElementHelper.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/primitives/supportClasses/TextGraphicElement.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flash-integration/src/mx/flash/UIMovieClip.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/components/PopUpAnchor.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/components/mediaClasses/StreamingVideoSource.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/effects/effectClasses/PropertyChanges.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/components/supportClasses/ToggleButtonBase.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/effects/supportClasses/RemoveActionInstance.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/effects/Effect.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/layouts/VerticalLayout.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/primitives/pathSegments/LineSegment.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/core/UIComponent.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/components/VideoPlayer.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/effects/animation/Animation.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/effects/supportClasses/AnimateTransitionShaderInstance.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/primitives/RichEditableText.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/geom/Transform.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/utils/ObjectUtil.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/effects/supportClasses/AddActionInstance.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/components/supportClasses/ListBase.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/flex4/src/spark/primitives/Path.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/primitives/Rect.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/primitives/SimpleText.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/styles/StyleProtoChain.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/List.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/components/VSlider.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/components/SkinnableContainer.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/components/supportClasses/GroupBase.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/managers/CursorManagerImpl.as</path>

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

--- frameworks/projects/spark/src/spark/effects/supportClasses/AddActionInstance.as
+++ frameworks/projects/spark/src/spark/effects/supportClasses/AddActionInstance.as
@@ -123,7 +123,7 @@

     private function addChild(container:*, child:*):void
     {
-        // TODO: can remove once we're sure all parents are
+        // FIXME (rfrishbe): can remove once we're sure all parents are
         // IVisualElementContainers (Flash Component Kit)
         if (container is IVisualElementContainer)
            IVisualElementContainer(container).addElement(child);


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

--- frameworks/projects/spark/src/spark/effects/supportClasses/AddActionInstance.as
+++ frameworks/projects/spark/src/spark/effects/supportClasses/AddActionInstance.as
@@ -9,13 +9,13 @@
 //
 ////////////////////////////////////////////////////////////////////////////////

-package flex.effects.effectClasses
+package mx.effects.effectClasses
 {

 import flash.display.DisplayObject;
 import flash.display.DisplayObjectContainer;

-import flex.core.Group;
+import mx.components.Group;

 import mx.core.mx_internal;
 import mx.effects.effectClasses.ActionEffectInstance;