Transferred from the Adobe Open Source Subversion Repository

Revision: 9177
Author:   jimurphy@adobe.com
Date:     2009-08-07T21:15:07.894169Z

Log Message:
-----------
Merged 3.4 revisions 8630,8660,8683,8735,8750,8753,8755,8757,8759,8764,8776,8798,8821,8824,8837,8862,8911,8946,8949,8962,8965,9026,9109,9131,9138-9139,9147 -> trunk

integrates:
player: 10.0.32.18
AIR kit: 1.5.2.8870 (20090721ap)

checkintests: pass

(btw: I'm not happy about doing this on a Friday PM!)

Modified Paths:
--------------
<path kind="file" action="M">/flex/sdk/trunk/in/air/air_version.txt</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/managers/BrowserManagerImpl.as</path>
<path kind="file" action="M">/flex/sdk/trunk/in/player/10/mac/Install Flash Player 10 UB.dmg</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/rpc/src/mx/rpc/remoting/Operation.as</path>
<path kind="file" action="M">/flex/sdk/trunk/in/air/mac/AIR Integration Kit.tbz2</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/rpc/src/mx/rpc/http/HTTPMultiService.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/libs/player/10/playerglobal.swc</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/rpc/src/mx/rpc/AsyncResponder.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/rpc/src/mx/rpc/xml/SimpleXMLDecoder.as</path>
<path kind="dir" action="M">/flex/sdk/trunk</path>
<path kind="file" action="M">/flex/sdk/trunk/in/player/10/lnx/flashplayer.tar.gz</path>
<path kind="file" action="M">/flex/sdk/trunk/in/air/win/AIR Integration Kit.zip</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/in/player/10/lnx/libflashplayer.so.tar.gz</path>
<path kind="file" action="M">/flex/sdk/trunk/in/player/10/win/FlashPlayer.exe</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/dataGridClasses/DataGridHeader.as</path>
<path kind="file" action="M">/flex/sdk/trunk/in/player/10/mac/Flash Player.app.zip</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/rpc/src/mx/rpc/http/HTTPService.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/rpc/src/mx/rpc/http/Operation.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/MenuBar.as</path>
<path kind="file" action="M">/flex/sdk/trunk/lib/flex-messaging-common.jar</path>
<path kind="file" action="M">/flex/sdk/trunk/in/player/10/win/Install Flash Player 10 Plugin.exe</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/dataGridClasses/DataGridColumn.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/rpc/src/mx/rpc/remoting/mxml/RemoteObject.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/rpc/src/mx/rpc/AbstractService.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/rpc/src/mx/rpc/soap/AbstractWebService.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/rpc/src/mx/rpc/xml/XMLDecoder.as</path>
<path kind="file" action="M">/flex/sdk/trunk/in/player/10/win/Install Flash Player 10 ActiveX.exe</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/rpc/src/mx/messaging/messages/MessagePerformanceUtils.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/Tree.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/TextInput.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/rpc/src/mx/messaging/MessageAgent.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/rpc/src/mx/rpc/mxml/IMXMLSupport.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/rpc/src/mx/rpc/soap/ISOAPDecoder.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/rpc/src/mx/rpc/http/AbstractOperation.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/DataGrid.as</path>
<path kind="file" action="M">/flex/sdk/trunk/in/player/10/lnx/install_flash_player_10_linux.tar.gz</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/rpc/src/mx/rpc/xml/SimpleXMLEncoder.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/Text.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/rpc/src/mx/rpc/xml/IXMLSchemaInstance.as</path>

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

--- frameworks/projects/rpc/src/mx/rpc/http/AbstractOperation.as
+++ frameworks/projects/rpc/src/mx/rpc/http/AbstractOperation.as
@@ -83,6 +83,13 @@
      *  @playerversion Flash 9
      *  @playerversion AIR 1.1
      *  @productversion Flex 3
+
+     *  Creates a new Operation.
+     *
+     *  @param service The object defining the type of service, such as
+     *  HTTPMultiService, WebService, or RemoteObject.
+     *
+     *  @param name The name of the service.
      */
     public function AbstractOperation(service:AbstractService=null, name:String=null)
     {
@@ -900,11 +907,6 @@
      *  @playerversion Flash 9
      *  @playerversion AIR 1.1
      *  @productversion Flex 3
-     *
-     *  @langversion 3.0
-     *  @playerversion Flash 9
-     *  @playerversion AIR 1.1
-     *  @productversion Flex 3
      */
     protected function getHeaders():Object
     {


Transferred from the Adobe Open Source Subversion Repository

Revision: 19906
Author:   cframpto@adobe.com
Date:     2011-01-24T14:34:03.657916Z

Log Message:
-----------
Dispatch FlexEvent.CHANGE on the VScrollBar and the HScrollBar while scrolling with s:Scroller while using the mouse wheel.

QE notes:
Doc notes:
Bugs: SDK-26533
Reviewer: Hans
Tests run: cyclone
Is noteworthy for integration:

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

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

--- frameworks/projects/spark/src/spark/components/HScrollBar.as
+++ frameworks/projects/spark/src/spark/components/HScrollBar.as
@@ -11,6 +11,7 @@

 package spark.components
 {
+import flash.events.Event;
 import flash.events.MouseEvent;
 import flash.geom.Point;

@@ -550,6 +551,7 @@

         var nSteps:uint = Math.abs(delta);
         var navigationUnit:uint;
+        var scrollPositionChanged:Boolean;

         // Scroll delta "steps".
         navigationUnit = (delta < 0) ? NavigationUnit.RIGHT : NavigationUnit.LEFT;
@@ -559,11 +561,15 @@
             if (!isNaN(hspDelta))
             {
                 vp.horizontalScrollPosition += hspDelta;
+                scrollPositionChanged = true;
                 if (vp is IInvalidating)
                     IInvalidating(vp).validateNow();
             }
         }

+        if (scrollPositionChanged)
+            dispatchEvent(new Event(Event.CHANGE));
+
         event.preventDefault();
     }


Transferred from the Adobe Open Source Subversion Repository

Revision: 9930
Author:   smgilson@adobe.com
Date:     2009-09-02T18:18:40.643031Z

Log Message:
-----------
Add ASDoc version tags to new or untagged classes

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

Modified Paths:
--------------
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/rpc/src/mx/rpc/mxml/IMXMLSupport.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/managers/IMarshalSystemManager.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/filters/BaseDimensionFilter.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/rpc/src/mx/rpc/AbstractService.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/rpc/src/mx/rpc/soap/AbstractWebService.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/effects/easing/Bounce.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/filters/IBitmapFilter.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/effects/DefaultTileListEffect.mxml</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/core/INavigatorContent.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/effects/DefaultListEffect.mxml</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/effects/easing/Elastic.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/rpc/src/mx/rpc/http/HTTPService.as</path>

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

--- frameworks/projects/spark/src/spark/effects/easing/Bounce.as
+++ frameworks/projects/spark/src/spark/effects/easing/Bounce.as
@@ -18,6 +18,11 @@
  * pulling on and bouncing the target object. The object
  * movement accelerates toward the end value and then bounces against
  * it several times.
+ *
+ *  @langversion 3.0
+ *  @playerversion Flash 10
+ *  @playerversion AIR 1.5
+ *  @productversion Flex 4
  */
 public class Bounce implements IEaser
 {
@@ -29,6 +34,11 @@

     /**
      *  Constructs a Bounce easer.
+     *
+     *  @langversion 3.0
+     *  @playerversion Flash 10
+     *  @playerversion AIR 1.5
+     *  @productversion Flex 4
      */
     public function Bounce()
     {


Transferred from the Adobe Open Source Subversion Repository

Revision: 19245
Author:   clucier@adobe.com
Date:     2010-12-09T23:56:15.665710Z

Log Message:
-----------
Bug fixes for icon button skin.

QE notes: None
Doc notes: None
Bugs: SDK-28508
Reviewer: Carol
Tests run: Checkin, Cyclone
Is noteworthy for integration: No

Modified Paths:
--------------
/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/skins/SparkButtonSkin.as

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

--- frameworks/projects/spark/src/spark/skins/SparkButtonSkin.as
+++ frameworks/projects/spark/src/spark/skins/SparkButtonSkin.as
@@ -366,7 +366,7 @@
             // If we have an icon to render we ensure the necessary
             // parts are created and we configure a helper layout
             // (LabelAndIconLayout) to manage our display parts.
-            if (_icon && labelDisplay)
+            if (_icon)
             {
                 if (iconChanged)
                     constructIconParts(true);
@@ -511,8 +511,11 @@
         {
             // Ensure empty label is not included in layout else
             // a gap between icon and label would be applied.
-            IVisualElement(labelDisplay).includeInLayout = labelDisplay.text != null
-                && labelDisplay.text.length;
+            if (labelDisplay)
+            {
+                IVisualElement(labelDisplay).includeInLayout = labelDisplay.text != null
+                    && labelDisplay.text.length;
+            }
         }
     }
 }


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

--- frameworks/projects/spark/src/spark/skins/SparkButtonSkin.as
+++ frameworks/projects/spark/src/spark/skins/SparkButtonSkin.as
@@ -1,11 +1,19 @@
 ////////////////////////////////////////////////////////////////////////////////
 //
-//  ADOBE SYSTEMS INCORPORATED
-//  Copyright 2010 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 transformation limit issue

fixed transformation limit issue

--- YCanvasMapLibrary/src/main/actionscript/sk/yoz/ycanvas/map/managers/AbstractTransformationManager.as
+++ YCanvasMapLibrary/src/main/actionscript/sk/yoz/ycanvas/map/managers/AbstractTransformationManager.as
@@ -154,7 +154,7 @@
         protected function limitCenterX(centerX:Number):Number
         {
             if(centerX < limit.minCenterX)
-                return limit.minCenterY;
+                return limit.minCenterX;
             if(centerX > limit.maxCenterX)
                 return limit.maxCenterX;
             return centerX;


Transferred from the Adobe Open Source Subversion Repository

Revision: 12052
Author:   clucier@adobe.com
Date:     2009-11-20T18:38:19.094091Z

Log Message:
-----------
We now issue runtime warnings for incompatible embedded fonts as we detect their use.

QE notes: You might want to create a couple tests around this.
Doc notes: None.
Bugs: SDK-23920.
Reviewer: Alex, Darrell
Tests run: Checkin
Is noteworthy for integration: Yes

Modified Paths:
--------------
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/bundles/en_US/core.properties</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/dataGridClasses/DataGridColumn.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/core/UITextField.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/components/RichText.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/mx/core/UIFTETextField.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/core/EmbeddedFontRegistry.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/utils/TextUtil.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/core/UITextFormat.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/components/Label.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/core/UIComponent.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/components/RichEditableText.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/core/IEmbeddedFontRegistry.as</path>

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

--- frameworks/projects/framework/src/mx/core/EmbeddedFontRegistry.as
+++ frameworks/projects/framework/src/mx/core/EmbeddedFontRegistry.as
@@ -12,8 +12,17 @@
 package mx.core
 {

+import flash.system.Capabilities;
 import flash.text.FontStyle;
+import flash.text.TextField;
+import flash.text.TextFormat;
+import flash.text.engine.FontDescription;
 import flash.utils.Dictionary;
+import flash.utils.getQualifiedClassName;
+
+import mx.managers.ISystemManager;
+import mx.resources.IResourceManager;
+import mx.resources.ResourceManager;

 use namespace mx_internal;

@@ -34,21 +43,37 @@
 	//
 	//--------------------------------------------------------------------------

-	/**
-	 *  @private
-	 */
-	private static var fonts:Object = {};
-
-	/**
-	 *  @private
-	 */
-	private static var cachedFontsForObjects:Dictionary = new Dictionary(true);
-
-	/**
-	 *  @private
-	 */
-	private static var instance:IEmbeddedFontRegistry;
-
+    /**
+     *  @private
+     */
+    private static var fonts:Object = {};
+
+    /**
+     *  @private
+     */
+    private static var cachedFontsForObjects:Dictionary = new Dictionary(true);
+
+    /**
+     *  @private
+     */
+    private static var instance:IEmbeddedFontRegistry;
+
+    /**
+     *  @private
+     *  Used for accessing localized Error messages.
+     */
+    private var resourceManager:IResourceManager = ResourceManager.getInstance();
+
+    /**
+     *  @private
+     */
+    private static var staticTextFormat:TextFormat = new TextFormat();
+
+    /**
+     *  @private
+     */
+    private static var flaggedObjects:Dictionary = new Dictionary(true);
+
 	//--------------------------------------------------------------------------
 	//
 	//  Class methods
@@ -328,20 +353,22 @@
 	 *  @playerversion AIR 1.1
 	 *  @productversion Flex 3
 	 */
-	public function getAssociatedModuleFactory(
-						fontName:String, bold:Boolean, italic:Boolean,
-						object:Object,
-						defaultModuleFactory:IFlexModuleFactory):
-						IFlexModuleFactory
-	{
-
-		var font:EmbeddedFont;
-		font = cachedFontsForObjects[object];
-		if (!font)
-		{
-			font = new EmbeddedFont(fontName, bold, italic);
-			cachedFontsForObjects[object] = font;
-		}
+    public function getAssociatedModuleFactory(
+                        fontName:String, bold:Boolean, italic:Boolean,
+                        object:Object,
+                        defaultModuleFactory:IFlexModuleFactory,
+                        systemManager:ISystemManager,
+                        embeddedCff:*=undefined):
+                        IFlexModuleFactory
+    {
+
+        var font:EmbeddedFont;
+        font = cachedFontsForObjects[object];
+        if (!font)
+        {
+            font = new EmbeddedFont(fontName, bold, italic);
+            cachedFontsForObjects[object] = font;
+        }
         else
         {
             // replace if not the same
@@ -349,34 +376,76 @@
                 font.bold != bold ||
                 font.italic != italic)
             {
-			    font = new EmbeddedFont(fontName, bold, italic);
-			    cachedFontsForObjects[object] = font;
+                font = new EmbeddedFont(fontName, bold, italic);
+                cachedFontsForObjects[object] = font;
             }

         }
-
-		var fontDictionary:Dictionary = fonts[createFontKey(font)];
-		if (fontDictionary)
-		{
-			// First lookup in the dictionary. If not found, then
-			// take the first moduleFactory in the dictionary.
-			// A module can register a font that is not unique and still
-			// use that font as long as its components specify the moduleFactory.
-			// A module can use fonts in other modules but
-			// to get consistent behavior the font should be unique.
-			var found:int = fontDictionary[defaultModuleFactory];
-
-			if (found)
-				return defaultModuleFactory;
-
-			for (var iter:Object in fontDictionary)
-			{
-				return iter as IFlexModuleFactory;
-			}
-		}
-
-		return null;
-	}
+        var result:IFlexModuleFactory;
+        var fontDictionary:Dictionary = fonts[createFontKey(font)];
+        if (fontDictionary)
+        {
+            // First lookup in the dictionary. If not found, then
+            // take the first moduleFactory in the dictionary.
+            // A module can register a font that is not unique and still
+            // use that font as long as its components specify the moduleFactory.
+            // A module can use fonts in other modules but
+            // to get consistent behavior the font should be unique.
+            var found:int = fontDictionary[defaultModuleFactory];
+
+            if (found)
+                result = defaultModuleFactory;
+            else
+            {
+                for (var iter:Object in fontDictionary)
+                {
+                    result =  iter as IFlexModuleFactory;
+                    break;
+                }
+            }
+        }
+
+        if (!result && systemManager)
+        {
+            // If we found the font, then it is embedded. Some fonts are not
+            // listed in info() and are therefore not resolvable with our
+            // registry, so we call isFontFaceEmbedded() which gets the list
+            // of embedded fonts from the player.
+            staticTextFormat.font = fontName;
+            staticTextFormat.bold = bold;
+            staticTextFormat.italic = italic;
+
+            if (systemManager.isFontFaceEmbedded(staticTextFormat))
+                result = systemManager;
+        }
+
+        // We must ensure that the requested font is in fact valid for our
+        // given usage and context.
+        if (result && embeddedCff != undefined && Capabilities.isDebugger)
+        {
+            var compatible:Boolean = embeddedCff ?
+                result.callInContext(FontDescription.isFontCompatible, null,
+                    [fontName, bold ? "bold" : "normal", italic ? "italic" : "normal"]) :
+                result.callInContext(TextField.isFontCompatible, null,
+                    [fontName, getFontStyle(bold, italic)]);
+
+            if (!compatible)
+            {
+                // We want to avoid reporting redundant warnings so we keep tabs
+                // on which instances we've already flagged as incompatible.
+                if (!flaggedObjects[object])
+                {
+                    var objName:String = getQualifiedClassName(object);
+                    objName += "name" in object && object.name != null ? " ("+object.name+") " : "";
+                    trace(resourceManager.getString( "core", "fontIncompatible",
+                        [fontName, objName, embeddedCff]));
+                    flaggedObjects[object] = true;
+                }
+            }
+        }
+
+        return result;
+    }
 }

 }


Transferred from the Adobe Open Source Subversion Repository

Revision: 4516
Author:   gosmith@adobe.com
Date:     2009-01-13T23:23:14.594709Z

Log Message:
-----------
Accessibility changes to Panel and TitleWindow, as requested by Freedom Scientific.

These components now report their accessibility role as "grouping" rather than "window". Their accessibility name is now simply their title. They no longer report any child items. Their accessibility location is the bounding rect of the entire Panel or TitleWindow.

The AccessibilityImplementation continues to be attached to the titleBar, not to the Panel/TitleWindow, because the Flash Player ignores Sprites with an AccessibilityImplementation that are inside other Sprites with an AccessibilityImplementation. (The Flash accessibility model is flat, not hierarchical, and "child IDs" are only used for things like list items, not for controls in titled container.)

So although in the display hierarchy the Panel is a parent of its content controls, in the MSAA model it appears as their preceding sibling. JAWS will look at the "grouping" role and understand that because the bounding rect of the grouping includes some of its following siblings, they are "inside". (I don't know what this means in terms of what JAWS will actually speak.)

Also, the AccImpl class now implements getChildIDArray() to return an empty array, so that by default all components have 0 child items (rather than reporting an error).

Finally, subclasses with child items now compute how many they have and then call a new AccImpl utility method, createChildIDArray(), to create an Array that looks like [ 1, 2, 3, 4, 5 ].

QE Notes: None
Doc Notes: None
Bugs: SDK-12390, SDK-16340
Reviewer: Deepa

Modified Paths:
--------------
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/accessibility/TabBarAccImpl.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/accessibility/ColorPickerAccImpl.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/accessibility/AccImpl.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/accessibility/DataGridAccImpl.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/accessibility/PanelAccImpl.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/accessibility/TreeAccImpl.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/accessibility/SliderAccImpl.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/containers/Panel.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/accessibility/ListBaseAccImpl.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/accessibility/MenuBarAccImpl.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/accessibility/TitleWindowAccImpl.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/accessibility/ComboBaseAccImpl.as</path>

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

--- frameworks/projects/mx/src/mx/accessibility/TitleWindowAccImpl.as
+++ frameworks/projects/mx/src/mx/accessibility/TitleWindowAccImpl.as
@@ -35,11 +35,6 @@
 	//  Class constants
 	//
 	//--------------------------------------------------------------------------
-
-	/**
-	 *  @private
-	 */
-	private static const STATE_SYSTEM_FOCUSED:uint = 0x00000004;

 	/**
 	 *  @private
@@ -91,15 +86,16 @@
 	mx_internal static function createAccessibilityImplementation(
 								component:UIComponent):void
 	{
+		// The AccessibilityImplementation is placed on the
+		// TitleWindow's titleBar, not on the TitleWindow itself.
+		// If it were placed on the TitleWindow itself,
+		// the AccessibilityImplementations of the TitleWindow's children
+		// would be ignored.
 		var titleBar:UIComponent = TitleWindow(component).getTitleBar();
-
-		var titleBarAccImpl:TitleWindowAccImpl =
+		titleBar.accessibilityImplementation =
 			new TitleWindowAccImpl(component);

-		titleBar.accessibilityImplementation = titleBarAccImpl;
-
 		Accessibility.sendEvent(titleBar, 0, EVENT_OBJECT_CREATE);
-
 		Accessibility.updateProperties();
 	}

@@ -127,7 +123,7 @@
 													 eventHandler);

 		Panel(master).closeButton.addEventListener(MouseEvent.MOUSE_UP,
-														eventHandler);
+												   eventHandler);
 	}

 	//--------------------------------------------------------------------------
@@ -152,25 +148,7 @@
 	{
 		var accState:uint = getState(childID);

-		switch (childID)
-		{
-			case 1:
-			{
-				break;
-			}
-
-			case 2:
-			{
-				accState |= STATE_SYSTEM_FOCUSED;
-				break;
-			}
-
-			default:
-			{
-				accState |= STATE_SYSTEM_MOVEABLE;
-				break;
-			}
-		}
+		accState |= STATE_SYSTEM_MOVEABLE;

 		return accState;
 	}


FLEX-32959 use calculated height

FLEX-32959 use calculated height

--- frameworks/projects/advancedgrids/src/mx/controls/AdvancedDataGridBaseEx.as
+++ frameworks/projects/advancedgrids/src/mx/controls/AdvancedDataGridBaseEx.as
@@ -4038,8 +4038,7 @@
         var height:Number = Math.min(lastRow.y + lastRow.height,
                                      listContent.height - yy);

-        g.drawRect(xx, yy, headerInfo.headerItem.width,
-                   listContent.height - yy);
+        g.drawRect(xx, yy, headerInfo.headerItem.width, height);
         g.endFill();
     }


Transferred from the Adobe Open Source Subversion Repository

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

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

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

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

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

--- frameworks/projects/spark/src/spark/components/supportClasses/ButtonBase.as
+++ frameworks/projects/spark/src/spark/components/supportClasses/ButtonBase.as
@@ -39,6 +39,8 @@

 /**
  *  The radius of the corners of this component.
+ *
+ *  @default 4
  *
  *  @langversion 3.0
  *  @playerversion Flash 10
@@ -49,6 +51,8 @@

 /**
  *  The alpha of the focus ring for this component.
+ *
+ *  @default 0.5
  *
  *  @langversion 3.0
  *  @playerversion Flash 10
@@ -169,9 +173,10 @@
 [DefaultProperty("label")]

 /**
- *  The ButtonBase component is the base class for the all Spark button components.
- *  Button and ToggleButtonBase are subclasses of ButtonBase.
- *  ToggleButton, CheckBox and RadioButton are subclasses of ToggleButtonBase.
+ *  The ButtonBase class is the base class for the all Spark button components.
+ *  The Button and ToggleButtonBase classes are subclasses of ButtonBase.
+ *  ToggleButton.
+ *  The CheckBox and RadioButton classes are subclasses of ToggleButtonBase.
  *
  *  @mxml
  *
@@ -191,15 +196,15 @@
  *
  *    Styles
  *    alignmentBaseline="USE_DOMINANT_BASELINE"
- *    baselineShift="0.0"
- *    breakOpportunity="AUTO"
  *    cffHinting="HORIZONTAL_STEM"
  *    color="0"
+ *    cornerRadius="4"
  *    digitCase="DEFAULT"
  *    digitWidth="DEFAULT"
  *    direction="LTR"
  *    dominantBaseline="AUTO"
- *    focusColor=""
+ *    focusAlpha="0.5"
+ *    focusColor="0x70B2EE"
  *    fontFamily="Times New Roman"
  *    fontLookup="DEVICE"
  *    fontSize="12"
@@ -636,7 +641,7 @@

     /**
      *  Indicates whether the mouse is down and the mouse pointer was
-     *  over the button when MouseEvent.MOUSE_DOWN was first dispatched.
+     *  over the button when MouseEvent.MOUSE_DOWN was first dispatched.
      *  Used to determine the skin state.
      *
      *  @langversion 3.0
@@ -919,10 +924,10 @@
     }

     /**
-     *  This method is called when handling a MouseEvent.MOUSE_UP event
+     *  This method is called when handling a MouseEvent.MOUSE_UP event
      *  when the user clicks on the button. It is only called when the button
-     *  is the target and when mouseCaptured is true. It allows subclasses
-     *  to update the properties of the button right as it is clicked to
+     *  is the target and when mouseCaptured is true.
+     *  It allows subclasses to update the properties of the button right as it is clicked to
      *  avoid the button being in transitional states between the mouse up
      *  and click events.
      *
@@ -994,8 +999,12 @@
      *  This method handles the mouse events, calls the clickHandler method
      *  where appropriate and updates the hovered and
      *  mouseCaptured properties.
-     *
This method gets called to handle MouseEvent.ROLL_OVER, MouseEvent.ROLL_OUT,
-     *  MouseEvent.MOUSE_DOWN, MouseEvent.MOUSE_UP, and MouseEvent.CLICK.

+     *
+     *
This method gets called to handle MouseEvent.ROLL_OVER,
+     *  MouseEvent.ROLL_OUT, MouseEvent.MOUSE_DOWN,
+     *  MouseEvent.MOUSE_UP, and MouseEvent.CLICK events.

+     *
+     *  @param event The Event object associated with the event.
      *
      *  @langversion 3.0
      *  @playerversion Flash 10
@@ -1067,9 +1076,11 @@
     }

     /**
-     *  Override in subclasses to handle the click event rather than
-     *  adding a separate handler. clickHandler will not get called if the
-     *  button is disabled.
+     *  Override this method in subclasses to handle the click event rather than
+     *  adding a separate handler.
+     *  This method is not called if the button is disabled.
+     *
+     *  @param event The Event object associated with the event.
      *
      *  @langversion 3.0
      *  @playerversion Flash 10


Transferred from the Adobe Open Source Subversion Repository

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

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

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

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

--- frameworks/projects/airframework/src/mx/managers/WindowedSystemManager.as
+++ frameworks/projects/airframework/src/mx/managers/WindowedSystemManager.as
@@ -16,35 +16,30 @@
 import flash.display.DisplayObjectContainer;
 import flash.display.Graphics;
 import flash.display.InteractiveObject;
-import flash.display.Loader;
 import flash.display.MovieClip;
 import flash.display.Sprite;
 import flash.display.StageAlign;
 import flash.display.StageScaleMode;
 import flash.events.Event;
 import flash.events.MouseEvent;
+import flash.geom.Point;
 import flash.geom.Rectangle;
-import flash.geom.Point;
 import flash.system.ApplicationDomain;
-import flash.system.Capabilities;
 import flash.text.Font;
 import flash.text.TextFormat;
 import flash.ui.ContextMenu;
-import flash.utils.describeType;
+
+import mx.core.FlexSprite;
 import mx.core.IChildList;
 import mx.core.IFlexDisplayObject;
 import mx.core.IFlexModule;
 import mx.core.IUIComponent;
+import mx.core.Singleton;
+import mx.core.Window;
 import mx.core.mx_internal;
-import mx.core.Singleton;
 import mx.events.FlexEvent;
-import mx.managers.DragManager;
-import mx.managers.NativeDragManagerImpl;
-import mx.managers.SystemManagerGlobals;
 import mx.styles.ISimpleStyleClient;
 import mx.styles.IStyleClient;
-import mx.core.IWindow;
-import mx.core.Window;

 use namespace mx_internal;
@@ -153,6 +148,34 @@
 	 *  Without the mouseCatcher, the Button wouldn't return to its "up" state.
 	 */
 	private var mouseCatcher:Sprite;
+
+	//----------------------------------
+	//  applicationIndex
+	//----------------------------------
+
+	/**
+	 *  @private
+	 *  Storage for the applicationIndex property.
+	 */
+	private var _applicationIndex:int = 1;
+
+	/**
+	 *  @private
+	 *  The index of the main mx.core.Application window, which is
+	 *  effectively its z-order.
+	 */
+	mx_internal function get applicationIndex():int
+	{
+		return _applicationIndex;
+	}
+
+	/**
+	 *  @private
+	 */
+	mx_internal function set applicationIndex(value:int):void
+	{
+		_applicationIndex = value;
+	}

 	//-----------------------------------
 	//  ISystemManager implementations
@@ -1002,6 +1025,40 @@
 			document = this;
 		}

+		// because we have no preload done handler, we need to
+		// do that work elsewhere
+		addChildAndMouseCatcher();
+	}
+
+	/**
+	 *  @private
+	 *  Same as SystemManager's preload done handler.  It adds
+	 *  the window to the application (and a mouse catcher)
+	 *
+	 *  Called from initializeTopLevelWindow()
+	 */
+	private function addChildAndMouseCatcher():void
+	{
+		var app:IUIComponent = topLevelWindow;
+		// Add the mouseCatcher as child 0.
+		mouseCatcher = new FlexSprite();
+		mouseCatcher.name = "mouseCatcher";
+
+		// Must use addChildAt because a creationComplete handler can create a
+		// dialog and insert it at 0.
+		noTopMostIndex++;
+		super.addChildAt(mouseCatcher, 0);
+		resizeMouseCatcher();
+
+		// topLevel seems to always be true, but keeping it here just in case
+		if (!topLevel)
+		{
+			mouseCatcher.visible = false;
+			mask = mouseCatcher;
+		}
+
+		noTopMostIndex++;
+	    super.addChild(DisplayObject(app));
 	}

@@ -1327,6 +1384,20 @@

 		return rawChildren_addChildAt(child, noTopMostIndex - 1);
 	}
