Transferred from the Adobe Open Source Subversion Repository

Revision: 6891
Author:   rfrishbe@adobe.com
Date:     2009-05-13T18:07:03.276533Z

Log Message:
-----------
Fixing a bunch of Flash Component Kit bugs.

SDK-20269: Add exclude metadata for placeholder components
SDK-20670: Setting the content of a ContainerMovieClip in ActionScript doesn't size the new items
SDK-20710: ContainerMovieClip shows Flex placeholder image when Placeholder is not on the first frame
SDK-21094: Animating TransformOffset scale values on ContainerMovieClip/UIMovieClip causes size to explode to huge values
SDK-16673: Cannot have two instances of FlexContentHolder in separate SWC files, only one shows up.

For SDK-20710, we now support containers where the FlexContentHolder is not present in the first frame.  This makes creating an expanding panel relatively easy and with no code.

Had to modify the build.xml to build from a manifest file--otherwise we're not exporting the files correctly and Flash authoring won't understand them.  Because of this, I've made a change in the project files for the flash-integration Flex Builder project (and the utilities one)

QE Notes: There's a new MXP File for Flash Authoring.  I'll be making this change in the 3.x branch as well.
Doc Notes: -
Bugs: SDK-20269, SDK-20670, SDK-20710, SDK-21094, SDK-16673
Reviewer: Glenn
tests: checkintests, mustella FCK

Modified Paths:
--------------
<path kind="file" action="M">/flex/sdk/trunk/development/eclipse/flex/flash-integration/.actionScriptProperties</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/utilities/src/FlashContainerPlaceholder.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flash-integration/build.xml</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flash-integration/src/mx/flash/UIMovieClip.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flash-integration/src/mx/flash/FlexContentHolder.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/flash-integration/FlexComponentKit.mxp</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flash-integration/src/mx/flash/ContainerMovieClip.as</path>
<path kind="file" action="A">/flex/sdk/trunk/frameworks/projects/flash-integration/manifest.xml</path>
<path kind="file" action="D">/flex/sdk/trunk/frameworks/projects/flash-integration/src/FlashIntegrationClasses.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/utilities/src/FlashComponentPlaceholder.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flash-integration/JSFL/MakeFlexComponent.jsfl</path>
<path kind="file" action="M">/flex/sdk/trunk/development/eclipse/flex/flash-integration/.flexLibProperties</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flash-integration/readme.txt</path>
<path kind="file" action="M">/flex/sdk/trunk/development/eclipse/flex/flash-integration/.project</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/flash-integration/readme.txt</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/utilities/src/MyFlexContentHolder.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flash-integration/FlexComponentKit.mxi</path>
<path kind="file" action="M">/flex/sdk/trunk/development/eclipse/flex/utilities/.actionScriptProperties</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flash-integration/JSFL/Convert Symbol to Flex Container.jsfl</path>

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

--- frameworks/projects/flash-integration/src/mx/flash/FlexContentHolder.as
+++ frameworks/projects/flash-integration/src/mx/flash/FlexContentHolder.as
@@ -21,6 +21,8 @@
 import mx.core.IUIComponent;
 import mx.core.mx_internal;

+[ExcludeClass]
+
 /**
  *  The FlexContentHolder class is for internal use only.
  *
@@ -55,6 +57,9 @@
         _height = this.height;

         mx_internal::$scaleX = mx_internal::$scaleY = 1;
+
+        removeEventListener(Event.ADDED, addedHandler);
+        removeEventListener(Event.REMOVED, removedHandler);
     }

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


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

--- frameworks/projects/automation/src/mx/automation/delegates/containers/FormAutomationImpl.as
+++ frameworks/projects/automation/src/mx/automation/delegates/containers/FormAutomationImpl.as
@@ -0,0 +1,85 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+//  ADOBE SYSTEMS INCORPORATED
+//  Copyright 2009 Adobe Systems Incorporated
+//  All Rights Reserved.
+//
+//  NOTICE: Adobe permits you to use, modify, and distribute this file
+//  in accordance with the terms of the license agreement accompanying it.
+//
+////////////////////////////////////////////////////////////////////////////////
+
+package mx.automation.delegates.containers
+{
+	import flash.display.DisplayObject;
+
+	import mx.automation.Automation;
+	import mx.automation.delegates.core.ContainerAutomationImpl;
+	import mx.containers.Form;
+	import mx.core.mx_internal;
+
+	use namespace mx_internal;
+
+	[Mixin]
+	/**
+	 *
+	 *  Defines the methods and properties required to perform instrumentation for the
+	 *  Form class.
+	 *
+	 *  @see mx.containers.Form
+	 *
+	 *
+	 *  @langversion 3.0
+	 *  @playerversion Flash 9
+	 *  @playerversion AIR 1.1
+	 *  @productversion Flex 3
+	 */
+	public class FormAutomationImpl extends ContainerAutomationImpl {
+
+		include "../../../core/Version.as";
+
+		//--------------------------------------------------------------------------
+		//
+		//  Class methods
+		//
+		//--------------------------------------------------------------------------
+
+		/**
+		 *  Registers the delegate class for a component class with automation manager.
+		 *
+		 *  @param root The SystemManger of the application.
+		 *
+		 *  @langversion 3.0
+		 *  @playerversion Flash 9
+		 *  @playerversion AIR 1.1
+		 *  @productversion Flex 3
+		 */
+		public static function init(root:DisplayObject):void
+		{
+			Automation.registerDelegateClass(Form, FormAutomationImpl);
+		}
+
+		//--------------------------------------------------------------------------
+		//
+		//  Constructor
+		//
+		//--------------------------------------------------------------------------
+
+		/**
+		 *  Constructor.
+		 * @param obj Form object to be automated.
+		 *
+		 *  @langversion 3.0
+		 *  @playerversion Flash 9
+		 *  @playerversion AIR 1.1
+		 *  @productversion Flex 3
+		 */
+		public function FormAutomationImpl(obj:Form)
+		{
+			super(obj);
+			recordClick = true;
+		}
+
+	}
+
+}


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

--- frameworks/projects/automation/src/mx/automation/delegates/core/UIComponentAutomationImpl.as
+++ frameworks/projects/automation/src/mx/automation/delegates/core/UIComponentAutomationImpl.as
@@ -1,13 +1,20 @@
 ////////////////////////////////////////////////////////////////////////////////
 //
-//  ADOBE SYSTEMS INCORPORATED
-//  Copyright 2009 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.
+//
 ////////////////////////////////////////////////////////////////////////////////

 package mx.automation.delegates.core


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

--- frameworks/projects/mobiletheme/src/spark/skins/mobile/TabbedViewNavigatorApplicationSkin.as
+++ frameworks/projects/mobiletheme/src/spark/skins/mobile/TabbedViewNavigatorApplicationSkin.as
@@ -25,9 +25,11 @@
 import spark.skins.mobile.supportClasses.MobileSkin;

 /**
- *  The ActionScript based skin used for TabbedViewNavigatorApplication.
+ *  The ActionScript-based skin used for TabbedViewNavigatorApplication.
  *  This skin contains a single TabbedViewNavigator that spans the
  *  entire content area of the application.
+ *
+ * @see spark.components.TabbedViewNavigatorApplication
  *
  *  @langversion 3.0
  *  @playerversion Flash 10
@@ -88,6 +90,9 @@
     //  Overridden Properties
     //
     //--------------------------------------------------------------------------
+    /**
+     *  @copy spark.skins.spark.ApplicationSkin#hostComponent
+     */
     public var hostComponent:TabbedViewNavigatorApplication;


Transferred from the Adobe Open Source Subversion Repository

Revision: 5035
Author:   cframpto@adobe.com
Date:     2009-02-23T13:57:55.149302Z

Log Message:
-----------
Change behavior of FxTextInput so it matches TextInput when text property is bound to a Number variable and that Number variable is bound to the text property.  This is needed for FB.

Technically this isn't correct behavior because there are times when the text getter will return a different value than what is displayed in the text field.  There was quite a bit of discussion about what to do and we finally decided to match the halo behavior.

QE Notes: add a test case for this scenario
Doc Notes:
Bugs: SDK-19247
Reviewers: Gordon

Modified Paths:
--------------
/flex/sdk/trunk/frameworks/projects/flex4/src/mx/components/baseClasses/FxTextBase.as

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

--- frameworks/projects/spark/src/spark/components/supportClasses/SkinnableTextBase.as
+++ frameworks/projects/spark/src/spark/components/supportClasses/SkinnableTextBase.as
@@ -829,9 +829,15 @@
      *  after an editing operation.
      */
     protected function textView_changeHandler(event:TextOperationEvent):void
