Transferred from the Adobe Open Source Subversion Repository

Revision: 19625
Author:   mcho@adobe.com
Date:     2011-01-06T19:54:43.761547Z

Log Message:
-----------
Added a few text alignment helper getters to StyleableTextField

QE notes:
Doc notes:
Bugs:
Reviewer: ryan, glenn
Tests run:
Is noteworthy for integration:

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

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

--- frameworks/projects/mobilecomponents/src/spark/components/supportClasses/StyleableTextField.as
+++ frameworks/projects/mobilecomponents/src/spark/components/supportClasses/StyleableTextField.as
@@ -24,6 +24,7 @@
 import flash.text.TextFieldType;
 import flash.text.TextFormat;
 import flash.text.TextFormatAlign;
+import flash.text.TextLineMetrics;
 import flash.ui.Keyboard;

 import mx.core.DesignLayer;
@@ -171,6 +172,7 @@
         {
             _measuredTextSize = new Point();
             invalidateTextSizeFlag = true;
+			invalidateBaselineBottomOffset = true;
         }

         if (invalidateTextSizeFlag)
@@ -304,6 +306,82 @@
         styleChanged("styleName");
     }

+	//----------------------------------
+	//  Text alignment helpers
+	//----------------------------------
+	/**
+	 *  Distance from the top edge of the containing text field to the text
+	 *
+	 *  @langversion 3.0
+	 *  @playerversion Flash 10.1
+	 *  @playerversion AIR 2.0
+	 *  @productversion Flex 4.5
+	 */
+	public function get textTopOffset():Number
+	{
+		// FIXME mcho:  add ascentShift style
+		var ascentShift:Number = 3;
+		// Height of gutter and the baseline
+		return StyleableTextField.TEXT_HEIGHT_PADDING/2 + ascentShift;
+	}
+
+	/**
+	 *  Distance from the bottom edge of the containing text field to the baseline
+	 *  of the last line of text
+	 *
+	 *  @langversion 3.0
+	 *  @playerversion Flash 10.1
+	 *  @playerversion AIR 2.0
+	 *  @productversion Flex 4.5
+	 */
+	public function get baselineBottomOffset():Number
+	{
+		commitStyles();
+
+		if (invalidateBaselineBottomOffset)
+		{
+			// getLineMetrics() returns strange numbers for an empty string,
+			// so instead we get the metrics for a non-empty string.
+			var isEmpty:Boolean = (text == "");
+			if (isEmpty)
+				super.text = "Wj";
+
+			var metrics:TextLineMetrics = getLineMetrics(0);
+
+			if (isEmpty)
+				super.text = "";
+
+			// bottom gutter and descent
+			_baselineBottomOffset = StyleableTextField.TEXT_HEIGHT_PADDING/2 + metrics.descent;
+			if (numLines == 1) // account for the extra leading on single line text
+				_baselineBottomOffset += metrics.leading;
+
+			invalidateBaselineBottomOffset = false;
+		}
+
+		return _baselineBottomOffset;
+	}
+
+
+
+	/**
+	 *  Distance between textTopOffset and baselineBottomOffset.  Essentially
+	 *  the height of the first line of text to the baseline of the bottom line
+	 *  of text
+	 *
+	 *  @langversion 3.0
+	 *  @playerversion Flash 10.1
+	 *  @playerversion AIR 2.0
+	 *  @productversion Flex 4.5
+	 */
+	public function get textTopToLastBaselineHeight() :Number
+	{
+		return measuredTextSize.y - textTopOffset - baselineBottomOffset;
+	}
+
+
+
+
     //--------------------------------------------------------------------------
     //
     //  IDisplayText implementation
@@ -341,6 +419,7 @@
         super.text = value;
         _isTruncated = false;
         invalidateTextSizeFlag = true;
+		invalidateBaselineBottomOffset = true;

         if (hasEventListener(FlexEvent.VALUE_COMMIT))
             dispatchEvent(new FlexEvent(FlexEvent.VALUE_COMMIT));
@@ -643,6 +722,7 @@
         replaceText(selectionAnchorPosition, selectionActivePosition, text);
         dispatchEvent(new FlexEvent(FlexEvent.VALUE_COMMIT));
         invalidateTextSizeFlag = true;
+		invalidateBaselineBottomOffset = true;
     }

     /**
@@ -665,6 +745,7 @@
         super.appendText(text);
         dispatchEvent(new FlexEvent(FlexEvent.VALUE_COMMIT));
         invalidateTextSizeFlag = true;
+		invalidateBaselineBottomOffset = true;
     }

     /**
@@ -797,6 +878,7 @@
             // changed
             invalidateTextSizeFlag = true;
             invalidateBaselinePosition = true;
+			invalidateBaselineBottomOffset = true;
         }
     }

@@ -919,6 +1001,7 @@
             _isTruncated = true;
             invalidateTextSizeFlag = true;
             invalidateBaselinePosition = true;
+			invalidateBaselineBottomOffset = true;

             // Make sure all text is visible
             scrollH = 0;
@@ -971,6 +1054,7 @@
         if (!(event is TextOperationEvent))
         {
             invalidateTextSizeFlag = true;
+			invalidateBaselineBottomOffset = true;

             var newEvent:TextOperationEvent = new TextOperationEvent(event.type);

@@ -1620,6 +1704,17 @@
      */
     private var _baselinePosition:Number;