+
+	//----------------------------------
+    //  numChildren
+    //----------------------------------
+
+	/**
+	 *  The number of non-floating windows.  This is the main application window
+	 *  plus any other windows added to the SystemManager that are not popups,
+	 *  tooltips or cursors.
+	 */
+	override public function get numChildren():int
+	{
+		return noTopMostIndex - applicationIndex;
+	}

     /**
 	 *  @private
@@ -1338,7 +1409,7 @@
 		// before the "added" event is dispatched.
 		noTopMostIndex++;

-		return rawChildren_addChildAt(child, index);
+		return rawChildren_addChildAt(child, applicationIndex + index);
 	}

     /**
@@ -1362,7 +1433,7 @@
 		// before the "removed" event is dispatched.
 		noTopMostIndex--;

-		return rawChildren_removeChildAt(noTopMostIndex + index);
+		return rawChildren_removeChildAt(applicationIndex + index);
 	}

 	/**
@@ -1370,7 +1441,7 @@
 	 */
   	override public function getChildAt(index:int):DisplayObject
 	{
-		return super.getChildAt(noTopMostIndex + index)
+		return super.getChildAt(applicationIndex + index);
 	}

 	/**
@@ -1386,7 +1457,7 @@
 	 */
   	override public function getChildIndex(child:DisplayObject):int
 	{
-		return super.getChildIndex(child);
+		return super.getChildIndex(child) - applicationIndex;
 	}

 	/**
@@ -1394,7 +1465,7 @@
 	 */
 	override public function setChildIndex(child:DisplayObject, newIndex:int):void
 	{
-		super.setChildIndex(child, Math.min(noTopMostIndex + newIndex, numChildren-1));
+		super.setChildIndex(child, applicationIndex + newIndex);
 	}

 	/**


FIXED - FLEX-34038 Mobilegrid overflow

FIXED - FLEX-34038 Mobilegrid overflow

--- frameworks/projects/experimental_mobile/src/spark/skins/MobileGridSkin.as
+++ frameworks/projects/experimental_mobile/src/spark/skins/MobileGridSkin.as
@@ -170,7 +170,7 @@
         setElementPosition(headerShadow, 0, headerHeight);
         // Scroller
         scroller.minViewportInset = borderWidth;
-        setElementSize(scroller, unscaledWidth, unscaledHeight);
+        setElementSize(scroller, unscaledWidth, unscaledHeight - headerHeight);
         setElementPosition(scroller, 0, headerHeight);
     }
 }


Transferred from the Adobe Open Source Subversion Repository

Revision: 19190
Author:   aharui@adobe.com
Date:     2010-12-09T02:52:31.089358Z

Log Message:
-----------
Add ITEM_ROLL_OVER and ITEM_ROLL_OUT to Spark List and ButtonBar

QE notes: New Events
Doc notes: New Events
Bugs: SDK-22334
Reviewer: Ryan
Tests run: checkintests mustella full run
Is noteworthy for integration: yes

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

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

--- frameworks/projects/spark/src/spark/components/supportClasses/ListBase.as
+++ frameworks/projects/spark/src/spark/components/supportClasses/ListBase.as
@@ -13,6 +13,7 @@
 {

 import flash.events.Event;
+import flash.events.MouseEvent;

 import mx.collections.IList;
 import mx.core.FlexVersion;
@@ -27,11 +28,36 @@
 import spark.components.IItemRendererOwner;
 import spark.components.SkinnableDataContainer;
 import spark.events.IndexChangeEvent;
+import spark.events.ListEvent;
 import spark.events.RendererExistenceEvent;
 import spark.layouts.supportClasses.LayoutBase;
 import spark.utils.LabelUtil;

 use namespace mx_internal;  //ListBase and List share selection properties that are mx_internal
+
+/**
+ *  Dispatched when the user rolls the mouse pointer over an item in the control.
+ *
+ *  @eventType spark.events.ListEvent.ITEM_ROLL_OVER
+ *
+ *  @langversion 3.0
+ *  @playerversion Flash 10.2
+ *  @playerversion AIR 2.5
+ *  @productversion Flex 4.5
+ */
+[Event(name="itemRollOver", type="spark.events.ListEvent")]
+
+/**
+ *  Dispatched when the user rolls the mouse pointer out of an item in the control.
+ *
+ *  @eventType spark.events.ListEvent.ITEM_ROLL_OUT
+ *
+ *  @langversion 3.0
+ *  @playerversion Flash 10.2
+ *  @playerversion AIR 2.5
+ *  @productversion Flex 4.5
+ */
+[Event(name="itemRollOut", type="spark.events.ListEvent")]

 //--------------------------------------
 //  Events