-    {
-        // Update our storage variable for the text string.
-        mx_internal::_text = textView.text;
+    {
+        // Update our storage variable for the text string.  Use the setter
+        // so that the textChanged event is dispatched which will maintain
+        // compatibility with the TextInput control.
+        text = textView.text;
+
+        // Kill any programmatic change, including binding firing, that we
+        // might be looking at.
+        mx_internal::textChanged = false;

         // Redispatch the event that came from the TextView.
         dispatchEvent(event);


fix testDefaultPlatform test.  new default platform is WEB, not DESKTOP

--- snowplow-as3-tracker-tests/src/TrackerTest.as
+++ snowplow-as3-tracker-tests/src/TrackerTest.as
@@ -34,7 +34,7 @@
 			var emitter:Emitter = new Emitter(testURL, URLRequestMethod.POST);
 			var subject:Subject = new Subject();
 			var tracker:Tracker = new Tracker(emitter, "AF003", "cloudfront", subject, FlexGlobals.topLevelApplication.stage, false);
-			Assert.assertEquals(DevicePlatform.DESKTOP, tracker.getPlatform());
+			Assert.assertEquals(DevicePlatform.WEB, tracker.getPlatform());
 		}

 		[Test]


Transferred from the Adobe Open Source Subversion Repository

Revision: 17228
Author:   jszeto@adobe.com
Date:     2010-08-07T00:36:47.941230Z

Log Message:
-----------
CheckBox and RadioButton skins

- Added new ToggleButtonSkinBase which subclasses ButtonBase. It uses the iconDisplay to hold the check box or radio circle.
- Added RadioButtonSkin and CheckBoxSkin which subclass ToggleButtonSkinBase and specifies the icons for the different states.
- Improved FXG skin creation logic in ButtonSkin.

SDK-27296 - Setting iconClass using setStyle does not work

Added logic to styleChanged and moved the iconClass logic to commitProperties

SDK-27295 - Button skin on 'up' state not consistent after clicking a button

Fixed up FXG skin creation logic

QE notes: CheckBox and RadioButton still need some visual tweaks to the FXG skins
Doc notes: none
Bugs: SDK-27296, SDK-27295
Reviewer: Glenn
Tests run: checkintests
Is noteworthy for integration: no

Modified Paths:
--------------
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobiletheme/src/spark/skins/MobileSkin.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobiletheme/defaults.css</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobiletheme/src/spark/skins/mobile/ButtonSkinBase.as</path>
<path kind="file" action="A">/private/flex/sdk/branches/hero_private/frameworks/projects/mobiletheme/src/spark/skins/mobile/CheckBoxSkin.as</path>
<path kind="file" action="A">/private/flex/sdk/branches/hero_private/frameworks/projects/mobiletheme/src/spark/skins/mobile/ToggleButtonSkinBase.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mx/src/mx/controls/Button.as</path>
<path kind="file" action="A">/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/ButtonSkin.as</path>

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

--- frameworks/projects/mobiletheme/src/spark/skins/mobile/supportClasses/ButtonSkinBase.as
+++ frameworks/projects/mobiletheme/src/spark/skins/mobile/supportClasses/ButtonSkinBase.as
@@ -31,7 +31,7 @@
     import mx.states.State;
     import mx.utils.ColorUtil;

-    import spark.components.Button;
+    import spark.components.supportClasses.ButtonBase;
     import spark.skins.MobileSkin;

     use namespace mx_internal;
@@ -76,18 +76,20 @@
         //
         //--------------------------------------------------------------------------

-        private var textField:IUITextField;
-        private var textFieldShadow:IUITextField;
+        private var iconClassChanged:Boolean = true;
+
+        protected var textField:IUITextField;
+        protected var textFieldShadow:IUITextField;

         // Holds the icon
-        private var iconDisplay:DisplayObject;
+        protected var iconDisplay:DisplayObject;

         // TODO (jszeto) Either static consts or styles
-        private static const gap:int = 7;
-        private static const paddingLeft:int = 15;
-        private static const paddingRight:int = 15;
-        private static const paddingTop:int = 7;
-        private static const paddingBottom:int = 7;
+        protected static const gap:int = 15;
+        protected static const paddingLeft:int = 15;
+        protected static const paddingRight:int = 15;
+        protected static const paddingTop:int = 15;
+        protected static const paddingBottom:int = 15;

         private static var TEXT_WIDTH_PADDING:Number = UITextField.TEXT_WIDTH_PADDING + 1;

@@ -100,7 +102,7 @@
         /**
          * @copy spark.skins.spark.ApplicationSkin#hostComponent
          */
-        public var hostComponent:Button; // SkinnableComponent will popuplate
+        public var hostComponent:ButtonBase; // SkinnableComponent will popuplate

         //--------------------------------------------------------------------------
         //
@@ -133,42 +135,43 @@
                     hostComponent_contentChangeHandler,
                     false, 0, true);
             }