+	/**
+	 *  @private
+	 */
+	private var invalidateBaselineBottomOffset:Boolean = true;
+
+	/**
+	 *  @private
+	 */
+	private var _baselineBottomOffset:Number;
+
+
     /**
      *  @private
      *  The padding to be added to textWidth to get the width


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

--- frameworks/projects/mobilecomponents/src/spark/styles/metadata/StyleableTextFieldTextStyles.as
+++ frameworks/projects/mobilecomponents/src/spark/styles/metadata/StyleableTextFieldTextStyles.as
@@ -1,4 +1,25 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+//  ADOBE SYSTEMS INCORPORATED
+//  Copyright 2005-2010 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.
+//
+////////////////////////////////////////////////////////////////////////////////

+/**
+ *  Color of text in the component, including the component label.
+ *
+ *  The default value for the Halo theme is 0x0B333C.
+ *  The default value for the Spark theme is 0x000000.
+ *  The default value for the Mobile theme is 0xFFFFFF.
+ *
+ *  @langversion 3.0
+ *  @playerversion AIR 2.5
+ *  @productversion Flex 4.5
+ */
 [Style(name="color", type="uint", format="Color", inherit="yes")]

 /**


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

--- frameworks/projects/automation/src/mx/automation/delegates/DragManagerAutomationImpl.as
+++ frameworks/projects/automation/src/mx/automation/delegates/DragManagerAutomationImpl.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.delegates
 {


Transferred from the Adobe Open Source Subversion Repository

Revision: 19851
Author:   mcho@adobe.com
Date:     2011-01-20T23:07:11.305461Z

Log Message:
-----------
More precise text alignment for mobile components

QE notes: Components with tend to be narrower and shorter for the View Menu.  Must update baselines that use x, y, width, height.
Doc notes: None
Bugs:
Reviewer: Ryan, Jason Szeto, Jason SJ, Glenn
Tests run:
Is noteworthy for integration: No

Modified Paths:
--------------
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobilecomponents/src/spark/components/supportClasses/StyleableTextField.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobiletheme/src/spark/skins/mobile/TextAreaSkin.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobiletheme/src/spark/skins/mobile/ViewMenuItemSkin.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobiletheme/src/spark/skins/mobile/supportClasses/ButtonSkinBase.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobiletheme/src/spark/skins/mobile/supportClasses/MobileSkin.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobiletheme/src/spark/skins/mobile/ActionBarSkin.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobilecomponents/src/spark/components/IconItemRenderer.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobiletheme/src/spark/skins/mobile/supportClasses/TabbedViewNavigatorButtonBarButtonSkinBase.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobiletheme/src/spark/skins/mobile/supportClasses/TextSkinBase.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobilecomponents/src/spark/components/LabelItemRenderer.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobiletheme/src/spark/skins/mobile/ButtonSkin.as</path>

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

--- frameworks/projects/mobiletheme/src/spark/skins/mobile/supportClasses/ButtonSkinBase.as
+++ frameworks/projects/mobiletheme/src/spark/skins/mobile/supportClasses/ButtonSkinBase.as
@@ -241,6 +241,7 @@

         var labelWidth:Number = 0;
         var labelHeight:Number = 0;
+		var textDescent:Number = 0;
         var iconDisplay:DisplayObject = getIconDisplay();

         // reset text if it was truncated before.
@@ -248,17 +249,13 @@
             labelDisplay.text = hostComponent.label;
         labelDisplay.commitStyles();

-        if (labelDisplay.text)
-        {
-            // +1 originates from MX Button without explaination
-            var textSize:Point = labelDisplay.measuredTextSize;
-            labelWidth = textSize.x + 1;
-            labelHeight = textSize.y;
-        }
-        else if (!iconDisplay)
-        {
-            // only get empty label height when there no icon is present
-            labelHeight = measureText("Wj").height + UITextField.TEXT_HEIGHT_PADDING;
+		// we want to get the label's width and height if we have text or there's
+		// no icon present
+        if (labelDisplay.text != "" || !iconDisplay)
+        {
+            labelWidth = getElementPreferredWidth(labelDisplay);
+            labelHeight = getElementPreferredHeight(labelDisplay);
+			textDescent = labelDisplay.getLineMetrics(0).descent;
         }

         var w:Number = layoutPaddingLeft + layoutPaddingRight;
@@ -291,8 +288,11 @@
         }
         else
         {
+			// When positioning the icon on the top or the bottom the text should be positioned
+			// according to its full height (including descent) not just the baseline.  We add
+			// textDescent to accomodate for the difference
             w += Math.max(labelWidth, iconWidth);
-            h += labelHeight + iconHeight;
+            h += labelHeight + iconHeight + textDescent;
             if (labelHeight && iconHeight)
                 h += layoutGap;
         }
@@ -327,25 +327,21 @@
         var textWidth:Number = 0;
         var textHeight:Number = 0;
         var textDescent:Number = 0;
-
+		var textLeading:Number = 0;
+
         // reset text if it was truncated before.
         if (hostComponent && labelDisplay.isTruncated)
             labelDisplay.text = hostComponent.label;
         labelDisplay.commitStyles();
-
-        if (hostComponent && hostComponent.label != "")
-        {
-            // +1 originates from MX Button without explaination
-            var textSize:Point = labelDisplay.measuredTextSize;
-            textWidth = textSize.x + 1;
-            textHeight = textSize.y;
-            textDescent = labelDisplay.getLineMetrics(0).descent;
-        }
-        else
-        {
-            var metrics:TextLineMetrics = measureText("Wj");
-            textHeight = metrics.height + UITextField.TEXT_HEIGHT_PADDING;
+
+
+        if (hostComponent)
+        {
+			var metrics:TextLineMetrics = labelDisplay.getLineMetrics(0);
+            textWidth = getElementPreferredWidth(labelDisplay);
+            textHeight = getElementPreferredHeight(labelDisplay);
             textDescent = metrics.descent;
+			textLeading = metrics.leading;
         }

         var viewWidth:Number = unscaledWidth;
@@ -386,7 +382,7 @@
             }

             // button viewHeight may be smaller than the labelDisplay textHeight
-            labelHeight = Math.min(viewHeight, textHeight);
+            labelHeight = Math.min(viewHeight - (labelDisplay.measuredTextSize.y - textHeight), textHeight);
             labelX += ((viewWidth - labelWidth - iconWidth -
                 horizontalGap - layoutPaddingLeft - layoutPaddingRight) / 2) + layoutPaddingLeft;

@@ -402,9 +398,7 @@

             iconY = ((viewHeight - iconHeight - layoutPaddingTop - layoutPaddingBottom) / 2) + layoutPaddingTop;

-            // vertial center labelDisplay based on ascent
-            // text "height" = min(measuredTextSize.y, viewHeight) - descent + gutter
-            labelY = ((viewHeight - labelHeight + textDescent - StyleableTextField.TEXT_HEIGHT_PADDING) / 2);
+			labelY = (viewHeight - labelHeight) / 2;
         }
         else
         {
@@ -431,16 +425,23 @@
             labelX = layoutPaddingLeft;
             iconX += ((viewWidth - iconWidth - layoutPaddingLeft - layoutPaddingRight) / 2) + layoutPaddingLeft;

+			// If there's text, when positioning the icon on the top or the bottom the text should
+			// be positioned according to its full height (including descent), not just the baseline
+			// if there's text
+			var alignmentLabelHeight:Number = labelHeight;
+			if (labelDisplay.text != "")
+				alignmentLabelHeight += textDescent;
+
             if (iconPlacement == IconPlacement.BOTTOM)
             {
-                labelY += ((viewHeight - labelHeight - iconHeight -
+                labelY += ((viewHeight - alignmentLabelHeight - iconHeight -
                     layoutPaddingTop - layoutPaddingBottom - verticalGap) / 2) + layoutPaddingTop;
-                iconY += labelY + labelHeight + verticalGap;
+                iconY += labelY + alignmentLabelHeight + verticalGap;
             }
             else
             {
                 // label bottom is constrained by layoutPaddingBottom
-                labelY = viewHeight - layoutPaddingBottom - labelHeight;
+                labelY = viewHeight - layoutPaddingBottom - alignmentLabelHeight;

                 // icon is vertically centered in the space above the label
                 iconY = Math.max(((labelY - iconHeight - verticalGap) / 2), layoutPaddingTop);
@@ -448,7 +449,8 @@
         }

         labelX = Math.max(0, Math.round(labelX));
-        labelY = Math.max(0, Math.round(labelY));
+		// text looks better a little high as opposed to low, so we use floor instead of round
+        labelY = Math.max(0, Math.floor(labelY));

         labelDisplay.commitStyles();
         setElementSize(labelDisplay, labelWidth, labelHeight);


Transferred from the Adobe Open Source Subversion Repository

Revision: 19498
Author:   jasonsj@adobe.com
Date:     2010-12-21T02:16:56.447761Z

Log Message:
-----------
Initial mobile theme ButtonBar and iOS ActionBar Button skins.
Removed DiscouragedForProfile metadata from ButtonBar and HSlider.
Fixed line endings in FXG files.
Removed unnecessary winding="evenOdd" in FXG.

QE notes: Use styleName="ios" in ActionBar buttons in navigationContent and actionContent.
Doc notes:
Bugs:
Reviewer: jszeto
Tests run: checkintests
Is noteworthy for integration: Yes

Modified Paths:
--------------
106 paths were modified

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

--- frameworks/projects/mobiletheme/src/spark/skins/mobile/supportClasses/ButtonBarButtonSkinBase.as
+++ frameworks/projects/mobiletheme/src/spark/skins/mobile/supportClasses/ButtonBarButtonSkinBase.as
@@ -0,0 +1,96 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+//  ADOBE SYSTEMS INCORPORATED
+//  Copyright 2010 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 spark.skins.mobile.supportClasses
+{
+import flash.display.DisplayObject;
+import flash.display.Graphics;
+import flash.events.Event;
+
+import mx.core.DPIClassification;
+import mx.events.FlexEvent;
+
+import spark.components.ButtonBarButton;
+import spark.components.supportClasses.ButtonBase;
+import spark.components.supportClasses.ViewNavigatorBase;
+import spark.skins.mobile.ButtonSkin;
+
+/**
+ *  ButtonBarButton skin base class. Adds optional support for selected state.
+ *
+ *  @langversion 3.0
+ *  @playerversion Flash 10
+ *  @playerversion AIR 2.5
+ *  @productversion Flex 4.5
+ */
+public class ButtonBarButtonSkinBase extends ButtonSkin
+{
+    //--------------------------------------------------------------------------
+    //
+    //  Constructor
+    //
+    //--------------------------------------------------------------------------
+
+    /**
+     *  Constructor.
+     *
+     *  @langversion 3.0
+     *  @playerversion Flash 10
+     *  @playerversion AIR 2.5
+     *  @productversion Flex 4.5
+     */
+    public function ButtonBarButtonSkinBase()
+    {
+        super();
+    }
+
+    //--------------------------------------------------------------------------
+    //
+    //  Properties
+    //
+    //--------------------------------------------------------------------------
+
+    /**
+     *  Size of corner radii of button borders.
+     *
+     *  @langversion 3.0
+     *  @playerversion Flash 10
+     *  @playerversion AIR 2.5
+     *  @productversion Flex 4.5
+     */
+    protected var cornerRadius:int;
+
+    /**
+     *  Class to use for the border in the selected state.
+     *
+     *  @langversion 3.0
+     *  @playerversion Flash 10
+     *  @playerversion AIR 2.5
+     *  @productversion Flex 4.5
+     */
+    protected var selectedBorderSkin:Class;
+
+    /**
+     *  @private
+     */
+    override protected function getBorderClassForCurrentState():Class
+    {
+        var isSelected:Boolean = currentState.indexOf("Selected") >= 0;
+
+        if (isSelected && selectedBorderSkin)
+            return selectedBorderSkin;
+        else if (isSelected || currentState.indexOf("down") >= 0)
+            return downBorderSkin;
+        else
+            return upBorderSkin;
+    }
+}
+}


Transferred from the Adobe Open Source Subversion Repository

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

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

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

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

--- frameworks/projects/spark/src/spark/components/supportClasses/SkinnableComponent.as
+++ frameworks/projects/spark/src/spark/components/supportClasses/SkinnableComponent.as
@@ -1,15 +1,4 @@
-////////////////////////////////////////////////////////////////////////////////
-//
-//  ADOBE SYSTEMS INCORPORATED
-//  Copyright 2008 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.
-//
-////////////////////////////////////////////////////////////////////////////////
-
-// AdobePatentID="B976"
+

 package spark.components.supportClasses
 {


Transferred from the Adobe Open Source Subversion Repository

Revision: 19635
Author:   aharui@adobe.com
Date:     2011-01-07T00:25:18.039632Z

Log Message:
-----------
revert the layout changes from svn 18635.  Management feels that there isn't enough time to thoroughly test the changes.

Modified Paths:
--------------
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/layouts/TileLayout.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/components/supportClasses/TextBase.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/framework/src/mx/managers/layoutClasses/PriorityQueue.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/components/supportClasses/ScrollerLayout.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mx/src/mx/core/Application.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobiletheme/src/spark/skins/mobile/ViewNavigatorApplicationSkin.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobiletheme/src/spark/skins/mobile/SkinnableContainerSkin.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/components/supportClasses/SkinnableComponent.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/components/RichEditableText.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/framework/src/mx/core/UIComponent.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/framework/src/mx/controls/SWFLoader.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/primitives/BitmapImage.as</path>
<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/primitives/supportClasses/GraphicElement.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/layouts/BasicLayout.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobilecomponents/src/spark/components/IconItemRenderer.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/components/Group.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobiletheme/src/spark/skins/mobile/ViewNavigatorSkin.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/components/PopUpAnchor.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/flash-integration/src/mx/flash/UIMovieClip.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/layouts/supportClasses/LinearLayoutVector.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/framework/src/mx/events/FlexEvent.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/airspark/src/spark/components/Window.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/framework/src/mx/styles/StyleProtoChain.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/core/SpriteVisualElement.as</path>
<path kind="file" action="D">/private/flex/sdk/branches/hero_private/frameworks/projects/framework/src/mx/core/IContainerInvalidating.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/skins/spark/DefaultItemRenderer.as</path>
<path kind="file" action="D">/private/flex/sdk/branches/hero_private/frameworks/projects/framework/src/mx/managers/ILayoutManagerContainerClient.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/DataGrid.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/components/supportClasses/GroupBase.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/layouts/VerticalLayout.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobiletheme/src/spark/skins/mobile/TabbedViewNavigatorApplicationSkin.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/framework/src/mx/styles/IStyleManager.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/framework/src/mx/core/ILayoutElement.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobiletheme/src/spark/skins/mobile/TextAreaSkin.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/components/gridClasses/GridLayout.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/airframework/src/mx/core/Window.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/skins/spark/TextFieldGridItemRendererInclude.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/framework/src/mx/styles/StyleManagerImpl.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mx/src/mx/core/Container.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/framework/src/mx/managers/LayoutManager.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/layouts/HorizontalLayout.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/components/Application.as</path>

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

--- frameworks/projects/spark/src/spark/skins/spark/TextFieldGridItemRendererInclude.as
+++ frameworks/projects/spark/src/spark/skins/spark/TextFieldGridItemRendererInclude.as
@@ -777,72 +777,6 @@
     //
     //--------------------------------------------------------------------------

-    //----------------------------------
-    //  estimatedHeight
-    //----------------------------------
-
-    /**
-     *  @private
-     *  Storage for the estimatedHeight property.
-     */
-    private var _estimatedHeight:Number;
-
-    /**
-     *  @private
-     *
-     *  The height a component is likely to be given at layout time.  It is
-     *  determined by examining the parent's estimatedHeight, and the
-     *  component's percentHeight, explicitHeight, top and bottom constraints.
-     *  It is NaN if there isn't enough information to compute the height.
-     *  The component can use this information in calculating its
-     *  measuredWidth if the measuredWidth is dependent on the layout
-     *  height.
-     *
-     *  @default NaN
-     *
-     *  @langversion 3.0
-     *  @playerversion Flash 10.2
-     *  @playerversion AIR 2.0
-     *  @productversion Flex 4.5
-     */
-    public function get estimatedHeight():Number
-    {
-        return _estimatedHeight;
-    }
-
-    //----------------------------------
-    //  estimatedWidth
-    //----------------------------------
-
-    /**
-     *  @private
-     *  Storage for the estimatedWidth property.
-     */
-    private var _estimatedWidth:Number;
-
-    /**
-     *  @private
-     *
-     *  The width a component is likely to be given at layout time.  It is
-     *  determined by examining the parent's estimatedWidth, and the
-     *  component's percentWidth, explicitWidth, left and right constraints.
-     *  It is NaN if there isn't enough information to compute the width.
-     *  The component can use this information in calculating its
-     *  measuredHeight if the measuredHeight is dependent on the layout
-     *  width.
-     *
-     *  @default NaN
-     *
-     *  @langversion 3.0
-     *  @playerversion Flash 10.2
-     *  @playerversion AIR 2.0
-     *  @productversion Flex 4.5
-     */
-    public function get estimatedWidth():Number
-    {
-        return _estimatedWidth;
-    }
-
     /**
      *  @private
      */
@@ -1117,22 +1051,6 @@
                                     postLayoutTranslation:Vector3D = null,
                                     invalidateLayout:Boolean = true):void
     {
-    }
-
-    /**
-     *  @private
-     *
-     *  @langversion 3.0
-     *  @playerversion Flash 10.2
-     *  @playerversion AIR 2.0
-     *  @productversion Flex 4.5
-     */
-    public function setEstimatedSize(estimatedWidth:Number = NaN,
-                                     estimatedHeight:Number = NaN,
-                                     invalidateSize:Boolean = true):void
-    {
-        _estimatedWidth = estimatedWidth;
-        _estimatedHeight = estimatedHeight;
     }

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