@@ -166,6 +192,14 @@
      */
     mx_internal static var CUSTOM_SELECTED_ITEM:int = -3;

+    /**
+     *  @private
+     *  Static constant representing no item in focus.
+     */
+    private static const TYPE_MAP:Object = { rollOver: "itemRollOver",
+                                             rollOut:  "itemRollOut" };
+
+
     //--------------------------------------------------------------------------
     //
     //  Class mixins
@@ -952,6 +986,27 @@
             // Not your typical delegation, see 'set useVirtualLayout'
             if (_useVirtualLayout && dataGroup.layout)
                 dataGroup.layout.useVirtualLayout = true;
+
+            dataGroup.addEventListener(
+                RendererExistenceEvent.RENDERER_ADD, dataGroup_rendererAddHandler);
+            dataGroup.addEventListener(
+                RendererExistenceEvent.RENDERER_REMOVE, dataGroup_rendererRemoveHandler);
+        }
+    }
+
+    /**
+     *  @private
+     */
+    override protected function partRemoved(partName:String, instance:Object):void
+    {
+        super.partRemoved(partName, instance);
+
+        if (instance == dataGroup)
+        {
+            dataGroup.removeEventListener(
+                RendererExistenceEvent.RENDERER_ADD, dataGroup_rendererAddHandler);
+            dataGroup.removeEventListener(
+                RendererExistenceEvent.RENDERER_REMOVE, dataGroup_rendererRemoveHandler);
         }
     }