-
-            var iconClass:Class = getStyle("iconClass");
-
-            if (iconClass)
-            {
-                // Should be a bitmap
-                iconDisplay = new iconClass();
-                addChild(iconDisplay);
-            }
-        }
-
-        /**
-         *  @private
-         */
-        override public function styleChanged(styleProp:String):void {
-            // TODO: Refactor to check whether styleProp is one of three following value types and update
-            // the styles accordingly:
-            // 1) Individual style name (e.g. "fontSize"). 2) "styleName". 3) null.
-            // If 1) reset only individual style. If 2) or 3), reset all styles
-
-            // Only deal with text if a hostComponent exists and text fields are not empty
-            /*if(hostComponent != null && textField != null && textFieldShadow != null) {
-            var tf:TextFormat = textField.defaultTextFormat;
-
-            tf = setTextFormat(tf);
-
-            //textField.setTextFormat(tf);
-            tf.color = 0x000000;
-            textFieldShadow.setTextFormat(tf);
-            textFieldShadow.alpha = .20;
-            }*/
-
-            // TODO Reapply the color to the textFieldShadow
-            // TODO (jszeto) Add check for change to iconClass
+        }
+
+        /**
+         *  @private
+         */
+        override public function styleChanged(styleProp:String):void
+        {
+            if (!styleProp ||
+                styleProp == "styleName" || styleProp == "iconClass")
+            {
+                iconClassChanged = true;
+                invalidateProperties();
+            }

             super.styleChanged(styleProp);
+        }
+
+        override protected function commitProperties():void
+        {
+            super.commitProperties();
+
+            if (iconClassChanged)
+            {
+                if (iconDisplay)
+                    removeChild(iconDisplay);
+
+                var iconClass:Class = getStyle("iconClass");
+
+                if (iconClass)
+                {
+                    // Should be a bitmap
+                    iconDisplay = new iconClass();
+                    addChild(iconDisplay);
+                }
+
+                iconClassChanged = false;
+            }
         }

         /**


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

--- frameworks/projects/advancedgrids/src/mx/controls/olapDataGridClasses/OLAPDataGridHeaderRenderer.as
+++ frameworks/projects/advancedgrids/src/mx/controls/olapDataGridClasses/OLAPDataGridHeaderRenderer.as
@@ -0,0 +1,461 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+//  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 flash.display.DisplayObject;
+import flash.display.Graphics;
+
+import mx.controls.OLAPDataGrid;
+import mx.controls.advancedDataGridClasses.AdvancedDataGridColumn;
+import mx.controls.advancedDataGridClasses.AdvancedDataGridListData;
+import mx.controls.listClasses.BaseListData;
+import mx.controls.listClasses.IDropInListItemRenderer;
+import mx.controls.listClasses.IListItemRenderer;
+import mx.core.Container;
+import mx.core.IDataRenderer;
+import mx.core.IFactory;
+import mx.core.IUIComponent;
+import mx.events.FlexEvent;
+import mx.olap.IOLAPElement;
+import mx.styles.ISimpleStyleClient;
+
+/**
+ *  The OLAPDataGridHeaderRenderer is a container which contains
+ *  one header for each row of on the column axis. This header describes
+ *  the name of the hierarchy to which a particular member belongs.
+ *
+ *  Because of the limitation that a valid column grouping should be in a tree
+ *  form, a fake top level column is created to give the required functionality of
+ *  column axis headers to OLAPDataGrid
+ *
+ *  @see mx.controls.OLAPDataGrid
+ *  @see mx.controls.olapDataGridClasses.OLAPDataGridHeaderRendererProvider
+ *
+ *  @langversion 3.0
+ *  @playerversion Flash 9
+ *  @playerversion AIR 1.1
+ *  @productversion Flex 3
+ */
+
+/**
+ *  @private
+ */
+public class OLAPDataGridHeaderRenderer extends Container
+       implements IDataRenderer, IDropInListItemRenderer, IListItemRenderer
+{
+	include "../../core/Version.as";
+
+    //--------------------------------------------------------------------------
+    //
+    //  Constructor
+    //
+    //--------------------------------------------------------------------------
+
+    /**
+     *  Constructor
+     *
+     *  @langversion 3.0
+     *  @playerversion Flash 9
+     *  @playerversion AIR 1.1
+     *  @productversion Flex 3
+     */
+    public function OLAPDataGridHeaderRenderer()
+    {
+        super();
+    }
+
+    //--------------------------------------------------------------------------
+    //
+    //  Variables
+    //
+    //--------------------------------------------------------------------------
+
+    /**
+     *  @private
+     */
+    private var listOwner:OLAPDataGrid;
+
+    private var factoriesChanged:Boolean = false;
+
+    private var dataProviderChanged:Boolean = false;
+
+    //--------------------------------------------------------------------------
+    //
+    //  Overriden Properties
+    //
+    //--------------------------------------------------------------------------
+
+    //----------------------------------
+    //  data
+    //----------------------------------
+
+    /**
+     *  @private
+     *  Storage for the data property.
+     */
+    private var _data:Object;
+
+    [Bindable("dataChange")]
+
+    /**
+     *  The implementation of the data property as
+     *  defined by the IDataRenderer interface.
+     *
+     *  @see mx.core.IDataRenderer
+     *
+     *  @langversion 3.0
+     *  @playerversion Flash 9
+     *  @playerversion AIR 1.1
+     *  @productversion Flex 3
+     */
+    override public function get data():Object
+    {
+        return _data;
+    }
+
+    /**
+     *  @private
+     */
+    override public function set data(value:Object):void
+    {
+        _data = value;
+
+        invalidateProperties();
+
+        dispatchEvent(new FlexEvent(FlexEvent.DATA_CHANGE));
+    }
+
+    //----------------------------------
+    //  horizontalScrollPolicy
+    //----------------------------------
+
+    /**
+     *  @private
+     */
+    override public function set horizontalScrollPolicy(value:String):void
+    {
+        super.horizontalScrollPolicy = "off";
+    }
+
+    //----------------------------------
+    //  verticalScrollPolicy
+    //----------------------------------
+
+    /**
+     *  @private
+     */
+    override public function set verticalScrollPolicy(value:String):void
+    {
+        super.verticalScrollPolicy = "off";
+    }
+
+    //--------------------------------------------------------------------------
+    //
+    //  Properties
+    //
+    //--------------------------------------------------------------------------
+
+    //----------------------------------
+    //  listData
+    //----------------------------------
+
+    /**
+     *  @private
+     *  Storage for the listData property.
+     */
+    private var _listData:AdvancedDataGridListData;
+
+    [Bindable("dataChange")]
+
+    /**
+     *  The implementation of the listData property as
+     *  defined by the IDropInListItemRenderer interface.
+     *
+     *  @see mx.controls.listClasses.IDropInListItemRenderer
+     *
+     *  @langversion 3.0
+     *  @playerversion Flash 9
+     *  @playerversion AIR 1.1
+     *  @productversion Flex 3
+     */
+    public function get listData():BaseListData
+    {
+        return _listData;
+    }
+
+    /**
+     *  @private
+     */
+    public function set listData(value:BaseListData):void
+    {
+        _listData = AdvancedDataGridListData(value);
+
+        invalidateProperties();
+    }
+
+
+
+    //----------------------------------
+    //  factories
+    //----------------------------------
+
+    private var _factories:Array /* of IFactory */;
+
+    /**
+     *  @private
+     */
+    public function get factories():Array /* of IFactory */
+    {
+        return _factories;
+    }
+
+    /**
+     *  @private
+     */
+    public function set factories(value:Array /* of IFactory */):void
+    {
+        if(checkIfChanged(_factories, value))
+        {
+            _factories = value;
+            factoriesChanged = true;
+            invalidateProperties();
+        }
+    }
+
+    //----------------------------------
+    //  dataProvider
+    //----------------------------------
+
+    private var _dataProvider:Array /* of IOLAPHierarchy */;
+
+    /**
+     *  @private
+     */
+    public function get dataProvider():Array /* of IOLAPHierarchy */
+    {
+        return _dataProvider;
+    }
+
+    /**
+     *  @private
+     */
+    public function set dataProvider(value:Array /* of IOLAPHierarchy */):void
+    {
+        if(checkIfChanged(_dataProvider, value))
+        {
+            _dataProvider = value;
+            dataProviderChanged = true;
+            invalidateProperties();
+        }
+    }
+
+    //--------------------------------------------------------------------------
+    //
+    //  Overriden Methods
+    //
+    //--------------------------------------------------------------------------
+
+    /**
+     *  @inheritDoc
+     *
+     *  @langversion 3.0
+     *  @playerversion Flash 9
+     *  @playerversion AIR 1.1
+     *  @productversion Flex 3
+     */
+    override protected function commitProperties():void
+    {
+        super.commitProperties();
+
+        if ((factoriesChanged || dataProviderChanged) && factories && dataProvider)
+        {
+            factoriesChanged = dataProviderChanged = false;
+
+            //Remove the children if there are any already added
+            while(this.numChildren)
+                this.removeChildAt(0);
+
+            var n:int = factories.length;
+            for (var i:int = 0; i < n; i++)
+            {
+                var factory:IFactory = factories[i];
+                var r:IListItemRenderer = factory.newInstance();
+
+                if (r is IDropInListItemRenderer)
+                {
+                    var c:AdvancedDataGridColumn;
+                    if(data is AdvancedDataGridColumn)
+                        c = AdvancedDataGridColumn(data);
+                    else
+                        c = null;
+
+                    IDropInListItemRenderer(r).listData =  makeListData(this.dataProvider[i],
+                                                                        _listData.uid,
+                                                                        _listData.rowIndex,
+                                                                        _listData.columnIndex,
+                                                                        c);
+                }
+
+                r.data = this.data;
+                this.addChild(DisplayObject(r));
+            }
+        }
+    }
+
+    /**
+     *  @inheritDoc
+     *
+     *  @langversion 3.0
+     *  @playerversion Flash 9
+     *  @playerversion AIR 1.1
+     *  @productversion Flex 3
+     */
+    override public function setStyle(styleProp:String, newValue:*):void
+    {
+        super.setStyle(styleProp, newValue);
+
+        if (styleProp == "axisHeaderStyleName")
+        {
+            //Need to propagate the style value to all the child headers
+            for ( var i:int = 0; i < this.numChildren; i++)
+            {
+                var child:DisplayObject = DisplayObject(this.getChildAt(i));
+
+                if(child is ISimpleStyleClient)
+                    ISimpleStyleClient(child).styleName = newValue;
+            }
+        }
+    }
+
+    /**
+     *  @inheritDoc
+     *
+     *  @langversion 3.0
+     *  @playerversion Flash 9
+     *  @playerversion AIR 1.1
+     *  @productversion Flex 3
+     */
+    override protected function measure():void
+    {
+        super.measure();
+
+        var w:Number = 0;
+
+        var h:Number = 0;
+
+        for ( var i:int = 0; i < factories.length; i++)
+        {
+            var child:IUIComponent = IUIComponent(this.getChildAt(i));
+            h = Math.max(h, child.getExplicitOrMeasuredHeight());
+            w += child.getExplicitOrMeasuredWidth()+5;
+        }
+
+        if (!isNaN(explicitWidth))
+            w = explicitWidth;
+
+        measuredWidth = w;
+        measuredHeight = h;
+    }
+
+    /**
+     *  @inheritDoc
+     *
+     *  @langversion 3.0
+     *  @playerversion Flash 9
+     *  @playerversion AIR 1.1
+     *  @productversion Flex 3
+     */
+    override protected function updateDisplayList(unscaledWidth:Number, unscaledHeight:Number):void
+    {
+        super.updateDisplayList(unscaledWidth, unscaledHeight);
+
+        var startx:Number = 0;
+        var g:Graphics = this.graphics;
+        g.clear();
+
+        var color:uint = getStyle("verticalGridLineColor");
+        g.lineStyle(1, color, 100);
+
+        var n:int = factories.length;
+        for ( var i:int = 0; i < n; i++)
+        {
+            var child:IUIComponent = IUIComponent(this.getChildAt(i));
+            child.move(startx, 0);
+
+            var w:Number = (child.getExplicitOrMeasuredWidth());
+            child.setActualSize(w, child.getExplicitOrMeasuredHeight());
+
+            startx += w;
+
+            g.moveTo(startx, -5);
+            g.lineTo(startx, unscaledHeight);
+        }
+    }
+
+    //--------------------------------------------------------------------------
+    //
+    //  Methods
+    //
+    //--------------------------------------------------------------------------
+
+    /**
+     *  Creates a new AdvancedDataGridListData instance and populates the fields based on
+     *  the input data provider item (In case of OLAPDataGrid it is an IOLAPHierarhcy).
+     *
+     *
+     *  @langversion 3.0
+     *  @playerversion Flash 9
+     *  @playerversion AIR 1.1
+     *  @productversion Flex 3
+     */
+    protected function makeListData(data:Object, uid:String,
+                                             rowNum:int, columnNum:int, column:AdvancedDataGridColumn):BaseListData
+    {
+        var text:String = "";
+        //data here is an IOLAPAttribute
+        if (data is IOLAPElement)
+            text = data.name
+
+        return new AdvancedDataGridListData(text, column ? column.dataField : "", columnNum,
+                                            uid, _listData.owner, rowNum);
+    }
+
+    /**
+     *  @private
+     */
+    private function checkIfChanged(a:Array /* of Object */, b:Array /* of Object */):Boolean
+    {
+        var mismatch:Boolean = false;
+        if(!a)
+        {
+            mismatch = true;
+        }
+        else if(b && b.length)
+        {
+            if(b.length != a.length)
+            {
+                mismatch = true;
+            }
+            else
+            {
+                for (var i:int = 0; i < b.length && i < a.length; i++)
+                {
+                    if(a[i] != b[i])
+                        mismatch = true;
+                }
+            }
+        }
+        return mismatch;
+    }
+}
+
+}


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

