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

--- frameworks/projects/rpc/src/mx/rpc/soap/ISOAPEncoder.as
+++ frameworks/projects/rpc/src/mx/rpc/soap/ISOAPEncoder.as
@@ -1,11 +1,19 @@
 ////////////////////////////////////////////////////////////////////////////////
 //
-//  ADOBE SYSTEMS INCORPORATED
-//  Copyright 2007 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.
 //
 ////////////////////////////////////////////////////////////////////////////////


Transferred from the Adobe Open Source Subversion Repository

Revision: 2550
Author:   jszeto@adobe.com
Date:     2008-07-21T23:21:13.499756Z

Log Message:
-----------
Flex SDK Bug Fixes

This should fix any broken builds. That's what I get for trying to submit multiple bug fixes in batches.

This checkin includes changes to collapse IDisplayObjectElement and IAssignableDisplayObjectElement into a single interface.

MXMLG-132 - filters array is null by default, should be set to an empty array
Changed default value of filters array

MXMLG-200 - Cannot set maskType property dynamically at runtime
Added call to invalidate when maskType changes

SDK-15738 - RTE when calling getItemAt() function
Added temporary hacks to remove an item from its Group or parent before getting added to a different Group

SDK-16121 - RTE in swapItems() when re-swapping two items
Added logic to make sure the item indexes are added in ascending order

SDK-16138 - RTE when swapping an element with itself
Added logic to ignore a swap of the same element

Bugs: MXMLG-132, MXMLG-200, SDK-15738, SDK-16121, SDK-16138
QA: Yes
Doc: Yes
Review: Deepa

Modified Paths:
--------------
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/flex/graphics/IDisplayObjectElement.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/flex/core/Group.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/flex/graphics/StrokedElement.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/flex/graphics/graphicsClasses/GraphicElement.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/flex/graphics/graphicsClasses/TextGraphicElement.as</path>

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

--- frameworks/projects/spark/src/spark/components/Group.as
+++ frameworks/projects/spark/src/spark/components/Group.as
@@ -1,5 +1,6 @@
 package flex.core {
 import flash.display.DisplayObject;
+import flash.display.DisplayObjectContainer;
 import flash.display.Graphics;
 import flash.display.Shape;
 import flash.display.Sprite;
@@ -631,8 +632,19 @@
         swapItemsAt(getItemIndex(item1), getItemIndex(item2));
     }

-    public function swapItemsAt(index1:*, index2:*):void
-    {
+    public function swapItemsAt(index1:int, index2:int):void
+    {
+    	// Make sure that index1 is the smaller index so that addItemAt
+    	// doesn't RTE
+    	if (index1 > index2)
+    	{
+    		var temp:int = index2;
+    		index2 = index1;
+    		index1 = temp;
+    	}
+    	else if (index1 == index2)
+    		return;
+
         var item1:* = getItemAt(index1);
         var item2:* = getItemAt(index2);

@@ -691,12 +703,30 @@
         var child:DisplayObject;

         // TODO!! Don't add Group this way
+
         if (item is IGraphicElement && !alwaysUseItemRenderer)
         {
+        	// Hack for SDK-15738 to remove item if it is currently attached
+        	var host:IGraphicElementHost = IGraphicElement(item).elementHost;
+        	if (host && host is Group)
+        		Group(host).removeItem(item);
+
             child = initElement(IGraphicElement(item), index);
         }
         else
         {
+        	// Hack for SDK-15738 to remove item if it is currently attached
+        	var dispObj:DisplayObject = item as DisplayObject;
+        	if (dispObj)
+        	{
+        		var dispObjParent:DisplayObjectContainer = dispObj.parent;
+        		if (dispObjParent)
+        		{
+        			if (dispObjParent is Group)
+        				Group(dispObjParent).removeItem(item);
+        		}
+        	}
+
             child = super.addChildAt(createVisualForItem(item), index);
         }

@@ -847,18 +877,14 @@

         if (element is IDisplayObjectElement)
         {
-            var elementDO:DisplayObject = IDisplayObjectElement(element).displayObject;
+            var elementDO:DisplayObject = IDisplayObjectElement(element).createDisplayObject();
             elementToDisplayObjectMap[element] = elementDO;
+            IDisplayObjectElement(element).displayObject = elementDO;
             result = super.addChildAt(elementDO, index);
         }
         else if (element is IAssignableDisplayObjectElement)
         {
-            // TODO!!! For now we will always create a DO for the element.
-            // This needs optimization
-            var newShape:DisplayObject = IAssignableDisplayObjectElement(element).createDisplayObject();
-            elementToDisplayObjectMap[element] = newShape;
-            IAssignableDisplayObjectElement(element).displayObject = newShape;
-            result = super.addChildAt(newShape, index);
+            throw new Error("IAssignableDisplayObjectElement not allowed");
         }

         if (element is ILayoutManagerClient)
@@ -900,7 +926,7 @@

     [Bindable("propertyChange")]
     [Inspectable(category="General")]
-    private var _actualFilters:Array;
+    private var _actualFilters:Array = [];

     override public function set filters(value:Array):void
     {
@@ -983,6 +1009,7 @@
             _oldMaskType = _maskType;
             _maskType = value;
             maskTypeChanged = true;
+            invalidateProperties();
         }
     }


Transferred from the Adobe Open Source Subversion Repository

Revision: 802
Author:   genovese@adobe.com
Date:     2008-03-13T18:05:24.430067Z

Log Message:
-----------
For executeBindings method, added docs for recurse param

Modified Paths:
--------------
/flex/sdk/trunk/frameworks/projects/framework/src/mx/core/Container.as

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

--- frameworks/projects/mx/src/mx/core/Container.as
+++ frameworks/projects/mx/src/mx/core/Container.as
@@ -3194,6 +3194,12 @@
      *
      *  A more complete fix, guaranteeing correct behavior in both non-DI and reparented-component
      *  scenarios, is anticipated for updater 1.
+     *
+     *  @param recurse If false, then only execute the bindings
+     *  on this Container.
+     *  If true, then also execute the bindings on this
+     *  container's children, grandchildren,
+     *  great-grandchildren, and so on.
      */
     override public function executeBindings(recurse:Boolean = false):void
     {


Transferred from the Adobe Open Source Subversion Repository

Revision: 10464
Author:   rfrishbe@adobe.com
Date:     2009-09-21T17:40:30.663638Z

Log Message:
-----------
Removing support in Flex framework for compatibility version < 3.  We won't support compatibility-version 2 or 2.01 anymore.  We only keep compatibility-version for one full release, so for Flex 4, we only support compatibility-version = 3.x.

This should reduce our code-size some as we no longer need this old code.  I didn't clean up the compiler's support for compatibility-versioning as it didn't seem worth the effort.

QE notes: -
Doc notes: -
Bugs: SDK-15360
Reviewer: Kevin
Tests run: checkintests, Joan ran all mustella tests
Is noteworthy for integration: Yes

Modified Paths:
--------------
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/listClasses/TileListItemRenderer.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/skins/halo/HaloBorder.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/ProgressBar.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/RadioButton.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/containers/accordionClasses/AccordionHeader.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/containers/utilityClasses/CanvasLayout.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/DateChooser.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/mx/core/UITLFTextField.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/NumericStepper.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/skins/halo/ScrollArrowSkin.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/skins/halo/AccordionHeaderSkin.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/Alert.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/core/Container.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/NavBar.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/Button.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/core/UITextField.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/ColorPicker.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/TextArea.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/dataGridClasses/DataGridHeaderBase.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/DateField.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/styles/StyleProxy.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/treeClasses/TreeItemRenderer.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/containers/TabNavigator.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/containers/FormItem.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/core/UIComponent.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/dataGridClasses/DataGridHeader.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/CheckBox.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/SWFLoader.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/skins/halo/DateChooserYearArrowSkin.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/LinkButton.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/MenuBar.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/ComboBase.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/menuClasses/MenuBarItem.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/skins/halo/PanelSkin.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/menuClasses/MenuItemRenderer.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/styles/StyleManagerImpl.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/PopUpButton.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/listClasses/ListBase.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/scrollClasses/ScrollBar.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/containers/Panel.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/colorPickerClasses/SwatchPanel.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/containers/Accordion.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/TextInput.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/styles/StyleProtoChain.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/ComboBox.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/listClasses/ListItemRenderer.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/List.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/Label.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/DataGrid.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/skins/halo/ScrollTrackSkin.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/containers/utilityClasses/Flex.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/LinkBar.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/sliderClasses/Slider.as</path>

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

--- frameworks/projects/mx/src/mx/controls/DataGrid.as
+++ frameworks/projects/mx/src/mx/controls/DataGrid.as
@@ -49,7 +49,6 @@
 import mx.core.EventPriority;
 import mx.core.FlexShape;
 import mx.core.FlexSprite;
-import mx.core.FlexVersion;
 import mx.core.IFactory;
 import mx.core.IFlexDisplayObject;
 import mx.core.IFlexModuleFactory;
@@ -910,16 +909,6 @@
      */
     override public function get baselinePosition():Number
     {
-        if (FlexVersion.compatibilityVersion < FlexVersion.VERSION_3_0)
-        {
-            var top:Number = 0;
-
-            if (border && border is IRectangularBorder)
-                top = IRectangularBorder(border).borderMetrics.top;
-
-            return top + measureText(" ").ascent;
-        }
-
         if (!validateBaselinePosition())
             return NaN;


Transferred from the Adobe Open Source Subversion Repository

Revision: 4646
Author:   pfarland@adobe.com
Date:     2009-01-23T18:45:23.310008Z

Log Message:
-----------
As part of the Advanced CSS work, adding support for pseudo-selectors that match component states. There are two scenarios for matching states.

1. For skinnable Spark subclasses of FxComponents, such as FxButton. The pseudo-selector will be matched against the current skin state.

2. For other UIComponents, the pseudo-selector is matched against the currentState. Note that since states are declared at the document level, pseudo-selectors are written to match the component representing the document only (rather than an arbitrary child component of that document). Note that as with styles in general, it is not advised to make changes to inheriting styles at the Application root as this impacts all child components in the display list.

Note that further optimization will be investigated to limit the number of components that are redrawn where a change in state is accompanied by a matching pseudo-selector.

QE: Yes
Doc: Yes, see the Advanced CSS specification for Gumbo.
Checkintests: Pass
Reviewer: Glenn

Modified Paths:
--------------
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/styles/CSSSelector.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/styles/StyleManager.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/styles/StyleManagerImpl.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/styles/IAdvancedStyleClient.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/mx/components/baseClasses/FxComponent.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/styles/CSSCondition.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/styles/CSSStyleDeclaration.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/core/UIComponent.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/styles/IStyleManager3.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/styles/StyleProtoChain.as</path>

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

--- frameworks/projects/spark/src/spark/components/supportClasses/SkinnableComponent.as
+++ frameworks/projects/spark/src/spark/components/supportClasses/SkinnableComponent.as
@@ -134,7 +134,21 @@
         _skin = value;
         dispatchEvent(new Event("skinChanged"));
     }
-
+
+    //--------------------------------------------------------------------------
+    //
+    //  Overridden properties
+    //
+    //--------------------------------------------------------------------------
+
+    /**
+     *  @private
+     */
+    override public function get pseudoSelectorState():String
+    {
+        return getCurrentSkinState();
+    }
+
     //--------------------------------------------------------------------------
     //
     //  Overridden methods
@@ -188,11 +202,15 @@

         if (skinStateIsDirty)
         {
-            skin.currentState = getCurrentSkinState();
+            // This component must first be updated to the pending state as the
+            // skin inherits styles from this component.
+            var pendingState:String = getCurrentSkinState();
+            applyStateStyles(skin.currentState, pendingState, false);
+            skin.currentState = pendingState;
             skinStateIsDirty = false;
         }
     }
-
+
     /**
      *  @private
      */
@@ -218,7 +236,7 @@
         if (focusObj && focusObj is IInvalidating)
             IInvalidating(focusObj).invalidateDisplayList();
     }