@@ -1437,6 +1492,78 @@
     //  Event handlers
     //
     //--------------------------------------------------------------------------
+
+    /**
+     *  Called when an item has been added to this component.
+     *
+     *  @langversion 3.0
+     *  @playerversion Flash 10.2
+     *  @playerversion AIR 2.5
+     *  @productversion Flex 4.5
+     */
+    protected function dataGroup_rendererAddHandler(event:RendererExistenceEvent):void
+    {
+        var renderer:IVisualElement = event.renderer;
+
+        if (!renderer)
+            return;
+
+        renderer.addEventListener(MouseEvent.ROLL_OVER, item_mouseEventHandler);
+        renderer.addEventListener(MouseEvent.ROLL_OUT, item_mouseEventHandler);
+    }
+
+    /**
+     *  Called when an item has been removed from this component.
+     *
+     *  @langversion 3.0
+     *  @playerversion Flash 10.2
+     *  @playerversion AIR 2.5
+     *  @productversion Flex 4.5
+     */
+    protected function dataGroup_rendererRemoveHandler(event:RendererExistenceEvent):void
+    {
+        var renderer:IVisualElement = event.renderer;
+
+        if (!renderer)
+            return;
+
+        renderer.removeEventListener(MouseEvent.ROLL_OVER, item_mouseEventHandler);
+        renderer.removeEventListener(MouseEvent.ROLL_OUT, item_mouseEventHandler);
+    }
+
+    /**
+     *  @private
+     *  Called when an item has been removed from this component.
+     */
+    private function item_mouseEventHandler(event:MouseEvent):void
+    {
+        var type:String = event.type;
+        type = TYPE_MAP[type];
+        if (hasEventListener(type))
+        {
+            var itemRenderer:IItemRenderer = event.currentTarget as IItemRenderer;
+
+            var itemIndex:int = -1;
+            if (itemRenderer)
+                itemIndex = itemRenderer.itemIndex;
+            else
+                itemIndex = dataGroup.getElementIndex(event.currentTarget as IVisualElement);
+
+            var listEvent:ListEvent = new ListEvent(type, false, false,
+                                                    event.localX,
+                                                    event.localY,
+                                                    event.relatedObject,
+                                                    event.ctrlKey,
+                                                    event.altKey,
+                                                    event.shiftKey,
+                                                    event.buttonDown,
+                                                    event.delta,
+                                                    itemIndex,
+                                                    dataProvider.getItemAt(itemIndex),
+                                                    itemRenderer);
+            dispatchEvent(listEvent);
+        }
+    }

     /**
      *  @private


Transferred from the Adobe Open Source Subversion Repository

Revision: 19337
Author:   mhorn@adobe.com
Date:     2010-12-13T22:01:27.841985Z

Log Message:
-----------
ASDoc updates

Modified Paths:
--------------
<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/mobiletheme/src/spark/skins/mobile/TextInputSkin.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/mobiletheme/src/spark/skins/mobile/ActionButtonSkin.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobiletheme/src/spark/skins/mobile/VScrollBarSkin.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobiletheme/src/spark/skins/mobile/VScrollBarThumbSkin.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/supportClasses/TextSkinBase.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobiletheme/src/spark/skins/mobile/ButtonSkin.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobiletheme/src/spark/skins/mobile/ListSkin.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/mobiletheme/src/spark/skins/mobile/HSliderDataTip.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/HSliderTrackSkin.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobiletheme/src/spark/skins/mobile/supportClasses/ActionBarButtonSkinBase.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobiletheme/src/spark/skins/mobile/supportClasses/SelectableButtonSkinBase.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/mobiletheme/src/spark/skins/mobile/CheckBoxSkin.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobiletheme/src/spark/skins/mobile/TabbedViewNavigatorSkin.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobiletheme/src/spark/skins/mobile/HSliderSkin.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobiletheme/src/spark/skins/mobile/HSliderThumbSkin.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobiletheme/src/spark/skins/mobile/RadioButtonSkin.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobiletheme/src/spark/skins/mobile/HScrollBarSkin.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobiletheme/src/spark/skins/mobile/HScrollBarThumbSkin.as</path>

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

--- frameworks/projects/mobiletheme/src/spark/skins/mobile/supportClasses/MobileSkin.as
+++ frameworks/projects/mobiletheme/src/spark/skins/mobile/supportClasses/MobileSkin.as
@@ -37,8 +37,8 @@

 // FIXME (jasonsj): B-feature for IFocusColorSkin may be removed
 /**
- *  Actionscript based skin for mobile applications. This skin is the
- *  base class for all of the actionscript mobile skins. As an optimization,
+ *  ActionScript-based skin for mobile applications. This skin is the
+ *  base class for all of the ActionScript mobile skins. As an optimization,
  *  it removes state transition support.
  *
  *  @langversion 3.0


Transferred from the Adobe Open Source Subversion Repository

Revision: 22836
Author:   tkraikit@adobe.com
Date:     2011-09-30T21:05:47.816991Z

Log Message:
-----------
Checking in fix for SDK-31412 again (reverting the reversion).

Checkintests re-run for sanity.

Modified Paths:
--------------
<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/components/supportClasses/ButtonBase.as</path>

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

--- frameworks/projects/spark/src/spark/components/supportClasses/DropDownController.as
+++ frameworks/projects/spark/src/spark/components/supportClasses/DropDownController.as
@@ -97,6 +97,8 @@

         _openButton = value;

+        _openButton.disableMinimumDownStateTime = true;
+
         addOpenTriggers();

     }
@@ -296,8 +298,6 @@
      */
     private function addOpenTriggers():void
     {
-        // TODO (jszeto): Change this to be mouseDown. Figure out how to not
-        // trigger systemManager_mouseDown.
         if (openButton)
         {
             if (isNaN(rollOverOpenDelay))


Trying out a few of the new assertions.

Trying out a few of the new assertions.

--- flash/TestFoo.as
+++ flash/TestFoo.as
@@ -8,8 +8,13 @@
     public function testAsdf():void {
       asserts.assertDisplayObject({id: 'mainPane'});
     }
-    public function testZxcv():void {
-      trace('executing this mofo');
+    public function testAssertEqualsString():void {
+      var foo:String = 'foo';
+      asserts.assertEquals('foo', foo);
+    }
+    public function testAssertEqualsNumber():void {
+      var num:int = 2111;
+      asserts.assertEquals(2112, num);
     }
     public function teardown():void {
       trace('Set up this bitch.');


#SUP-237 #time 1h #comment added referrer to getLicense URL

--- plugins/wvPlugin/src/WvMediator.as
+++ plugins/wvPlugin/src/WvMediator.as
@@ -4,6 +4,7 @@
 	import com.kaltura.kdpfl.model.MediaProxy;
 	import com.kaltura.kdpfl.model.SequenceProxy;
 	import com.kaltura.kdpfl.model.ServicesProxy;
+	import com.kaltura.kdpfl.model.ConfigProxy;
 	import com.kaltura.kdpfl.model.type.EnableType;
 	import com.kaltura.kdpfl.model.type.NotificationType;
 	import com.kaltura.kdpfl.model.type.SequenceContextType;
@@ -144,8 +145,9 @@

 							if (wvAssetId)
 							{
+								var referrerB64:String = (facade.retrieveProxy(ConfigProxy.NAME) as ConfigProxy).vo.flashvars.b64Referrer;
 								var kc:KalturaClient = (facade.retrieveProxy(ServicesProxy.NAME) as ServicesProxy).kalturaClient;
-								var emmUrl:String = kc.protocol + kc.domain + "/api_v3/index.php?service=widevine_widevinedrm&action=getLicense&format=widevine&flavorAssetId=" + wvAssetId + "&ks=" +kc.ks;
+								var emmUrl:String = kc.protocol + kc.domain + "/api_v3/index.php?service=widevine_widevinedrm&action=getLicense&format=widevine&flavorAssetId=" + wvAssetId + "&ks=" +kc.ks + "&referrer=" + referrerB64;
 								ExternalInterface.call("WVSetEmmURL", emmUrl);
 							}


Transferred from the Adobe Open Source Subversion Repository

Revision: 12850
Author:   jimurphy@adobe.com
Date:     2009-12-11T14:57:14.623098Z

Log Message:
-----------
add 6 new DMV projects to the SDK:
automation
automation_air
automation_dmv
automation_flashflexkit
automation_spark
datavisualization

These projects are setup to build in an ant main call.  There are currently several warnings in the datavisualization project that will be cleaned up.  No checkintests exist for these projects as of yet.

I also modified the exisitng projects build files for easier management of the localization targets, bundle and fat-swc. If the projects that I updated:airframework,airspark,framework,playerglobal,rpc,and spark.  All the new projects have been implemented this same way.

QE notes: DMV folks should run through their tests
Doc notes: probably
Bugs: nope
Reviewer:
Tests run: ran the following targets: compile,checkintests,other.locales and doc
Is noteworthy for integration: no

Modified Paths:
--------------
1404 paths were modified

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

--- frameworks/projects/advancedgrids/src/mx/controls/olapDataGridClasses/OLAPDataGridRendererProvider.as
+++ frameworks/projects/advancedgrids/src/mx/controls/olapDataGridClasses/OLAPDataGridRendererProvider.as
@@ -0,0 +1,203 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+//  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.controls.olapDataGridClasses
+{
+import mx.core.mx_internal;
+import mx.core.IFactory;
+import mx.formatters.Formatter;
+
+use namespace mx_internal;
+
+/**
+ *  The OLAPDataGridRendererProvider class defines the base class for
+ *  assigning item renderers used by the OLAPDataGrid control.
+ *  Use properties of the OLAPDataGridRendererProvider class to
+ *  configure where an item renderer is used in an OLAPDataGrid control.
+ *
+ *
Each cell in an OLAPDataGrid control is a result of an intersection
+ *  between the members along a row and the members along a column of the control.
+ *  However, when you assign an item renderer to an OLAPDataGrid control,
+ *  you only specify the uniqueName and type properties
+ *  for one of the dimensions, either row or column.
+ *  Therefore, you can create a situation where two different item renderers
+ *  are assigned to the same cell of the control.

+ *
+ *
In case of a conflict between two or more item renderers,
+ *  the OLAPDataGrid control applies the item renderer based on the following priorities:

+ *
+ *

+ *
type = OLAPDataGrid.OLAP_MEMBER

+ *
type = OLAPDataGrid.OLAP_LEVEL

+ *
type = OLAPDataGrid.OLAP_HIERARCHY

+ *
type = OLAPDataGrid.OLAP_DIMENSION

+ *

+ *
+ *
Therefore, if an item renderer with a type value of
+ *  OLAPDataGrid.OLAP_LEVEL and an item renderer
+ *  with a type value of OLAPDataGrid.OLAP_HIERARCHY
+ *  are applied to the same cell,
+ *  the OLAPDataGrid control applies the item renderer with a type value
+ *  of OLAPDataGrid.OLAP_LEVEL.

+ *
+ *
If two item renderers have the same value for the type property,
+ *  the OLAPDataGrid control determines which renderer more closely matches
+ *  the item, and uses it.

+ *
+ *  @see mx.controls.OLAPDataGrid
+ *
+ *  @langversion 3.0
+ *  @playerversion Flash 9
+ *  @playerversion AIR 1.1
+ *  @productversion Flex 3
+ */
+public class OLAPDataGridRendererProvider
+{
+	include "../../core/Version.as";
+
+	//--------------------------------------------------------------------------
+    //
+    //  Properties
+    //
+    //--------------------------------------------------------------------------
+
+    //----------------------------------
+    // uniqueName
+    //----------------------------------
+
+    private var _uniqueName:String;
+
+    /**
+     *  The unique name of the IOLAPElement to which the renderer is applied.
+     *  For example, "[TimeDim][YearHier][2007]" is a unique name,
+     *  where "2007" is the level belonging to the "YearHier" hierarchy
+     *  of the "TimeDim" dimension.
+     *
+     *
The uniqueName property and the type property
+     *  together specify the target of the item renderer.
+     *  Because the unique name of "[TimeDim][YearHier][2007]"
+     *  specifies a level of an OLAP schema,
+     *  set the type property to OLAPDataGrid.OLAP_LEVEL.

+     *
+     *  @langversion 3.0
+     *  @playerversion Flash 9
+     *  @playerversion AIR 1.1
+     *  @productversion Flex 3
+     */
+    public function get uniqueName():String
+    {
+        return _uniqueName;
+    }
+
+    /**
+     *  @private
+     */
+    public function set uniqueName(name:String):void
+    {
+        _uniqueName = name;
+    }
+
+    //----------------------------------
+    // type
+    //----------------------------------
+
+    private var _type:int;
+
+    /**
+     *  Specifies whether the renderer is applied to a
+     *  dimension (OLAPDataGrid.OLAP_DIMENSION),
+     *  hierarchy(OLAPDataGrid.OLAP_HIERARCHY),
+     *  level(OLAPDataGrid.OLAP_LEVEL),
+     *  or member (OLAPDataGrid.OLAP_MEMBER) of an axis.
+     *
+     *
Set this property based on the setting of the uniqueName property.
+     *  For example, if the uniqueName property references a hierarchy of an OLAP schema,
+     *  set this property to OLAPDataGrid.OLAP_HIERARCHY.

+     *
+     *  @langversion 3.0
+     *  @playerversion Flash 9
+     *  @playerversion AIR 1.1
+     *  @productversion Flex 3
+     */
+    public function get type():int
+    {
+        return _type;
+    }
+
+    /**
+     *  @private
+     */
+    public function set type(name:int):void
+    {
+        _type = name;
+    }
+
+    //----------------------------------
+    // renderer
+    //----------------------------------
+
+    private var _renderer:IFactory;
+
+    /**
+     *  The renderer object used for customizing the OLAPDataGrid control.
+     *
+     *  @langversion 3.0
+     *  @playerversion Flash 9
+     *  @playerversion AIR 1.1
+     *  @productversion Flex 3
+     */
+    public function get renderer():IFactory
+    {
+        return _renderer;
+    }
+
+    /**
+     *  @private
+     */
+    public function set renderer(r:IFactory):void
+    {
+        _renderer = r;
+    }
+
+    //----------------------------------
+    // styleName
+    //----------------------------------
+
+    /**
+     *  The name of a CSS style declaration for controlling
+     *  the appearance of the cell.
+     *
+     *
For example, you define the following style in your application,
+     *  and then use the styleName property to associate it with
+     *  a specific hierarchy in an OLAP schema:

+     *
+     *

+     *  <Style>
+     *    .monthStyle
+     *      {
+     *        color:0x755762
+     *        fontSize:14
+     *      }
+     *  </Style>
+     *
+     *  <mx:ODGHeaderRendererProvider
+     *    type="OLAPDataGrid.OLAP_HIERARCHY"
+     *    uniqueName="[Time][Month]" styleName="monthStyle"/>

+     *
+     *
+     *  @langversion 3.0
+     *  @playerversion Flash 9
+     *  @playerversion AIR 1.1
+     *  @productversion Flex 3
+     */
+    public var styleName:String
+}
+}


Initialize "type" parameter in Cloner.doClone() method.

--- dolly-framework/src/main/actionscript/dolly/Cloner.as
+++ dolly-framework/src/main/actionscript/dolly/Cloner.as
@@ -42,6 +42,10 @@
 	}

 	dolly_internal static function doClone(source:*, deep:int, type:Type = null):* {
+		if(!type) {
+			type = Type.forInstance(source);
+		}
+
 		const fieldsToClone:Vector.<Field> = findAllWritableFieldsForType(type);
 		const clonedInstance:* = new (type.clazz)();


Reformatted Napkin.as

Reformatted Napkin.as

--- flash/napkin/src/com/automatastudios/napkin/Napkin.as
+++ flash/napkin/src/com/automatastudios/napkin/Napkin.as
@@ -1,414 +1,414 @@
-package com.automatastudios.napkin {
-	import com.adobe.images.JPGEncoder;
-	import com.dynamicflash.util.Base64;
-
-	import flash.display.Sprite;
-	import flash.display.Bitmap;
-	import flash.display.StageAlign;
-	import flash.display.StageScaleMode;
-	import flash.display.Loader;
-	import flash.display.MovieClip;
-	import flash.display.BitmapData;
-	import flash.display.BlendMode;
-
-    import flash.ui.ContextMenu;
-    import flash.ui.ContextMenuItem;
-    import flash.ui.ContextMenuBuiltInItems;
-	import flash.ui.Mouse;
-
-	import flash.events.*;
-
-	import flash.net.URLLoader;
-	import flash.net.URLRequest;
-	import flash.net.URLRequestMethod;
-    import flash.net.URLVariables;
-
-	import flash.external.ExternalInterface;
-
-	import flash.utils.ByteArray;
-
-
-	public class Napkin extends Sprite {
-		private static const IMAGE_QUALITY:uint = 80;
-		private const DRAW_MODE:String = "draw_mode";
-		private const ERASE_MODE:String = "erase_mode";
-
-		private var _jpgEncoder:JPGEncoder;
-		private var _menu:ContextMenu;
-		private var _maxX:Number;
-	 	private var _maxY:Number;
-		private var _mode:String;
-		private var _layers:Array;
-
-		private var _canvas:Sprite;
-		private var _background:Loader;
-		private var _brushes:Sprite;
-
-		private var _drawBrush:DrawBrush;
-		private var _eraseBrush:EraseBrush;
-
-
-		private var _lastBrush:Sprite;
-
-		public var _help:HelpDisplay;
-		public var _status:StatusAnimation;
-
-		public function Napkin() {
-			_canvas = new Sprite();
-		//	_canvas.blendMode = BlendMode.LAYER;
-			addChild(_canvas);
-
-			_background = new Loader();
-			_canvas.addChild(_background);
-			_background.contentLoaderInfo.addEventListener(Event.COMPLETE, onLoadedBackground);
-			_background.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, onBackgroundError);
-
-			_brushes = new Sprite();
-			addChild(_brushes);
-
-			_status = new StatusAnimation();
-
-			_help = new HelpDisplay();
-			_help.x = 5;
-			_help.y = 5;
-
-			_maxX = 0;
-			_maxY = 0;
-
-			_drawBrush = new DrawBrush();
-			_drawBrush.width = _drawBrush.height = 3;
-
-			_eraseBrush = new EraseBrush();
-			_eraseBrush.blendMode = BlendMode.INVERT;
-
-			_layers = new Array();
-
-			_jpgEncoder = new JPGEncoder(IMAGE_QUALITY);
-			addEventListener(Event.ADDED_TO_STAGE, onAddedToStage);
-		}
-
-		public function onStatusComplete():void {
-			_status.gotoAndStop(1);
-			removeChild(_status);
-		}
-
-		private function onAddedToStage(evt:Event):void {
-		//	stage.scaleMode = StageScaleMode.NO_SCALE;
-			stage.align = StageAlign.TOP_LEFT;
-			stage.addEventListener(MouseEvent.MOUSE_DOWN, onHideHelp);
-			stage.addEventListener(MouseEvent.MOUSE_MOVE, trackBrush);
-
-			ExternalInterface.addCallback("uploadDrawing", onUploadDrawing);
-			ExternalInterface.addCallback("setBackground", onSetBackground);
-
-			_status.stop();
-
-			onShowHelp();
-		}
-
-		private function onLoadedBackground(evt:Event):void {
-			_maxX = _background.width;
-			_maxY = _background.height;
-		}
-
-		private function onCommand(evt:KeyboardEvent):void {
-			var layer:Sprite = _layers[_layers.length - 1];
-
-			switch (evt.keyCode) {
-
-				case 191:
-					onShowHelp();
-					break;
-				case 65:
-					if (_lastBrush == _drawBrush) {
-						_drawBrush.width = _drawBrush.height -= 1;
-						if (_drawBrush.width < 3) {
-							_drawBrush.width = _drawBrush.height = 3;
-						}
-						if (layer != null) {
-							layer.graphics.lineStyle(_drawBrush.width - 2, 0);
-						}
-					} else {
-						_eraseBrush.width = _eraseBrush.height -= 1;
-						if (_eraseBrush.width < 3) {
-							_eraseBrush.width = _eraseBrush.height = 3;
-						}
-						if (layer != null) {
-							layer.graphics.lineStyle(_eraseBrush.width - 2, 0xFFFFFF);
-						}
-					}
-					break;
-				case 68:
-					if (_lastBrush == _drawBrush) {
-						_drawBrush.width = _drawBrush.height += 1;
-
-						if (layer != null) {
-							layer.graphics.lineStyle(_drawBrush.width - 2, 0);
-						}
-					} else {
-						_eraseBrush.width = _eraseBrush.height += 1;
-
-						if (layer != null) {
-							layer.graphics.lineStyle(_eraseBrush.width - 2, 0xFFFFFF);
-						}
-					}
-					break;
-				case 87:
-					onDraw();
-					break;
-				case 83:
-					onErase();
-					break;
-				case 90:
-					onUndo();
-					break;
-				case 67:
-					onClear();
-					break;
-				default:
-					// no command
-					break;
-			}
-		}
-
-		private function onClear(evt:ContextMenuEvent = null):void {
-			var i:uint;
-			var max:uint = _layers.length;
-
-			for (i=0; i<max; ++i) {
-				_canvas.removeChild(_layers[i]);
-			}
-
-			_layers = new Array();
-
-			_maxX = 0;
-			_maxY = 0;
-
-			onDraw();
-		}
-
-		private function onUndo(evt:ContextMenuEvent = null):void {
-			var layer:Sprite = _layers.pop();
-
-			if (layer) {
-				_canvas.removeChild(layer);
-			}
-		}
-
-		private function onDraw(evt:ContextMenuEvent = null):void {
-			if (_lastBrush != null) {
-				while (_brushes.numChildren > 0) {
-					_brushes.removeChildAt(0);
-				}
-			}
-
-			_lastBrush = _drawBrush;
-
-			_lastBrush.x = this.mouseX;
-			_lastBrush.y = this.mouseY;
-			Mouse.hide();
-			_brushes.addChild(_lastBrush);
-
-			_mode = DRAW_MODE;
-
-			_status.statusSprite.statusText.text = "draw mode...";
-			addChild(_status);
-			_status.gotoAndPlay(1);
-		}
-
-		private function onErase(evt:ContextMenuEvent = null):void {
-			if (_lastBrush != null) {
-				while (_brushes.numChildren > 0) {
-					_brushes.removeChildAt(0);
-				}
-			}
-
-			_lastBrush = _eraseBrush;
-
-			_lastBrush.x = this.mouseX;
-			_lastBrush.y = this.mouseY;
-			Mouse.hide();
-			_brushes.addChild(_lastBrush);
-
-			_mode = ERASE_MODE;
-
-			_status.statusSprite.statusText.text = "erase mode...";
-			addChild(_status);
-			_status.gotoAndPlay(2);
-		}
-
-		private function onShowHelp(evt:ContextMenuEvent = null):void {
-			onStopDrawing();
-
-			stage.addEventListener(MouseEvent.MOUSE_DOWN, onHideHelp);
-			stage.removeEventListener(MouseEvent.MOUSE_DOWN, onStartDrawing);
-			stage.removeEventListener(KeyboardEvent.KEY_DOWN, onCommand);
-
-			if (_lastBrush != null) {
-				while (_brushes.numChildren > 0) {
-					_brushes.removeChildAt(0);
-				}
-				_lastBrush = null;
-			}
-
-			Mouse.show();
-
-			if (!contains(_help)) {
-				addChild(_help);
-			}
-			_help.alpha = 0;
-			_help.visible = true;
-
-			stage.removeEventListener(Event.ENTER_FRAME, onFadeOutHelp);
-			stage.addEventListener(Event.ENTER_FRAME, onFadeInHelp);
-		}
-
-		private function onHideHelp(evt:MouseEvent):void {
-			stage.removeEventListener(MouseEvent.MOUSE_DOWN, onHideHelp);
-			stage.addEventListener(MouseEvent.MOUSE_DOWN, onStartDrawing);
-			stage.addEventListener(KeyboardEvent.KEY_DOWN, onCommand);
-
-			stage.removeEventListener(Event.ENTER_FRAME, onFadeInHelp);
-			stage.addEventListener(Event.ENTER_FRAME, onFadeOutHelp);
-
-			onDraw();
-		}
-
-		private function onFadeOutHelp(evt:Event):void {
-			_help.alpha -= 0.10;
-
-			if (_help.alpha <= 0) {
-				_help.alpha = 0;
-				removeChild(_help);
-				stage.removeEventListener(Event.ENTER_FRAME, onFadeOutHelp);
-			}
-		}
-
-		private function onFadeInHelp(evt:Event):void {
-			_help.alpha += 0.10;
-
-			if (_help.alpha >= 1) {
-				stage.removeEventListener(Event.ENTER_FRAME, onFadeInHelp);
-			}
-		}
-
-		private function trackBrush(evt:MouseEvent):void {
-
-		    if (_lastBrush) {
-			    _lastBrush.x = evt.stageX;
-			    _lastBrush.y = evt.stageY;
-
-			    evt.updateAfterEvent();
-			}
-		}
-
-		private function onStartDrawing(evt:MouseEvent):void {
-			var layer:Sprite = new Sprite();
-			_canvas.addChild(layer);
-			_layers.push(layer);
-
-			switch (_mode) {
-				case DRAW_MODE:
-					layer.graphics.lineStyle(_drawBrush.width - 2, 0);
-					break;
-
-				case ERASE_MODE:
-					layer.graphics.lineStyle(_eraseBrush.width - 2, 0xFFFFFF);
-					break;
-			}
-
-			stage.removeEventListener(MouseEvent.MOUSE_DOWN, onStartDrawing);
-			stage.addEventListener(MouseEvent.MOUSE_MOVE, onDrawSegment);
-			stage.addEventListener(MouseEvent.MOUSE_UP, onStopDrawing);
-			stage.addEventListener(Event.MOUSE_LEAVE, onStopDrawing);
-
-			layer.graphics.moveTo(evt.stageX, evt.stageY);
-
-			_maxX = Math.max(_maxX, evt.stageX);
-			_maxY = Math.max(_maxY, evt.stageY);
-		}
-
-		private function onDrawSegment(evt:MouseEvent):void {
-			var layer:Sprite = _layers[_layers.length - 1];
-
-			layer.graphics.lineTo(mouseX, mouseY);
-
-			_maxX = Math.max(_maxX, (_lastBrush.width -2)/2, evt.stageX);
-			_maxY = Math.max(_maxY, (_lastBrush.width -2)/2, evt.stageY);
-
-			evt.updateAfterEvent();
-		}
-
-		private function onStopDrawing(evt:MouseEvent = null):void {
-			if (evt != null) {
-				onDrawSegment(evt);
-			}
-
-			stage.addEventListener(MouseEvent.MOUSE_DOWN, onStartDrawing);
-			stage.removeEventListener(MouseEvent.MOUSE_MOVE, onDrawSegment);
-			stage.removeEventListener(MouseEvent.MOUSE_UP, onStopDrawing);
-			stage.removeEventListener(Event.MOUSE_LEAVE, onStopDrawing);
-		}
-
-		private function onUploadDrawing():void {
-			var loader:URLLoader = new URLLoader();
-			var serviceUrl:String = loaderInfo.parameters["service"];
-			var request:URLRequest = new URLRequest(serviceUrl);
-			var variables:URLVariables = new URLVariables();
-			var jpgData:ByteArray;
-			var jpgString:String;
-
-			var bitmapData:BitmapData;
-			var p:String;
-
-			request.method = URLRequestMethod.POST;
-			request.data = new Object();
-
-			// add flash vars to data sent out
-			/*
-			for (p in loaderInfo.parameters) {
-				if (p != "service") {
-					request.data[p] = loaderInfo.parameters[p];
-				}
-			}
-			*/
-
-			bitmapData = new BitmapData(_maxX + 15, _maxY + 15);
-			bitmapData.draw(_canvas);
-
-			jpgData = _jpgEncoder.encode(bitmapData);
-			jpgString = Base64.encodeByteArray(jpgData);
-
-			variables.drawing = jpgString;
-			request.data = variables;
-
-			loader.addEventListener(Event.COMPLETE, onUploadComplete);
-			loader.addEventListener(IOErrorEvent.IO_ERROR, onIOError);
-			loader.addEventListener(SecurityErrorEvent.SECURITY_ERROR, onSecurityError);
-			loader.load(request);
-
-		}
-
-		private function onSetBackground(url:String):void {
-			_background.load(new URLRequest(url));
-		}
-
-		private function onBackgroundError(evt:IOErrorEvent):void {
-			// do nothing...
-		}
-
-		private function onUploadComplete(evt:Event):void {
-			ExternalInterface.call("onDrawingUploaded", URLLoader(evt.target).data);
-		}
-
-		private function onIOError(evt:IOErrorEvent):void {
-			ExternalInterface.call("onDrawingError", "IOError");
-		}
-
-		private function onSecurityError(evt:SecurityErrorEvent):void {
-			ExternalInterface.call("onDrawingError", "SecurityError");
-		}
-
-	}
-
+package com.automatastudios.napkin {
+    import com.adobe.images.JPGEncoder;
+    import com.dynamicflash.util.Base64;
+
+    import flash.display.Sprite;
+    import flash.display.Bitmap;
+    import flash.display.StageAlign;
+    import flash.display.StageScaleMode;
+    import flash.display.Loader;
+    import flash.display.MovieClip;
+    import flash.display.BitmapData;
+    import flash.display.BlendMode;
+
+    import flash.ui.ContextMenu;
+    import flash.ui.ContextMenuItem;
+    import flash.ui.ContextMenuBuiltInItems;
+    import flash.ui.Mouse;
+
+    import flash.events.*;
+
+    import flash.net.URLLoader;
+    import flash.net.URLRequest;
+    import flash.net.URLRequestMethod;
+    import flash.net.URLVariables;
+
+    import flash.external.ExternalInterface;
+
+    import flash.utils.ByteArray;
+
+
+    public class Napkin extends Sprite {
+	private static const IMAGE_QUALITY:uint = 80;
+	private const DRAW_MODE:String = "draw_mode";
+	private const ERASE_MODE:String = "erase_mode";
+
+	private var _jpgEncoder:JPGEncoder;
+	private var _menu:ContextMenu;
+	private var _maxX:Number;
+	private var _maxY:Number;
+	private var _mode:String;
+	private var _layers:Array;
+
+	private var _canvas:Sprite;
+	private var _background:Loader;
+	private var _brushes:Sprite;
+
+	private var _drawBrush:DrawBrush;
+	private var _eraseBrush:EraseBrush;
+
+
+	private var _lastBrush:Sprite;
+
+	public var _help:HelpDisplay;
+	public var _status:StatusAnimation;
+
+	public function Napkin() {
+	    _canvas = new Sprite();
+	    //	_canvas.blendMode = BlendMode.LAYER;
+	    addChild(_canvas);
+
+	    _background = new Loader();
+	    _canvas.addChild(_background);
+	    _background.contentLoaderInfo.addEventListener(Event.COMPLETE, onLoadedBackground);
+	    _background.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, onBackgroundError);
+
+	    _brushes = new Sprite();
+	    addChild(_brushes);
+
+	    _status = new StatusAnimation();
+
+	    _help = new HelpDisplay();
+	    _help.x = 5;
+	    _help.y = 5;
+
+	    _maxX = 0;
+	    _maxY = 0;
+
+	    _drawBrush = new DrawBrush();
+	    _drawBrush.width = _drawBrush.height = 3;
+
+	    _eraseBrush = new EraseBrush();
+	    _eraseBrush.blendMode = BlendMode.INVERT;
+
+	    _layers = new Array();
+
+	    _jpgEncoder = new JPGEncoder(IMAGE_QUALITY);
+	    addEventListener(Event.ADDED_TO_STAGE, onAddedToStage);
+	}
+
+	public function onStatusComplete():void {
+	    _status.gotoAndStop(1);
+	    removeChild(_status);
+	}
+
+	private function onAddedToStage(evt:Event):void {
+	    //	stage.scaleMode = StageScaleMode.NO_SCALE;
+	    stage.align = StageAlign.TOP_LEFT;
+	    stage.addEventListener(MouseEvent.MOUSE_DOWN, onHideHelp);
+	    stage.addEventListener(MouseEvent.MOUSE_MOVE, trackBrush);
+
+	    ExternalInterface.addCallback("uploadDrawing", onUploadDrawing);
+	    ExternalInterface.addCallback("setBackground", onSetBackground);
+
+	    _status.stop();
+
+	    onShowHelp();
+	}
+
+	private function onLoadedBackground(evt:Event):void {
+	    _maxX = _background.width;
+	    _maxY = _background.height;
+	}
+
+	private function onCommand(evt:KeyboardEvent):void {
+	    var layer:Sprite = _layers[_layers.length - 1];
+
+	    switch (evt.keyCode) {
+
+		case 191:
+		onShowHelp();
+		break;
+		case 65:
+		if (_lastBrush == _drawBrush) {
+		    _drawBrush.width = _drawBrush.height -= 1;
+		    if (_drawBrush.width < 3) {
+			_drawBrush.width = _drawBrush.height = 3;
+		    }
+		    if (layer != null) {
+			layer.graphics.lineStyle(_drawBrush.width - 2, 0);
+		    }
+		} else {
+		    _eraseBrush.width = _eraseBrush.height -= 1;
+		    if (_eraseBrush.width < 3) {
+			_eraseBrush.width = _eraseBrush.height = 3;
+		    }
+		    if (layer != null) {
+			layer.graphics.lineStyle(_eraseBrush.width - 2, 0xFFFFFF);
+		    }
+		}
+		break;
+		case 68:
+		if (_lastBrush == _drawBrush) {
+		    _drawBrush.width = _drawBrush.height += 1;
+
+		    if (layer != null) {
+			layer.graphics.lineStyle(_drawBrush.width - 2, 0);
+		    }
+		} else {
+		    _eraseBrush.width = _eraseBrush.height += 1;
+
+		    if (layer != null) {
+			layer.graphics.lineStyle(_eraseBrush.width - 2, 0xFFFFFF);
+		    }
+		}
+		break;
+		case 87:
+		onDraw();
+		break;
+		case 83:
+		onErase();
+		break;
+		case 90:
+		onUndo();
+		break;
+		case 67:
+		onClear();
+		break;
+		default:
+		// no command
+		break;
+	    }
+	}
+
+	private function onClear(evt:ContextMenuEvent = null):void {
+	    var i:uint;
+	    var max:uint = _layers.length;
+
+	    for (i=0; i<max; ++i) {
+		_canvas.removeChild(_layers[i]);
+	    }
+
+	    _layers = new Array();
+
+	    _maxX = 0;
+	    _maxY = 0;
+
+	    onDraw();
+	}
+
+	private function onUndo(evt:ContextMenuEvent = null):void {
+	    var layer:Sprite = _layers.pop();
+
+	    if (layer) {
+		_canvas.removeChild(layer);
+	    }
+	}
+
+	private function onDraw(evt:ContextMenuEvent = null):void {
+	    if (_lastBrush != null) {
+		while (_brushes.numChildren > 0) {
+		    _brushes.removeChildAt(0);
+		}
+	    }
+
+	    _lastBrush = _drawBrush;
+
+	    _lastBrush.x = this.mouseX;
+	    _lastBrush.y = this.mouseY;
+	    Mouse.hide();
+	    _brushes.addChild(_lastBrush);
+
+	    _mode = DRAW_MODE;
+
+	    _status.statusSprite.statusText.text = "draw mode...";
+	    addChild(_status);
+	    _status.gotoAndPlay(1);
+	}
+
+	private function onErase(evt:ContextMenuEvent = null):void {
+	    if (_lastBrush != null) {
+		while (_brushes.numChildren > 0) {
+		    _brushes.removeChildAt(0);
+		}
+	    }
+
+	    _lastBrush = _eraseBrush;
+
+	    _lastBrush.x = this.mouseX;
+	    _lastBrush.y = this.mouseY;
+	    Mouse.hide();
+	    _brushes.addChild(_lastBrush);
+
+	    _mode = ERASE_MODE;
+
+	    _status.statusSprite.statusText.text = "erase mode...";
+	    addChild(_status);
+	    _status.gotoAndPlay(2);
+	}
+
+	private function onShowHelp(evt:ContextMenuEvent = null):void {
+	    onStopDrawing();
+
+	    stage.addEventListener(MouseEvent.MOUSE_DOWN, onHideHelp);
+	    stage.removeEventListener(MouseEvent.MOUSE_DOWN, onStartDrawing);
+	    stage.removeEventListener(KeyboardEvent.KEY_DOWN, onCommand);
+
+	    if (_lastBrush != null) {
+		while (_brushes.numChildren > 0) {
+		    _brushes.removeChildAt(0);
+		}
+		_lastBrush = null;
+	    }
+
+	    Mouse.show();
+
+	    if (!contains(_help)) {
+		addChild(_help);
+	    }
+	    _help.alpha = 0;
+	    _help.visible = true;
+
+	    stage.removeEventListener(Event.ENTER_FRAME, onFadeOutHelp);
+	    stage.addEventListener(Event.ENTER_FRAME, onFadeInHelp);
+	}
+
+	private function onHideHelp(evt:MouseEvent):void {
+	    stage.removeEventListener(MouseEvent.MOUSE_DOWN, onHideHelp);
+	    stage.addEventListener(MouseEvent.MOUSE_DOWN, onStartDrawing);
+	    stage.addEventListener(KeyboardEvent.KEY_DOWN, onCommand);
+
+	    stage.removeEventListener(Event.ENTER_FRAME, onFadeInHelp);
+	    stage.addEventListener(Event.ENTER_FRAME, onFadeOutHelp);
+
+	    onDraw();
+	}
+
+	private function onFadeOutHelp(evt:Event):void {
+	    _help.alpha -= 0.10;
+
+	    if (_help.alpha <= 0) {
+		_help.alpha = 0;
+		removeChild(_help);
+		stage.removeEventListener(Event.ENTER_FRAME, onFadeOutHelp);
+	    }
+	}
+
+	private function onFadeInHelp(evt:Event):void {
+	    _help.alpha += 0.10;
+
+	    if (_help.alpha >= 1) {
+		stage.removeEventListener(Event.ENTER_FRAME, onFadeInHelp);
+	    }
+	}
+
+	private function trackBrush(evt:MouseEvent):void {
+
+	    if (_lastBrush) {
+		_lastBrush.x = evt.stageX;
+		_lastBrush.y = evt.stageY;
+
+		evt.updateAfterEvent();
+	    }
+	}
+
+	private function onStartDrawing(evt:MouseEvent):void {
+	    var layer:Sprite = new Sprite();
+	    _canvas.addChild(layer);
+	    _layers.push(layer);
+
+	    switch (_mode) {
+		case DRAW_MODE:
+		layer.graphics.lineStyle(_drawBrush.width - 2, 0);
+		break;
+
+		case ERASE_MODE:
+		layer.graphics.lineStyle(_eraseBrush.width - 2, 0xFFFFFF);
+		break;
+	    }
+
+	    stage.removeEventListener(MouseEvent.MOUSE_DOWN, onStartDrawing);
+	    stage.addEventListener(MouseEvent.MOUSE_MOVE, onDrawSegment);
+	    stage.addEventListener(MouseEvent.MOUSE_UP, onStopDrawing);
+	    stage.addEventListener(Event.MOUSE_LEAVE, onStopDrawing);
+
+	    layer.graphics.moveTo(evt.stageX, evt.stageY);
+
+	    _maxX = Math.max(_maxX, evt.stageX);
+	    _maxY = Math.max(_maxY, evt.stageY);
+	}
+
+	private function onDrawSegment(evt:MouseEvent):void {
+	    var layer:Sprite = _layers[_layers.length - 1];
+
+	    layer.graphics.lineTo(mouseX, mouseY);
+
+	    _maxX = Math.max(_maxX, (_lastBrush.width -2)/2, evt.stageX);
+	    _maxY = Math.max(_maxY, (_lastBrush.width -2)/2, evt.stageY);
+
+	    evt.updateAfterEvent();
+	}
+
+	private function onStopDrawing(evt:MouseEvent = null):void {
+	    if (evt != null) {
+		onDrawSegment(evt);
+	    }
+
+	    stage.addEventListener(MouseEvent.MOUSE_DOWN, onStartDrawing);
+	    stage.removeEventListener(MouseEvent.MOUSE_MOVE, onDrawSegment);
+	    stage.removeEventListener(MouseEvent.MOUSE_UP, onStopDrawing);
+	    stage.removeEventListener(Event.MOUSE_LEAVE, onStopDrawing);
+	}
+
+	private function onUploadDrawing():void {
+	    var loader:URLLoader = new URLLoader();
+	    var serviceUrl:String = loaderInfo.parameters["service"];
+	    var request:URLRequest = new URLRequest(serviceUrl);
+	    var variables:URLVariables = new URLVariables();
+	    var jpgData:ByteArray;
+	    var jpgString:String;
+
+	    var bitmapData:BitmapData;
+	    var p:String;
+
+	    request.method = URLRequestMethod.POST;
+	    request.data = new Object();
+
+	    // add flash vars to data sent out
+	    /*
+	    for (p in loaderInfo.parameters) {
+		if (p != "service") {
+		    request.data[p] = loaderInfo.parameters[p];
+		}
+	    }
+	    */
+
+	    bitmapData = new BitmapData(_maxX + 15, _maxY + 15);
+	    bitmapData.draw(_canvas);
+
+	    jpgData = _jpgEncoder.encode(bitmapData);
+	    jpgString = Base64.encodeByteArray(jpgData);
+
+	    variables.drawing = jpgString;
+	    request.data = variables;
+
+	    loader.addEventListener(Event.COMPLETE, onUploadComplete);
+	    loader.addEventListener(IOErrorEvent.IO_ERROR, onIOError);
+	    loader.addEventListener(SecurityErrorEvent.SECURITY_ERROR, onSecurityError);
+	    loader.load(request);
+
+	}
+
+	private function onSetBackground(url:String):void {
+	    _background.load(new URLRequest(url));
+	}
+
+	private function onBackgroundError(evt:IOErrorEvent):void {
+	    // do nothing...
+	}
+
+	private function onUploadComplete(evt:Event):void {
+	    ExternalInterface.call("onDrawingUploaded", URLLoader(evt.target).data);
+	}
+
+	private function onIOError(evt:IOErrorEvent):void {
+	    ExternalInterface.call("onDrawingError", "IOError");
+	}
+
+	private function onSecurityError(evt:SecurityErrorEvent):void {
+	    ExternalInterface.call("onDrawingError", "SecurityError");
+	}
+
+    }
+
 }


Transferred from the Adobe Open Source Subversion Repository

Revision: 17897
Author:   klin@adobe.com
Date:     2010-09-28T18:36:44.428418Z

Log Message:
-----------
Add wireframe skin for Spark DataGrid.

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

Modified Paths:
--------------
<path kind="file" action="A">/private/flex/sdk/branches/hero_private/frameworks/projects/wireframe/src/spark/skins/wireframe/DefaultGridHeaderRenderer.mxml</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/wireframe/src/WireframeClasses.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/wireframe/defaults.css</path>
<path kind="file" action="A">/private/flex/sdk/branches/hero_private/frameworks/projects/wireframe/src/spark/skins/wireframe/DataGridSkin.mxml</path>

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

--- frameworks/projects/wireframe/src/WireframeClasses.as
+++ frameworks/projects/wireframe/src/WireframeClasses.as
@@ -33,6 +33,7 @@
 	import spark.skins.wireframe.CheckBoxSkin; spark.skins.wireframe.CheckBoxSkin;
     import spark.skins.wireframe.ComboBoxButtonSkin; ComboBoxButtonSkin;
     import spark.skins.wireframe.ComboBoxSkin; spark.skins.wireframe.ComboBoxSkin;
+    import spark.skins.wireframe.DataGridSkin; DataGridSkin;
 	import spark.skins.wireframe.DefaultButtonSkin; spark.skins.wireframe.DefaultButtonSkin;
 	import spark.skins.wireframe.DropDownListButtonSkin; DropDownListButtonSkin;
 	import spark.skins.wireframe.DropDownListSkin; DropDownListSkin;


fix Mesh.materialChanged signal never executed

--- src/aerys/minko/scene/node/Mesh.as
+++ src/aerys/minko/scene/node/Mesh.as
@@ -95,10 +95,14 @@
 				if (_material)
 					_bindings.removeProvider(_material);

+				var oldMaterial : Material = _material;
+
 				_material = value;

 				if (value)
 					_bindings.addProvider(value);
+
+				_materialChanged.execute(this, oldMaterial, value);
 			}
 		}


Transferred from the Adobe Open Source Subversion Repository

Revision: 19134
Author:   dloverin@adobe.com
Date:     2010-12-08T12:31:35.254443Z

Log Message:
-----------
Make AIR Window visible after it is activated.

In revision 10899 super.setVisible() starting being called when the Window component’s visibility was set. In the bug’s scenario the Window component’s visibility is initialized to false. Next the Window is activated. The NativeWindow’s activate() method makes the NativeWindow visible. The problem is the Window component is not visible. The Window activate() function was changed to set the component’s visibility to true to fix the bug.

QE notes: None.
Doc notes: None.
Bugs: SDK-26882
Reviewer: Ryan
Tests run: checkintests, apollo/Window, apollo/WindowedApplication, apollo/spark/components
Is noteworthy for integration: No.

Modified Paths:
--------------
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/airframework/src/mx/core/WindowedApplication.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/airspark/src/spark/components/WindowedApplication.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/airspark/src/spark/components/Window.as</path>

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

--- frameworks/projects/airframework/src/mx/core/Window.as
+++ frameworks/projects/airframework/src/mx/core/Window.as
@@ -2947,7 +2947,13 @@
     public function activate():void
     {
         if (!nativeWindow.closed)
+        {
             _nativeWindow.activate();
+
+            // activate makes the native window visible so this
+            // component should become visible as well.
+            visible = true;
+        }
     }

     /**


Transferred from the Adobe Open Source Subversion Repository

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

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

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

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

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

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

--- frameworks/projects/framework/src/mx/rpc/IResponder.as
+++ frameworks/projects/framework/src/mx/rpc/IResponder.as
@@ -0,0 +1,37 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+//  ADOBE SYSTEMS INCORPORATED
+//  Copyright 2005-2006 Adobe Systems Incorporated
+//  All Rights Reserved.
+//
+//  NOTICE: Adobe permits you to use, modify, and distribute this file
+//  in accordance with the terms of the license agreement accompanying it.
+//
+////////////////////////////////////////////////////////////////////////////////
+
+package mx.rpc
+{
+
+/**
+ *  This interface provides the contract for any service
+ *  that needs to respond to remote or asynchronous calls.
+ */
+public interface IResponder
+{
+	/**
+	 *  This method is called by a service when the return value
+	 *  has been received.
+	 *  While data is typed as Object, it is often
+	 *  (but not always) an mx.rpc.events.ResultEvent.
+	 */
+	function result(data:Object):void;
+
+	/**
+	 *  This method is called by a service when an error has been received.
+	 *  While info is typed as Object it is often
+	 *  (but not always) an mx.rpc.events.FaultEvent.
+	 */
+	function fault(info:Object):void;
+}
+
+}