--- frameworks/projects/charts/src/mx/charts/effects/effectClasses/SeriesZoomInstance.as
+++ frameworks/projects/charts/src/mx/charts/effects/effectClasses/SeriesZoomInstance.as
@@ -0,0 +1,867 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+//  ADOBE SYSTEMS INCORPORATED
+//  Copyright 2009 Adobe Systems Incorporated
+//  All Rights Reserved.
+//
+//  NOTICE: Adobe permits you to use, modify, and distribute this file
+//  in accordance with the terms of the license agreement accompanying it.
+//
+////////////////////////////////////////////////////////////////////////////////
+
+package mx.charts.effects.effectClasses
+{
+
+import flash.geom.Point;
+import flash.geom.Rectangle;
+
+/**
+ *  The SeriesZoomInstance class implements the instance class
+ *  for the SeriesZoom effect.
+ *  Flex creates an instance of this class when it plays a SeriesZoom effect;
+ *  you do not create one yourself.
+ *
+ *  @see mx.charts.effects.SeriesZoom
+ *
+ *  @langversion 3.0
+ *  @playerversion Flash 9
+ *  @playerversion AIR 1.1
+ *  @productversion Flex 3
+ */
+public class SeriesZoomInstance extends SeriesEffectInstance
+{
+    include "../../../core/Version.as";
+
+    //--------------------------------------------------------------------------
+    //
+    //  Class constants
+    //
+    //--------------------------------------------------------------------------
+
+    /**
+     *  @private
+     */
+    private static var BOTH:uint = 0;
+
+    /**
+     *  @private
+     */
+    private static var HORIZONTAL:uint = 1;
+
+    /**
+     *  @private
+     */
+    private static var VERTICAL:uint = 2;
+
+    //--------------------------------------------------------------------------
+    //
+    //  Constructor
+    //
+    //--------------------------------------------------------------------------
+
+    /**
+     *  Constructor.
+     *
+     *  @param target The target of the effect.
+     *
+     *  @langversion 3.0
+     *  @playerversion Flash 9
+     *  @playerversion AIR 1.1
+     *  @productversion Flex 3
+     */
+    public function SeriesZoomInstance(target:Object)
+    {
+        super(target);
+    }
+
+    //--------------------------------------------------------------------------
+    //
+    //  Variables
+    //
+    //--------------------------------------------------------------------------
+
+    /**
+     *  @private
+     */
+    private var _direction:uint;
+
+    /**
+     *  @private
+     */
+    private var _elementBounds:Array /* of Rectangle */;
+
+    /**
+     *  @private
+     */
+    private var _slideDistance:Number;
+
+    /**
+     *  @private
+     */
+    private var _zoomPoints:Array /* of Point */;
+
+    /**
+     *  @private
+     */
+    private var seriesRenderData:Object;
+
+
+    //--------------------------------------------------------------------------
+    //
+    //  Properties
+    //
+    //--------------------------------------------------------------------------
+
+    //----------------------------------
+    //  horizontalFocus
+    //----------------------------------
+
+    [Inspectable(category="General", enumeration="left,center,right")]
+
+    /**
+     *  Defines the location of the focul point of the zoom.
+     *
+     *
Valid values of horizontalFocus are
+     *  "left", "center", "right",
+     *  and null.

+     *  The default value is "center".
+     *
+     *
You combine the horizontalFocus and
+     *  verticalFocus properties to define where the data series
+     *  zooms in and out from.
+     *  For example, set horizontalFocus to "left"
+     *  and verticalFocus to "top" to zoom
+     *  the series data to and from the top left corner of either the element
+     *  or the chart (depending on the setting of the
+     *  relativeTo property).

+     *
+     *
If you specify only one of these two properties, then the focus
+     *  is a horizontal or vertical line rather than a point.
+     *  For example, when you set horizontalFocus to
+     *  "left" but verticalFocus to
+     *  null, the element zooms to and from a vertical line
+     *  along the left edge of its bounding box.
+     *  Set verticalFocus to "center" to zoom
+     *  chart elements to and from a horizontal line along the middle
+     *  of the chart's bounding box.

+     *
+     *  @langversion 3.0
+     *  @playerversion Flash 9
+     *  @playerversion AIR 1.1
+     *  @productversion Flex 3
+     */
+    public var horizontalFocus:String;
+
+    //----------------------------------
+    //  relativeTo
+    //----------------------------------
+
+    [Inspectable(category="General", enumeration="series,chart", defaultValue="series")]
+
+    /**
+     *  Controls the bounding box that Flex uses to calculate
+     *  the focal point of the zooms.
+     *
+     *
Valid values for relativeTo are
+     *  "series" and "chart".
+     *  The default value is "series".

+     *
+     *
Set to "series" to zoom each element
+     *  relative to itself.
+     *  For example, each column of a ColumnChart zooms from the top left
+     *  of the column, the center of the column, and so on.

+     *
+     *
Set to "chart" to zoom each element
+     *  relative to the chart area.
+     *  For example, each column zooms from the top left of the axes,
+     *  the center of the axes, and so on.

+     *
+     *  @langversion 3.0
+     *  @playerversion Flash 9
+     *  @playerversion AIR 1.1
+     *  @productversion Flex 3
+     */
+    public var relativeTo:String = "series";
+
+    //----------------------------------
+    //  verticalFocus
+    //----------------------------------
+
+    [Inspectable(category="General", enumeration="top,center,bottom")]
+
+    /**
+     *  Defines the location of the focul point of the zoom.
+     *
+     *
Valid values of verticalFocus are
+     *  "top", "center", "bottom",
+     *  and null.
+     *  The default value is "center".

+     *
+     *
For more information, see the description of the
+     *  horizontalFocus property.

+     *
+     *  @langversion 3.0
+     *  @playerversion Flash 9
+     *  @playerversion AIR 1.1
+     *  @productversion Flex 3
+     */
+    public var verticalFocus:String;
+
+    //--------------------------------------------------------------------------
+    //
+    //  Overridden methods
+    //
+    //--------------------------------------------------------------------------
+
+    /**
+     *  @private
+     */
+    override public function play():void
+    {
+        seriesRenderData = targetSeries.getRenderDataForTransition(type);
+
+        targetSeries.getElementBounds(seriesRenderData);
+        var elementBounds:Array /* of Rectangle */ = _elementBounds =
+            seriesRenderData.elementBounds;
+
+        var activeBounds:Array /* of Rectangle */ = [];
+        var zoomPoints:Array /* of Point */ = [];
+
+        var n:int = elementBounds.length;
+        var i:int;
+        var pt:Point;
+        var v:Rectangle;
+
+        if (relativeTo == "series")
+        {
+            loadSeriesRelativePoints(zoomPoints, elementBounds);
+        }
+        else
+        {
+            loadChartRelativePoints(zoomPoints, elementBounds,
+                                    seriesRenderData.visibleRegion);
+        }
+
+        if (type == "show")
+        {
+            switch (_direction)
+            {
+                case BOTH:
+                {
+                    for (i = 0; i < n; i++)
+                    {
+                        pt = zoomPoints[i];
+                        activeBounds[i] = new Rectangle(pt.x, pt.y, 0, 0);
+                    }
+                    break;
+                }
+
+                case HORIZONTAL:
+                {
+                    for (i = 0; i < n; i++)
+                    {
+                        pt = zoomPoints[i];
+                        v = elementBounds[i];
+                        activeBounds[i] =
+                            new Rectangle(pt.x, v.top, 0, v.height);
+                    }
+                    break;
+                }
+
+                case VERTICAL:
+                {
+                    for (i = 0; i < n; i++)
+                    {
+                        pt = zoomPoints[i];
+                        v = elementBounds[i];
+                        activeBounds[i] =
+                            new Rectangle(v.left, pt.y, v.width, 0);
+                    }
+                    break;
+                }
+            }
+        }
+        else
+        {
+            for (i = 0; i < n; i++)
+            {
+                v = elementBounds[i];
+                activeBounds[i] = elementBounds[i].clone();
+            }
+        }
+
+        seriesRenderData.elementBounds = activeBounds;
+        targetSeries.transitionRenderData = seriesRenderData;
+        _zoomPoints = zoomPoints;
+
+        beginTween(n);
+    }
+
+    /**
+     *  @private
+     */
+    override public function onTweenUpdate(value:Object):void
+    {
+        super.onTweenUpdate(value);
+
+        var elementBounds:Array /* of Rectangle */ = _elementBounds;
+        var activeBounds:Array /* of Rectangle */ = seriesRenderData.elementBounds;
+        var zoomPoints:Array /* of Point */ = _zoomPoints;
+
+        var n:int = elementBounds.length;
+        var base:Number = 0;
+        var scale:Number = 1;
+        var i:int;
+        var v:Rectangle;
+        var pt:Point;
+        var interpolation:Number;
+
+        if (type == "hide")
+        {
+            base = 1;
+            scale = -1;
+        }
+        {
+            switch (_direction)
+            {
+                case BOTH:
+                {
+                    for (i = 0; i < n; i++)
+                    {
+                        interpolation = base + scale * interpolationValues[i];
+                        v = elementBounds[i];
+
+                        pt = zoomPoints[i];
+                        activeBounds[i] = new Rectangle(
+                            pt.x + (v.left - pt.x) * interpolation,
+                            pt.y + (v.top - pt.y) * interpolation,
+                            v.width * interpolation,
+                            v.height * interpolation);
+                    }
+                    break;
+                }
+
+                case HORIZONTAL:
+                {
+                    for (i = 0; i < n; i++)
+                    {
+                        interpolation = base + scale * interpolationValues[i];
+                        v = elementBounds[i];
+
+                        pt = zoomPoints[i];
+                        activeBounds[i] = new Rectangle(
+                            pt.x + (v.left - pt.x) * interpolation, v.top,
+                            v.width *interpolation, v.height);
+                    }
+                    break;
+                }
+
+                case VERTICAL:
+                {
+                    for (i = 0; i < n; i++)
+                    {
+                        interpolation = base + scale * interpolationValues[i];
+                        v = elementBounds[i];
+
+                        pt = zoomPoints[i];
+                        activeBounds[i] = new Rectangle(
+                            v.left, pt.y + (v.top - pt.y) * interpolation,
+                            v.width, v.height * interpolation);
+                    }
+                    break;
+                }
+            }
+        }
+
+        targetSeries.invalidateDisplayList();
+    }
+
+    /**
+     *  @private
+     */
+    override public function onTweenEnd(value:Object):void
+    {
+        super.onTweenEnd(value);
+
+        targetSeries.transitionRenderData = null;
+    }
+
+    //--------------------------------------------------------------------------
+    //
+    //  Methods
+    //
+    //--------------------------------------------------------------------------
+
+    /**
+     *  @private
+     */
+    private function loadChartRelativePoints(zoomPoints:Array /* of Point */,
+                                             elementBounds:Array /* of Rectangle */,
+                                             visibleRegion:Rectangle):void
+    {
+        var n:int = elementBounds.length;
+        var i:int;
+        var pt:Point;
+
+        if (!visibleRegion)
+            visibleRegion = new Rectangle(0, 0,
+                                          targetSeries.width / Math.abs(targetSeries.scaleX),
+                                          targetSeries.height / Math.abs(targetSeries.scaleY));
+
+        switch (horizontalFocus)
+        {
+            case "left":
+            {
+                switch (verticalFocus)
+                {
+                    case "top":
+                    {
+                        _direction = BOTH;
+                        pt = visibleRegion.topLeft;
+                        for (i = 0; i < n; i++)
+                        {
+                            zoomPoints[i] = pt;
+                        }
+                        break;
+                    }
+
+                    case "center":
+                    {
+                        _direction = BOTH;
+                        pt = new Point(visibleRegion.left,
+                                       visibleRegion.top +
+                                       visibleRegion.height / 2);
+                        for (i = 0; i < n; i++)
+                        {
+                            zoomPoints[i] = pt;
+                        }
+                        break;
+                    }
+
+                    case "bottom":
+                    {
+                        _direction = BOTH;
+                        pt = new Point(visibleRegion.left,
+                                       visibleRegion.bottom);
+                        for (i = 0; i < n; i++)
+                        {
+                            zoomPoints[i] = pt;
+                        }
+                        break;
+                    }
+
+                    default:
+                    {
+                        _direction = HORIZONTAL;
+                        pt = new Point(visibleRegion.left, NaN);
+                        for (i = 0; i < n; i++)
+                        {
+                            zoomPoints[i] = pt;
+                        }
+                        break;
+                    }
+                }
+                break;
+            }
+
+            case "right":
+            {
+                switch (verticalFocus)
+                {
+                    case "top":
+                    {
+                        _direction = BOTH;
+                        pt = new Point(visibleRegion.right,
+                                       visibleRegion.top);
+                        for (i = 0; i < n; i++)
+                        {
+                            zoomPoints[i] = pt;
+                        }
+                        break;
+                    }
+
+                    case "center":
+                    {
+                        _direction = BOTH;
+                        pt = new Point(visibleRegion.right,
+                                       visibleRegion.top +
+                                       visibleRegion.height / 2);
+                        for (i = 0; i < n; i++)
+                        {
+                            zoomPoints[i] = pt;
+                        }
+                        break;
+                    }
+
+                    case "bottom":
+                    {
+                        _direction = BOTH;
+                        pt = visibleRegion.bottomRight;
+                        for (i = 0; i < n; i++)
+                        {
+                            zoomPoints[i] = pt;
+                        }
+                        break;
+                    }
+
+                    default:
+                    {
+                        _direction = HORIZONTAL;
+                        pt = new Point(visibleRegion.right, NaN);
+                        for (i = 0; i < n; i++)
+                        {
+                            zoomPoints[i] = pt;
+                        }
+                        break;
+                    }
+                }
+                break;
+            }
+
+            case "center":
+            {
+                switch (verticalFocus)
+                {
+                    case "top":
+                    {
+                        _direction = BOTH;
+                        pt = new Point(visibleRegion.left +
+                                       visibleRegion.width / 2,
+                                       visibleRegion.top);
+                        for (i = 0; i < n; i++)
+                        {
+                            zoomPoints[i] = pt;
+                        }
+                        break;
+                    }
+
+                    case "center":
+                    {
+                        _direction = BOTH;
+                        pt = new Point(visibleRegion.left +
+                                       visibleRegion.width / 2,
+                                       visibleRegion.top +
+                                       visibleRegion.height / 2);
+                        for (i = 0; i < n; i++)
+                        {
+                            zoomPoints[i] = pt;
+                        }
+                        break;
+                    }
+
+                    case "bottom":
+                    {
+                        _direction = BOTH;
+                        pt = new Point(visibleRegion.left +
+                                       visibleRegion.width / 2,
+                                       visibleRegion.bottom);
+                        for (i = 0; i < n; i++)
+                        {
+                            zoomPoints[i] = pt;
+                        }
+                        break;
+                    }
+
+                    default:
+                    {
+                        _direction = HORIZONTAL;
+                        pt = new Point(visibleRegion.left +
+                                       visibleRegion.width / 2,
+                                       NaN);
+                        for (i = 0; i < n; i++)
+                        {
+                            zoomPoints[i] = pt;
+                        }
+                        break;
+                    }
+                }
+                break;
+            }
+
+            default:
+            {
+                switch (verticalFocus)
+                {
+                    case "top":
+                    {
+                        _direction = VERTICAL;
+                        pt = new Point(NaN, visibleRegion.top);
+                        for (i = 0; i < n; i++)
+                        {
+                            zoomPoints[i] = pt;
+                        }
+                        break;
+                    }
+
+                    case "center":
+                    {
+                        _direction = VERTICAL;
+                        pt = new Point(NaN,
+                                       visibleRegion.top +
+                                       visibleRegion.height / 2);
+                        for (i = 0; i < n; i++)
+                        {
+                            zoomPoints[i] = pt;
+                        }
+                        break;
+                    }
+
+                    case "bottom":
+                    {
+                        _direction = VERTICAL;
+                        pt = new Point(NaN, visibleRegion.bottom);
+                        for (i = 0; i < n; i++)
+                        {
+                            zoomPoints[i] = pt;
+                        }
+                        break;
+                    }
+
+                    default:
+                    {
+                        _direction = BOTH;
+                        pt = new Point(visibleRegion.left +
+                                       visibleRegion.width / 2,
+                                       visibleRegion.top +
+                                       visibleRegion.height / 2);
+                        for (i = 0; i < n; i++)
+                        {
+                            zoomPoints[i] = pt;
+                        }
+                        break;
+                    }
+                }
+                break;
+            }
+        }
+    }
+
+    /**
+     *  @private
+     */
+    private function loadSeriesRelativePoints(zoomPoints:Array /* of Point */,
+                                              elementBounds:Array /* of Rectangle */):void
+    {
+        var n:int = elementBounds.length;
+        var i:int;
+        var v:Rectangle;
+        var pt:Point;
+
+        switch (horizontalFocus)
+        {
+            case "left":
+            {
+                switch (verticalFocus)
+                {
+                    case "top":
+                    {
+                        _direction= BOTH;
+                        for (i = 0; i < n; i++)
+                        {
+                            v = elementBounds[i];
+                            zoomPoints[i] = new Point(v.left, v.top);
+                        }
+                        break;
+                    }
+
+                    case "center":
+                    {
+                        _direction = BOTH;
+                        for (i = 0; i < n; i++)
+                        {
+                            v = elementBounds[i];
+                            zoomPoints[i] = new Point(v.left,
+                                                      (v.top + v.bottom) / 2);
+                        }
+                        break;
+                    }
+
+                    case "bottom":
+                    {
+                        _direction = BOTH;
+                        for (i = 0; i < n; i++)
+                        {
+                            v = elementBounds[i];
+                            zoomPoints[i] = new Point(v.left, v.bottom);
+                        }
+                        break;
+                    }
+
+                    default:
+                    {
+                        _direction = HORIZONTAL;
+                        for (i = 0; i < n; i++)
+                        {
+                            v = elementBounds[i];
+                            zoomPoints[i] = new Point(v.left,NaN);
+                        }
+                        break;
+                    }
+                }
+                break;
+            }
+
+            case "right":
+            {
+                switch (verticalFocus)
+                {
+                    case "top":
+                    {
+                        _direction = BOTH;
+                        for (i = 0; i < n; i++)
+                        {
+                            v = elementBounds[i];
+                            zoomPoints[i] = new Point(v.right, v.top);
+                        }
+                        break;
+                    }
+
+                    case "center":
+                    {
+                        _direction = BOTH;
+                        for (i = 0; i < n; i++)
+                        {
+                            v = elementBounds[i];
+                            zoomPoints[i] = new Point(v.right,
+                                                      (v.top + v.bottom) / 2);
+                        }
+                        break;
+                    }
+
+                    case "bottom":
+                    {
+                        _direction = BOTH;
+                        for (i = 0; i < n; i++)
+                        {
+                            v = elementBounds[i];
+                            zoomPoints[i] = new Point(v.right, v.bottom);
+                        }
+                        break;
+                    }
+
+                    default:
+                    {
+                        _direction = HORIZONTAL;
+                        for (i = 0; i < n; i++)
+                        {
+                            v = elementBounds[i];
+                            zoomPoints[i] = new Point(v.right,NaN);
+                        }
+                        break;
+                    }
+                }
+                break;
+            }
+
+            case "center":
+            {
+                switch (verticalFocus)
+                {
+                    case "top":
+                    {
+                        _direction = BOTH;
+                        for (i = 0; i < n; i++)
+                        {
+                            v = elementBounds[i];
+                            zoomPoints[i] = new Point((v.left + v.right) / 2,
+                                                      v.top);
+                        }
+                        break;
+                    }
+
+                    case "center":
+                    {
+                        _direction = BOTH;
+                        for (i = 0; i < n; i++)
+                        {
+                            v = elementBounds[i];
+                            zoomPoints[i] = new Point((v.left + v.right) / 2,
+                                                      (v.top + v.bottom) / 2);
+                        }
+                        break;
+                    }
+
+                    case "bottom":
+                    {
+                        _direction = BOTH;
+                        for (i = 0; i < n; i++)
+                        {
+                            v = elementBounds[i];
+                            zoomPoints[i] = new Point((v.left + v.right) / 2,
+                                                      v.bottom);
+                        }
+                        break;
+                    }
+
+                    default:
+                    {
+                        _direction = HORIZONTAL;
+                        for (i = 0; i < n; i++)
+                        {
+                            v = elementBounds[i];
+                            zoomPoints[i] = new Point((v.right + v.left) / 2,
+                                                      NaN);
+                        }
+                        break;
+                    }
+                }
+                break;
+            }
+
+            default:
+            {
+                switch (verticalFocus)
+                {
+                    case "top":
+                    {
+                        _direction = VERTICAL;
+                        for (i = 0; i < n; i++)
+                        {
+                            v = elementBounds[i];
+                            zoomPoints[i] = new Point(NaN, v.top);
+                        }
+                        break;
+                    }
+
+                    case "center":
+                    {
+                        _direction = VERTICAL;
+                        for (i = 0; i < n; i++)
+                        {
+                            v = elementBounds[i];
+                            zoomPoints[i] = new Point(NaN,
+                                                      (v.top + v.bottom) / 2);
+                        }
+                        break;
+                    }
+
+                    case "bottom":
+                    {
+                        _direction = VERTICAL;
+                        for (i = 0; i < n; i++)
+                        {
+                            v = elementBounds[i];
+                            zoomPoints[i] = new Point(NaN, v.bottom);
+                        }
+                        break;
+                    }
+
+                    default:
+                    {
+                        _direction = BOTH;
+                        for (i = 0; i < n; i++)
+                        {
+                            v = elementBounds[i];
+                            zoomPoints[i] = new Point((v.left + v.right) / 2,
+                                                      (v.top + v.bottom) / 2);
+                        }
+                        break;
+                    }
+                }
+                break;
+            }
+        }
+    }
+}
+
+}