- change: changed DisplayPosition#parseTransform to use GeomUtil matrix conversion method

git-svn-id: e38e7cdd6ace00d8230583a2d3b43e9a55f5c011@548 bc4816be-ef27-423a-9c4d-fc420be121a2

--- src/reprise/css/propertyparsers/DisplayPosition.as
+++ src/reprise/css/propertyparsers/DisplayPosition.as
@@ -11,6 +11,8 @@

 package reprise.css.propertyparsers
 {
+	import reprise.utils.GeomUtil;
+
 	import flash.geom.Matrix;

 	import reprise.core.reprise;
@@ -204,13 +206,7 @@
 					}
 					case 'matrix' :
 					{
-						var mappings : Array = ['a', 'c', 'b', 'd', 'tx', 'ty'];
-						var matrix : Matrix = new Matrix();
-						for (i = rawParams.length; i--;)
-						{
-							matrix[mappings[i]] = parseFloat(rawParams[i]);
-						}
-						parameters[0] = matrix;
+						parameters[0] = GeomUtil.CSSMatrixParametersToMatrix(rawParams);
 						break;
 					}
 					default :


Fixed getKeyLabel: getting value from fields

--- collect-flex/collect-flex-client/src/generated/flex/org/openforis/collect/model/proxy/EntityProxy.as
+++ collect-flex/collect-flex-client/src/generated/flex/org/openforis/collect/model/proxy/EntityProxy.as
@@ -149,18 +149,14 @@
 			var keyParts:Array = new Array();
 			for each (var def:AttributeDefinitionProxy in keyDefs) {
 				var key:AttributeProxy = getSingleAttribute(def.name);
-				if(key != null && key.value != null) {
-					var keyValue:Object = key.value;
-					var keyPart:String = null;
-					if(keyValue is CodeProxy) {
-						keyPart = CodeProxy(keyValue).toString();
-					} else if(keyValue is CoordinateProxy) {
-						//todo
-						keyPart = CoordinateProxy(keyValue).toString();
-					} else {
-						keyPart = String(keyValue);
+				if(key != null) {
+					var value:Object = key.getField(0).value;
+					if(value != null) {
+						var keyPart:String = value.toString();
+						if(StringUtil.isNotBlank(keyPart)) {
+							keyParts.push(keyPart);
+						}
 					}
-					keyParts.push(keyPart);
 				}
 			}
 			return StringUtil.concat(" - ", keyParts);


Apply the keyframe pivot to flipbooks too.

Fixes #36. @tconkling, could you please verify and do an exporter
release?

--- exporter/src/main/as/flump/xfl/XflLibrary.as
+++ exporter/src/main/as/flump/xfl/XflLibrary.as
@@ -92,23 +92,29 @@
     }

     protected function prepareForPublishing (movie :MovieMold) :void {
-        if (!_toPublish.add(movie) || movie.flipbook) return;
+        if (!_toPublish.add(movie)) return;
         for each (var layer :LayerMold in movie.layers) {
             for each (var kf :KeyframeMold in layer.keyframes) {
-                if (kf.ref == null) continue;
-                kf.ref = _libraryNameToId.get(kf.ref);
-                var item :Object = _idToItem[kf.ref];
-                if (item == null) {
-                    addTopLevelError(ParseError.CRIT,
-                            "unrecognized library item '" + kf.ref + "'");
-                } else if (item is MovieMold) {
-                    prepareForPublishing(MovieMold(item));
-                } else if (item is XflTexture) {
+                function adjustPivot (tex :SwfTexture) :void {
                     // Texture symbols have origins. For texture layer keyframes,
                     // we combine the texture's origin with the keyframe's pivot point.
-                    var tex :SwfTexture = SwfTexture.fromTexture(this.swf, XflTexture(item));
                     kf.pivotX += tex.origin.x;
                     kf.pivotY += tex.origin.y;
+                };
+                if (movie.flipbook) {
+                    adjustPivot(SwfTexture.fromFlipbook(this, movie, kf.index));
+                } else {
+                    if (kf.ref == null) continue;
+                    kf.ref = _libraryNameToId.get(kf.ref);
+                    var item :Object = _idToItem[kf.ref];
+                    if (item == null) {
+                        addTopLevelError(ParseError.CRIT,
+                                "unrecognized library item '" + kf.ref + "'");
+                    } else if (item is MovieMold) {
+                        prepareForPublishing(MovieMold(item));
+                    } else if (item is XflTexture) {
+                        adjustPivot(SwfTexture.fromTexture(this.swf, XflTexture(item)));
+                    }
                 }
             }
         }


--- fp10/src/as3isolib/display/scene/IsoScene.as
+++ fp10/src/as3isolib/display/scene/IsoScene.as
@@ -316,13 +316,13 @@
 						sceneLayoutRenderer.renderScene(this);
 				}

-				//apply styling
-				mainContainer.graphics.clear(); //should we do this here?
-
+				//fix for bug #20 - http://code.google.com/p/as3isolib/issues/detail?id=20
 				var sceneRenderer:ISceneRenderer;
 				var factory:IFactory
-				if (stylingEnabled)
-				{
+				if (stylingEnabled && styleRendererFactories.length > 0)
+				{
+					mainContainer.graphics.clear();
+
 					for each (factory in styleRendererFactories)
 					{
 						sceneRenderer = factory.newInstance();


Transferred from the Adobe Open Source Subversion Repository

Revision: 22564
Author:   tkraikit@adobe.com
Date:     2011-09-14T19:50:07.656843Z

Log Message:
-----------
Update ASDoc "@productversion Flex 4.5.2" => "@productversion Flex 4.6"

Modified Paths:
--------------
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/mobiletheme/src/spark/skins/mobile/SpinnerListSkin.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/mobilecomponents/src/spark/components/LabelItemRenderer.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/spark/src/spark/collections/OnDemandDataProvider.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/mobiletheme/src/spark/skins/mobile/DateSpinnerSkin.as</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/framework/src/mx/graphics/BitmapScaleMode.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/mobilecomponents/src/spark/components/ContentBackgroundAppearance.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/framework/src/mx/core/FlexVersion.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/mobilecomponents/src/spark/components/ArrowDirection.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/spark/src/spark/globalization/supportClasses/FormatPattern.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/mobiletheme/src/spark/skins/mobile/DefaultTransparentNavigationButtonSkin.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/spark/src/spark/components/supportClasses/DropDownController.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/spark/src/spark/core/ISoftKeyboardHintClient.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/mobiletheme/src/spark/skins/mobile/supportClasses/CalloutArrow.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/mobiletheme/src/spark/skins/mobile/CalloutActionBarSkin.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/mobilecomponents/src/spark/components/calendarClasses/YearProvider.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/spark/src/spark/components/supportClasses/SkinnableTextBase.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/spark/src/spark/components/calendarClasses/DateSelectorDisplayMode.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/mobilecomponents/src/spark/components/ToggleSwitch.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/mobiletheme/src/spark/skins/mobile/DefaultBeveledBackButtonSkin.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/mobiletheme/src/spark/skins/mobile/SpinnerListScrollerSkin.mxml</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/spark/src/spark/components/ScrollSnappingMode.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/mobiletheme/src/spark/skins/mobile/supportClasses/StageTextSkinBase.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/mobiletheme/src/spark/skins/mobile/DefaultTransparentActionButtonSkin.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/mobiletheme/src/spark/skins/mobile/StageTextAreaSkin.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/mobilecomponents/src/spark/components/SpinnerListContainer.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/spark/src/spark/components/List.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/mobiletheme/src/spark/skins/mobile/ToggleSwitchSkin.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/mobilecomponents/src/spark/components/calendarClasses/DateAndTimeProvider.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/mobiletheme/src/spark/skins/mobile/CalloutViewNavigatorSkin.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/mobiletheme/src/spark/skins/mobile/SpinnerListContainerSkin.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/mobilecomponents/src/spark/components/CalloutPosition.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/spark/src/spark/components/Scroller.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/mobilecomponents/src/spark/preloaders/SplashScreenImageSource.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/spark/src/spark/components/DataGroup.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/spark/src/spark/components/SkinnablePopUpContainer.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/Callout.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/mobiletheme/src/spark/skins/mobile/StageTextInputSkin.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/spark/src/spark/collections/NumericDataProvider.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/mobilecomponents/src/spark/components/supportClasses/StyleableStageText.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/mobilecomponents/src/spark/preloaders/SplashScreenImage.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/mobilecomponents/src/spark/components/calendarClasses/DateSpinnerItemRenderer.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/mobilecomponents/src/spark/components/SpinnerList.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/mobilecomponents/src/spark/components/DateSpinner.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/spark/src/spark/globalization/supportClasses/CalendarDate.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/mobiletheme/src/spark/skins/mobile/CalloutSkin.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/mobiletheme/src/spark/skins/mobile/DefaultBeveledActionButtonSkin.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/mobilecomponents/src/spark/components/SpinnerListItemRenderer.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/spark/src/spark/globalization/supportClasses/DateTimeFormatterEx.as</path>

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

--- frameworks/projects/mobilecomponents/src/spark/preloaders/SplashScreenImageSource.as
+++ frameworks/projects/mobilecomponents/src/spark/preloaders/SplashScreenImageSource.as
@@ -70,7 +70,7 @@
  *
  *  @langversion 3.0
  *  @playerversion AIR 3
- *  @productversion Flex 4.5.2
+ *  @productversion Flex 4.6
  */
 public class SplashScreenImageSource
 {
@@ -85,7 +85,7 @@
      *
      *  @langversion 3.0
      *  @playerversion AIR 3
-     *  @productversion Flex 4.5.2
+     *  @productversion Flex 4.6
      */
     public function SplashScreenImageSource()
     {
@@ -114,7 +114,7 @@
      *
      *  @langversion 3.0
      *  @playerversion AIR 3
-     *  @productversion Flex 4.5.2
+     *  @productversion Flex 4.6
      */
     public var aspectRatio:String = null;

@@ -133,7 +133,7 @@
      *
      *  @langversion 3.0
      *  @playerversion AIR 3
-     *  @productversion Flex 4.5.2
+     *  @productversion Flex 4.6
      */
     public var dpi:Number = NaN;

@@ -160,7 +160,7 @@
      *
      *  @langversion 3.0
      *  @playerversion AIR 3
-     *  @productversion Flex 4.5.2
+     *  @productversion Flex 4.6
      */
     public var minResolution:Number = NaN;

@@ -190,7 +190,7 @@
      *
      *  @langversion 3.0
      *  @playerversion AIR 3
-     *  @productversion Flex 4.5.2
+     *  @productversion Flex 4.6
      */
     public var source:Class;


Made getter of "editable" property Bindable

--- collect-flex/collect-flex-client/src/main/flex/org/openforis/collect/ui/component/input/InputField.as
+++ collect-flex/collect-flex-client/src/main/flex/org/openforis/collect/ui/component/input/InputField.as
@@ -1,247 +1,251 @@
-package org.openforis.collect.ui.component.input {
-	import mx.binding.utils.BindingUtils;
-	import mx.controls.TextInput;
-	import mx.core.UIComponent;
-	import mx.events.FlexEvent;
-
-	import org.openforis.collect.metamodel.proxy.AttributeDefinitionProxy;
-	import org.openforis.collect.model.proxy.AttributeProxy;
-	import org.openforis.collect.model.proxy.EntityProxy;
-	import org.openforis.collect.model.proxy.FieldProxy;
-	import org.openforis.collect.presenter.InputFieldPresenter;
-	import org.openforis.collect.util.ObjectUtil;
-	import org.openforis.collect.util.StringUtil;
-	import org.openforis.collect.util.UIUtil;
-
-	import spark.components.Group;
-	import spark.layouts.HorizontalLayout;
-
-	/**
-	 *
-	 * @author M. Togna
-	 * @author S. Ricci
-	 * */
-	public class InputField extends Group {
-
-		public static const REMARKS_PRESENT_STYLE:String = "remarksPresent";
-		public static const READONLY_STYLE:String = "readOnly";
-
-		public static const STATE_SAVING:String = "saving";
-		public static const STATE_SAVE_COMPLETE:String = "saveComplete";
-		public static const STATE_ERROR_SAVING:String = "errorSaving";
-
-		private var _attributeDefinition:AttributeDefinitionProxy;
-		private var _parentEntity:EntityProxy;
-		private var _attribute:AttributeProxy;
-		private var _fieldIndex:int = 0;
-		private var _presenter:InputFieldPresenter;
-		private var _updating:Boolean = false;
-		private var _visited:Boolean = false;
-		private var _applyChangesOnFocusOut:Boolean = true;
-		private var _formatFunction:Function;
-		private var _maxChars:int;
-		private var _restrict:String;
-		private var _changed:Boolean;
-		private var _editable:Boolean = false;
-		protected var _textInput:UIComponent;
-
-		public function InputField() {
-			super();
-			layout = new HorizontalLayout();
-			this.addEventListener(FlexEvent.CREATION_COMPLETE, creationCompleteHandler);
-		}
-
-		protected function creationCompleteHandler(event:FlexEvent):void {
-			initPresenter();
-			if(_textInput != null && _textInput is mx.controls.TextInput) {
-				BindingUtils.bindProperty(_textInput, "restrictPattern", this, "restrict");
-				BindingUtils.bindProperty(_textInput, "maxChars", this, "maxChars");
-			}
-		}
-
-		protected function initPresenter():void {
-			this._presenter = new InputFieldPresenter(this);
-		}
-
-		public static function zeroPaddingFormatFunction(value:String, length:int):String {
-			if(StringUtil.isNotBlank(value)) {
-				var number:Number = Number(value);
-				if(!isNaN(number)) {
-					return StringUtil.zeroPad(number, length);
-				} else {
-					return value;
-				}
-			} else {
-				return "";
-			}
-		}
-
-		/**
-		 * returns true if the field is not filled
-		 */
-		public function isEmpty():Boolean {
-			return StringUtil.isBlank(text);
-		}
-
-		public function getField():FieldProxy {
-			if(attribute != null) {
-				var f:FieldProxy = attribute.getField(fieldIndex);
-				return f;
-			} else {
-				return null;
-			}
-		}
-
-		public function get text():String {
-			return ObjectUtil.getValue(_textInput, "text");
-		}
-
-		public function set text(value:String):void {
-			if(_textInput != null && _textInput.hasOwnProperty("text")) {
-				var text:String;
-				if(textFormatFunction != null) {
-					text = textFormatFunction(value);
-				} else {
-					text = value;
-				}
-				_textInput["text"] = text;
-			}
-		}
-
-		public function get editable():Boolean {
-			return _editable;
-		}
-
-		public function set editable(value:Boolean):void {
-			_editable = value;
-			if( textInput != null ) {
-				if ( textInput.hasOwnProperty("editable") ) {
-					textInput["editable"] = value;
-				}
-			}
-		}
-
-		public function set hasRemarks(value:Boolean):void {
-			UIUtil.toggleStyleName(validationStateDisplay, REMARKS_PRESENT_STYLE, value);
-		}
-
-		public function get textInput():UIComponent {
-			return _textInput;
-		}
-
-		public function set textInput(value:UIComponent):void {
-			_textInput = value;
-		}
-
-		public function get validationStateDisplay():UIComponent {
-			return _textInput;
-		}
-
-		public function get presenter():InputFieldPresenter {
-			return _presenter;
-		}
-
-		public function set presenter(value:InputFieldPresenter):void {
-			_presenter = value;
-		}
-
-		[Bindable]
-		public function get attribute():AttributeProxy {
-			return _attribute;
-		}
-
-		public function set attribute(value:AttributeProxy):void {
-			this._attribute = value;
-		}
-
-		[Bindable]
-		public function get attributeDefinition():AttributeDefinitionProxy {
-			return _attributeDefinition;
-		}
-
-		public function set attributeDefinition(value:AttributeDefinitionProxy):void {
-			_attributeDefinition = value;
-		}
-
-		[Bindable]
-		public function get parentEntity():EntityProxy {
-			return _parentEntity;
-		}
-
-		public function set parentEntity(value:EntityProxy):void {
-			_parentEntity = value;
-		}
-
-		[Bindable]
-		public function get fieldIndex():int {
-			return _fieldIndex;
-		}
-
-		public function set fieldIndex(value:int):void {
-			_fieldIndex = value;
-		}
-
-		public function get applyChangesOnFocusOut():Boolean {
-			return _applyChangesOnFocusOut;
-		}
-
-		public function set applyChangesOnFocusOut(value:Boolean):void {
-			_applyChangesOnFocusOut = value;
-		}
-
-		public function get textFormatFunction():Function {
-			return _formatFunction;
-		}
-
-		public function set textFormatFunction(value:Function):void {
-			_formatFunction = value;
-		}
-
-		[Bindable]
-		public function get updating():Boolean {
-			return _updating;
-		}
-
-		public function set updating(value:Boolean):void {
-			_updating = value;
-		}
-
-		[Bindable]
-		public function get visited():Boolean {
-			return _visited;
-		}
-
-		public function set visited(value:Boolean):void {
-			_visited = value;
-		}
-
-		[Bindable]
-		public function get maxChars():int {
-			return _maxChars;
-		}
-
-		public function set maxChars(value:int):void {
-			_maxChars = value;
-		}
-
-		[Bindable]
-		public function get restrict():String {
-			return _restrict;
-		}
-
-		public function set restrict(value:String):void {
-			_restrict = value;
-		}
-
-		[Bindable]
-		public function get changed():Boolean {
-			return _changed;
-		}
-
-		public function set changed(value:Boolean):void {
-			_changed = value;
-		}
-
-
-}
+package org.openforis.collect.ui.component.input {
+	import flash.events.Event;
+
+	import mx.binding.utils.BindingUtils;
+	import mx.controls.TextInput;
+	import mx.core.UIComponent;
+	import mx.events.FlexEvent;
+
+	import org.openforis.collect.metamodel.proxy.AttributeDefinitionProxy;
+	import org.openforis.collect.model.proxy.AttributeProxy;
+	import org.openforis.collect.model.proxy.EntityProxy;
+	import org.openforis.collect.model.proxy.FieldProxy;
+	import org.openforis.collect.presenter.InputFieldPresenter;
+	import org.openforis.collect.util.ObjectUtil;
+	import org.openforis.collect.util.StringUtil;
+	import org.openforis.collect.util.UIUtil;
+
+	import spark.components.Group;
+	import spark.layouts.HorizontalLayout;
+
+	/**
+	 *
+	 * @author M. Togna
+	 * @author S. Ricci
+	 * */
+	public class InputField extends Group {
+
+		public static const REMARKS_PRESENT_STYLE:String = "remarksPresent";
+		public static const READONLY_STYLE:String = "readOnly";
+
+		public static const STATE_SAVING:String = "saving";
+		public static const STATE_SAVE_COMPLETE:String = "saveComplete";
+		public static const STATE_ERROR_SAVING:String = "errorSaving";
+
+		private var _attributeDefinition:AttributeDefinitionProxy;
+		private var _parentEntity:EntityProxy;
+		private var _attribute:AttributeProxy;
+		private var _fieldIndex:int = 0;
+		private var _presenter:InputFieldPresenter;
+		private var _updating:Boolean = false;
+		private var _visited:Boolean = false;
+		private var _applyChangesOnFocusOut:Boolean = true;
+		private var _formatFunction:Function;
+		private var _maxChars:int;
+		private var _restrict:String;
+		private var _changed:Boolean;
+		private var _editable:Boolean = false;
+		protected var _textInput:UIComponent;
+
+		public function InputField() {
+			super();
+			layout = new HorizontalLayout();
+			this.addEventListener(FlexEvent.CREATION_COMPLETE, creationCompleteHandler);
+		}
+
+		protected function creationCompleteHandler(event:FlexEvent):void {
+			initPresenter();
+			if(_textInput != null && _textInput is mx.controls.TextInput) {
+				BindingUtils.bindProperty(_textInput, "restrictPattern", this, "restrict");
+				BindingUtils.bindProperty(_textInput, "maxChars", this, "maxChars");
+			}
+		}
+
+		protected function initPresenter():void {
+			this._presenter = new InputFieldPresenter(this);
+		}
+
+		public static function zeroPaddingFormatFunction(value:String, length:int):String {
+			if(StringUtil.isNotBlank(value)) {
+				var number:Number = Number(value);
+				if(!isNaN(number)) {
+					return StringUtil.zeroPad(number, length);
+				} else {
+					return value;
+				}
+			} else {
+				return "";
+			}
+		}
+
+		/**
+		 * returns true if the field is not filled
+		 */
+		public function isEmpty():Boolean {
+			return StringUtil.isBlank(text);
+		}
+
+		public function getField():FieldProxy {
+			if(attribute != null) {
+				var f:FieldProxy = attribute.getField(fieldIndex);
+				return f;
+			} else {
+				return null;
+			}
+		}
+
+		public function get text():String {
+			return ObjectUtil.getValue(_textInput, "text");
+		}
+
+		public function set text(value:String):void {
+			if(_textInput != null && _textInput.hasOwnProperty("text")) {
+				var text:String;
+				if(textFormatFunction != null) {
+					text = textFormatFunction(value);
+				} else {
+					text = value;
+				}
+				_textInput["text"] = text;
+			}
+		}
+
+		[Bindable(event="editablePropertyChange")]
+		public function get editable():Boolean {
+			return _editable;
+		}
+
+		public function set editable(value:Boolean):void {
+			_editable = value;
+			if( textInput != null ) {
+				if ( textInput.hasOwnProperty("editable") ) {
+					textInput["editable"] = value;
+				}
+			}
+			dispatchEvent(new Event("editablePropertyChange"));
+		}
+
+		public function set hasRemarks(value:Boolean):void {
+			UIUtil.toggleStyleName(validationStateDisplay, REMARKS_PRESENT_STYLE, value);
+		}
+
+		public function get textInput():UIComponent {
+			return _textInput;
+		}
+
+		public function set textInput(value:UIComponent):void {
+			_textInput = value;
+		}
+
+		public function get validationStateDisplay():UIComponent {
+			return _textInput;
+		}
+
+		public function get presenter():InputFieldPresenter {
+			return _presenter;
+		}
+
+		public function set presenter(value:InputFieldPresenter):void {
+			_presenter = value;
+		}
+
+		[Bindable]
+		public function get attribute():AttributeProxy {
+			return _attribute;
+		}
+
+		public function set attribute(value:AttributeProxy):void {
+			this._attribute = value;
+		}
+
+		[Bindable]
+		public function get attributeDefinition():AttributeDefinitionProxy {
+			return _attributeDefinition;
+		}
+
+		public function set attributeDefinition(value:AttributeDefinitionProxy):void {
+			_attributeDefinition = value;
+		}
+
+		[Bindable]
+		public function get parentEntity():EntityProxy {
+			return _parentEntity;
+		}
+
+		public function set parentEntity(value:EntityProxy):void {
+			_parentEntity = value;
+		}
+
+		[Bindable]
+		public function get fieldIndex():int {
+			return _fieldIndex;
+		}
+
+		public function set fieldIndex(value:int):void {
+			_fieldIndex = value;
+		}
+
+		public function get applyChangesOnFocusOut():Boolean {
+			return _applyChangesOnFocusOut;
+		}
+
+		public function set applyChangesOnFocusOut(value:Boolean):void {
+			_applyChangesOnFocusOut = value;
+		}
+
+		public function get textFormatFunction():Function {
+			return _formatFunction;
+		}
+
+		public function set textFormatFunction(value:Function):void {
+			_formatFunction = value;
+		}
+
+		[Bindable]
+		public function get updating():Boolean {
+			return _updating;
+		}
+
+		public function set updating(value:Boolean):void {
+			_updating = value;
+		}
+
+		[Bindable]
+		public function get visited():Boolean {
+			return _visited;
+		}
+
+		public function set visited(value:Boolean):void {
+			_visited = value;
+		}
+
+		[Bindable]
+		public function get maxChars():int {
+			return _maxChars;
+		}
+
+		public function set maxChars(value:int):void {
+			_maxChars = value;
+		}
+
+		[Bindable]
+		public function get restrict():String {
+			return _restrict;
+		}
+
+		public function set restrict(value:String):void {
+			_restrict = value;
+		}
+
+		[Bindable]
+		public function get changed():Boolean {
+			return _changed;
+		}
+
+		public function set changed(value:Boolean):void {
+			_changed = value;
+		}
+
+
+}
 }


:bug: STAT interrupt signal was never being set

--- gb/gpu.as
+++ gb/gpu.as
@@ -519,23 +519,10 @@
     );

     if not self.STATInterruptSignal and statInterruptSignal {
-      self.STATInterruptSignal = true;
-      self.CPU.IF |= 0b10;
-    }
-
-    // TODO: STAT Interrupt (from signal)
-    /*
-    The STAT IRQ is triggered by an internal signal
-
-    This signal is set to 1 if:
-     ( (LY = LYC) AND (STAT.ENABLE_LYC_COMPARE = 1) ) OR
-     ( (ScreenMode = 0) AND (STAT.ENABLE_HBL = 1) ) OR
-     ( (ScreenMode = 2) AND (STAT.ENABLE_OAM = 1) ) OR
-     ( (ScreenMode = 1) AND (STAT.ENABLE_VBL || STAT.ENABLE_OAM) ) -> Not only
-
-    The interrupt is fired when the signal TRANSITIONS from 0 TO 1
-    If it STAYS 1 during a screen mode change then no interrupt is fired.
-    */
+      self.CPU.IF |= 0x2;
+    }
+
+    self.STATInterruptSignal = statInterruptSignal;
   }

   def Read(self, address: uint16, ptr: *uint8): bool {


Transferred from the Adobe Open Source Subversion Repository

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

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

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

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

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

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

--- frameworks/projects/rpc/src/mx/rpc/events/AbstractEvent.as
+++ frameworks/projects/rpc/src/mx/rpc/events/AbstractEvent.as
@@ -0,0 +1,56 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+//  ADOBE SYSTEMS INCORPORATED
+//  Copyright 2005-2007 Adobe Systems Incorporated
+//  All Rights Reserved.
+//
+//  NOTICE: Adobe permits you to use, modify, and distribute this file
+//  in accordance with the terms of the license agreement accompanying it.
+//
+////////////////////////////////////////////////////////////////////////////////
+
+package mx.rpc.events
+{
+
+import mx.core.mx_internal;
+import mx.messaging.events.MessageEvent;
+import mx.messaging.messages.IMessage;
+import mx.rpc.AsyncToken;
+
+use namespace mx_internal;
+
+/**
+ * The base class for events that RPC services dispatch.
+ */
+public class AbstractEvent extends MessageEvent
+{
+    private var _token:AsyncToken;
+
+    /**
+     * @private
+     */
+    public function AbstractEvent(type:String, bubbles:Boolean = false, cancelable:Boolean = true,
+        token:AsyncToken = null, message:IMessage = null)
+    {
+        super(type, bubbles, cancelable, message);
+
+        _token = token;
+    }
+
+    /**
+     * The token that represents the call to the method. Used in the asynchronous completion token pattern.
+     */
+    public function get token():AsyncToken
+    {
+        return _token;
+    }
+
+    /**
+     * Does nothing by default.
+     */
+    mx_internal function callTokenResponders():void
+    {
+    }
+}
+
+}


Fixed but, avoid deletion of already deleted node

--- collect-flex/collect-flex-client/src/generated/flex/org/openforis/collect/model/proxy/RecordProxy.as
+++ collect-flex/collect-flex-client/src/generated/flex/org/openforis/collect/model/proxy/RecordProxy.as
@@ -44,8 +44,10 @@
 			}
 			if(response.deletedNodeId > 0) {
 				node = getNode(response.deletedNodeId);
-				parent = getNode(node.parentId) as EntityProxy;
-				parent.removeChild(node);
+				if(node != null) {
+					parent = getNode(node.parentId) as EntityProxy;
+					parent.removeChild(node);
+				}
 			} else {
 				node = getNode(response.nodeId);
 				if(node is AttributeProxy) {


So, key events are only dispatched on frames, and it seems that those happen
after timer events in the flash player.
What was happening was that a KEY_UP event was coming in so long after the
initial KEY_DOWN, that this code would think that the key was being held down
even when not.
So instead we wait until we actually see a 2nd KEY_DOWN event, at which point
we may need to dispatch that event right away, or we may need to wait a bit
if the limitRate is higher than the elapsed time between the two events.
Now also there is a Timer for each key being held down.
To top it all off, if you hold a key and then lose focus then this will
continue to fire, so it's going to need yet more complication to fix that.

git-svn-id: b675b909355d5cf946977f44a8ec5a6ceb3782e4@358 ed5b42cb-e716-0410-a449-f6a68f950b19

--- src/as/com/threerings/flash/KeyRepeatLimiter.as
+++ src/as/com/threerings/flash/KeyRepeatLimiter.as
@@ -29,6 +29,8 @@
 import flash.utils.Dictionary;
 import flash.utils.Timer;

+import flash.utils.getTimer;
+
 /**
  * A very simple class that adapts the KeyboardEvents generated by some source and altering
  * (or blocking) the key repeat rate.
@@ -46,14 +48,10 @@
     public function KeyRepeatLimiter (source :IEventDispatcher, limitRate :int = 0)
     {
         _source = source;
+        _limitRate = limitRate;

         _source.addEventListener(KeyboardEvent.KEY_DOWN, handleKeyDown);
         _source.addEventListener(KeyboardEvent.KEY_UP, handleKeyUp);
-
-        if (limitRate > 0) {
-            _timer = new Timer(limitRate);
-            _timer.addEventListener(TimerEvent.TIMER, handleTimerEvent);
-        }
     }

     /**
@@ -64,39 +62,50 @@
         _source.removeEventListener(KeyboardEvent.KEY_DOWN, handleKeyDown);
         _source.removeEventListener(KeyboardEvent.KEY_UP, handleKeyUp);

+        // shut down any timers
+        for each (var val :* in _down) {
+            if (val is Array) {
+                ((val as Array)[0] as Timer).stop();
+            }
+        }
         _down = new Dictionary();
-        _keysDown = 0;
-        if (_timer != null) {
-            _timer.stop();
-        }
     }

     protected function handleKeyDown (event :KeyboardEvent) :void
     {
-        if (undefined === _down[event.keyCode]) {
-            _keysDown++;
-            _down[event.keyCode] = event.clone();
+        var oldVal :* = _down[event.keyCode];
+        if (oldVal === undefined) {
+            _down[event.keyCode] = (_limitRate > 0) ? getTimer() : 0;

-            // maybe start the timer if we need to
-            if (_timer != null && !_timer.running) {
-                _timer.reset();
-                _timer.start();
+        } else if ((oldVal is Number) && _limitRate > 0) {
+            var timeUntilRepeat :Number = _limitRate - (getTimer() - Number(oldVal));
+
+            var t :Timer = new Timer((timeUntilRepeat <= 0) ? _limitRate : timeUntilRepeat);
+            t.addEventListener(TimerEvent.TIMER, handleTimerEvent);
+            _down[event.keyCode] = [ t, event ];
+            t.start();
+            if (timeUntilRepeat > 0) {
+                // don't dispatch this event, wait for our first repeat time
+                return;
             }

-            // only dispatch if we're not limiting this key
-            dispatchEvent(event);
+        } else {
+            // eat the event
+            return;
         }
+
+        // otherwise, dispatch the event
+        dispatchEvent(event);
     }

     protected function handleKeyUp (event :KeyboardEvent) :void
     {
-        if (undefined !== _down[event.keyCode]) {
+        var oldVal :* = _down[event.keyCode];
+        if (oldVal !== undefined) {
+            if (oldVal is Array) {
+                ((oldVal as Array)[0] as Timer).stop();
+            }
             delete _down[event.keyCode];
-            _keysDown--;
-
-            if (_timer != null && _keysDown == 0) {
-                _timer.stop();
-            }
         }

         // always dispatch an up
@@ -105,9 +114,21 @@

     protected function handleTimerEvent (event :TimerEvent) :void
     {
-        // dispatch any saved key events
-        for each (var keyEvent :KeyboardEvent in _down) {
-            dispatchEvent(keyEvent);
+        // dispatch the key event associated with this timer
+        for each (var val :* in _down) {
+            if (val is Array) {
+                var arr :Array = val as Array;
+                var timer :Timer = arr[0] as Timer;
+                if (timer == event.target) {
+                    if (timer.delay != _limitRate) {
+                        timer.reset();
+                        timer.delay = _limitRate;
+                        timer.start();
+                    }
+                    dispatchEvent(arr[1] as KeyboardEvent);
+                    break;
+                }
+            }
         }
     }

@@ -117,10 +138,6 @@
     /** Tracks whether a key is currently being held down. */
     protected var _down :Dictionary = new Dictionary();

-    /** How many keys are currently down? */
-    protected var _keysDown :int;
-
-    /** The timer generating key repeats, if any. */
-    protected var _timer :Timer;
+    protected var _limitRate :int;
 }
 }


Transferred from the Adobe Open Source Subversion Repository

Revision: 22172
Author:   jszeto@adobe.com
Date:     2011-08-23T23:58:28.507994Z

Log Message:
-----------
SpinnerList Bug Fixes (fontColor / disabled items)

DateSpinner now supports fontSize. SpinnerList and DateSpinner now use the global fontSize instead of specify a larger default size.

SDK-31014 - Inconsistent behavior when all items in a SpinnerList are disabled

When useVirtualLayout is true, the element might not exist. We check the data directly instead asking the element if it is enabled.

SDK-30990 - SpinnerList does not respect text color

Both DateSpinner and SpinnerList should now support the color style. Changed the accentColor and disabled logic for setting the color. Now we set the colorName property so StyleableTextField knows which style to use. Disabled items are set to an alpha of .5.

QE notes: baselines will need updating
Doc notes: none
Bugs: SDK-30990, SDK-31014
Reviewer: Tom K
Tests run: checkintests
Is noteworthy for integration: no

Modified Paths:
--------------
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/mobilecomponents/src/spark/components/supportClasses/StyleableTextField.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/mobilecomponents/src/spark/components/calendarClasses/DateSpinnerItemRenderer.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/mobilecomponents/src/spark/components/DateSpinner.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/mobiletheme/defaults.css</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/mobilecomponents/src/spark/components/calendarClasses/DateAndTimeProvider.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/mobilecomponents/src/spark/layouts/VerticalSpinnerLayout.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/mobilecomponents/src/spark/components/calendarClasses/YearProvider.as</path>

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

--- frameworks/projects/mobilecomponents/src/spark/components/calendarClasses/DateSpinnerItemRenderer.as
+++ frameworks/projects/mobilecomponents/src/spark/components/calendarClasses/DateSpinnerItemRenderer.as
@@ -71,28 +71,22 @@
 	//
 	//--------------------------------------------------------------------------

-	// TODO (tkraikit) Move this function into DateSpinner item renderer class (put in calendarClasses)
-	// TODO (jszeto) Fix this so the class will still respect the color style value set on the class
 	override protected function layoutContents(unscaledWidth:Number, unscaledHeight:Number):void
 	{
-		var labelColor:Object = undefined;
-
-		// If data is a String or other primitive, this call will fail
-		try
-		{
-			if (!enabled)
-				labelColor = 0x696969; // unselectable item
-			else if (data["accentColor"] != undefined)
-				labelColor = data["accentColor"]; // highlighted item
-			else
-				labelColor = 0; // TODO (jszeto) This doesn't seem correct
-		}
-		catch (e:Error)
-		{
-			// Do nothing
-		}
-
-		labelDisplay.setStyle("color", labelColor);
+        var colorName:String = "color";
+
+        try
+        {
+            if (data["_emphasized_"] != undefined)
+                colorName = "accentColor"; // highlighted item
+        }
+        catch (e:Error)
+        {
+            // Do nothing
+        }
+
+        labelDisplay.colorName = colorName;
+        labelDisplay.alpha = enabled ? 1 : .5;

 		// We call the super at the end because it commits the labelDisplay styles.
 		super.layoutContents(unscaledWidth, unscaledHeight);


Transferred from the Adobe Open Source Subversion Repository

Revision: 2796
Author:   jimurphy@adobe.com
Date:     2008-08-11T14:31:56.866734Z

Log Message:
-----------
Merged 3.0.x revisions [2767,2780,2784] -> trunk

Modified Paths:
--------------
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/ComboBox.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/managers/SystemManager.as</path>
<path kind="dir" action="M">/flex/sdk/trunk</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/managers/PopUpManagerImpl.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/managers/SystemManagerProxy.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/ColorPicker.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/PopUpButton.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/DateField.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/Menu.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/core/UIComponent.as</path>
<path kind="file" action="M">/flex/sdk/trunk/modules/compiler/src/java/flex2/tools/Compc.java</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/managers/NativeDragManagerImpl.as</path>

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

--- frameworks/projects/mx/src/mx/controls/ComboBox.as
+++ frameworks/projects/mx/src/mx/controls/ComboBox.as
@@ -46,6 +46,7 @@
 import mx.events.FlexEvent;
 import mx.events.FlexMouseEvent;
 import mx.events.ListEvent;
+import mx.events.MarshalMouseEvent;
 import mx.events.ScrollEvent;
 import mx.events.ScrollEventDetail;
 import mx.managers.PopUpManager;
@@ -1481,9 +1482,7 @@
             _dropdown.addEventListener(ScrollEvent.SCROLL, dropdown_scrollHandler);
             _dropdown.addEventListener(ListEvent.ITEM_ROLL_OVER, dropdown_itemRollOverHandler);
             _dropdown.addEventListener(ListEvent.ITEM_ROLL_OUT, dropdown_itemRollOutHandler);
-            _dropdown.addEventListener(FlexMouseEvent.MOUSE_DOWN_OUTSIDE, dropdown_mouseDownOutsideHandler);
-            _dropdown.addEventListener(FlexMouseEvent.MOUSE_WHEEL_OUTSIDE, dropdown_mouseWheelOutsideHandler);
-
+
             // the drop down should close if the user clicks on any item.
             // add a handler to detect a click in the list
             _dropdown.addEventListener(ListEvent.ITEM_CLICK, dropdown_itemClickHandler);
@@ -1497,7 +1496,7 @@
             // weak reference to stage
             systemManager.addEventListener(Event.RESIZE, stage_resizeHandler, false, 0, true);
         }
-
+
         _dropdown.scaleX = scaleX;
         _dropdown.scaleY = scaleY;

@@ -1534,7 +1533,11 @@

             getDropdown();

-
+            _dropdown.addEventListener(FlexMouseEvent.MOUSE_DOWN_OUTSIDE, dropdown_mouseOutsideHandler);
+            _dropdown.addEventListener(FlexMouseEvent.MOUSE_WHEEL_OUTSIDE, dropdown_mouseOutsideHandler);
+            _dropdown.addEventListener(MarshalMouseEvent.MOUSE_DOWN, dropdown_mouseOutsideHandler);
+            _dropdown.addEventListener(MarshalMouseEvent.MOUSE_WHEEL, dropdown_mouseOutsideHandler);
+
             if (_dropdown.parent == null)  // was popped up then closed
                 PopUpManager.addPopUp(_dropdown, this);
             else
@@ -1790,25 +1793,27 @@
     /**
      *  @private
      */
-    private function dropdown_mouseDownOutsideHandler(event:MouseEvent):void
-    {
-        if (event.target != _dropdown)
-            // the dropdown's items can dispatch a mouseDownOutside
-            // event which then bubbles up to us
-            return;
-
-        if (!hitTestPoint(event.stageX, event.stageY, true))
+    private function dropdown_mouseOutsideHandler(event:Event):void
+    {
+        // trace("dropdown_mouseOutsideHandler: " + event);
+
+        if (event is MouseEvent)
+        {
+            var mouseEvent:MouseEvent = MouseEvent(event);
+            if (mouseEvent.target != _dropdown)
+                // the dropdown's items can dispatch a mouseDownOutside
+                // event which then bubbles up to us
+                return;
+
+            if (!hitTestPoint(mouseEvent.stageX, mouseEvent.stageY, true))
+            {
+                close(event);
+            }
+        }
+        else if (event is MarshalMouseEvent)
         {
             close(event);
         }
-    }
-
-    /**
-     *  @private
-     */
-    private function dropdown_mouseWheelOutsideHandler(event:MouseEvent):void
-    {
-        dropdown_mouseDownOutsideHandler(event);
     }

     /**
@@ -2043,6 +2048,11 @@

         if (bRemoveDropdown)
         {
+            _dropdown.removeEventListener(FlexMouseEvent.MOUSE_DOWN_OUTSIDE, dropdown_mouseOutsideHandler);
+            _dropdown.removeEventListener(FlexMouseEvent.MOUSE_WHEEL_OUTSIDE, dropdown_mouseOutsideHandler);
+            _dropdown.removeEventListener(MarshalMouseEvent.MOUSE_DOWN, dropdown_mouseOutsideHandler);
+            _dropdown.removeEventListener(MarshalMouseEvent.MOUSE_WHEEL, dropdown_mouseOutsideHandler);
+
             PopUpManager.removePopUp(_dropdown);
             _dropdown = null;
             bRemoveDropdown = false;


Transferred from the Adobe Open Source Subversion Repository

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

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

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

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

--- frameworks/projects/mx/src/mx/effects/WipeRight.as
+++ frameworks/projects/mx/src/mx/effects/WipeRight.as
@@ -1,11 +1,19 @@
 ////////////////////////////////////////////////////////////////////////////////
 //
-//  ADOBE SYSTEMS INCORPORATED
-//  Copyright 2003-2006 Adobe Systems Incorporated
-//  All Rights Reserved.
+//  Licensed to the Apache Software Foundation (ASF) under one or more
+//  contributor license agreements.  See the NOTICE file distributed with
+//  this work for additional information regarding copyright ownership.
+//  The ASF licenses this file to You under the Apache License, Version 2.0
+//  (the "License"); you may not use this file except in compliance with
+//  the License.  You may obtain a copy of the License at
 //
-//  NOTICE: Adobe permits you to use, modify, and distribute this file
-//  in accordance with the terms of the license agreement accompanying it.
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+//  Unless required by applicable law or agreed to in writing, software
+//  distributed under the License is distributed on an "AS IS" BASIS,
+//  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//  See the License for the specific language governing permissions and
+//  limitations under the License.
 //
 ////////////////////////////////////////////////////////////////////////////////


fixed AS3 ByteArray decoding when length = 0

--- as3/src/aerys/qark/Qark.as
+++ as3/src/aerys/qark/Qark.as
@@ -300,12 +300,13 @@

 		private static function decodeBytes(source : ByteArray) : ByteArray
 		{
-			var ba : ByteArray = new ByteArray();
-			var length : int = source.readInt();
-
-			source.readBytes(ba, 0, length);
-
-			return ba;
+			var target 	: ByteArray = new ByteArray();
+			var length 	: int 		= source.readInt();
+
+			if (length)
+				source.readBytes(target, 0, length);
+
+			return target;
 		}

 		private static function encodeBoolean(source : Boolean, target : ByteArray) : void


CHANGED:applied the collision detection and explosion emitter implementation;

--- src/SkBatPlayState.as
+++ src/SkBatPlayState.as
@@ -6,10 +6,12 @@
 	// Imports
 	//
 	//--------------------------------------------------------------------------
+	import org.flixel.FlxEmitter;
 	import org.flixel.FlxG;
 	import org.flixel.FlxGroup;
 	import org.flixel.FlxObject;
 	import org.flixel.FlxPoint;
+	import org.flixel.FlxSprite;
 	import org.flixel.FlxState;
 	import org.flixel.FlxText;
 	import org.flixel.FlxU;
@@ -161,6 +163,9 @@
 			bullet.kill();
 			FlxG.score += 1;
 			_scoreText.text = FlxG.score.toString();
+			// In overlapAlienBulletHandler()
+			var emitter:FlxEmitter = createEmitter();
+			emitter.at(alien);
 		}
 		//
 		private function overlapAlienShipHandler(alien:SkBatAlien, ship:SkBatShip):void
@@ -173,6 +178,30 @@
 				"GAME OVER\nPRESS ENTER TO PLAY AGAIN");
 			_gameOverText.setFormat(null, 16, 0xFF597137, "center");
 			add(_gameOverText);
+			// In overlapAlienShipHandler()
+			var emitter:FlxEmitter = createEmitter();
+			emitter.at(ship);
+		}
+		//Explosions
+		private function createEmitter():FlxEmitter
+		{
+			var emitter:FlxEmitter = new FlxEmitter();
+//			emitter.delay = 1;
+			emitter.gravity = 0;
+			emitter.minRotation = 0;
+			emitter.setXSpeed(-500,500);
+			emitter.setYSpeed(-500,500);
+			var particles:int = 10;
+			for(var i:int=0;i<particles;i++)
+			{
+				var particle:FlxSprite = new FlxSprite();
+				particle.makeGraphic(2, 2, 0xFF597137);
+				particle.exists = false;
+				emitter.add(particle);
+			}
+			emitter.start();
+			this.add(emitter);
+			return emitter;
 		}
 	}


Add comment to KrewAsync

Add comment to KrewAsync

--- krew-framework/krewfw/utils/as3/KrewAsync.as
+++ krew-framework/krewfw/utils/as3/KrewAsync.as
@@ -2,6 +2,7 @@

     /**
      * Flexible asynchronous tasker.
+     * @see http://docs.tatsuya-koyama.com/krew-framework/samples/krewasync/
      *
      * Usage:
      * <pre>
@@ -56,6 +57,7 @@
      *             ]},
      *             function_7
      *         ],
+     *         success: _onSuccessHandler,
      *         error  : _onErrorHandler,
      *         anyway : _onFinallyHandler
      *     });
@@ -64,8 +66,8 @@
      *     [Sequence]:
      *                   |3 ------>|
      *                   |         |
-     *         1 -> 2 -> |4 ------>| -> 7 -> anyway
-     *                   |         |
+     *         1 -> 2 -> |4 ------>| -> 7 -> success -> anyway
+     *                   |         |        (or error)
      *                   |5 -> 6 ->|
      *
      * </pre>
@@ -81,6 +83,7 @@
      *         // OR
      *         parallel: [<asyncDef>, ... ]
      *
+     *         success : function():void {},  // optional
      *         error   : function():void {},  // optional
      *         anyway  : function():void {}   // optional
      *     }


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

--- frameworks/projects/charts/src/mx/charts/chartClasses/ChartState.as
+++ frameworks/projects/charts/src/mx/charts/chartClasses/ChartState.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.charts.chartClasses
 {


FLEX-34119 our test runner seems to be an Application, rather than WindowedApplication. Now the unit test reflects that.

--- frameworks/projects/advancedgrids/tests/mx/collections/HierarchicalCollectionViewCursor_Basics_Tests.as
+++ frameworks/projects/advancedgrids/tests/mx/collections/HierarchicalCollectionViewCursor_Basics_Tests.as
@@ -20,60 +20,55 @@
 package mx.collections
 {
     import flash.events.UncaughtErrorEvent;
-
-import flashx.textLayout.debug.assert;
-
-import mx.collections.ArrayCollection;
-    import mx.collections.CursorBookmark;
-    import mx.collections.HierarchicalCollectionView;
-    import mx.collections.HierarchicalCollectionViewCursor;
+    import flash.utils.describeType;
+
     import mx.core.FlexGlobals;
-
-    import spark.components.WindowedApplication;
-
+
     import org.flexunit.asserts.assertEquals;
-
-    public class HierarchicalCollectionViewCursor_Basics_Test
+    import org.flexunit.asserts.assertNotNull;
+
+    import spark.components.Application;
+
+    public class HierarchicalCollectionViewCursor_Basics_Tests
 	{
-		private static var _utils:HierarchicalCollectionViewTestUtils = new HierarchicalCollectionViewTestUtils();
-		private static var _currentHierarchy:HierarchicalCollectionView;
-		private static var _noErrorsThrown:Boolean = true;
-		private var _level0:ArrayCollection;
-
-		private var _sut:HierarchicalCollectionViewCursor;
-
-		[BeforeClass]
-		public static function setUpBeforeClass():void
-		{
-            if(FlexGlobals.topLevelApplication is WindowedApplication)
-			    (FlexGlobals.topLevelApplication as WindowedApplication).loaderInfo.uncaughtErrorEvents.addEventListener(UncaughtErrorEvent.UNCAUGHT_ERROR, handleUncaughtClientError);
-		}
-
-		[AfterClass]
-		public static function tearDownAfterClass():void
-		{
-            if(FlexGlobals.topLevelApplication is WindowedApplication)
-			    (FlexGlobals.topLevelApplication as WindowedApplication).loaderInfo.uncaughtErrorEvents.removeEventListener(UncaughtErrorEvent.UNCAUGHT_ERROR, handleUncaughtClientError);
-		}
-
-		[Before]
-		public function setUp():void
-		{
+        private static var _utils:HierarchicalCollectionViewTestUtils = new HierarchicalCollectionViewTestUtils();
+        private static var _currentHierarchy:HierarchicalCollectionView;
+        private static var _noErrorsThrown:Boolean = true;
+        private var _level0:ArrayCollection;
+
+        private var _sut:HierarchicalCollectionViewCursor;
+
+        [BeforeClass]
+        public static function setUpBeforeClass():void
+        {
+            if(FlexGlobals.topLevelApplication is Application)
+                (FlexGlobals.topLevelApplication as Application).loaderInfo.uncaughtErrorEvents.addEventListener(UncaughtErrorEvent.UNCAUGHT_ERROR, handleUncaughtClientError);
+        }
+
+        [AfterClass]
+        public static function tearDownAfterClass():void
+        {
+            if(FlexGlobals.topLevelApplication is Application)
+                (FlexGlobals.topLevelApplication as Application).loaderInfo.uncaughtErrorEvents.removeEventListener(UncaughtErrorEvent.UNCAUGHT_ERROR, handleUncaughtClientError);
+        }
+
+        [Before]
+        public function setUp():void
+        {
             _currentHierarchy = generateHierarchyViewWithOpenNodes();
             _level0 = _utils.getRoot(_currentHierarchy) as ArrayCollection;
             _sut = _currentHierarchy.createCursor() as HierarchicalCollectionViewCursor;

-			_noErrorsThrown = true;
-		}
-
-		[After]
-		public function tearDown():void
-		{
-			_sut = null;
+            _noErrorsThrown = true;
+        }
+
+        [After]
+        public function tearDown():void
+        {
+            _sut = null;
             _currentHierarchy = null;
             _level0 = null;
-		}
-
+        }

         [Test]
@@ -223,23 +218,23 @@
             //then
             assertEquals(firstLocation, _sut.current);
         }
-
-
-		private static function handleUncaughtClientError(event:UncaughtErrorEvent):void
-		{
-			event.preventDefault();
-			event.stopImmediatePropagation();
-			_noErrorsThrown = false;
-
-			trace("\n" + event.error);
-			_utils.printHCollectionView(_currentHierarchy);
-		}
-
-
-		private static function generateHierarchyViewWithOpenNodes():HierarchicalCollectionView
-		{
-			return _utils.generateOpenHierarchyFromRootList(_utils.generateHierarchySourceFromString(HIERARCHY_STRING));
-		}
+
+
+        private static function handleUncaughtClientError(event:UncaughtErrorEvent):void
+        {
+            event.preventDefault();
+            event.stopImmediatePropagation();
+            _noErrorsThrown = false;
+
+            trace("\n" + event.error);
+            _utils.printHCollectionView(_currentHierarchy);
+        }
+
+
+        private static function generateHierarchyViewWithOpenNodes():HierarchicalCollectionView
+        {
+            return _utils.generateOpenHierarchyFromRootList(_utils.generateHierarchySourceFromString(HIERARCHY_STRING));
+        }

 		private static const HIERARCHY_STRING:String = (<![CDATA[
 			Company(1)


Transferred from the Adobe Open Source Subversion Repository

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

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

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

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

--- frameworks/projects/advancedgrids/src/mx/olap/OLAPResult.as
+++ frameworks/projects/advancedgrids/src/mx/olap/OLAPResult.as
@@ -1,11 +1,19 @@
 ////////////////////////////////////////////////////////////////////////////////
 //
-//  ADOBE SYSTEMS INCORPORATED
-//  Copyright 2009 Adobe Systems Incorporated
-//  All Rights Reserved.
-//
-//  NOTICE: Adobe permits you to use, modify, and distribute this file
-//  in accordance with the terms of the license agreement accompanying it.
+//  Licensed to the Apache Software Foundation (ASF) under one or more
+//  contributor license agreements.  See the NOTICE file distributed with
+//  this work for additional information regarding copyright ownership.
+//  The ASF licenses this file to You under the Apache License, Version 2.0
+//  (the "License"); you may not use this file except in compliance with
+//  the License.  You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+//  Unless required by applicable law or agreed to in writing, software
+//  distributed under the License is distributed on an "AS IS" BASIS,
+//  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//  See the License for the specific language governing permissions and
+//  limitations under the License.
 //
 ////////////////////////////////////////////////////////////////////////////////


Fix using null handle when updating temporary component state. Closes #848.

--- bin/Data/Scripts/Editor/EditorHierarchyWindow.as
+++ bin/Data/Scripts/Editor/EditorHierarchyWindow.as
@@ -1404,6 +1404,7 @@
     Component@ component = cast<Component>(serializable);
     if (component !is null && component.node !is null && component.node.scene is editorScene)
     {
+        node = component.node;
         if (showTemporaryObject)
             UpdateHierarchyItemText(GetComponentListIndex(component), node.enabled);
         else if (!component.temporary && GetComponentListIndex(component) == NO_ITEM)


Transferred from the Adobe Open Source Subversion Repository

Revision: 22118
Author:   jasonsj@adobe.com
Date:     2011-08-19T22:45:54.903069Z

Log Message:
-----------
SDK-31259 CalloutSkin graphic ordering
SDK-29673 default button skins for ActionBar buttons.

Update CalloutArrow to match spec, useBackgroundGradient should be protected.

Update mobile skins test app with emphasized examples and fix Callout examples to use to contentBackgroundAppearance.

QE notes: Fixed regression from contentBackgroundAppearance. Update baselines for ActionBar accentColor tests.
Doc notes: ActionBar buttons now support emphasized (i.e. accentColor)
Bugs:
SDK-31259 slight difference in callout content for 320 and 240/160 runs
SDK-29673 accentColor not working inside ActionBarsdk
Reviewer: tkraikit, betravis
Tests run: checkintests, mustella-mobile
Is noteworthy for integration: no

Modified Paths:
--------------
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/mobiletheme/src/spark/skins/mobile/ButtonSkin.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/mobiletheme/src/spark/skins/mobile/BeveledActionButtonSkin.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/mobiletheme/src/spark/skins/mobile/DefaultButtonSkin.as</path>
<path kind="file" action="A">/private/flex/sdk/branches/4.y/frameworks/projects/mobiletheme/src/spark/skins/mobile/DefaultTransparentActionButtonSkin.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/mobiletheme/src/spark/skins/mobile320/assets/CalloutContentBackground.fxg</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/mobiletheme/defaults.css</path>
<path kind="file" action="A">/private/flex/sdk/branches/4.y/frameworks/projects/mobiletheme/src/spark/skins/mobile/DefaultTransparentNavigationButtonSkin.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/mobiletheme/src/spark/skins/mobile/BeveledBackButtonSkin.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/mobiletheme/src/spark/skins/mobile/CalloutSkin.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/mobiletheme/src/spark/skins/mobile/supportClasses/ActionBarButtonSkinBase.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/mobiletheme/src/spark/skins/mobile/supportClasses/CalloutArrow.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/mobiletheme/src/MobileThemeClasses.as</path>
<path kind="file" action="A">/private/flex/sdk/branches/4.y/frameworks/projects/mobiletheme/src/spark/skins/mobile/DefaultBeveledActionButtonSkin.as</path>
<path kind="file" action="A">/private/flex/sdk/branches/4.y/frameworks/projects/mobiletheme/src/spark/skins/mobile/DefaultBeveledBackButtonSkin.as</path>

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

--- frameworks/projects/mobiletheme/src/spark/skins/mobile/DefaultBeveledBackButtonSkin.as
+++ frameworks/projects/mobiletheme/src/spark/skins/mobile/DefaultBeveledBackButtonSkin.as
@@ -0,0 +1,48 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+//  ADOBE SYSTEMS INCORPORATED
+//  Copyright 2011 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 spark.skins.mobile
+{
+import mx.core.mx_internal;
+
+use namespace mx_internal;
+
+/**
+ *  Emphasized button uses accentColor instead of chromeColor. Replaces the
+ *  BeveledBackButtonSkin.
+ *
+ *  @langversion 3.0
+ *  @playerversion AIR 3
+ *  @productversion Flex 4.5.2
+ */
+public class DefaultBeveledBackButtonSkin extends BeveledBackButtonSkin
+{
+    //--------------------------------------------------------------------------
+    //
+    //  Constructor
+    //
+    //--------------------------------------------------------------------------
+
+    /**
+     *  Constructor.
+     *
+     *  @langversion 3.0
+     *  @playerversion AIR 3
+     *  @productversion Flex 4.5.2
+     */
+    public function DefaultBeveledBackButtonSkin()
+    {
+        super();
+
+        fillColorStyleName = "accentColor";
+    }
+}
+}


TestRunner is now runs methods synchronously where it can, to avoid horrendous slowdown of Timers in Flash Player 10.1.

--- as3/src/asunit4/runners/TestRunner.as
+++ as3/src/asunit4/runners/TestRunner.as
@@ -32,6 +32,7 @@
 		protected var methodsToRun:TestIterator;
 		protected var methodTimeoutID:int = -1;
 		protected var methodPassed:Boolean = true;
+		protected var methodIsExecuting:Boolean = false;

 		public function TestRunner() {
 			timer = new Timer(0, 1);
@@ -77,6 +78,9 @@
 				methodTimeoutID = setTimeout(onMethodTimeout, currentMethod.timeout);
 			}

+			// This is used to prevent async callbacks from triggering onMethodCompleted too early.
+			methodIsExecuting = true;
+
 			if (currentMethod.expects) {
 				var errorClass:Class = getDefinitionByName(currentMethod.expects) as Class;
 				try {
@@ -95,6 +99,8 @@
 				}
 			}

+			methodIsExecuting = false;
+
 			if (Async.instance.hasPending) return;
 			onMethodCompleted();
 		}
@@ -112,12 +118,13 @@
 				testListener.onTestSuccess(new TestSuccess(currentTest, currentMethod.name));
 			}

-			// Calling synchronously is slightly faster but keeps adding to the call stack.
-			//runNextMethod();
+			// Calling synchronously is faster but keeps adding to the call stack.
+			runNextMethod();

 			// green thread for runNextMethod()
-			timer.reset();
-			timer.start();
+			// This runs much slower in Flash Player 10.1.
+			//timer.reset();
+			//timer.start();
 		}

 		protected function onAsyncMethodCalled(event:TimeoutCommandEvent):void {
@@ -142,7 +149,7 @@
 		}

 		protected function onAsyncMethodCompleted(event:Event = null):void {
-			if (!Async.instance.hasPending) {
+			if (!methodIsExecuting && !Async.instance.hasPending) {
 				onMethodCompleted();
 			}
 		}


Apache license 2.0 added.

Apache license 2.0 added.

--- tui_flashdevelop4_2_1__tuioAS3_0_8__AIR2_6/lib/touchAll/draw2Dmodel3D/Draw2Dmodel3D.as
+++ tui_flashdevelop4_2_1__tuioAS3_0_8__AIR2_6/lib/touchAll/draw2Dmodel3D/Draw2Dmodel3D.as
@@ -1,3 +1,20 @@
+/*
+ * Tangible User Interfacer (former TouchAll) misc code.
+ *
+ * Copyright 2016 Gonçalo Amador <g.n.p.amador@gmail.com>
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
 package touchAll.draw2Dmodel3D
 {

@@ -598,4 +615,4 @@
 			}
 		}
 	}
-}+}


Fix for JIRA issue http://bugs.adobe.com/jira/browse/FXU-37

git-svn-id: 9278a788294a4258aac04586390fc35fb4a5f335@6909 a9308255-753e-0410-a2e9-80b3fbc4fff6

--- FlexUnit4/src/org/flexunit/internals/runners/FlexUnit1ClassRunner.as
+++ FlexUnit4/src/org/flexunit/internals/runners/FlexUnit1ClassRunner.as
@@ -104,7 +104,23 @@
 				var methodList:Array = getMethodListFromFilter( klassInfo, filter );

 				for ( var i:int=0; i<methodList.length; i++ ) {
-					suite.addTest( new klassOrTest( methodList[ i ] ) );
+					var numConstructorArgs:int = klassInfo.constructor.parameterTypes.length;
+					var test:Test;
+
+					if ( numConstructorArgs == 0 ) {
+						test = klassInfo.constructor.newInstance() as Test;
+						if ( test is TestCase ) {
+							//If this is a testCase && it does not take a constructor argument
+							//then we try to pass it into methodName
+							TestCase( test ).methodName = methodList[ i ];
+						}
+					} else if ( numConstructorArgs == 1 ) {
+						test = klassInfo.constructor.newInstance( methodList[ i ] ) as Test;
+					} else {
+						throw new InitializationError( "Asking to instatiate TestClass with unknown number of arguments" );
+					}
+
+					suite.addTest( test );
 				}
 				return suite;
 			}