-
+
     /**
      *  @private
      */


Transferred from the Adobe Open Source Subversion Repository

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

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

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

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

--- frameworks/projects/rpc/src/mx/rpc/Fault.as
+++ frameworks/projects/rpc/src/mx/rpc/Fault.as
@@ -20,6 +20,11 @@
 {
     /**
      * Creates a new Fault object.
+     *
+     * @param faultCode The code protecting the fault.
+     * @param faultString Text description of the fault.
+     * @param faultDetail Additional details describing the fault.
+     *
      */
     public function Fault(faultCode:String, faultString:String, faultDetail:String = null)
     {
@@ -83,6 +88,8 @@

     /**
      * Returns the string representation of a Fault object.
+     *
+     * @return Returns the string representation of a Fault object.
      */
     public function toString():String
     {


Load images into our own security domain so that we can examine their
pixels.

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

--- src/as/com/threerings/util/MediaContainer.as
+++ src/as/com/threerings/util/MediaContainer.as
@@ -317,13 +317,33 @@
      */
     protected function getContext (url :String) :LoaderContext
     {
-//        // We allow content to share but not overwrite our classes
-//        return new LoaderContext(true,
-//            new ApplicationDomain(ApplicationDomain.currentDomain),
-//            SecurityDomain.currentDomain);
-
-        // share nothing, trust nothing
-        return new LoaderContext(false, null, null);
+        if (isImage(url)) {
+            // load images into our domain so that we can view their pixels
+            return new LoaderContext(true,
+                new ApplicationDomain(ApplicationDomain.currentDomain),
+                SecurityDomain.currentDomain);
+
+        } else {
+            // share nothing, trust nothing
+            return new LoaderContext(false, null, null);
+        }
+    }
+
+    /**
+     * Does the specified url represent an image?
+     */
+    protected function isImage (url :String) :Boolean
+    {
+        // look at the last 4 characters in the lowercased url
+        switch (url.toLowerCase().slice(-4)) {
+        case ".png":
+        case ".jpg":
+        case ".gif":
+            return true;
+
+        default:
+            return false;
+        }
     }

     /**


fixed bug creating a bin that contained a single numeric value

--- WeaveData/src/weave/data/BinningDefinitions/QuantileBinningDefinition.as
+++ WeaveData/src/weave/data/BinningDefinitions/QuantileBinningDefinition.as
@@ -65,20 +65,20 @@
 			var refBinSize:Number = Math.ceil(stats.getCount() * refQuantile.value);//how many records in a bin
 			var numberOfBins:int = Math.ceil(stats.getCount()/ refBinSize);
 			var binRecordCount:uint = refBinSize;
-
+
 			for (var iBin:int = 0; iBin < numberOfBins; iBin++)
 			{
-				binRecordCount = (iBin +1) * refBinSize;
+				binRecordCount = (iBin + 1) * refBinSize;
 				binMin = binMax;
 				if (iBin == numberOfBins - 1)
 				{
 					binMax = sortedColumn[sortedColumn.length -1];
 					maxInclusive = true;
 				}
-				else{
+				else {
 					binMax = sortedColumn[binRecordCount -1];
-					maxInclusive = false;
-				}
+					maxInclusive = binMax == binMin;
+				}
 				tempNumberClassifier.min.value = binMin;
 				tempNumberClassifier.max.value = binMax;
 				tempNumberClassifier.minInclusive.value = true;


RadioButtonHelper databinding fixed

RadioButtonHelper databinding fixed

--- src/metafas3/reaction_view/helpers/RadioButtonHelper.as
+++ src/metafas3/reaction_view/helpers/RadioButtonHelper.as
@@ -37,7 +37,7 @@
 		**/
 		public function set checked (checked:Boolean) :void
 		{
-			this.selected = true;
+			selected = true;
 		}

 		/**
@@ -45,17 +45,6 @@
 		*	RadioButton to proxy
 		**/
 		public var display_object:RadioButton = new RadioButton();
-
-		/**
-		*	sets up label clicks to trigger checkbox clicks
-		**/
-		public function set label (helper:TextFieldHelper) :void
-		{
-			helper.display_object.addEventListener('click', function (e:Event) :void
-			{
-				display_object.dispatchEvent(new MouseEvent('click'));
-			});
-		}

 		/**
 		*	proxy for radio_button.group
@@ -75,6 +64,49 @@
 			setProperty('group', group);
 		}

+		/**
+		*	sets up label clicks to trigger checkbox clicks
+		**/
+		public function set label (helper:TextFieldHelper) :void
+		{
+			helper.display_object.addEventListener('click', function (e:Event) :void
+			{
+				display_object.dispatchEvent(new MouseEvent('click'));
+			});
+		}
+
+		/**
+		*	"selected" property helper for databinding:
+		*	ObjectProxy descendants lose track of "this" in scope-chaining contexts
+		*	(anonymous functions or closures, for ex.)
+		*	this getter/setter pair allows us to access the property w/o using "this"
+		**/
+		public function set selected (b:Boolean) :void
+		{
+			setProperty('selected', b)
+		}
+
+		public function get selected () :Boolean
+		{
+			return getProperty('selected');
+		}
+
+		/**
+		*	"value" property helper for databinding:
+		*	ObjectProxy descendants lose track of "this" in scope-chaining contexts
+		*	(anonymous functions or closures, for ex.)
+		*	this getter/setter pair allows us to access the property w/o using "this"
+		**/
+		public function set value (s:String) :void
+		{
+			setProperty('value', s)
+		}
+
+		public function get value () :String
+		{
+			return getProperty('value');
+		}
+

 		// >>> PUBLIC METHODS
 		public function RadioButtonHelper ()
@@ -89,14 +121,14 @@
 		override public function bind_to (object:*, property:String) :void
 		{
 			// initialize object[property] w/ value if selected:
-			if (this.selected)
+			if (selected)
 			{
-				object[property] = this.value;
+				object[property] = value;
 			}
 			// toggle "selected" w/ current value of object[property]:
 			else if (object[property] !== null)
 			{
-				this.selected = (object[property] == this.value);
+				selected = (object[property] == value);
 			}

 			// helper responds to changes to object[property]
@@ -106,10 +138,10 @@
 			display_object.addEventListener('change', function (e:Object) :void
 			{
 				// prevent superfluous event firing
-				if (this.selected != null && object[property] != this.value)
+				if (selected && object[property] != value)
 				{
 					// update data object
-					object[property] = this.value;
+					object[property] = value;
 				}
 			});

@@ -123,9 +155,9 @@
 		private function after_property_change (e:PropertyChangeEvent) :void
 		{
 			// prevent superfluous event firing
-			if (e.newValue == this.value && this.selected) return;
+			if (e.newValue == value && selected) return;
 			// update display object
-			this.selected = (e.newValue == this.value);
+			selected = (e.newValue == value);
 		}
 	}
 }


Remove unused class.

Remove unused class.

--- src/aerys/minko/scene/data/ViewportDataProvider.as
+++ src/aerys/minko/scene/data/ViewportDataProvider.as
@@ -1,53 +0,0 @@
-package aerys.minko.scene.data
-{
-	import aerys.minko.type.binding.DataProvider;
-	import aerys.minko.type.enum.DataProviderUsage;
-
-	public final class ViewportDataProvider extends DataProvider
-	{
-		private static const DATA_DESCRIPTOR : Object =
-		{
-			viewportWidth	: 'width',
-			viewportHeight	: 'height'
-		};
-
-		private var _width	: Number	= 0.;
-		private var _height	: Number	= 0.;
-
-		public function get width() : Number
-		{
-			return _width;
-		}
-		public function set width(value : Number) : void
-		{
-			if (_width != value)
-			{
-				_width = value;
-				propertyChanged.execute(this, 'width');
-			}
-		}
-
-		public function get height() : Number
-		{
-			return _height;
-		}
-		public function set height(value : Number) : void
-		{
-			if (_height != value)
-			{
-				_height = value;
-				propertyChanged.execute(this, 'height');
-			}
-		}
-
-		override public function get dataDescriptor() : Object
-		{
-			return DATA_DESCRIPTOR;
-		}
-
-		public function ViewportDataProvider(data : Object = null)
-		{
-			super(data, 'viewportProvider', DataProviderUsage.SHARED);
-		}
-	}
-}


Added some helpful log() to Render2D.

Added some helpful log() to Render2D.

--- src/engine/tetragon/view/render2d/core/Render2D.as
+++ src/engine/tetragon/view/render2d/core/Render2D.as
@@ -376,6 +376,7 @@
 		{
 			_started = true;
 			_lastFrameTimestamp = getTimer() / 1000.0;
+			Log.verbose("Render2D started.", this);
 		}

@@ -387,6 +388,7 @@
 		public function stop():void
 		{
 			_started = false;
+			Log.verbose("Render2D stopped.", this);
 		}


Transferred from the Adobe Open Source Subversion Repository

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

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

Update CalloutArrow to match spec, useBackgroundGradient should be protected.

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

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

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

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

--- frameworks/projects/mobiletheme/src/spark/skins/mobile/supportClasses/CalloutArrow.as
+++ frameworks/projects/mobiletheme/src/spark/skins/mobile/supportClasses/CalloutArrow.as
@@ -111,7 +111,7 @@
     /**
      *  @copy spark.skins.mobile.CalloutSkin#useBackgroundGradient
      */
-    private var useBackgroundGradient:Boolean;
+    protected var useBackgroundGradient:Boolean;

     /**
      *  @copy spark.skins.mobile.CalloutSkin#borderColor


Adding message types to BE map.

Adding message types to BE map.

We can now execute simple queries at the MessageBroker level. We
should start laying out the higher-level dbc interfaces.

--- src/main/flex/org/postgresql/febe/MessageBroker.as
+++ src/main/flex/org/postgresql/febe/MessageBroker.as
@@ -45,15 +45,15 @@
             'R': AuthenticationRequest,
             'K': BackendKeyData,
             'B': Bind,
-            '': CommandComplete,
-            '': DataRow,
-            '': EmptyQueryResponse,
+            'C': CommandComplete,
+            'D': DataRow,
+            'I': EmptyQueryResponse,
             'E': ErrorResponse,
-            '': NoData,
+            'n': NoData,
             'N': NoticeResponse,
             'S': ParameterStatus,
             'Z': ReadyForQuery,
-            '': RowDescription
+            'T': RowDescription
         }

         private var _dataStream:IDataStream;
@@ -112,12 +112,12 @@
         }

         public function send(message:IFEMessage):void {
-            LOGGER.debug('Sending {0}', message);
+            LOGGER.debug('=> {0}', message);
             message.write(_dataStream);
         }

         private function dispatch(message:IBEMessage):void {
-            LOGGER.debug('Received {0}', message);
+            LOGGER.debug('<= {0}', message);
             dispatchEvent(new MessageEvent(message));
         }


Transferred from the Adobe Open Source Subversion Repository

Revision: 3763
Author:   rfrishbe@adobe.com
Date:     2008-10-21T05:32:47.715962Z

Log Message:
-----------
Adding clipContent to FxContainer and FxDataContainer.  The rest of the IViewport interface should be added to these classes as well, but that'll come later.

Also fixing some minor ASDoc problems in GroupBase.

QE Notes: We'll need to add tests for the IViewport properties in FxDataContainer and FxContainer when it gets fully added.
Doc Notes: None
Bugs: SDK-17670
Reviewer: Glenn

Modified Paths:
--------------
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/mx/components/FxDataContainer.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/mx/components/baseClasses/GroupBase.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/mx/components/FxContainer.as</path>

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

--- frameworks/projects/spark/src/spark/components/SkinnableDataContainer.as
+++ frameworks/projects/spark/src/spark/components/SkinnableDataContainer.as
@@ -73,7 +73,32 @@
     //  Properties proxied to dataGroup
     //
     //--------------------------------------------------------------------------
-
+
+    //----------------------------------
+    //  clipContent
+    //----------------------------------
+
+    private var _clipContent:Boolean;
+
+    /**
+     *  @copy mx.core.IViewport#clipContent
+     */
+    public function get clipContent():Boolean
+    {
+        return (dataGroup) ? dataGroup.clipContent : _clipContent;
+    }
+
+    /**
+     *  @private
+     */
+    public function set clipContent(value:Boolean):void
+    {
+        _clipContent = value;
+
+        if (dataGroup)
+            dataGroup.clipContent = value;
+    }
+
     //----------------------------------
     //  content
     //----------------------------------
@@ -212,6 +237,7 @@
             }
             if (_layout != null)
                 dataGroup.layout = _layout;
+            dataGroup.clipContent = _clipContent;
             if (_itemRenderer != null || _itemRendererFunction != null)
             {
                 dataGroup.itemRenderer = _itemRenderer;


Transferred from the Adobe Open Source Subversion Repository

Revision: 7740
Author:   rfrishbe@adobe.com
Date:     2009-06-11T08:03:46.086049Z

Log Message:
-----------
Make sure to push down muted property in VolumeBar to muteButton.

Also, change MUTED_CHANGE to only dispatch when the muted property changes based on user-interaction (based on being pushed down from videoplayer).

Fix PopUpAnchor TODO around closing the popup when removing the popup from the stage.

QE Notes: -
Doc Notes: -
Bugs: SDK-21727
Reviewer: Chiedo
tests: checkintest (seem to fail due to local changes to ScrollBar, which I'm not checking in here)

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

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

--- frameworks/projects/spark/src/spark/components/mediaClasses/VolumeBar.as
+++ frameworks/projects/spark/src/spark/components/mediaClasses/VolumeBar.as
@@ -74,7 +74,8 @@
 [Event(name="open", type="spark.events.DropDownEvent")]

 /**
- *  Dispatched when the video mutes or unmutes the volume.
+ *  Dispatched when the video mutes or unmutes the volume
+ *  from user-interaction.
  *
  *  @eventType mx.events.FlexEvent.MUTED_CHANGE
  *
@@ -270,7 +271,7 @@
      */
     private var _muted:Boolean = false;

-    [Bindable("mutedChange")]
+    [Bindable("mutedChanged")]

     /**
      *  true if the volume of the video is muted;
@@ -299,7 +300,7 @@
         if (muteButton)
             muteButton.muted = value;

-        dispatchEvent(new FlexEvent(FlexEvent.MUTED_CHANGE));
+        dispatchEvent(new Event("mutedChanged"));
     }

     //----------------------------------
@@ -415,6 +416,7 @@

             muteButton.addEventListener(FlexEvent.MUTED_CHANGE, muteButton_mutedChangeHandler);
             muteButton.volume = value;
+            muteButton.muted = muted;
         }

         if (instance == dropDown && dropDownController)
@@ -424,6 +426,7 @@
     private function muteButton_mutedChangeHandler(event:FlexEvent):void
     {
         muted = muteButton.muted;
+        dispatchEvent(event);
     }

     /**


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

--- frameworks/projects/rpc/src/RPCClasses.as
+++ frameworks/projects/rpc/src/RPCClasses.as
@@ -1,11 +1,19 @@
 ////////////////////////////////////////////////////////////////////////////////
 //
-//  ADOBE SYSTEMS INCORPORATED
-//  Copyright 2007 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.
 //
 ////////////////////////////////////////////////////////////////////////////////


I've decided I like setCallback() better than setFunction().

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

--- src/as/com/threerings/flex/CommandButton.as
+++ src/as/com/threerings/flex/CommandButton.as
@@ -52,9 +52,9 @@
     }

     /**
-     * Set a function to call when the button is pressed.
+     * Set a callback function to call when the button is pressed.
      */
-    public function setFunction (fn :Function, arg :Object = null) :void
+    public function setCallback (fn :Function, arg :Object = null) :void
     {
         _cmdOrFn = fn;
         _arg = arg;


Transferred from the Adobe Open Source Subversion Repository

Revision: 21764
Author:   ksimm@adobe.com
Date:     2011-08-02T00:24:41.948406Z

Log Message:
-----------
Added the localization codes to DateSpinner and DateAndTimeRangeList and add three new globalization classes to the spark.globalization.supportClasses package.

QE notes: None
Doc notes: None
Bugs: None
Reviewer: Jason Szeto
Tests run: checkintests, mustella
Is noteworthy for integration: No

Modified Paths:
--------------
<path kind="file" action="D">/private/flex/sdk/branches/4.y/frameworks/projects/mobilecomponents/src/spark/components/CalendarDate.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/mobilecomponents/src/spark/components/DateAndTimeRangeList.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/mobilecomponents/src/spark/components/DateSpinner.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/spark/src/SparkClasses.as</path>
<path kind="file" action="A">/private/flex/sdk/branches/4.y/frameworks/projects/spark/src/spark/globalization/supportClasses/FormatPattern.as</path>
<path kind="file" action="A">/private/flex/sdk/branches/4.y/frameworks/projects/spark/src/spark/globalization/supportClasses/CalendarDate.as</path>
<path kind="file" action="A">/private/flex/sdk/branches/4.y/frameworks/projects/spark/src/spark/globalization/supportClasses/DateTimeFormatterEx.as</path>

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

--- frameworks/projects/spark/src/spark/globalization/supportClasses/DateTimeFormatterEx.as
+++ frameworks/projects/spark/src/spark/globalization/supportClasses/DateTimeFormatterEx.as
@@ -0,0 +1,1059 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+//  ADOBE SYSTEMS INCORPORATED
+//  Copyright 2011 Adobe Systems Incorporated
+//  All Rights Reserved.
+//
+//  NOTICE: Adobe permits you to use, modify, and distribute this file
+//  in accordance with the terms of the license agreement accompanying it.
+//
+////////////////////////////////////////////////////////////////////////////////
+
+package spark.globalization.supportClasses
+{
+import flash.errors.IllegalOperationError;
+import flash.globalization.DateTimeStyle;
+import flash.globalization.LocaleID;
+
+import mx.core.mx_internal;
+import mx.utils.ObjectUtil;
+
+import spark.formatters.DateTimeFormatter;
+
+use namespace mx_internal;
+
+[ResourceBundle("core")]
+
+[ExcludeClass]
+
+/**
+ *  DateTimeFormatterEx class provides a set of extended functionalities
+ *  to deal with date formatting.
+ *
+ *
For example, this class allows additional date style beyond the standard
+ *  Spark DateTimeFormatter.
+ *  Another feature is the date time pattern analysis which tells relative
+ *  positions of each of formatting element.

+ *
+ *  @see spark.formatters.DateTimeFormatter
+ *  @see flash.globalization.DateTimeFormatter
+ *
+ *  @langversion 3.0
+ *  @playerversion Flash 11
+ *  @playerversion AIR 3
+ *  @productversion Flex 4.5.2
+ */
+public class DateTimeFormatterEx extends DateTimeFormatter
+{
+    //--------------------------------------------------------------------------
+    //
+    //  Class Constants
+    //
+    //--------------------------------------------------------------------------
+
+    /**
+     *  Extention of DateStyle constants: Year (y) and month (MMM).
+     *
+     *
cf.
+     *  http://unicode.org/repos/cldr-tmp/trunk/diff/by_type/calendar-gregorian.pattern.html

+     */
+    public static const DATESTYLE_yMMM:String = "yMMM";
+    public static const DATESTYLE_yMMMM:String = "yMMMM";
+    public static const DATESTYLE_MMMEEEd:String = "MMMEEEd";
+
+    // Number of milli seconds for a day
+    private static const MILLISECONDS_PER_DAY:int = 1000 * 60 * 60 * 24;
+
+    // Regular expressions for various date and time elements
+    private static const REGEXP_YEAR:RegExp =
+        /(^(?:[^'y]*(?:'[^']*')*[^y']*)*)(y+('年'|年|'년'|년)?)/;
+    private static const REGEXP_MONTH:RegExp =
+        /(^(?:[^'LM]*(?:'[^']*')*[^LM']*)*)([LM]+('月'|月|'월'|월)?)/;
+    private static const REGEXP_DAYOFMONTH:RegExp =
+        /(^(?:[^'d]*(?:'[^']*')*[^d']*)*)(d+('日'|日|'일'|일)?)/;
+    private static const REGEXP_HOUR:RegExp =
+        /(^(?:[^'hH]*(?:'[^']*')*[^hH']*)*)([hH]+('時'|時|'时'|时|'시'|시)?)/;
+    private static const REGEXP_MINUTE:RegExp =
+        /(^(?:[^'m]*(?:'[^']*')*[^m']*)*)(m+('分'|分|'분'|분)?)/;
+    private static const REGEXP_SECOND:RegExp =
+        /(^(?:[^'s]*(?:'[^']*')*[^s']*)*)(s+('秒'|秒|'초'|초)?)/;
+    private static const REGEXP_AMPM:RegExp =
+        /(^(?:[^'a]*(?:'[^']*')*[^a']*)*)(a+)/;
+    private static const REGEXP_DAYOFWEEK:RegExp =
+        /(^(?:[^'E]*(?:'[^']*')*[^E']*)*)(E+)/;
+
+    /*
+    Regular expression for locale ID parsing
+    [0] = full matching string
+    [1] = language
+    [2] = script
+    [3] = region
+    [4] = other attributes before the extention
+    [5] = entire extension
+
+    Example:
+    sr_Latn_CS_xxx_yyy@collation=search;calendar=japanese
+    [0] = sr_Latn_CS_xxx_yyy@collation=search;calendar=japanese
+    [1] = sr
+    [2] = Latn
+    [3] = CS
+    [4] = xxx_yyy
+    [5] = collation=search;calendar=japanese
+    */
+    private static const REGEXP_LOCALEID:RegExp =
+        /([a-z]+)?(?:[-_]([A-Z][a-z]+))?(?:[-_]([A-Z]+))?([a-zA-Z-]+)?(?:@(.*))?/;
+
+    // Format pattern for yMMM
+    private static const FORMATPATTERNLIST_yMMM:Vector.<FormatPattern> =
+        new <FormatPattern> [
+            new FormatPattern("LLL y", [
+                "ca", "cs", "el", "fi", "ru", "sk", "uk"]),
+            new FormatPattern("LLL y.", ["hr"]),
+            new FormatPattern("MM/y", ["pt_PT"]),
+            new FormatPattern("MMM 'de' y", ["pt", "seh"]),
+            new FormatPattern("MMM 'di' y", ["kea"]),
+            new FormatPattern("MMM y", [
+                "af", "agq", "am", "ar", "asa", "bas", "be", "bem",
+                "bez", "bm", "bn", "cgg", "chr", "cy", "da", "dav",
+                "de", "dje", "dua", "dyo", "ebu", "ee", "en", "es",
+                "et", "eu", "ewo", "fa", "ff", "fr", "fur", "gl",
+                "gsw", "gu", "guz", "ha", "he", "hi", "id", "ig",
+                "is", "it", "jmc", "kab", "kam", "kde", "khq", "ki",
+                "kln", "kn", "ksb", "ksf", "lag", "lg", "ln",
+                "lu", "luo", "luy", "mas", "mer", "mfe", "mg",
+                "mgh", "mr", "ms", "mua", "naq", "nb", "nd",
+                "nl", "nmg", "nn", "nus", "nyn", "pl", "rm",
+                "rn", "ro", "rof", "rwk", "saq", "sbp", "ses",
+                "sg", "shi", "shi_Tfng", "sl", "sn", "so", "sq", "sv",
+                "sw", "swc", "ta", "te", "teo", "th", "to",
+                "tr", "twq", "tzm", "vai_Latn", "vi", "vun", "wae",
+                "xog", "yav", "yo", "zu"]),
+            new FormatPattern("MMM y 'г'", ["bg"]),
+            new FormatPattern("MMM y.", ["bs"]),
+            new FormatPattern("MMM yyyy", ["ak", "brx", "vai"]),
+            new FormatPattern("MMM, y", ["az", "az_Cyrl"]),
+            new FormatPattern("MMM. y", ["sr"]),
+            new FormatPattern("MMMی y", ["ku"]),
+            new FormatPattern("y MMM", [
+                "fil", "ksh", "mk", "ml", "my", "root", "sr_Latn", "trv"]),
+            new FormatPattern("y. MMM", ["hu"]),
+            new FormatPattern("yyyy. 'g'. MMM", ["lv"]),
+            new FormatPattern("y년 MMM", ["ko"]),
+            new FormatPattern("y年M月", ["ja", "zh", "zh_Hant"])
+        ];
+
+    // Format pattern for yMMMM
+    private static const FORMATPATTERNLIST_yMMMM:Vector.<FormatPattern> =
+        new <FormatPattern> [
+            new FormatPattern("LLLL 'dal' y", [
+                "fur"]),
+            new FormatPattern("LLLL 'de' y", [
+                "ca"]),
+            new FormatPattern("LLLL y", [
+                "pl", "sk", "uk"]),
+            new FormatPattern("LLLL y.", [
+                "hr"]),
+            new FormatPattern("MMMM 'de' y", [
+                "es", "seh"]),
+            new FormatPattern("MMMM 'di' y", [
+                "kea"]),
+            new FormatPattern("MMMM y", [
+                "af", "am", "ar", "asa", "be", "bem", "bez", "bm",
+                "bn", "cgg", "chr", "dav", "ebu", "ee", "fa", "ff",
+                "gl", "gsw", "guz", "ha", "he", "ig", "is", "jmc",
+                "kab", "kam", "kde", "khq", "ki", "kln", "ksb", "ksh",
+                "lag", "lg", "luo", "luy", "mas", "mer", "mfe", "mg",
+                "naq", "nd", "nyn", "rm", "ro", "rof", "rwk",
+                "saq", "ses", "sg", "shi", "shi_Tfng", "sn", "so", "sq",
+                "sw", "teo", "th", "to", "tr", "tzm", "vi", "vun",
+                "xog", "yo"]),
+            new FormatPattern("MMMM yyyy", [
+                "ak", "brx", "vai"]),
+            new FormatPattern("y MMMM", [
+                "fil", "mk", "ml", "my", "sr", "sr_Latn", "trv"]),
+            new FormatPattern("y. 'g'. MMMM", [
+                "lv"]),
+        ];
+
+    // Extra format pattern for yMMMM
+    //
+    // This pattern set is a tentative workaround for the Flex SDK Mega release.
+    // It provides patterns for the "missing" locales.
+    //
+    // Method used:
+    // (1) Locales listed for the yMMM pattern and the original yMMMM
+    // were compared. The list of the locales that exist in yMMM but not
+    // in yMMMM has been generated.
+    // (There were no locales that exist in yMMMM but not in yMMM.)
+    // (2) For each of the delta locales, the actual pattern was checked
+    // using the ICU4J demo web page.
+    // http://demo.icu-project.org/icu4jweb/flexTest.jsp
+    // (3) The results from the above step were added below.
+    private static const FORMATPATTERNLIST_yMMMM_extra:Vector.<FormatPattern> =
+        new <FormatPattern> [
+            new FormatPattern("MMMM y", [
+                "agq", "az", "az_Cyrl", "bas", "cy", "da", "de", "dje",
+                "dua", "dyo", "en", "et", "eu", "ewo", "fr", "gu",
+                "hi", "id", "it", "kn", "ksf", "ku", "ln", "lu",
+                "mgh", "mr", "ms", "mua", "nb", "nl", "nmg", "nn",
+                "nus", "rn", "sbp", "sv", "swc", "ta", "te", "twq",
+                "vai_Latn", "wae", "yav", "zu"]),
+            new FormatPattern("y MMMM", [
+                "root"]),
+            new FormatPattern("MMMM y 'г'.", [
+                "bg"]),
+            new FormatPattern("y. MMMM", [
+                "hu"]),
+            new FormatPattern("y年M月", [
+                "ja", "zh", "zh_Hant"]),
+            new FormatPattern("y년 MMMM", [
+                "ko"]),
+            new FormatPattern("MMMM 'de' y", [
+                "pt"]),
+            new FormatPattern("MM/y", [
+                "pt_PT"]),
+            new FormatPattern("LLLL y", [
+                "cs", "el", "fi", "ru"]),
+        ];
+
+    // Format patterns for MMMEEEd
+    private static const FORMATPATTERNLIST_MMMEEEd:Vector.<FormatPattern> =
+        new <FormatPattern> [
+            new FormatPattern("EEE, d MMM", ["ro"]),
+            new FormatPattern("ccc, d MMM", ["ru"]),
+            new FormatPattern("d MMM, E", ["bg"]),
+            new FormatPattern("d MMMM E", ["tr"]),
+            new FormatPattern("E d LLL", ["fa"]),
+            new FormatPattern("E d MMM", ["agq", "ar", "bas", "bm", "bn", "ca", "dje", "dua", "dyo", "en_GB", "en_IN", "es", "ewo", "ff", "fr", "fur", "gl", "id", "kab", "khq", "ksf", "ln", "lu", "mfe", "mg", "mua", "nl", "nmg", "nus", "rn", "ses", "sg", "shi", "shi_Tfng", "sq", "sv", "swc", "th", "to", "twq", "vi", "yav"]),
+            new FormatPattern("E d. MMM", ["da", "fi", "gsw", "is", "nb", "nn", "rm", "sr", "sr_Latn"]),
+            new FormatPattern("E dd MMM", ["en_ZA", "en_ZW"]),
+            new FormatPattern("E MMM d", ["fil", "mk", "root", "trv"]),
+            new FormatPattern("E, d MMM", ["be", "el", "en_AU", "en_CA", "en_HK", "en_MT", "en_NZ", "en_SG", "gu", "hi", "kn", "mr", "pl", "ro", "ta", "te", "uk"]),
+            new FormatPattern("E, d בMMM", ["he"]),
+            new FormatPattern("E, d. MMM", ["cs", "de", "et", "hr", "lv", "sk", "sl", "wae"]),
+            new FormatPattern("E, d/MM", ["pt_PT"]),
+            new FormatPattern("E, dd. MMM", ["bs"]),
+            new FormatPattern("E, MMM d", ["af", "ak", "am", "asa", "bem", "bez", "brx", "cgg", "dav", "ebu", "ee", "en", "es_US", "eu", "guz", "ha", "ig", "jmc", "kam", "kde", "ki", "kln", "ksb", "lag", "lg", "luo", "luy", "mas", "mer", "mgh", "naq", "nd", "nyn", "rof", "rwk", "saq", "sbp", "sn", "so", "sw", "teo", "tzm", "vai", "vai_Latn", "vun", "xog", "yo", "zu"]),
+            new FormatPattern("E، dی MMM", ["ku"]),
+            new FormatPattern("EEE d MMM", ["en_BE", "it"]),
+            new FormatPattern("EEE dd MMM", ["en_BW", "en_BZ"]),
+            new FormatPattern("EEE, d 'de' MMM", ["pt"]),
+            new FormatPattern("EEE, d MMM", ["cy", "kea", "ms", "seh"]),
+            new FormatPattern("EEE, d, MMM", ["az", "az_Cyrl"]),
+            new FormatPattern("EEE, MMM d", ["my"]),
+            new FormatPattern("MMM d E", ["si"]),
+            new FormatPattern("MMM d, E", ["lt", "ml"]),
+            new FormatPattern("MMM d., E", ["hu"]),
+            new FormatPattern("MMM d일 (E)", ["ko"]),
+            new FormatPattern("M月d日(E)", ["ja"]),
+            new FormatPattern("M月d日E", ["zh", "zh_Hant"]),
+        ];
+
+    // Process for FORMATPATTERNLIST_yMMMM_extra repeated. Locales list for MMMEEEd is compared with
+    // yMMM localelist and the missing ones data is extracted.
+    private static const FORMATPATTERNLIST_MMMEEEd_extra:Vector.<FormatPattern> =
+        new <FormatPattern> [
+            new FormatPattern("EEE MMM d", ["chr"]),
+            new FormatPattern("EEE, MMM d", ["ksh"]),
+        ];
+
+    //--------------------------------------------------------------------------
+    //
+    //  Constructor
+    //
+    //--------------------------------------------------------------------------
+
+    /**
+     *  Constructs a new DateTimeFormatterEx object.
+     *
+     *  @langversion 3.0
+     *  @playerversion Flash 11
+     *  @playerversion AIR 3
+     *  @productversion Flex 4.5.2
+     */
+    public function DateTimeFormatterEx()
+    {
+        super();
+    }
+
+    //--------------------------------------------------------------------------
+    //
+    //  Overridden Properties
+    //
+    //--------------------------------------------------------------------------
+
+    override public function set dateStyle(value:String):void
+    {
+        if (value == dateStyle)
+            return;
+
+        invalidateSkeletonPattern();
+        invalidatePatternAnalysis();
+        {
+            /*
+            WORKAROUND FOR BUG SDK-30833
+
+            This block of code is a workaround for the Spark
+            DateTimeFormatter bug SDK-30833: Spark DateTimeFormatter ignores
+            dateStyle/timeStyle assignments when it involves "custom" value
+
+            If the Spark DateTimeFormatter gets fixed, remove this block.
+            */
+            if (super.dateStyle == "custom")
+                super.dateStyle = (value == "none") ? "long" : "none";
+        }
+        super.dateStyle = value;
+    }
+
+    override public function set dateTimePattern(value:String):void
+    {
+        if (value == dateTimePattern)
+            return;
+
+        invalidateSkeletonPattern();
+        invalidatePatternAnalysis();
+        super.dateTimePattern = value;
+    }
+
+    override public function set timeStyle(value:String):void
+    {
+        if (value == timeStyle)
+            return;
+
+        invalidateSkeletonPattern();
+        invalidatePatternAnalysis();
+
+        /*
+        WORKAROUND FOR BUG SDK-30833
+
+        This block of code is a workaround for the Spark
+        DateTimeFormatter bug SDK-30833: Spark DateTimeFormatter ignores
+        dateStyle/timeStyle assignments when it involves "custom" value
+
+        If the Spark DateTimeFormatter gets fixed, remove this block.
+        */
+        if (super.timeStyle == "custom")
+            super.timeStyle = (value == "none") ? "long" : "none";
+
+        super.timeStyle = value;
+    }
+
+    //--------------------------------------------------------------------------
+    //
+    //  Properties
+    //
+    //--------------------------------------------------------------------------
+
+    //----------------------------------
+    //  dateTimeSkeletonPattern
+    //----------------------------------
+
+    /**
+     *  @private
+     *  Cached value for dateTimeSkeletonPattern.
+     */
+    private var _dateTimeSkeletonPattern:String;
+
+    [Bindable("change")]
+
+    /**
+     *  Date time skeleton pattern.
+     *
+     *
When a skeleton pattern is set, it is translated into a concreate
+     *  pattern and dateTimePattern property gets the value.
+     *  Only yMMM and yMMMM skeleton patterns are supported for the Mega
+     *  release.
+     *  In the future releases, we may be supporting more generic skeleton
+     *  patterns.

+     *
Between the dateStyle/timeStyle,
+     *  dateTimeSkeletonPattern and dateTimePattern,
+     *  the last one that has assigned gets the priority.
+     *  For instance, if dateStyle is assinged the value
+     *  "short" and dateTimeSkeletonPattern is
+     *  assigned the value "yMMMMM" next,
+     *  the dateTimePattern will have a concrete patter for
+     *  the current locale (such as "MMMM y" for en_US).
+     *  This is same concept with the Spark DateTimeFormatter
+     *  in terms of the relation between the
+     *  dateStyle/timeStyle and
+     *  dateTimePattern.
+     *  Here, the concept has been extended to include the
+     *  dateTimeSkeletonPattern.

+     *
See the CLDR web site for the details of the skeleton pattern at
+     *  http://unicode.org/repos/cldr-tmp/trunk/diff/by_type/calendar-gregorian.pattern.html

+     *
+     *  @langversion 3.0
+     *  @playerversion Flash 11
+     *  @playerversion AIR 3
+     *  @productversion Flex 4.5.2
+     */
+    public function get dateTimeSkeletonPattern():String
+    {
+        return _dateTimeSkeletonPattern;
+    }
+
+    public function set dateTimeSkeletonPattern(value:String):void
+    {
+        if (value == _dateTimeSkeletonPattern)
+            return;
+
+        _dateTimeSkeletonPattern = value;
+        updatePattern();
+        invalidatePatternAnalysis();
+        update();
+    }
+
+    //--------------------------------------------------------------------------
+    //
+    //  Overridden Methods
+    //
+    //--------------------------------------------------------------------------
+
+    public override function setStyle(styleProp:String, newValue:*):void
+    {
+        const oldValue:* = super.getStyle(styleProp);
+        super.setStyle(styleProp, newValue);
+
+        if ((styleProp != "locale") || (newValue == oldValue))
+            return;
+
+        updatePattern();
+        invalidatePatternAnalysis();
+        update();
+    }
+
+    override public function styleChanged(styleProp:String):void
+    {
+        super.styleChanged(styleProp);
+        updatePattern();
+        invalidatePatternAnalysis();
+        update();
+    }
+
+    //--------------------------------------------------------------------------
+    //
+    //  Methods
+    //
+    //--------------------------------------------------------------------------
+
+    [Bindable("change")]
+
+    /**
+     *  Formatting pattern for the am/pm.
+     *
+     *  See getYearPosition() method for details.
+     */
+    public function getAmPmPattern():String
+    {
+        const element:Object = elementPatternList["ampm"];
+        return element ? element["pattern"] : null;
+    }
+
+    [Bindable("change")]
+
+    /**
+     *  Element position for the am/pm within the current
+     *  date pattern.
+     */
+    public function getAmPmPosition():int
+    {
+        const element:Object = elementPatternList["ampm"];
+        return element ? element["index"] : -1;
+    }
+
+    [Bindable("change")]
+
+    /**
+     *  Formatting pattern for the day.
+     *
+     *  See getYearPosition() method for details.
+     */
+    public function getDayOfMonthPattern():String
+    {
+        const element:Object = elementPatternList["dayOfMonth"];
+        return element ? element["pattern"] : null;
+    }
+
+    [Bindable("change")]
+
+    /**
+     *  Element position for the day of the month within the current
+     *  date pattern.
+     */
+    public function getDayOfMonthPosition():int
+    {
+        const element:Object = elementPatternList["dayOfMonth"];
+        return element ? element["index"] : -1;
+    }
+
+    /**
+     *  Formatting pattern for the day of week.
+     *
+     *  See getYearPosition() method for details.
+     */
+    public function getDayOfWeekPattern():String
+    {
+        const element:Object = elementPatternList["dayOfWeek"];
+        return element ? element["pattern"] : null;
+    }
+
+    [Bindable("change")]
+
+    /**
+     *  Element position for the day of the week within the current
+     *  date pattern.
+     */
+    public function getDayOfWeekPosition():int
+    {
+        const element:Object = elementPatternList["dayOfWeek"];
+        return element ? element["index"] : -1;
+    }
+
+    [Bindable("change")]
+
+    /**
+     *  Formatting pattern for the hour.
+     *
+     *  See getYearPosition() method for details.
+     */
+    public function getHourPattern():String
+    {
+        const element:Object = elementPatternList["hour"];
+        return element ? element["pattern"] : null;
+    }
+
+    [Bindable("change")]
+
+    /**
+     *  Element position for the day of the hour within the current
+     *  date pattern.
+     */
+    public function getHourPosition():int
+    {
+        const element:Object = elementPatternList["hour"];
+        return element ? element["index"] : -1;
+    }
+
+    [Bindable("change")]
+
+    /**
+     *  Formatting pattern for the minute.
+     *
+     *  See getYearPosition() method for details.
+     */
+    public function getMinutePattern():String
+    {
+        const element:Object = elementPatternList["minute"];
+        return element ? element["pattern"] : null;
+    }
+
+    [Bindable("change")]
+
+    /**
+     *  Element position for the minute within the current
+     *  date pattern.
+     */
+    public function getMinutePosition():int
+    {
+        const element:Object = elementPatternList["minute"];
+        return element ? element["index"] : -1;
+    }
+
+    [Bindable("change")]
+
+    /**
+     *  Formatting pattern for the month.
+     *
+     *  See getYearPosition() method for details.
+     */
+    public function getMonthPattern():String
+    {
+        const element:Object = elementPatternList["month"];
+        return element ? element["pattern"] : null;
+    }
+
+    [Bindable("change")]
+
+    /**
+     *  Element position for the month within the current
+     *  date pattern.
+     */
+    public function getMonthPosition():int
+    {
+        const element:Object = elementPatternList["month"];
+        return element ? element["index"] : -1;
+    }
+
+    [Bindable("change")]
+
+    /**
+     *  Formatting pattern for the second.
+     *
+     *  See getYearPosition() method for details.
+     */
+    public function getSecondPattern():String
+    {
+        const element:Object = elementPatternList["second"];
+        return element ? element["pattern"] : null;
+    }
+
+    [Bindable("change")]
+
+    /**
+     *  Element position for the second within the current
+     *  date pattern.
+     */
+    public function getSecondPosition():int
+    {
+        const element:Object = elementPatternList["second"];
+        return element ? element["index"] : -1;
+    }
+
+    [Bindable("change")]
+
+    /**
+     *  Finds if the current pattern is for 24-hour.
+     *
+     *
This method checks the current pattern to see if 24-hour display
+     *  is used. This method does this by checking if the pattern contains
+     *  the letter "H" or "h". If the pattern does not exist or the pattern
+     *  does not contain either "H" or "h", the use of 24- or 12-hour cannot
+     *  be determined.

+     *
+     *  @return true if 24-hour time is used.
+     *          false if 12-hour time is used.
+     *          null if it is unable to determine 24- or 12-hour
+     *          because the current pattern does not contain either
+     *          "H" or "h".
+     */
+    public function getUse24HourFlag():Object
+    {
+        const hourPattern:String = getHourPattern();
+
+        if (!hourPattern)
+            return null;
+
+        const use24Hour:Boolean = hourPattern.indexOf("H") >= 0;
+        const use12Hour:Boolean = hourPattern.indexOf("h") >= 0;
+        if (use24Hour && !use12Hour)
+            return true;
+        else if (!use24Hour && use12Hour)
+            return false;
+
+        return null;
+    }
+
+    [Bindable("change")]
+
+    /**
+     *  Formatting pattern for the year.
+     *
+     *  See getYearPosition() method for details.
+     */
+    public function getYearPattern():String
+    {
+        const element:Object = elementPatternList["year"];
+        return element ? element["pattern"] : null;
+    }
+
+    [Bindable("change")]
+
+    /**
+     *  Returns the element position for the year within the current
+     *  date pattern.
+     *
+     *
For example, assume the current date formatting pattern
+     *  (dateTimePattern property) is
+     *  "MMMM d, yyyy".
+     *  This method and other related methods return the values as
+     *  follow:

+     *
+     *

+     *
getYearPosition	2

+     *
getYearPattern	"yyyy"

+     *
getMonthPosition	0

+     *
getMonthPattern	"MMMM"

+     *
getDayOfMonthPosition	1

+     *
getDayOfMonthPattern	"d"

+     *

+     *
+     *
If the current date time pattern does not contain an element,
+     *  the corresponding position method returns -1 and the pattern
+     *  method returns a null value.

+     *
+     *  @langversion 3.0
+     *  @playerversion Flash 11
+     *  @playerversion AIR 3
+     *  @productversion Flex 4.5.2
+     */
+    public function getYearPosition():int
+    {
+        const element:Object = elementPatternList["year"];
+        return element ? element["index"] : -1;
+    }
+
+    //--------------------------------------------------------------------------
+    //
+    //  Private Properties
+    //
+    //--------------------------------------------------------------------------
+
+    //----------------------------------
+    //  elementPatternList
+    //----------------------------------
+
+    /**
+     *  @private
+     *  Pattern analysis result
+     */
+    private var _elementPatternList:Object;
+
+    /**
+     *  @private
+     *  The set of element information as the analysis result of the current
+     *  dateTimePattern.
+     *
+     *
This is used by the getYearPattern,
+     *  getYearPosition and other similar methods.

+     *
+     *  @langversion 3.0
+     *  @playerversion Flash 11
+     *  @playerversion AIR 3
+     *  @productversion Flex 4.5.2
+     */
+    private function get elementPatternList():Object
+    {
+        if (!_elementPatternList)
+        {
+            _elementPatternList =
+                DateTimeFormatterEx.analysePattern(dateTimePattern,
+                    (super.dateStyle != "none"), (super.timeStyle != "none"));
+            addPrefixes(dateTimePattern, _elementPatternList);
+        }
+
+        return _elementPatternList;
+    }
+
+    private function set elementPatternList(value:Object):void
+    {
+        if (value)
+            throw new ArgumentError("Invalid assignment.");
+        _elementPatternList = null;
+    }
+
+    //--------------------------------------------------------------------------
+    //
+    //  Private Methods
+    //
+    //--------------------------------------------------------------------------
+
+    /**
+     *  @private
+     *  Special handling for locales that need prefix for pattern elements.
+     *
+     *  The regular expression becomes too complex to properly handle prefixed
+     *  embeded strings. (Postfixes are ok, however.)
+     *  This function adds the proper prefix to the elements.
+     *  This is not the best solution for the long-run but it is a balancing
+     *  solution for the Mega release.
+     */
+    private function addPrefixes(
+        dateTimePattern:String, elementPatternList:Object):void
+    {
+        const locale:String = getStyle("locale");
+        if (!locale || !elementPatternList)
+            return;
+
+        const language:String = locale.substr(0, 2);
+
+        if ((language == "vi") && (dateTimePattern.indexOf("năm") != -1))
+        {
+            if (elementPatternList["year"])
+            {
+                elementPatternList["year"]["pattern"] = "'năm' " +
+                    elementPatternList["year"]["pattern"];
+            }
+            if (elementPatternList["month"])
+            {
+                elementPatternList["month"]["pattern"] = "'tháng' " +
+                    elementPatternList["month"]["pattern"];
+            }
+            if (elementPatternList["dayOfMonth"])
+            {
+                elementPatternList["dayOfMonth"]["pattern"] = "'Ngày' " +
+                    elementPatternList["dayOfMonth"]["pattern"];
+            }
+        }
+    }
+
+    /**
+     *  @private
+     *  Find the best matching format pattern
+     *  for a given locale and a given style.
+     */
+    private function findBestMatchingPattern(
+        locale:String,
+        style:String):String
+    {
+        var pattern:String;
+        switch (style)
+        {
+            case DATESTYLE_yMMM:
+                pattern = findBestMatchingPatternFromFormatPatternList(
+                    locale, FORMATPATTERNLIST_yMMM);
+                break;
+            case DATESTYLE_yMMMM:
+                pattern = findBestMatchingPatternFromFormatPatternList(
+                    locale, FORMATPATTERNLIST_yMMMM);
+                if (!pattern)
+                {
+                    pattern = findBestMatchingPatternFromFormatPatternList(
+                        locale, FORMATPATTERNLIST_yMMMM_extra);
+                }
+                break;
+            case DATESTYLE_MMMEEEd:
+                pattern = findBestMatchingPatternFromFormatPatternList(
+                    locale, FORMATPATTERNLIST_MMMEEEd);
+                if (!pattern)
+                {
+                    pattern = findBestMatchingPatternFromFormatPatternList(
+                        locale, FORMATPATTERNLIST_MMMEEEd_extra);
+                }
+                break;
+        }
+
+        if (pattern)
+        {
+            // 'L' is not supported by most systems so relace with 'M'
+            pattern = pattern.replace(/L/g, "M");
+        }
+
+        return pattern;
+    }
+
+    /**
+     *  @private
+     *  Find the best matching format pattern from the format pattern list
+     *  for a given locale.
+     */
+    private function findBestMatchingPatternFromFormatPatternList(
+        findLocale:String,
+        formatPatternList:Vector.<FormatPattern>):String
+    {
+        if (!findLocale)
+            findLocale = "root";
+
+        const parsedLocale:Object = parseLocale(findLocale);
+        const locale:String = parsedLocale["locale"];
+        const language:String = parsedLocale["language"];
+        const script:String = parsedLocale["script"];
+        const region:String = parsedLocale["region"];
+        const scoreList:Array = new Array();
+        /*
+        Score calculation method:
+        Two of the languages are identical: Add 0x40
+        One of the language is null: Add 0x20 (actually, not allowed)
+        Two of the scripts are identical: Add 0x10
+        One of the script is null: Add 0x08
+        Two of the regions are indentical: Add 0x04
+        One of the region is null: Add 0x02
+        One from the table is "root": Add 0x01
+
+        Notes:
+        When both of them are null, it is considered they are identical.
+        */
+        var score:uint;
+
+        for each (var formatPattern:FormatPattern in formatPatternList)
+        {
+            var qNameList:Array = ObjectUtil.getClassInfo(
+                formatPattern.locales)["properties"];
+            for each (var qName:QName in qNameList)
+            {
+                score = 0;
+                var listedLocale:Object = parseLocale(qName.localName);
+                if (language == listedLocale["language"])
+                {
+                    score += 0x40;
+                    if (script == listedLocale["script"])
+                        score += 0x10;
+                    else if (!script || !listedLocale["script"])
+                        score += 0x08;
+
+                    if (region == listedLocale["region"])
+                        score += 0x04;
+                    else if (!region || !listedLocale["region"])
+                        score += 0x02;
+                }
+                if ((locale != "root") && (listedLocale["locale"] == "root"))
+                    score++;
+                if (score)
+                {
+                    scoreList.push({locale: qName.localName,
+                        pattern: formatPattern.pattern, score: score});
+                }
+            }
+        }
+
+        if (!scoreList.length)
+            return null;
+
+        scoreList.sortOn("score", Array.NUMERIC | Array.DESCENDING);
+        return scoreList[0]["pattern"];
+    }
+
+    private function invalidatePatternAnalysis():void
+    {
+        elementPatternList = null;
+    }
+
+    private function invalidateSkeletonPattern():void
+    {
+        _dateTimeSkeletonPattern = null;
+    }
+
+    /**
+     *  @private
+     *  Parse and normalize locale string
+     */
+    private function parseLocale(locale:String):Object
+    {
+        if (!locale)
+        {
+            return {
+                locale: "",
+                language: "",
+                script: "",
+                region: ""
+            };
+        }
+        const regExpResult:Object = REGEXP_LOCALEID.exec(locale);
+        const language:String = regExpResult[1] ? regExpResult[1] : "";
+        const script:String = regExpResult[2] ? regExpResult[2] : "";
+        const region:String = regExpResult[3] ? regExpResult[3] : "";
+
+        const normalizedLocale:String = locale.replace("-", "_");
+
+        return {
+            locale: normalizedLocale,
+            language: language,
+            script: script,
+            region: region
+        };
+    }
+
+    private function updatePattern():void
+    {
+        if (!_dateTimeSkeletonPattern)
+            return;
+
+        super.dateTimePattern = findBestMatchingPattern(
+            actualLocaleIDName, _dateTimeSkeletonPattern);
+    }
+
+    //--------------------------------------------------------------------------
+    //
+    //  Private Static Methods
+    //
+    //--------------------------------------------------------------------------
+
+    /**
+     *  @private
+     *  analysePattern() function.
+     *
+     *  @langversion 3.0
+     *  @playerversion Flash 11
+     *  @playerversion AIR 3
+     *  @productversion Flex 4.5.2
+     */
+    private static function analysePattern(pattern:String,
+                                           analyseDateElements:Boolean,
+                                           analyseTimeElements:Boolean):Object
+    {
+        var regExpOut:Object;
+        var element:Object;
+        const array:Array = new Array();
+
+        const iBegining:uint = analyseDateElements ? 0 : 3;
+        const iEnd:uint = analyseTimeElements ? 8 : 2;
+        for (var i:int = iBegining; i <= iEnd; i++)
+        {
+            element = null;
+            switch (i)
+            {
+                case 0:
+                    regExpOut = REGEXP_YEAR.exec(pattern);
+                    if (regExpOut)
+                        element = { name: "year", pattern: regExpOut[2],
+                            index: ((regExpOut["index"] as int)
+                                + (regExpOut[1] as String).length) };
+                    break;
+                case 1:
+                    regExpOut = REGEXP_MONTH.exec(pattern);
+                    if (regExpOut)
+                        element = { name: "month", pattern: regExpOut[2],
+                            index: ((regExpOut["index"] as int)
+                                + (regExpOut[1] as String).length) };
+                    break;
+                case 2:
+                    regExpOut = REGEXP_DAYOFMONTH.exec(pattern);
+                    if (regExpOut)
+                        element = { name: "dayOfMonth", pattern: regExpOut[2],
+                            index: ((regExpOut["index"] as int)
+                                + (regExpOut[1] as String).length) };
+                    break;
+                case 3:
+                    regExpOut = REGEXP_HOUR.exec(pattern);
+                    if (regExpOut)
+                        element = { name: "hour", pattern: regExpOut[2],
+                            index: ((regExpOut["index"] as int)
+                                + (regExpOut[1] as String).length) };
+                    break;
+                case 4:
+                    regExpOut = REGEXP_MINUTE.exec(pattern);
+                    if (regExpOut)
+                        element = { name: "minute", pattern: regExpOut[2],
+                            index: ((regExpOut["index"] as int)
+                                + (regExpOut[1] as String).length) };
+                    break;
+                case 5:
+                    regExpOut = REGEXP_SECOND.exec(pattern);
+                    if (regExpOut)
+                        element = { name: "second", pattern: regExpOut[2],
+                            index: ((regExpOut["index"] as int)
+                                + (regExpOut[1] as String).length) };
+                    break;
+                case 6:
+                    regExpOut = REGEXP_AMPM.exec(pattern);
+                    if (regExpOut)
+                        element = { name: "ampm", pattern: regExpOut[2],
+                            index: ((regExpOut["index"] as int)
+                                + (regExpOut[1] as String).length) };
+                    break;
+                case 7:
+                    regExpOut = REGEXP_DAYOFWEEK.exec(pattern);
+                    if (regExpOut)
+                        element = { name: "dayOfWeek", pattern: regExpOut[2],
+                            index: ((regExpOut["index"] as int)
+                                + (regExpOut[1] as String).length) };
+                    break;
+            }
+            if (element)
+                array.push(element);
+        }
+        array.sortOn("index", Array.NUMERIC);
+        const object:Object = new Object();
+        var name:String;
+        for (i = 0; i < array.length; i++)
+        {
+            element = new Object();
+            element["index"] = i;
+            element["pattern"] = array[i]["pattern"];
+            name = array[i]["name"];
+            object[name] = element;
+        }
+
+        return object;
+    }
+}
+}


CensusDataSource columns now validate properly when the JSON object returns; Default keytypes for CensusDataSource are comma-delimited.

--- WeaveData/src/weave/data/DataSources/CensusDataSource.as
+++ WeaveData/src/weave/data/DataSources/CensusDataSource.as
@@ -281,7 +281,7 @@

         	var newPromise:LinkablePromise = new LinkablePromise(function():*
         	{
-        		weaveTrace("Promise called.");
+				if (result == null) return;
 				var idx:int;
         		var columns:Array = result[0] as Array;
         		var rows:Array = result as Array;
@@ -290,7 +290,7 @@
         		var key_column_indices:Array = new Array(columns.length);
         		var data_column_index:int = columns.indexOf(variable_name);

-        		var tmp_key_type:String = key_column_names.join("");
+        		var tmp_key_type:String = WeaveAPI.CSVParser.createCSVRow(key_column_names);
         		var key_overrides:Object = keyTypeOverride.getSessionState();
         		if (key_overrides && key_overrides[tmp_key_type])
         		{
@@ -322,11 +322,12 @@

         	registerLinkableChild(proxyColumn, newPromise);
         	registerLinkableChild(newPromise, keyTypeOverride);
-
+
         	jsonCache.getJsonObject(getUrl(web_service, params), function (json_result:Object):void
         		{
         			result = json_result;
         			getCallbackCollection(newPromise).triggerCallbacks();
+					newPromise.validate();
         		}
         	);
         }


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

--- frameworks/projects/advancedgrids/src/mx/collections/IHierarchicalData.as
+++ frameworks/projects/advancedgrids/src/mx/collections/IHierarchicalData.as
@@ -1,11 +1,19 @@
 ////////////////////////////////////////////////////////////////////////////////
 //
-//  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.
 //
 ////////////////////////////////////////////////////////////////////////////////


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

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

 package mx.core
 {


Transferred from the Adobe Open Source Subversion Repository

Revision: 17753
Author:   klin@adobe.com
Date:     2010-09-17T22:01:57.619431Z

Log Message:
-----------
Fix for handling columns (IList) changes in GridDimensions. I implemented the columnsCollectionChanged handler in GridDimensions to handle all the collection events.

GridDimensions.as - When someone sets the columnCount, we should clear everything. Implemented columnsCollectionChanged(). Changed typicalCellWidths and typicalCellHeights to Vectors to make them easier to handle. Added a few helper functions to insert multiple values into vectors and to clear a vector. Also, fixed a small bug in getColumnIndexAt for the case where the column width is 0. Fixed up the rowCount setter to remove the excess rows.

Grid.as - Move setting columnCount from clearGridLayoutCache to commitProperties because it should only be set when the columns actually change. Add call to columnsCollectionChanged.

GridRowList.as, GridRowNode.as - Add support for column changes.

QE notes: No
Doc notes: No
Bugs: SDK-27569, SDK-27678
Reviewer: Hans
Tests run: checkintests, cyclone server
Is noteworthy for integration: No

Modified Paths:
--------------
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/components/Grid.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/components/supportClasses/GridDimensions.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/components/supportClasses/GridRowNode.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/components/supportClasses/GridRowList.as</path>

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

--- frameworks/projects/spark/src/spark/components/gridClasses/GridRowNode.as
+++ frameworks/projects/spark/src/spark/components/gridClasses/GridRowNode.as
@@ -1,6 +1,7 @@
 package spark.components.supportClasses
 {
-
+import spark.components.supportClasses.GridDimensions;
+
 [ExcludeClass]

 /**
@@ -115,7 +116,46 @@
         return updateMaxHeight();
     }

+    /**
+     *  Shifts values such that count columns are inserted
+     *  from the startIndex.
+     */
+    public function insertColumns(startColumn:int, count:int):void
+    {
+        GridDimensions.insertValueToVector(cellHeights, startColumn, count, 0);
+    }

+    /**
+     *  Removes and adds values such that the columns are moved.
+     */
+    public function moveColumns(fromCol:int, toCol:int, count:int):void
+    {
+        GridDimensions.insertValuesToVector(cellHeights, toCol, cellHeights.splice(fromCol, count));
+    }
+
+    /**
+     *  Clears values such that count columns are 0.
+     */
+    public function clearColumns(startColumn:int, count:int):void
+    {
+        GridDimensions.clearVector(cellHeights, 0, startColumn, count);
+        updateMaxHeight();
+    }
+
+    /**
+     *  Shifts values such that count columns are removed
+     *  from the startColumn.
+     *  We assume that cellHeights is the right length.
+     */
+    public function removeColumns(startColumn:int, count:int):void
+    {
+        cellHeights.splice(startColumn, count);
+        updateMaxHeight();
+    }
+
+    /**
+     *  toString method for testing.
+     */
     public function toString():String
     {
         var s:String = "";
@@ -135,6 +175,5 @@

         return s;
     }
-
 }
 }


OPEN - issue OTTOWICHTELN-163: Hme pg Pfeile hinweis
http://tickets.reprise-framework.org:8080/browse/OTTOWICHTELN-163

	FIXED

OPEN - issue OTTOWICHTELN-103: Home pg - pfeile
http://tickets.reprise-framework.org:8080/browse/OTTOWICHTELN-103

	FIXED

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

--- src/reprise/ui/renderers/AbstractTooltip.as
+++ src/reprise/ui/renderers/AbstractTooltip.as
@@ -252,6 +252,7 @@
 				DisplayEvent.DOCUMENT_VALIDATION_COMPLETE, document_validationComplete);
 			validateElement(true, true);
 			updatePosition();
+			log(m_complexStyles);
 		}
 	}
 }