ReactionView: refactoring inline helpers to seperate classes

--- test/ras3r/controls/TextTest.as
+++ test/ras3r/controls/TextTest.as
@@ -20,8 +20,9 @@
 					so(text.autoSize).should.equal('left');
 				});

-				it ('should override 100x100 default size via autoSize', function () :void
+				it ('should override 100x100 default size when wordWrap = false', function () :void
 				{
+					text.wordWrap = false;
 					so(text.height).should.not.equal(100);
 					so(text.width).should.not.equal(100);
 				});


Fixed bug where mouse roll over/out events weren't handled correctly.

Change-Id: I2512ae47879ca041b2a5aaceb4e3c82d1459c25c

--- WeaveUI/src/weave/visualization/layers/InteractiveVisualization.as
+++ WeaveUI/src/weave/visualization/layers/InteractiveVisualization.as
@@ -331,6 +331,8 @@
 					break;
 				}
 				case MouseEvent.MOUSE_MOVE:
+				case MouseEvent.ROLL_OVER:
+				case MouseEvent.ROLL_OUT:
 				{
 					if (event.buttonDown)
 						eventType = InteractionController.DRAG;


OFC-537 Error when confirming errors on multiple code input field

--- collect-flex/collect-flex-client/src/generated/flex/org/openforis/collect/model/proxy/RecordProxy.as
+++ collect-flex/collect-flex-client/src/generated/flex/org/openforis/collect/model/proxy/RecordProxy.as
@@ -112,6 +112,12 @@
 							field.symbol = null;
 						}
 						break;
+					case UpdateRequestOperation$Method.CONFIRM_ERROR:
+						attr = getNode(reqOp.nodeId) as AttributeProxy;
+						if ( attr != null ) {
+							attr.errorConfirmed = true;
+						}
+						break;
 				}
 			}
 		}


readField() also gets an untyped return type.

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

--- src/as/com/threerings/io/ObjectInputStream.as
+++ src/as/com/threerings/io/ObjectInputStream.as
@@ -176,7 +176,7 @@
      * @param type either a String representing the java type,
      *             or a Class object representing the actionscript type.
      */
-    public function readField (type :Object) :Object
+    public function readField (type :Object) :*
         //throws IOError
     {
         if (!readBoolean()) {


Change 20081115-hqm-l by hqm@badtzmaru.home on 2008-11-15 13:49:21 EST
    in /Users/hqm/openlaszlo/trunk5
    for http://svn.openlaszlo.org/openlaszlo/trunk

Summary: use hitArea/mouseEnabled hack on all LzSprites

New Features:

Bugs Fixed: LPP-7349

Technical Reviewer: andre
QA Reviewer: max
Doc Reviewer: (pending)

Documentation:

Release Notes:

Details:

+ I have just set mouseEnabled=true on all LzSprites, and keep the
hitArea = emptySprite on all LzSprite by default.

+ When clickable is enabled, the hitArea is removed, and the
SimpleButton is used to catch mouse clicks.

When clickable is disabled, the hitArea=emptySprite is set again.

I don't think this has any noticable performance implications, but I'm
not sure.

Tests:

test case from bug report
lzpix works (with contextmenu attached to <photo> class)
test/contextmenu/lpp-6980.lzx
test/contextmenu/over-input.lzx

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

--- WEB-INF/lps/lfc/kernel/swf9/LzSprite.as
+++ WEB-INF/lps/lfc/kernel/swf9/LzSprite.as
@@ -132,7 +132,8 @@
               this.isroot = true;
               this.mouseEnabled = true;// @devnote: see LPP-6980
           } else {
-              this.mouseEnabled = false;
+              this.mouseEnabled = true;
+              this.hitArea = LzSprite.emptySprite;
           }
       }

@@ -724,10 +725,10 @@
           this.clickable = c;
           this.buttonMode = c;
           this.tabEnabled = false;
-          this.mouseEnabled = c || this.isroot;// @devnote: see LPP-6980
           var cb:SimpleButton = this.clickbutton;
           //trace('sprite setClickable' , c, 'cb',cb);
           if (this.clickable) {
+              this.hitArea = null;
               attachMouseEvents(this);
               // TODO [hqm 2008-01] The Flash Sprite docs
               // explain how to add a sprite to the tab order using tabEnabled property.
@@ -756,6 +757,7 @@
                   removeMouseEvents(cb);
                   this.clickbutton = null;
               }
+              this.hitArea = LzSprite.emptySprite;
           }
       }

@@ -1323,21 +1325,6 @@
               // where it checks for a resource or bgcolor sprite, in order to make the clickable region
               // match what the user expects.

-              // TODO: [20080914 anba] blocked by LPP-6980
-              var par = this;
-              while(par is Sprite) {
-                  par.mouseEnabled = true;
-
-                  // This hack turns off mouse events on sprites that
-                  // are not set as clickable, by setting 'hitArea' to
-                  // a zero size empty Sprite which is not on the
-                  // display list.
-                  if (par is LzSprite && !par.clickable) {
-                      par.hitArea = LzSprite.emptySprite;
-                  }
-
-                  par = par.parent;
-              }

               // "contextMenu" is a swf9 property on flash.display.Sprite
               this.contextMenu = cmenu;


put menu items in alphabetical order

put menu items in alphabetical order

--- WeaveClient/src/weave/VisApplication.as
+++ WeaveClient/src/weave/VisApplication.as
@@ -613,22 +613,22 @@
 					createToolMenuItem(Weave.properties.enableAddColorLegend, "Add Color Legend", createGlobalObject, [ColorBinLegendTool]);
 					createToolMenuItem(Weave.properties.enableAddCompoundRadViz, "Add CompoundRadViz", createGlobalObject, [CompoundRadVizTool]);
 					createToolMenuItem(Weave.properties.enableAddDataTable, "Add Data Table", createGlobalObject, [DataTableTool]);
-					createToolMenuItem(Weave.properties.enableAddDataTable, "Add Transposed Data Table", createGlobalObject, [TransposedTableTool]);
-					createToolMenuItem(Weave.properties.enableAddDimensionSliderTool, "Add Dimension Slider Tool", createGlobalObject, [DimensionSliderTool]);
-					createToolMenuItem(Weave.properties.enableAddGaugeTool, "Add Gauge Tool", createGlobalObject, [GaugeTool]);
-					createToolMenuItem(Weave.properties.enableAddHistogram, "Add Histogram", createGlobalObject, [HistogramTool]);
+					createToolMenuItem(Weave.properties.enableAddDimensionSliderTool, "Add Dimension Slider Tool", createGlobalObject, [DimensionSliderTool]);
+					createToolMenuItem(Weave.properties.enableAddGaugeTool, "Add Gauge Tool", createGlobalObject, [GaugeTool]);
+					createToolMenuItem(Weave.properties.enableAddHistogram, "Add Histogram", createGlobalObject, [HistogramTool]);
 					createToolMenuItem(Weave.properties.enableAdd2DHistogram, "Add 2D Histogram", createGlobalObject, [Histogram2DTool]);
 					createToolMenuItem(Weave.properties.enableAddRScriptEditor, "Add JRI Script Editor", createGlobalObject, [JRITextEditor]);
-					createToolMenuItem(Weave.properties.enableAddLineChart, "Add Line Chart", createGlobalObject, [LineChartTool]);
+					createToolMenuItem(Weave.properties.enableAddLineChart, "Add Line Chart", createGlobalObject, [LineChartTool]);
 					createToolMenuItem(Weave.properties.enableAddMap, "Add Map", createGlobalObject, [MapTool]);
-					createToolMenuItem(Weave.properties.enableAddPieChart, "Add Pie Chart", createGlobalObject, [PieChartTool]);
+					createToolMenuItem(Weave.properties.enableAddPieChart, "Add Pie Chart", createGlobalObject, [PieChartTool]);
 					createToolMenuItem(Weave.properties.enableAddPieChartHistogram, "Add Pie Chart Histogram", createGlobalObject, [PieChartHistogramTool]);
 					createToolMenuItem(Weave.properties.enableAddRScriptEditor, "Add R Script Editor", createGlobalObject, [RTextEditor]);
 					createToolMenuItem(Weave.properties.enableAddRadViz, "Add RadViz", createGlobalObject, [RadVizTool]);
-					createToolMenuItem(Weave.properties.enableAddRamachandranPlot, "Add RamachandranPlot", createGlobalObject, [RamachandranPlotTool]);
+					createToolMenuItem(Weave.properties.enableAddRamachandranPlot, "Add RamachandranPlot", createGlobalObject, [RamachandranPlotTool]);
 					createToolMenuItem(Weave.properties.enableAddScatterplot, "Add Scatterplot", createGlobalObject, [ScatterPlotTool]);
 					createToolMenuItem(Weave.properties.enableAddThermometerTool, "Add Thermometer Tool", createGlobalObject, [ThermometerTool]);
-					createToolMenuItem(Weave.properties.enableAddTimeSliderTool, "Add Time Slider Tool", createGlobalObject, [TimeSliderTool]);
+					createToolMenuItem(Weave.properties.enableAddTimeSliderTool, "Add Time Slider Tool", createGlobalObject, [TimeSliderTool]);
+					createToolMenuItem(Weave.properties.enableAddDataTable, "Add Transposed Data Table", createGlobalObject, [TransposedTableTool]);
 					createToolMenuItem(Weave.properties.enableAddCustomTool, "Add Custom Tool", createGlobalObject, [EmptyTool]);
 				}


now including hash map name order in flattenSessionState().

--- WeaveCore/src/weave/utils/DebugUtils.as
+++ WeaveCore/src/weave/utils/DebugUtils.as
@@ -425,6 +425,7 @@
 				output = [];
 			if (DynamicState.isDynamicStateArray(state))
 			{
+				var names:Array = [];
 				for each (var obj:Object in state)
 				{
 					if (DynamicState.isDynamicState(obj))
@@ -437,8 +438,15 @@
 							output.push([pathPrefix.concat('class'), className]);
 						flattenSessionState(sessionState, pathPrefix, output);
 						pathPrefix.pop();
+
+						if (objectName)
+							names.push(objectName);
 					}
-				}
+					else
+						names.push(obj);
+				}
+				if (names.length)
+					output.push([pathPrefix.concat(), names]);
 			}
 			else if (state is Array)
 			{


Servlet now supports any parameter as a ByteArray, not just the last
one.

Change-Id: I10ed9f321738a86ca9a8403d772c12077d95fc0d

--- WeaveData/src/weave/services/Servlet.as
+++ WeaveData/src/weave/services/Servlet.as
@@ -125,14 +125,20 @@
 				obj.methodParameters = methodParameters;
 				obj.streamParameterIndex = -1; // index of stream parameter

-				var streamContent:ByteArray;
+				var streamContent:ByteArray = null;
 				var params:Array = methodParameters as Array;
-				var index:int = params ? params.length - 1 : -1;
-				if (params && params.length > 0 && params[index] is ByteArray)
+				if (params)
 				{
-					obj.streamParameterIndex = index; // tell the server about the stream parameter index
-					streamContent = params[index];
-					params[index] = null; // keep the placeholder where the server will insert the stream parameter
+					var index:int;
+					for (index = 0; index < params.length; index++)
+						if (params[index] is ByteArray)
+							break;
+					if (index < params.length)
+					{
+						obj.streamParameterIndex = index; // tell the server about the stream parameter index
+						streamContent = params[index];
+						params[index] = null; // keep the placeholder where the server will insert the stream parameter
+					}
 				}

 				// serialize into compressed AMF3


Recover from RTSPOverHTTP Socket Error

Recover from RTSPOverHTTP Socket Error

--- src/com/axis/rtspclient/RTSPoverHTTPHandle.as
+++ src/com/axis/rtspclient/RTSPoverHTTPHandle.as
@@ -1,4 +1,6 @@
 package com.axis.rtspclient {
+  import com.axis.ClientEvent;
+  import com.axis.ErrorManager;
   import com.axis.http.auth;
   import com.axis.http.request;
   import com.axis.http.url;
@@ -44,14 +46,14 @@
       getChannel.timeout = 5000;
       getChannel.addEventListener(Event.CONNECT, onGetChannelConnect);
       getChannel.addEventListener(ProgressEvent.SOCKET_DATA, onGetChannelData);
-      getChannel.addEventListener(IOErrorEvent.IO_ERROR, onError);
-      getChannel.addEventListener(SecurityErrorEvent.SECURITY_ERROR, onError);
+      getChannel.addEventListener(IOErrorEvent.IO_ERROR, onIOError);
+      getChannel.addEventListener(SecurityErrorEvent.SECURITY_ERROR, onSecurityError);

       postChannel = new Socket();
       postChannel.timeout = 5000;
       postChannel.addEventListener(Event.CONNECT, onPostChannelConnect);
-      postChannel.addEventListener(IOErrorEvent.IO_ERROR, onError);
-      postChannel.addEventListener(SecurityErrorEvent.SECURITY_ERROR, onError);
+      postChannel.addEventListener(IOErrorEvent.IO_ERROR, onIOError);
+      postChannel.addEventListener(SecurityErrorEvent.SECURITY_ERROR, onSecurityError);

       getChannelData = new ByteArray();
       postChannelData = new ByteArray();
@@ -73,16 +75,21 @@
       getChannel.readBytes(bytes, offset, length);
     }

-    private function onError(e:ErrorEvent):void {
-      trace("HTTPClient socket error");
-    }
-
     public function disconnect():void {
       if (getChannel.connected) {
         getChannel.close();
+
+        getChannel.removeEventListener(Event.CONNECT, onGetChannelConnect);
+        getChannel.removeEventListener(ProgressEvent.SOCKET_DATA, onGetChannelData);
+        getChannel.removeEventListener(IOErrorEvent.IO_ERROR, onIOError);
+        getChannel.removeEventListener(SecurityErrorEvent.SECURITY_ERROR, onSecurityError);
       }
       if (postChannel.connected) {
         postChannel.close();
+
+        postChannel.removeEventListener(Event.CONNECT, onPostChannelConnect);
+        postChannel.removeEventListener(IOErrorEvent.IO_ERROR, onIOError);
+        postChannel.removeEventListener(SecurityErrorEvent.SECURITY_ERROR, onSecurityError);
       }

       /* should probably wait for close, but it doesn't seem to fire properly */
@@ -167,5 +174,15 @@

       dispatchEvent(new Event('connected'));
     }
+
+    private function onIOError(event:IOErrorEvent):void {
+      ErrorManager.dispatchError(732, [event.text]);
+      dispatchEvent(new ClientEvent(ClientEvent.ABORTED));
+    }
+
+    private function onSecurityError(event:SecurityErrorEvent):void {
+      ErrorManager.dispatchError(731, [event.text]);
+      dispatchEvent(new ClientEvent(ClientEvent.ABORTED));
+    }
   }
 }


now user agent prop is a string and build with the core.strings.userAgent() function util

--- src/com/google/analytics/utils/Environment.as
+++ src/com/google/analytics/utils/Environment.as
@@ -20,6 +20,8 @@

 package com.google.analytics.utils
 {
+    import core.strings.userAgent;
+
     import com.google.analytics.core.ga_internal;
     import com.google.analytics.debug.DebugConfiguration;
     import com.google.analytics.external.HTMLDOM;
@@ -39,7 +41,7 @@
         private var _protocol:Protocols;
         private var _appName:String;
         private var _appVersion:Version;
-        private var _userAgent:UserAgent;
+        private var _userAgent:String;
         private var _url:String;

         /**
@@ -158,7 +160,7 @@
         public function set appName( value:String ):void
         {
             _appName = value;
-            userAgent.applicationProduct = value;
+            _defineUserAgent();
         }

         /**
@@ -175,7 +177,8 @@
         public function set appVersion( value:Version ):void
         {
             _appVersion = value;
-            userAgent.applicationVersion = value.toString(4);
+            _defineUserAgent();
+
         }

         /**
@@ -273,8 +276,9 @@
          */
         public function isAIR():Boolean
         {
-            return (playerType == "Desktop") && (Security.sandboxType.toString() == "application");
-        }
+            //return (playerType == "Desktop") && (Security.sandboxType.toString() == "application");
+            return Security.sandboxType == "application";
+        }

         /**
          * Indicates if the SWF is embeded in an HTML page.
@@ -501,22 +505,22 @@
             return color;
         }

+        private function _defineUserAgent():void
+        {
+            _userAgent = core.strings.userAgent( appName + "/" + appVersion.toString(4) );
+        }
+
         /**
          * Defines a custom user agent.
          *
For case where the user would want to define its own application name and version
          * it is possible to change appName and appVersion which are in sync with
          * applicationProduct and applicationVersion properties.

          */
-        public function get userAgent():UserAgent
-        {
-            /* note:
-               if we change appName then we update applicationProduct
-               if we change appVersion then we update applicationVersion
-               but the inverse is not true.
-            */
+        public function get userAgent():String
+        {
             if( !_userAgent )
             {
-                 _userAgent = new UserAgent(this, appName, appVersion.toString(4));
+                 _defineUserAgent();
             }

             return _userAgent;
@@ -525,10 +529,10 @@
         /**
          * @private
          */
-        public function set userAgent( custom:UserAgent ):void
+        public function set userAgent( custom:String ):void
         {
             _userAgent = custom;
         }
-
+
     }
 }


selectedItem should return Object, not String.

--- frameworks/as/src/org/apache/flex/html/staticControls/beads/models/ArraySelectionModel.as
+++ frameworks/as/src/org/apache/flex/html/staticControls/beads/models/ArraySelectionModel.as
@@ -20,7 +20,7 @@
 {
 	import org.apache.flex.core.ISelectionModel;
 	import org.apache.flex.core.IStrand;
-	import org.apache.flex.events.Event;
+	import org.apache.flex.events.Event;
 	import org.apache.flex.events.EventDispatcher;

 	public class ArraySelectionModel extends EventDispatcher implements ISelectionModel
@@ -57,26 +57,19 @@
 		public function set selectedIndex(value:int):void
 		{
 			_selectedIndex = value;
-			_selectedString = (value == -1) ? null : (value < _dataProvider.length) ? _dataProvider[value] : null;
+			_selectedItem = (value == -1) ? null : (value < _dataProvider.length) ? _dataProvider[value] : null;
 			dispatchEvent(new Event("selectedIndexChanged"));
 		}
-		private var _selectedString:String;
+
+		private var _selectedItem:Object;

 		public function get selectedItem():Object
 		{
-			return _selectedString;
+			return _selectedItem;
 		}
 		public function set selectedItem(value:Object):void
 		{
-			selectedString = String(value);
-		}
-		public function get selectedString():String
-		{
-			return _selectedString;
-		}
-		public function set selectedString(value:String):void
-		{
-			_selectedString = value;
+			_selectedItem = value;
 			var n:int = _dataProvider.length;
 			for (var i:int = 0; i < n; i++)
 			{
@@ -87,6 +80,28 @@
 				}
 			}
 			dispatchEvent(new Event("selectedItemChanged"));
+			dispatchEvent(new Event("selectedIndexChanged"));
+		}
+
+		private var _selectedString:String;
+
+		public function get selectedString():String
+		{
+			return String(_selectedItem);
+		}
+		public function set selectedString(value:String):void
+		{
+			_selectedString = value;
+			var n:int = _dataProvider.length;
+			for (var i:int = 0; i < n; i++)
+			{
+				if (String(_dataProvider[i]) == value)
+				{
+					_selectedIndex = i;
+					break;
+				}
+			}
+			dispatchEvent(new Event("selectedItemChanged"));
 			dispatchEvent(new Event("selectedIndexChanged"));
 		}
 	}


Code clean

Code clean

--- collect-flex/collect-flex-client/src/main/flex/org/openforis/collect/presenter/InputFieldPresenter.as
+++ collect-flex/collect-flex-client/src/main/flex/org/openforis/collect/presenter/InputFieldPresenter.as
@@ -518,13 +518,12 @@
 			return null;
 		}

-		protected function get dataClient():DataClient {
-			return _dataClient;
-		}
-
 		protected function get contextMenu():InputFieldContextMenu {
 			return _contextMenu;
 		}

+		protected static function get dataClient():DataClient {
+			return _dataClient;
+		}
 	}
 }


Fixed a few typos and leftover lines.

Fixed a few typos and leftover lines.

--- net/flashpunk/utils/Data.as
+++ net/flashpunk/utils/Data.as
@@ -18,7 +18,7 @@
 		 */
 		public static function load(file:String = ""):void
 		{
-			var data:Object = loadData(_file);
+			var data:Object = loadData(file);
 			_data = { };
 			for (var i:String in data) _data[i] = data[i];
 		}
@@ -132,7 +132,6 @@
 			if (!file) file = DEFAULT_FILE;
 			if (id) _shared = SharedObject.getLocal(PREFIX + "/" + id + "/" + file, "/");
 			else _shared = SharedObject.getLocal(PREFIX + "/" + file);
-			_shared = SharedObject.getLocal(file);
 			return _shared.data;
 		}

@@ -140,7 +139,6 @@
 		/** @private */ private static var _shared:SharedObject;
 		/** @private */ private static var _dir:String;
 		/** @private */ private static var _data:Object = { };
-		/** @private */ private static var _file:String;
 		/** @private */ private static const PREFIX:String = "FlashPunk";
 		/** @private */ private static const DEFAULT_FILE:String = "_file";
 		/** @private */ private static const SIZE:uint = 10000;


Transferred from the Adobe Open Source Subversion Repository

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

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

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

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

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

 package mx.events
 {


Transferred from the Adobe Open Source Subversion Repository

Revision: 12108
Author:   cframpto@adobe.com
Date:     2009-11-23T16:55:34.765875Z

Log Message:
-----------
Add adjustContentBoundsForScroller().  This implements the conditions that must be met in order to keep the scroller from looping try to add/remove scroll bars.  When the scroller adds or removes a scroll bar the text may reflow, which can change the contentBounds again and cause the scroller to want to take further action.  See function header for more details.

QE notes:
Doc notes:
Bugs: SDK-23119, SDK-22887
Reviewer: Gordon, Hans
Tests run: checkintests, TextArea
Is noteworthy for integration: no

Modified Paths:
--------------
/flex/sdk/trunk/frameworks/projects/spark/src/spark/components/RichEditableText.as

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

--- frameworks/projects/spark/src/spark/components/RichEditableText.as
+++ frameworks/projects/spark/src/spark/components/RichEditableText.as
@@ -656,6 +656,13 @@

     /**
      *  @private
+     *  The generation of the text flow that last reported its content
+     *  bounds.
+     */
+    private var lastContentBoundsGeneration:int = 0;  // 0 means not set
+
+    /**
+     *  @private
      *  True if TextOperationEvent.CHANGING and TextOperationEvent.CHANGE
      *  events should be dispatched.
      */
@@ -2299,7 +2306,8 @@
         if (textChanged || textFlowChanged || contentChanged)
         {
             lastGeneration = _textFlow ? _textFlow.generation : 0;
-
+            lastContentBoundsGeneration = 0;
+
             // Handle the case where the initial text, textFlow or content
             // is displayed as a password.
             if (displayAsPassword)
@@ -3838,6 +3846,69 @@

     /**
      *  @private
+     *  If the textFlow hasn't changed the generation remains the same.
+     *  Changing the composition width and/or height does not change the
+     *  generation.  The bounds can change as a result of different
+     *  composition dimensions or as a result of more of the text flow
+     *  being composed.  Only as much of the text flow as is displayed is
+     *  composed.  If not all of the text flow is composed, its content height
+     *  is estimated.  Until the entire text flow is composed its content
+     *  height can increase or decrease while scrolling thru the flow.
+     *
+     *  If the following conditions are met with the contentWidth and the
+     *  contentHeight reported to the scroller, the scroller can avoid the
+     *  situation we've seen where it tries to add a scroll bar which causes the
+     *  text to reflow, which changes the content bounds, which causes the
+     *  scroller to react, and potentially loop indefinately.
+     *
+     *       if width is reduced the height should grow or stay the same
+     *       if height is reduced the width should grow or stay the same
+     *       if width and height are reduce then either the width or height
+     *           should grow or stay the same.
+     *
+     *  toFit
+     *      width       height
+     *      smaller     smaller     height pinned to old height
+     *      smaller     larger      ok
+     *      larger      larger      ok
+     *      larger      smaller     ok
+     *
+     *  explicit
+     *      width       height
+     *      smaller     smaller     width pinned to old width
+     *      smaller     larger      width pinned to old width
+     *      larger      larger      ok
+     *      larger      smaller     ok
+     */
+    private function adjustContentBoundsForScroller(bounds:Rectangle):void
+    {
+        // Already reported bounds at least once for this generation of
+        // the text flow so we have to be careful to mantain consistency
+        // for the scroller.
+        if (_textFlow.generation == lastContentBoundsGeneration)
+        {
+            if (bounds.width < _contentWidth)
+            {
+                if (_textContainerManager.hostFormat.lineBreak == "toFit")
+                {
+                    if (bounds.height < _contentHeight)
+                        bounds.height = _contentHeight;
+                }
+                else
+                {
+                    // The width may get smaller if the compose height is
+                    // reduced and fewer lines are composed.  Use the old
+                    // content width which is more accurate.
+                    bounds.width = _contentWidth;
+                }
+            }
+        }
+
+        lastContentBoundsGeneration = _textFlow.generation;
+    }
+
+    /**
+     *  @private
      *  Called when the TextContainerManager dispatches a 'compositionComplete'
      *  event when it has recomposed the text into TextLines.
      */
@@ -3847,53 +3918,37 @@
         //trace("compositionComplete");

         var oldContentWidth:Number = _contentWidth;
+        var oldContentHeight:Number = _contentHeight;

         var newContentBounds:Rectangle =
             _textContainerManager.getContentBounds();
-        var newContentWidth:Number = newContentBounds.width;
+
+        // Try to prevent the scroller from getting into a loop while
+        // adding/removing scroll bars.
+        if (_textFlow && clipAndEnableScrolling)
+            adjustContentBoundsForScroller(newContentBounds);
+
+        var newContentWidth:Number = newContentBounds.width;
+        var newContentHeight:Number = newContentBounds.height;

         // TODO:(cframpto) handle blockProgression == RL

-        // TODO:(cframpto) Figure out if we still need these checks.
-        // Error correction for rounding errors.  It shouldn't be so but
-        // the contentWidth can be slightly larger than the requested
-        // compositionWidth.
-        if (newContentWidth > _textContainerManager.compositionWidth &&
-            Math.round(newContentWidth) ==
-            _textContainerManager.compositionWidth)
-        {
-            newContentWidth = _textContainerManager.compositionWidth;
-        }
-
         if (newContentWidth != oldContentWidth)
         {
             _contentWidth = newContentWidth;

-            //trace("contentWidth", oldContentWidth, newContentWidth);
+            //trace("composeWidth", _textContainerManager.compositionWidth, "contentWidth", oldContentWidth, newContentWidth);

             // If there is a scroller, this triggers the scroller layout.
             dispatchPropertyChangeEvent(
                 "contentWidth", oldContentWidth, newContentWidth);
         }

-        var oldContentHeight:Number = _contentHeight;
-        var newContentHeight:Number = newContentBounds.height;
-
-        // Error correction for rounding errors.  It shouldn't be so but
-        // the contentHeight can be slightly larger than the requested
-        // compositionHeight.
-        if (newContentHeight > _textContainerManager.compositionHeight &&
-            Math.round(newContentHeight) ==
-            _textContainerManager.compositionHeight)
-        {
-            newContentHeight = _textContainerManager.compositionHeight;
-        }
-
         if (newContentHeight != oldContentHeight)
         {
             _contentHeight = newContentHeight;

-            //trace("contentHeight", oldContentHeight, newContentHeight);
+            //trace("composeHeight", _textContainerManager.compositionHeight, "contentHeight", oldContentHeight, newContentHeight);

             // If there is a scroller, this triggers the scroller layout.
             dispatchPropertyChangeEvent(


fixed DrawCall._localToWorld/_worldToScreen first init. in DrawCall.setBindings() by fetching the current Matrix4x4 objects if they already exists in the bindings

--- src/aerys/minko/render/DrawCall.as
+++ src/aerys/minko/render/DrawCall.as
@@ -285,10 +285,14 @@
 				sceneBindings.getPropertyChangedSignal('worldToScreen').add(
 					transformChangedHandler
 				);
+				if (sceneBindings.propertyExists('worldToScreen'))
+					_worldToScreen = sceneBindings.getProperty('worldToScreen') as Matrix4x4;

 				meshBindings.getPropertyChangedSignal('localToWorld').add(
 					transformChangedHandler
 				);
+				if (meshBindings.propertyExists('localToWorld'))
+					_localToWorld = meshBindings.getProperty('localToWorld') as Matrix4x4;
 			}
 		}

@@ -349,8 +353,8 @@
 		}

 		private function transformChangedHandler(bindings 	: DataBindings,
-										  property 	: String,
-										  value 	: Matrix4x4) : void
+												 property 	: String,
+												 value 		: Matrix4x4) : void
 		{
 			if (property == "worldToScreen")
 				_worldToScreen = value;


fix DrawCall.setBindings() to avoid listening to the same scene binding twice

--- src/aerys/minko/render/DrawCall.as
+++ src/aerys/minko/render/DrawCall.as
@@ -284,7 +284,8 @@
 			for (var parameter : String in _bindings)
 			{
 				meshBindings.addCallback(parameter, parameterChangedHandler);
-				sceneBindings.addCallback(parameter, parameterChangedHandler);
+                if (!sceneBindings.hasCallback(parameter, parameterChangedHandler))
+    				sceneBindings.addCallback(parameter, parameterChangedHandler);

 				if (meshBindings.propertyExists(parameter))
 					setParameter(parameter, meshBindings.getProperty(parameter));


fix coding style

fix coding style

--- src/aerys/minko/scene/node/Mesh.as
+++ src/aerys/minko/scene/node/Mesh.as
@@ -206,14 +206,14 @@
 			super.initialize();
 		}

-		override protected function initializeSignals():void
+		override protected function initializeSignals() : void
 		{
 			super.initializeSignals();

 			_cloned = new Signal('Mesh.cloned');
 		}

-		override protected function initializeContollers():void
+		override protected function initializeContollers() : void
 		{
 			super.initializeContollers();