Transferred from the Adobe Open Source Subversion Repository

Revision: 19940
Author:   chiedozi@adobe.com
Date:     2011-01-25T22:15:05.923796Z

Log Message:
-----------
Removing Flash @playerversion tags from ASDocs for ViewNavigator components

QE notes:
Doc notes:
Bugs: SDK-29208
Reviewer: Ryan
Tests run:
Is noteworthy for integration: No

Modified Paths:
--------------
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobilecomponents/src/spark/components/TabbedViewNavigator.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobilecomponents/src/spark/components/View.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobilecomponents/src/spark/components/supportClasses/ViewNavigatorBase.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobilecomponents/src/spark/components/TabbedViewNavigatorApplication.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobilecomponents/src/spark/components/supportClasses/ViewReturnObject.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobilecomponents/src/spark/components/supportClasses/ViewNavigatorAction.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobiletheme/src/spark/skins/mobile/ViewNavigatorSkin.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobiletheme/src/spark/skins/mobile/TabbedViewNavigatorSkin.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobilecomponents/src/spark/components/supportClasses/ViewDescriptor.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobiletheme/src/spark/skins/mobile/ViewNavigatorApplicationSkin.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobilecomponents/src/spark/components/ViewNavigator.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobilecomponents/src/spark/events/ViewNavigatorEvent.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobiletheme/src/spark/skins/mobile/TabbedViewNavigatorApplicationSkin.as</path>

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

--- frameworks/projects/mobilecomponents/src/spark/components/supportClasses/ViewDescriptor.as
+++ frameworks/projects/mobilecomponents/src/spark/components/supportClasses/ViewDescriptor.as
@@ -26,7 +26,6 @@
  *  @see spark.components.ViewNavigator
  *
  *  @langversion 3.0
- *  @playerversion Flash 10
  *  @playerversion AIR 2.5
  *  @productversion Flex 4.5
  */
@@ -50,7 +49,6 @@
      *  @param instance A reference to the instance of the View object.
      *
      *  @langversion 3.0
-     *  @playerversion Flash 10
      *  @playerversion AIR 2.5
      *  @productversion Flex 4.5
      */
@@ -84,7 +82,6 @@
      *  @see spark.components.ViewNavigator#pushView()
      *
      *  @langversion 3.0
-     *  @playerversion Flash 10
      *  @playerversion AIR 2.5
      *  @productversion Flex 4.5
      */
@@ -103,7 +100,6 @@
      *  @see spark.components.View#data
      *
      *  @langversion 3.0
-     *  @playerversion Flash 10
      *  @playerversion AIR 2.5
      *  @productversion Flex 4.5
      */
@@ -119,7 +115,6 @@
      *  This property is set to null when a view is destroyed.
      *
      *  @langversion 3.0
-     *  @playerversion Flash 10
      *  @playerversion AIR 2.5
      *  @productversion Flex 4.5
      */
@@ -136,7 +131,6 @@
      *  the serializeData() method on the View object.
      *
      *  @langversion 3.0
-     *  @playerversion Flash 10
      *  @playerversion AIR 2.5
      *  @productversion Flex 4.5
      */
@@ -153,7 +147,6 @@
      *  @see spark.components.View
      *
      *  @langversion 3.0
-     *  @playerversion Flash 10
      *  @playerversion AIR 2.5
      *  @productversion Flex 4.5
      */
@@ -175,7 +168,6 @@
      *  @param output The data output object used to write the data.
      *
      *  @langversion 3.0
-     *  @playerversion Flash 10
      *  @playerversion AIR 2.5
      *  @productversion Flex 4.5
      */
@@ -195,7 +187,6 @@
      *  @param input The external object to read from.
      *
      *  @langversion 3.0
-     *  @playerversion Flash 10
      *  @playerversion AIR 2.5
      *  @productversion Flex 4.5
      */


LocalData now implements IVersionable

LocalData now implements IVersionable

--- src/aerys/minko/scene/data/LocalData.as
+++ src/aerys/minko/scene/data/LocalData.as
@@ -1,8 +1,9 @@
 package aerys.minko.scene.data
 {
+	import aerys.minko.type.IVersionnable;
 	import aerys.minko.type.math.Matrix4x4;

-	public final class LocalData
+	public final class LocalData implements IVersionnable
 	{
 		private static const _SCREEN_TO_UV : Matrix4x4 = new Matrix4x4(
 			0.5,		0.0,		0.0,	0.0,


Fix binding instanciation order.

Fix binding instanciation order.

--- src/aerys/minko/scene/node/mesh/Mesh.as
+++ src/aerys/minko/scene/node/mesh/Mesh.as
@@ -225,9 +225,9 @@
 									effect		: Effect,
 									controllers	: Array) : void
 		{
+			_bindings = new DataBindings(this);
+
 			this.properties = new DataProvider(properties, 'meshProperties', DataProviderUsage.EXCLUSIVE);
-
-			_bindings = new DataBindings(this);

 			_geometry = geometry;
 			this.effect = effect || DEFAULT_EFFECT;


#SUP-2094 #time 2h #comment added default category like in HTML5 plugin and removed spaces from reports

--- plugins/googleAnalyticsPlugin/src/com/kaltura/kdpfl/plugin/googleAnalytics/GAStatisticsMediator.as
+++ plugins/googleAnalyticsPlugin/src/com/kaltura/kdpfl/plugin/googleAnalytics/GAStatisticsMediator.as
@@ -71,7 +71,7 @@
 		 */
 		public var urchinCode : String;

-		public var defaultCategory:String;
+		public var defaultCategory:String = 'Kaltura Video Events';
 		private var _isLive:Boolean = false;
 		/**
 		 *Constructor.
@@ -319,10 +319,10 @@

 			var gaCategory:String	= customObject["Category"] || defaultCategory;
-			var	gaLabel:String		= customObject["Label"] || ((entry.name || _mediaTitle)+" | "+entry.id+" | "+kw.id);
+			var	gaLabel:String		= customObject["Label"] || ((entry.name || _mediaTitle)+"|"+entry.id+"|"+kw.id);
 			var	gaAction:String		= customObject["Action"] || note;
 			var	gaValue:Number		= customObject["Value"] || value;
-			log("SENDING ::: "+notification.getName() +" | "+shouldPublish);
+			log("SENDING ::: "+notification.getName() +"|"+shouldPublish);
 			if(shouldPublish){
 				publishGa(gaCategory, gaAction, gaLabel, gaValue);
 			}
@@ -371,7 +371,7 @@
 						{
 							if(currPosition )
 							{
-								publishGa (defaultCategory, _percentages[s][1]+"_pct_watched",  entry.name +" | "+entry.id+" | "+kw.id, Math.round(_currentTime))
+								publishGa (defaultCategory, _percentages[s][1]+"_pct_watched",  entry.name +"|"+entry.id+"|"+kw.id, Math.round(_currentTime))
 								trace("PERCENTAGE REACHED!!!!!!			"+_percentages[s][1]);
 								if(_percentages.length == s+1)
 								{
@@ -483,7 +483,7 @@
 			}

 			log ("GA tracking************************: "+_ga+" : "+value);
-			log ("GA tracking************************: "+category+" | "+ action+" | "+ label+" | "+ value);
+			log ("GA tracking************************: "+category+"|"+ action+"|"+ label+"|"+ value);
 		}

 		private function log(str:String):void{


Transferred from the Adobe Open Source Subversion Repository

Revision: 20017
Author:   jasonsj@adobe.com
Date:     2011-01-31T20:17:11.728603Z

Log Message:
-----------
Fixed StyleableTextField clipping when height is less than tightTextHeight. Fixed ButtonSkinBase vertical label clipping to allow text to appear in the bottom padding when using horizontal icon placement.

QE notes: None
Doc notes:
Bugs:
SDK-29275 Button label displayed outside button when height is less than the label
Reviewer: mcho
Tests run: checkintests
Is noteworthy for integration: No

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

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

--- frameworks/projects/mobiletheme/src/spark/skins/mobile/supportClasses/ButtonSkinBase.as
+++ frameworks/projects/mobiletheme/src/spark/skins/mobile/supportClasses/ButtonSkinBase.as
@@ -498,6 +498,16 @@
             }
         }

+        // adjust labelHeight for vertical clipping at the bottom edge
+        if (isHorizontal && (labelHeight < textHeight))
+        {
+            // allow gutter to be outside skin bounds
+            // this appears as clipping by the bottom border
+            var labelViewHeight:Number = Math.min(unscaledHeight - layoutPaddingTop - labelY
+                - textDescent + (StyleableTextField.TEXT_HEIGHT_PADDING / 2), textHeight);
+            labelHeight = Math.max(labelViewHeight, labelHeight);
+        }
+
         labelX = Math.max(0, Math.round(labelX)) + layoutPaddingLeft;
         // text looks better a little high as opposed to low, so we use floor instead of round
         labelY = Math.max(0, Math.floor(labelY)) + layoutPaddingTop;
@@ -505,7 +515,7 @@
         iconX = Math.max(0, Math.round(iconX)) + layoutPaddingLeft;
         iconY = Math.max(0, Math.round(iconY)) + layoutPaddingTop;

-        setElementSize(labelDisplay, labelWidth, labelHeight + adjustablePaddingBottom);
+        setElementSize(labelDisplay, labelWidth, labelHeight);
         setElementPosition(labelDisplay, labelX, labelY);

         if (textWidth > labelWidth)


Transferred from the Adobe Open Source Subversion Repository

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

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

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

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

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

 package spark.components.supportClasses
 {


Fixed BOSH polling behavior bug introduced in r11555. See: http://www.igniterealtime.org/community/thread/40903?tstart=0

Problem was that connection was not sending new empty request if there were no responses from the server, because resetResponseProcessor() will only cause a call to processResponse() if there are responses to process.  And, since the pollServer() code is now in processResponse() as a result of r11555, need to make sure to send a poll in onRequestComplete() if there are no responses.

--- src/org/igniterealtime/xiff/core/XMPPBOSHConnection.as
+++ src/org/igniterealtime/xiff/core/XMPPBOSHConnection.as
@@ -394,6 +394,12 @@
 			}

 			resetResponseProcessor();
+			// if there are no nodes in the response queue, then the response processor won't run and we won't send a poll to the server.
+			// so, do it manually here.
+			if ( responseQueue.length == 0 )
+			{
+				pollServer();
+			}
 		}

 		/**


delete unused action

delete unused action

--- bin/Data/Scripts/Editor/EditorActions.as
+++ bin/Data/Scripts/Editor/EditorActions.as
@@ -12,48 +12,6 @@
 class EditActionGroup
 {
     Array<EditAction@> actions;
-}
-
-class CreateStaticModelGroupIndexListAction : EditAction
-{
-    uint nodeID;
-    uint drawableID;
-    uint instanceNodeID;
-
-    void Define(Drawable@ drawable, Node@ instanceNode)
-    {
-        drawableID = drawable.id;
-        nodeID = drawable.node.id;
-        instanceNodeID = instanceNode.id;
-    }
-
-    void Undo()
-    {
-        Node@ node = editorScene.GetNode(nodeID);
-        Drawable@ drawable = editorScene.GetComponent(drawableID);
-        if (node !is null && drawable !is null)
-        {
-            Node@ instanceNode = editorScene.GetNode(instanceNodeID);
-            StaticModelGroup@ smg = cast<StaticModelGroup>(drawable);
-            if (smg.numInstanceNodes > 2)
-            {
-                smg.RemoveInstanceNode(instanceNode);
-                editorScene.RemoveChild(instanceNode);
-            }
-        }
-    }
-
-    void Redo()
-    {
-        Node@ node = editorScene.GetNode(nodeID);
-        Drawable@ drawable = editorScene.GetComponent(drawableID);
-        if (node !is null && drawable !is null)
-        {
-
-        }
-    }
-
-
 }

 class CreateDrawableMaskAction : EditAction


OFC-482 Multiple attributes not showing reason blank not specified validation error when opening a saved record

--- collect-flex/collect-flex-client/src/main/flex/org/openforis/collect/presenter/AttributePresenter.as
+++ collect-flex/collect-flex-client/src/main/flex/org/openforis/collect/presenter/AttributePresenter.as
@@ -1,115 +1,109 @@
-package org.openforis.collect.presenter {
-	import flash.events.Event;
-
-	import mx.binding.utils.ChangeWatcher;
-	import mx.collections.IList;
-	import mx.core.UIComponent;
-	import mx.events.PropertyChangeEvent;
-
-	import org.openforis.collect.Application;
-	import org.openforis.collect.event.ApplicationEvent;
-	import org.openforis.collect.metamodel.proxy.AttributeDefinitionProxy;
-	import org.openforis.collect.model.proxy.AttributeProxy;
-	import org.openforis.collect.model.proxy.RecordProxy;
-	import org.openforis.collect.remoting.service.UpdateResponse;
-	import org.openforis.collect.ui.component.detail.AttributeItemRenderer;
-	import org.openforis.collect.ui.component.detail.RelevanceDisplayManager;
-	import org.openforis.collect.ui.component.detail.ValidationDisplayManager;
-	import org.openforis.collect.ui.component.input.InputField;
-	import org.openforis.collect.util.ObjectUtil;
-	import org.openforis.collect.util.UIUtil;
-
-	/**
-	 *
-	 * @author S. Ricci
-	 * */
-	public class AttributePresenter extends AbstractPresenter {
-
-		protected var _view:AttributeItemRenderer;
-		private var _validationDisplayManager:ValidationDisplayManager;
-		private var _updating:Boolean = false;
-
-		public function AttributePresenter(view:AttributeItemRenderer) {
-			_view = view;
-			var inputField:InputField = _view.getElementAt(0) as InputField;
-			if(inputField != null) {
-				ChangeWatcher.watch(inputField, "visited", fieldVisitedHandler);
-				ChangeWatcher.watch(inputField, "updating", fieldUpdatingChangeHandler);
-			}
-			super();
-		}
-
-		override internal function initEventListeners():void {
-			super.initEventListeners();
-			eventDispatcher.addEventListener(ApplicationEvent.RECORD_SAVED, recordSavedHandler);
-			eventDispatcher.addEventListener(ApplicationEvent.UPDATE_RESPONSE_RECEIVED, updateResponseReceivedHandler);
-			ChangeWatcher.watch(_view, "attribute", attributeChangeHandler);
-		}
-
-		protected function initValidationDisplayManager():void {
-			var inputField:InputField = _view.getElementAt(0) as InputField;
-			var validationStateDisplay:UIComponent = inputField != null ? inputField.validationStateDisplay: _view;
-			var validationToolTipTrigger:UIComponent = validationStateDisplay;
-			_validationDisplayManager = new ValidationDisplayManager(validationToolTipTrigger, validationStateDisplay);
-			var attrDefn:AttributeDefinitionProxy = _view.attributeDefinition;
-			_validationDisplayManager.showMinMaxCountErrors = ! attrDefn.multiple;
-			if(_view.attribute != null) {
-				updateValidationDisplayManager();
-			}
-		}
-
-		protected function recordSavedHandler(event:ApplicationEvent):void {
-			updateValidationDisplayManager();
-		}
-
-		protected function updateResponseReceivedHandler(event:ApplicationEvent):void {
-			if(_view.attribute != null) {
-				var responses:IList = IList(event.result);
-				for each (var response:UpdateResponse in responses) {
-					if(response.nodeId == _view.attribute.id ||
-						response.nodeId == _view.parentEntity.id) {
-						updateValidationDisplayManager();
-						break;
-					}
-				}
-			}
-		}
-
-		protected function fieldVisitedHandler(event:PropertyChangeEvent):void {
-			if(event.newValue == true && (_view.attribute != null || _view.attributeDefinition.multiple && _view.attributes != null)) {
-				var attributeName:String = _view.attributeDefinition.name;
-				_view.parentEntity.showErrorsOnChild(attributeName);
-			}
-			updateValidationDisplayManager();
-		}
-
-		protected function fieldUpdatingChangeHandler(event:PropertyChangeEvent):void {
-			_updating = event.newValue;
-			updateValidationDisplayManager();
-		}
-
-		protected function attributeChangeHandler(event:Event):void {
-			_view.visited = false;
-			updateValidationDisplayManager();
-		}
-
-		protected function updateValidationDisplayManager():void {
-			if(_view.parentEntity != null) {
-				if(_validationDisplayManager == null) {
-					initValidationDisplayManager();
-				}
-				var attributeName:String = _view.attributeDefinition.name;
-				var visited:Boolean = _view.parentEntity.isErrorOnChildVisible(attributeName);
-				var active:Boolean = !_updating && _view.attribute != null && visited;
-				if(active) {
-					_validationDisplayManager.active = true;
-					_validationDisplayManager.displayNodeValidation(_view.parentEntity, _view.attributeDefinition, _view.attribute);
-				} else {
-					_validationDisplayManager.active = false;
-					_validationDisplayManager.reset();
-				}
-			}
-		}
-
-	}
-}
+package org.openforis.collect.presenter {
+	import mx.binding.utils.BindingUtils;
+	import mx.binding.utils.ChangeWatcher;
+	import mx.collections.IList;
+	import mx.core.UIComponent;
+	import mx.events.PropertyChangeEvent;
+
+	import org.openforis.collect.event.ApplicationEvent;
+	import org.openforis.collect.metamodel.proxy.AttributeDefinitionProxy;
+	import org.openforis.collect.model.proxy.AttributeProxy;
+	import org.openforis.collect.remoting.service.UpdateResponse;
+	import org.openforis.collect.ui.component.detail.AttributeItemRenderer;
+	import org.openforis.collect.ui.component.detail.ValidationDisplayManager;
+	import org.openforis.collect.ui.component.input.InputField;
+
+	/**
+	 *
+	 * @author S. Ricci
+	 * */
+	public class AttributePresenter extends AbstractPresenter {
+
+		protected var _view:AttributeItemRenderer;
+		private var _validationDisplayManager:ValidationDisplayManager;
+		private var _updating:Boolean = false;
+
+		public function AttributePresenter(view:AttributeItemRenderer) {
+			_view = view;
+			var inputField:InputField = _view.getElementAt(0) as InputField;
+			if(inputField != null) {
+				ChangeWatcher.watch(inputField, "visited", fieldVisitedHandler);
+				ChangeWatcher.watch(inputField, "updating", fieldUpdatingChangeHandler);
+			}
+			super();
+		}
+
+		override internal function initEventListeners():void {
+			super.initEventListeners();
+			eventDispatcher.addEventListener(ApplicationEvent.RECORD_SAVED, recordSavedHandler);
+			eventDispatcher.addEventListener(ApplicationEvent.UPDATE_RESPONSE_RECEIVED, updateResponseReceivedHandler);
+			BindingUtils.bindSetter(setAttribute, _view, "attribute");
+		}
+
+		protected function initValidationDisplayManager():void {
+			var inputField:InputField = _view.getElementAt(0) as InputField;
+			var validationStateDisplay:UIComponent = inputField != null ? inputField.validationStateDisplay: _view;
+			var validationToolTipTrigger:UIComponent = validationStateDisplay;
+			_validationDisplayManager = new ValidationDisplayManager(validationToolTipTrigger, validationStateDisplay);
+			var attrDefn:AttributeDefinitionProxy = _view.attributeDefinition;
+			_validationDisplayManager.showMinMaxCountErrors = ! attrDefn.multiple;
+			if(_view.attribute != null) {
+				updateValidationDisplayManager();
+			}
+		}
+
+		protected function recordSavedHandler(event:ApplicationEvent):void {
+			updateValidationDisplayManager();
+		}
+
+		protected function updateResponseReceivedHandler(event:ApplicationEvent):void {
+			if(_view.attribute != null) {
+				var responses:IList = IList(event.result);
+				for each (var response:UpdateResponse in responses) {
+					if(response.nodeId == _view.attribute.id ||
+						response.nodeId == _view.parentEntity.id) {
+						updateValidationDisplayManager();
+						break;
+					}
+				}
+			}
+		}
+
+		protected function fieldVisitedHandler(event:PropertyChangeEvent):void {
+			if(event.newValue == true && (_view.attribute != null || _view.attributeDefinition.multiple && _view.attributes != null)) {
+				var attributeName:String = _view.attributeDefinition.name;
+				_view.parentEntity.showErrorsOnChild(attributeName);
+			}
+			updateValidationDisplayManager();
+		}
+
+		protected function fieldUpdatingChangeHandler(event:PropertyChangeEvent):void {
+			_updating = event.newValue;
+			updateValidationDisplayManager();
+		}
+
+		protected function setAttribute(attribute:AttributeProxy):void {
+			_view.visited = false;
+			updateValidationDisplayManager();
+		}
+
+		protected function updateValidationDisplayManager():void {
+			if(_view.parentEntity != null) {
+				if(_validationDisplayManager == null) {
+					initValidationDisplayManager();
+				}
+				var attributeName:String = _view.attributeDefinition.name;
+				var visited:Boolean = _view.parentEntity.isErrorOnChildVisible(attributeName);
+				var active:Boolean = !_updating && _view.attribute != null && visited;
+				if(active) {
+					_validationDisplayManager.active = true;
+					_validationDisplayManager.displayNodeValidation(_view.parentEntity, _view.attributeDefinition, _view.attribute);
+				} else {
+					_validationDisplayManager.active = false;
+					_validationDisplayManager.reset();
+				}
+			}
+		}
+
+	}
+}


Transferred from the Adobe Open Source Subversion Repository

Revision: 22305
Author:   tkraikit@adobe.com
Date:     2011-08-30T23:59:15.365812Z

Log Message:
-----------
SDK-31352: DateSpinnerItemRenderer fixed so text color and alpha applied correctly.
Also:
* removed extraneous comments
* updated *-app.xml files to 3.1
* updated MobileSkins app DateSpinner to showcase locales
* added Exclude metadata for "textAlign" style in DateSpinner

QE notes: none
Doc notes: n/a
Bugs: SDK-31352
Reviewer: jszeto
Tests run: checkintests
Is noteworthy for integration: no

Modified Paths:
--------------
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/tests/MobileSkins/src/views/DateSpinnerView.mxml</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/mobilecomponents/src/spark/components/calendarClasses/DateSpinnerItemRenderer.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/development/eclipse/flex/DateSpinnerTest/src/DateSpinnerTest-app.xml</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/tests/MobileSkins/src/TabbedMobileSkins-app.xml</path>

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

--- frameworks/projects/mobilecomponents/src/spark/components/calendarClasses/DateSpinnerItemRenderer.as
+++ frameworks/projects/mobilecomponents/src/spark/components/calendarClasses/DateSpinnerItemRenderer.as
@@ -41,6 +41,14 @@
 	{
 		super();
 	}
+
+    //--------------------------------------------------------------------------
+    //
+    //  Variables
+    //
+    //--------------------------------------------------------------------------
+
+    private var _colorName:String = "color";

 	//--------------------------------------------------------------------------
 	//
@@ -64,32 +72,50 @@

 		return result;
 	}
-
+
 	//--------------------------------------------------------------------------
 	//
 	//  Overridden Methods
 	//
 	//--------------------------------------------------------------------------
-
-	override protected function layoutContents(unscaledWidth:Number, unscaledHeight:Number):void
-	{
-        var colorName:String = "color";
-
+
+    override public function set data(value:Object):void
+    {
+        super.data = value;
+
         try
         {
             if (data["_emphasized_"] != undefined)
-                colorName = "accentColor"; // highlighted item
+                _colorName = "accentColor"; // highlighted item
         }
         catch (e:Error)
         {
             // Do nothing
         }

-        labelDisplay.colorName = colorName;
-        labelDisplay.alpha = enabled ? 1 : .5;
-
-		// We call the super at the end because it commits the labelDisplay styles.
-		super.layoutContents(unscaledWidth, unscaledHeight);
-	}
+        setTextProperties();
+    }
+
+    override protected function createChildren():void
+    {
+        super.createChildren();
+
+        setTextProperties();
+    }
+
+    //--------------------------------------------------------------------------
+    //
+    //  Methods
+    //
+    //--------------------------------------------------------------------------
+
+    private function setTextProperties():void
+    {
+        if (labelDisplay)
+        {
+            labelDisplay.colorName = _colorName;
+            labelDisplay.alpha = enabled ? 1 : .5;
+        }
+    }
 }
 }


update indentation

update indentation

git-svn-id: 533dbd50173d42a8a7a6f488dbc0c05430609410@11 37abe446-e973-4b93-b0d7-31cb093a2758

--- src/corsaair/tool/hash/App.as
+++ src/corsaair/tool/hash/App.as
@@ -23,8 +23,8 @@

     import shell.FileSystem;

-	public class App
-	{
+    public class App
+    {

         private var _parser:ArgParser;
         private var _results:ArgResults;
@@ -32,11 +32,11 @@
         public var executableName:String;
         public var description:String;

-		public function App()
-		{
-			super();
+        public function App()
+        {
+            super();
             _ctor();
-		}
+        }

         private function _ctor():void
         {
@@ -286,6 +286,6 @@
             exit( EXIT_SUCCESS );
         }

-	}
+    }

 }


Small change to AbstractExtension to set the node properly

--- src/org/jivesoftware/xiff/data/AbstractExtension.as
+++ src/org/jivesoftware/xiff/data/AbstractExtension.as
@@ -22,6 +22,7 @@

 		public function deserialize(node:XMLNode):Boolean
 		{
+			setNode(node);
 			var childNodes:Array = node.childNodes;
 			for (var i:int = 0; i < childNodes.length; i++) {
 				var extClass:Class = ExtensionClassRegistry.lookup(childNodes[i].attributes.xmlns);


made beacon URL optional, added optional ID argument to OVVAsset constructor

--- src/org/openvv/OVVAsset.as
+++ src/org/openvv/OVVAsset.as
@@ -22,6 +22,7 @@
     import flash.events.TimerEvent;
     import flash.external.ExternalInterface;
     import flash.utils.Timer;
+
     import org.openvv.events.OVVEvent;

     /**
@@ -151,15 +152,16 @@
          * @param beaconSwfUrl The fully qualified URL of OVVBeacon.swf for
          * OpenVV to use. For example, "http://localhost/OVVBeacon.swf"
          */
-        public function OVVAsset(beaconSwfUrl: String) {
-            if (!externalInterfaceIsAvailable()) {
+        public function OVVAsset(beaconSwfUrl:String = null, id:String = null) {
+
+			if (!externalInterfaceIsAvailable()) {
                 dispatchEvent(new OVVEvent(OVVEvent.OVVError, {
                     "message": "ExternalInterface unavailable"
                 }));
                 return;
             }

-            _id = "ovv" + Math.floor(Math.random() * 1000000000).toString();
+            _id = (id !== null) ? id : "ovv" + Math.floor(Math.random() * 1000000000).toString();

             ExternalInterface.addCallback(_id, flashProbe);
             ExternalInterface.addCallback("startImpressionTimer", startImpressionTimer);
@@ -169,7 +171,13 @@
             _sprite.addEventListener("throttle", onThrottleEvent);

             var ovvAssetSource: String = new OVVAssetJSSource().toString();
-            ovvAssetSource = ovvAssetSource.replace(/OVVID/g, _id).replace(/BEACON_SWF_URL/g, beaconSwfUrl);
+            ovvAssetSource = ovvAssetSource.replace(/OVVID/g, _id);
+
+			if (beaconSwfUrl)
+			{
+				ovvAssetSource = ovvAssetSource.replace(/BEACON_SWF_URL/g, beaconSwfUrl);
+			}
+
             ExternalInterface.call("eval", ovvAssetSource);
         }


Transferred from the Adobe Open Source Subversion Repository

Revision: 8574
Author:   aharui@adobe.com
Date:     2009-07-15T05:33:44.225721Z

Log Message:
-----------
Bugs related to TLF and focus.  Also TLF Marshall Plan adjustments, and some IME fixes

QE Notes: None
Doc Notes: None
Bugs: SDK-21278, SDK-21686, SDK-21375, SDK-18516, SDK-15093, SDK-21335
Reviewer: darrell, carol
tests: checkintests mustella/gumbo mustella/components

Modified Paths:
--------------
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/airframework/src/mx/core/FlexHTMLLoader.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/managers/IFocusManagerComponent.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/airframework/src/mx/controls/HTML.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flash-integration/src/mx/flash/UIMovieClip.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/core/IIMESupport.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/spark/src/spark/components/NumericStepper.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/core/UITextField.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/events/SWFBridgeEvent.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/alertClasses/AlertForm.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework_textLayout/src/mx/core/UITLFTextField.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/spark/src/spark/primitives/supportClasses/RichEditableTextContainerManager.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/components/VideoPlayer.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/core/UIComponent.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/controls/dataGridClasses/DataGridColumn.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/primitives/RichEditableText.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/events/FlexEvent.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/components/supportClasses/SkinnableTextBase.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/managers/FocusManager.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/components/SkinnableDataContainer.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/components/SkinnableContainer.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/controls/sliderClasses/Slider.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/components/supportClasses/GroupBase.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/managers/marshalClasses/FocusManagerMarshalMixin.as</path>

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

--- frameworks/projects/framework/src/mx/managers/marshalClasses/FocusManagerMarshalMixin.as
+++ frameworks/projects/framework/src/mx/managers/marshalClasses/FocusManagerMarshalMixin.as
@@ -19,6 +19,7 @@
 import flash.events.KeyboardEvent;
 import flash.ui.Keyboard;

+import mx.events.FlexEvent;
 import mx.events.FocusRequestDirection;
 import mx.events.SWFBridgeEvent;
 import mx.events.SWFBridgeRequest;
@@ -99,6 +100,8 @@
 		focusManager.addEventListener("mouseDownFM", mouseDownHandler);
 		focusManager.addEventListener("addChildBridge", addChildBridgeHandler);
 		focusManager.addEventListener("removeChildBridge", removeChildBridgeHandler);
+		focusManager.addEventListener(FlexEvent.FLEX_WINDOW_ACTIVATE, forwardWindowActivationEventsToChildrenHandler);
+		focusManager.addEventListener(FlexEvent.FLEX_WINDOW_DEACTIVATE, forwardWindowActivationEventsToChildrenHandler);
 	}

 	//--------------------------------------------------------------------------
@@ -190,6 +193,8 @@
 	       			bridge.addEventListener(SWFBridgeRequest.MOVE_FOCUS_REQUEST, focusRequestMoveHandler);
                     bridge.addEventListener(SWFBridgeRequest.SET_SHOW_FOCUS_INDICATOR_REQUEST,
                                             setShowFocusIndicatorRequestHandler);
+            		bridge.addEventListener(SWFBridgeEvent.BRIDGE_AIR_WINDOW_ACTIVATE, windowActivationEventHandler);
+            		bridge.addEventListener(SWFBridgeEvent.BRIDGE_AIR_WINDOW_DEACTIVATE, windowActivationEventHandler);
 	       		}

 	   			// add listener activate/deactivate requests
@@ -533,6 +538,8 @@
 	    else
 	    	throw new Error();		// should never get here.

+        bridge.removeEventListener(SWFBridgeEvent.BRIDGE_AIR_WINDOW_ACTIVATE, windowActivationEventHandler);
+        bridge.removeEventListener(SWFBridgeEvent.BRIDGE_AIR_WINDOW_DEACTIVATE, windowActivationEventHandler);
    		bridge.removeEventListener(SWFBridgeRequest.MOVE_FOCUS_REQUEST, focusRequestMoveHandler);
         bridge.removeEventListener(SWFBridgeRequest.SET_SHOW_FOCUS_INDICATOR_REQUEST,
                                     setShowFocusIndicatorRequestHandler);
@@ -780,6 +787,34 @@

 		removeSWFBridge(bridge);
 	}
+
+	private function forwardWindowActivationEventsToChildrenHandler(event:Event):void
+	{
+        var ourEvent:SWFBridgeEvent;
+
+        if (event.type == FlexEvent.FLEX_WINDOW_ACTIVATE)
+            ourEvent = new SWFBridgeEvent(SWFBridgeEvent.BRIDGE_AIR_WINDOW_ACTIVATE);
+        else if (event.type == FlexEvent.FLEX_WINDOW_DEACTIVATE)
+            ourEvent = new SWFBridgeEvent(SWFBridgeEvent.BRIDGE_AIR_WINDOW_DEACTIVATE);
+
+        dispatchEventFromSWFBridges(ourEvent, swfBridgeGroup.parentBridge)
+	}
+
+	private function windowActivationEventHandler(event:Event):void
+	{
+        var ourEvent:FlexEvent;
+
+        if (event.type == SWFBridgeEvent.BRIDGE_AIR_WINDOW_ACTIVATE)
+            ourEvent = new FlexEvent(FlexEvent.FLEX_WINDOW_ACTIVATE);
+        else if (event.type == SWFBridgeEvent.BRIDGE_AIR_WINDOW_DEACTIVATE)
+            ourEvent = new FlexEvent(FlexEvent.FLEX_WINDOW_DEACTIVATE);
+
+        focusManager.dispatchEvent(ourEvent);
+		// restore focus if this focus manager had last focus
+	    if (focusManager.lastFocus && !focusManager.browserMode)
+	    	focusManager.lastFocus.setFocus();
+	    focusManager.lastAction = "ACTIVATE";
+	}
 }

 }


Transferred from the Adobe Open Source Subversion Repository

Revision: 18476
Author:   rfrishbe@adobe.com
Date:     2010-11-05T19:24:22.345498Z

Log Message:
-----------
Adding a "down" state for item renderers when in touch interaction mode.  This means item renderers don't go in to the "selected" state when someone presses down on them.  They first go in to the "down" state.  If the user later starts scrolling or moving around, the item renderer returns to the "normal" state.  If they press down and release up on the same item, the item renderer will go from the "down" state to the "selected" state.  This distinction is necessary on touch devices to distinguish between "down" and "selected".  There's also a new "selectedAndDown" state.

Adding ItemRendererInterationStateDetector as a helper class for item renderer to help detect when they are indeed hovered or pressed down.

QE notes:
Doc notes:
Bugs: SDK-27674, SDK-28110
Reviewer: Eric Day
Tests run: checkintests, full mustella run, QA cyclone
Is noteworthy for integration: Yes

Modified Paths:
--------------
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/components/Scroller.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/SparkClasses.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/components/SkinnableContainer.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobilecomponents/src/spark/components/MobileItemRenderer.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobiletheme/defaults.css</path>
<path kind="file" action="A">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/components/supportClasses/ItemRendererInteractionStateDetector.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/components/List.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/skins/spark/DefaultItemRenderer.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/framework/defaults.css</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/components/supportClasses/DropDownListBase.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/wireframe/src/spark/skins/wireframe/DefaultItemRenderer.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/components/supportClasses/ItemRenderer.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/components/supportClasses/ListBase.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/wireframe/defaults.css</path>

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

--- frameworks/projects/spark/src/spark/components/supportClasses/InteractionStateDetector.as
+++ frameworks/projects/spark/src/spark/components/supportClasses/InteractionStateDetector.as
@@ -0,0 +1,534 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+//  ADOBE SYSTEMS INCORPORATED
+//  Copyright 2010 Adobe Systems Incorporated
+//  All Rights Reserved.
+//
+//  NOTICE: Adobe permits you to use, modify, and distribute this file
+//  in accordance with the terms of the license agreement accompanying it.
+//
+////////////////////////////////////////////////////////////////////////////////
+
+package spark.components.supportClasses
+{
+import flash.display.DisplayObject;
+import flash.display.DisplayObjectContainer;
+import flash.events.Event;
+import flash.events.EventDispatcher;
+import flash.events.MouseEvent;
+import flash.events.TimerEvent;
+import flash.utils.Timer;
+
+import mx.core.InteractionMode;
+import mx.core.UIComponent;
+import mx.events.FlexEvent;
+import mx.events.SandboxMouseEvent;
+import mx.events.TouchInteractionEvent;
+import mx.managers.ISystemManager;
+
+/**
+ *  Dispatched after the state has changed.
+ *
+ *  @eventType flash.events.Event.CHANGE
+ *
+ *  @langversion 3.0
+ *  @playerversion Flash 10.1
+ *  @playerversion AIR 2.5
+ *  @productversion Flex 4.5
+ */
+[Event(name="change", type="flash.events.Event")]
+
+/**
+ *  A helper class for item renderers to use to help them determine
+ *  if they should be in the hovered or down states
+ *
+ *  @langversion 3.0
+ *  @playerversion Flash 10.1
+ *  @playerversion AIR 2.5
+ *  @productversion Flex 4.5
+ */
+public class ItemRendererInteractionStateDetector extends EventDispatcher
+{
+
+    /**
+     *  Constructor
+     *
+     *  @param components  The UIComponent to detect the hovered/down state on.
+     *                     The event listeners are attached to this object
+     *                     to figure out if it should be in the hovered or down state.
+     *
+     *  @langversion 3.0
+     *  @playerversion Flash 10.1
+     *  @playerversion AIR 2.5
+     *  @productversion Flex 4.5
+     */
+    public function ItemRendererInteractionStateDetector(component:UIComponent)
+    {
+        super();
+        this.component = component;
+
+        addHandlers();
+    }
+
+    //--------------------------------------------------------------------------
+    //
+    //  Private Properties
+    //
+    //--------------------------------------------------------------------------
+
+    /**
+     *  @private
+     *  The UIComponent to detect the hovered and down state for
+     */
+    private var component:UIComponent;
+
+    /**
+     *  @private
+     *  Timer for putting the renderer in the down state on a delay
+     *  timer because of touch input.
+     */
+    private var mouseDownSelectTimer:Timer;
+
+    /**
+     *  @private
+     *  Timer for putting the renderer in the up state.  This makes sure
+     *  even when we have a delay to select an item and someone mouses up
+     *  before that delay, the user still gets some visual feedback that
+     *  the renderer was actually selected.
+     */
+    private var mouseUpDeselectTimer:Timer;
+
+    //--------------------------------------------------------------------------
+    //
+    //  Variables
+    //
+    //--------------------------------------------------------------------------
+
+    //----------------------------------
+    //  hovered
+    //----------------------------------
+
+    /**
+     *  @private
+     *  Storage for the hovered property
+     */
+    private var _hovered:Boolean = false;
+
+    [Bindable("change")]
+    /**
+     *  Returns true if the item renderer should be put into
+     *  a hovered state.
+     *
+     *
If in mouse interactionMode, the item renderer is in the
+     *  hovered state if the mouse is over the item renderer.
+     *  In touch interaction mode, hovered does not apply.

+     *
+     *  @langversion 3.0
+     *  @playerversion Flash 10.1
+     *  @playerversion AIR 2.5
+     *  @productversion Flex 4.5
+     */
+    public function get hovered():Boolean
+    {
+        var interactionMode:String = component.getStyle("interactionMode");
+
+        if (interactionMode == InteractionMode.MOUSE && _hovered)
+            return true;
+
+        return false;
+    }
+
+    /**
+     *  @private
+     */
+    private function setHovered(value:Boolean):void
+    {
+        if (value == _hovered)
+            return;
+
+        _hovered = value;
+        invalidateState();
+    }
+
+    //----------------------------------
+    //  down
+    //----------------------------------
+
+    [Bindable("change")]
+    /**
+     *  Returns true if the item renderer should be put into
+     *  a down state.
+     *
+     *
If in touch interactionMode, the item renderer is in the
+     *  down state if the user is pressing down on the item renderer.
+     *  In mouse interaction mode, down does not apply.

+     *
+     *  @langversion 3.0
+     *  @playerversion Flash 10.1
+     *  @playerversion AIR 2.5
+     *  @productversion Flex 4.5
+     */
+    public function get down():Boolean
+    {
+        var interactionMode:String = component.getStyle("interactionMode");
+
+        if (interactionMode == InteractionMode.TOUCH && isDown())
+            return true;
+
+        return false;
+    }
+
+    //----------------------------------
+    //  mouseCaptured
+    //----------------------------------
+
+    /**
+     *  @private
+     *  Storage for the mouseCaptured property
+     */
+    private var _mouseCaptured:Boolean = false;
+
+    /**
+     *  @private
+     *  Indicates whether the mouse is down and the mouse pointer was
+     *  over the renderer when MouseEvent.MOUSE_DOWN was first dispatched.
+     *  Used to determine the skin state.
+     */
+    private function get mouseCaptured():Boolean
+    {
+        return _mouseCaptured;
+    }
+
+    /**
+     *  @private
+     */
+    private function set mouseCaptured(value:Boolean):void
+    {
+        if (value == _mouseCaptured)
+            return;
+
+        _mouseCaptured = value;
+        invalidateState();
+
+        // System mouse handlers are not needed when the renderer is not mouse captured
+        if (!value)
+            removeSystemMouseHandlers();
+    }
+
+    //--------------------------------------------------------------------------
+    //
+    //  Methods
+    //
+    //--------------------------------------------------------------------------
+
+    /**
+     *  @private
+     *  Helper method to determine if someone has down down on
+     *  the display object.
+     */
+    private function isDown():Boolean
+    {
+        return (mouseCaptured && _hovered);
+    }
+
+    /**
+     *  @private
+     *  Called when the state becomes invalid.  This just
+     *  in turn dispatches a CHANGE event.
+     */
+    private function invalidateState():void
+    {
+        dispatchEvent(new Event(Event.CHANGE));
+    }
+
+    /**
+     *  @private
+     */
+    private function addHandlers():void
+    {
+        component.addEventListener(MouseEvent.ROLL_OVER, mouseEventHandler);
+        component.addEventListener(MouseEvent.ROLL_OUT, mouseEventHandler);
+        component.addEventListener(MouseEvent.MOUSE_DOWN, mouseEventHandler);
+        component.addEventListener(MouseEvent.MOUSE_UP, mouseEventHandler);
+        component.addEventListener(MouseEvent.CLICK, mouseEventHandler);
+        component.addEventListener(TouchInteractionEvent.TOUCH_INTERACTION_START, touchInteractionStartHandler);
+    }
+
+    /**
+     *  @private
+     *  This method adds the systemManager_mouseUpHandler as an event listener to
+     *  the stage and the systemManager so that it gets called even if mouse events
+     *  are dispatched outside of the renderer. This is needed for example when the
+     *  user presses the renderer, drags out and releases the renderer.
+     */
+    private function addSystemMouseHandlers():void
+    {
+        var systemManager:ISystemManager = component.systemManager;
+
+        if (systemManager)
+        {
+            systemManager.getSandboxRoot().addEventListener(
+                MouseEvent.MOUSE_UP, systemManager_mouseUpHandler, true /* useCapture */);
+
+            systemManager.getSandboxRoot().addEventListener(
+                SandboxMouseEvent.MOUSE_UP_SOMEWHERE, systemManager_mouseUpHandler);
+        }
+    }
+
+    /**
+     *  @private
+     *  This method removes the systemManager_mouseUpHandler as an event
+     *  listener from the stage and the systemManager.
+     */
+    private function removeSystemMouseHandlers():void
+    {
+        var systemManager:ISystemManager = component.systemManager;
+
+        if (systemManager)
+        {
+            systemManager.getSandboxRoot().removeEventListener(
+                MouseEvent.MOUSE_UP, systemManager_mouseUpHandler, true /* useCapture */);
+
+            systemManager.getSandboxRoot().removeEventListener(
+                SandboxMouseEvent.MOUSE_UP_SOMEWHERE, systemManager_mouseUpHandler);
+        }
+    }
+
+    /**
+     *  @private
+     *  Starts timer to select the renderer
+     */
+    private function startSelectRendererAfterDelayTimer():void
+    {
+        var touchDelay:Number = component.getStyle("touchDelay");
+
+        if (touchDelay > 0)
+        {
+            mouseDownSelectTimer = new Timer(touchDelay, 1);
+            mouseDownSelectTimer.addEventListener(TimerEvent.TIMER_COMPLETE, mouseDownSelectTimer_timerCompleteHandler);
+            mouseDownSelectTimer.start();
+        }
+        else
+        {
+            mouseDownSelectTimer_timerCompleteHandler();
+        }
+    }
+
+    /**
+     *  @private
+     */
+    private function stopSelectRendererAfterDelayTimer():void
+    {
+        if (mouseDownSelectTimer)
+        {
+            mouseDownSelectTimer.stop();
+            mouseDownSelectTimer = null;
+        }
+    }
+
+    /**
+     *  @private
+     *  Starts timer to deselect the renderer if the mouseup happened too quickly
+     *  after the mousedown so that no mousedown state was entered in to.
+     */
+    private function startDeselectRendererAfterDelayTimer():void
+    {
+        var touchDelay:Number = component.getStyle("touchDelay");
+
+        if (touchDelay > 0)
+        {
+            // just use touchDelay rather than have minimumDownStateTime like Button has
+            mouseUpDeselectTimer = new Timer(touchDelay, 1);
+            mouseUpDeselectTimer.addEventListener(TimerEvent.TIMER_COMPLETE, mouseUpDeselectTimer_timerCompleteHandler);
+            mouseUpDeselectTimer.start();
+        }
+        else
+        {
+            mouseUpDeselectTimer_timerCompleteHandler();
+        }
+    }
+
+    /**
+     *  @private
+     */
+    private function stopDeselectRendererAfterDelayTimer():void
+    {
+        if (mouseUpDeselectTimer)
+        {
+            mouseUpDeselectTimer.stop();
+            mouseUpDeselectTimer = null;
+        }
+    }
+
+    //--------------------------------------------------------------------------
+    //
+    //  Event Handlers
+    //
+    //--------------------------------------------------------------------------
+
+    /**
+     *  @private
+     *  This method handles the mouse events, calls the clickHandler method
+     *  where appropriate and updates the hovered and
+     *  mouseCaptured properties.
+     *
+     *
This method gets called to handle MouseEvent.ROLL_OVER,
+     *  MouseEvent.ROLL_OUT, MouseEvent.MOUSE_DOWN,
+     *  MouseEvent.MOUSE_UP, and MouseEvent.CLICK events.

+     *
+     *  @param event The Event object associated with the event.
+     */
+    private function mouseEventHandler(event:Event):void
+    {
+        var mouseEvent:MouseEvent = event as MouseEvent;
+        switch (event.type)
+        {
+            case MouseEvent.ROLL_OVER:
+            {
+                // if the user rolls over while holding the mouse button
+                if (mouseEvent.buttonDown && !mouseCaptured)
+                    return;
+                setHovered(true);
+                break;
+            }
+
+            case MouseEvent.ROLL_OUT:
+            {
+                setHovered(false);
+                break;
+            }
+
+            case MouseEvent.MOUSE_DOWN:
+            {
+                // since mouseDowns are cancellable, let's check to see
+                // if anyone's handled it already
+                if (event.isDefaultPrevented())
+                    break;
+
+                // if we were going to unhighlight ourselves, don't do it as we
+                // are just going to highlight again
+                stopDeselectRendererAfterDelayTimer();
+
+                // When the button is down we need to listen for mouse events outside the renderer so that
+                // we update the state appropriately on mouse up.  Whenever mouseCaptured changes to false,
+                // it will take care to remove those handlers.
+                addSystemMouseHandlers();
+
+                // if we're in touchMode, let's delay our selection until later
+                // otherwise, when touch scrolling, the renderer might flicker
+                if (component.getStyle("interactionMode") == InteractionMode.TOUCH)
+                {
+                    startSelectRendererAfterDelayTimer();
+                }
+                else
+                {
+                    mouseCaptured = true;
+                }
+
+                // we don't call event.preventDefault() here since List.item_mouseDownHandler will call this anyways
+                break;
+            }
+
+            case MouseEvent.MOUSE_UP:
+            {
+				// FIXME (rfrishbe): we should be setting hovered=true here just like Button does.
+                // we're only not doing it as a temporary thing so tests don't break.  The reason it should
+                // be true is because if someone hovers over us with the mousedown and then releases up,
+                // the item they release up on should be hovered.
+                //setHovered(true);
+
+                if (mouseCaptured)
+                {
+                    mouseCaptured = false;
+                }
+
+                if (mouseDownSelectTimer && mouseDownSelectTimer.running)
+                {
+                    // We never even flashed the down state for this click operation.
+                    // There are two possibilities for being here:
+                    //    1) mouseCaptured wasn't set to true (meaning this is the first click)
+                    //    2) mouseCaptured was true (meaning a click operation hadn't finished
+                    //       and we find ourselves in here again--perhaps it was a doublet tap).
+                    // In either case, let's make sure that down state shows up for a little bit
+                    // before going back to the up state.
+
+                    // stop the original timer, put it in mouse down state, then start a new
+                    // timer to undo the mouse down state
+                    stopSelectRendererAfterDelayTimer();
+                    mouseCaptured = true;
+                    startDeselectRendererAfterDelayTimer();
+                }
+
+                break;
+            }
+
+            case MouseEvent.CLICK:
+            {
+                return;
+            }
+        }
+    }
+
+    /**
+     *  @private
+     */
+    private function systemManager_mouseUpHandler(event:Event):void
+    {
+        // If the target is the renderer, do nothing because the
+        // mouseEventHandler will be handle it.
+        if (event.target == component || component.contains(event.target as DisplayObject))
+        {
+            return;
+        }
+
+        mouseCaptured = false;
+
+        // If the mouseDownSelectTimer is still running,
+        // we don't want to ever go in to the down state in this case, so stop it
+        if (mouseDownSelectTimer && mouseDownSelectTimer.running)
+            stopSelectRendererAfterDelayTimer();
+    }
+
+    /**
+     *  @private
+     */
+    private function touchInteractionStartHandler(event:TouchInteractionEvent):void
+    {
+        // if we have a timer going on, let's stop it to make sure we don't
+        // select the renderer later
+        stopSelectRendererAfterDelayTimer();
+
+        // cancel the rollover/clickdown on and go back to a normal state
+        setHovered(false);
+        mouseCaptured = false;
+    }
+
+    /**
+     *  @private
+     */
+    private function mouseDownSelectTimer_timerCompleteHandler(event:TimerEvent = null):void
+    {
+        mouseCaptured = true;
+    }
+
+    /**
+     *  @private
+     */
+    private function mouseUpDeselectTimer_timerCompleteHandler(event:TimerEvent = null):void
+    {
+        mouseCaptured = false;
+    }
+
+    /**
+     *  @private
+     */
+    private function anyButtonDown(event:MouseEvent):Boolean
+    {
+        var type:String = event.type;
+        // TODO (rfrishbe): we should not code to literals here (and other places where this code is used)
+        return event.buttonDown || (type == "middleMouseDown") || (type == "rightMouseDown");
+    }
+
+
+}
+}


Adding collisions between player and tiles

--- src/heartattacks/states/PlayState.as
+++ src/heartattacks/states/PlayState.as
@@ -9,6 +9,8 @@
 	import org.flixel.FlxState;
 	import org.flixel.FlxText;
 	import org.flixel.FlxTilemap;
+	import org.flixel.FlxObject;
+	import org.flixel.FlxG;

 	/**
 	 * ...
@@ -22,14 +24,24 @@
 		[Embed(source = "../../../res/tilemaps/Map.txt", mimeType = "application/octet-stream")]
 		private var Map:Class;

+		private var player:Player;
+		private var level:FlxTilemap;
+
 		override public function create():void
 		{
 			this.add(new FlxText(100, 100, 100, "Hello World!"));
-		    this.add(new Player(300, 400));
+			this.player = new Player(300, 400);
+		    this.add(this.player);

-			var map:FlxTilemap = new FlxTilemap();
-			map.loadMap(new Map(), MapImage, 50, 50);
-			this.add(map);
+			this.level = new FlxTilemap();
+			this.level.loadMap(new Map(), MapImage, 50, 50);
+			this.add(this.level);
+		}
+
+		override public function update():void
+		{
+			super.update();
+			FlxG.collide(this.level, this.player);
 		}
 	}
 }


Transferred from the Adobe Open Source Subversion Repository

Revision: 18146
Author:   chiedozi@adobe.com
Date:     2010-10-14T00:23:22.539629Z

Log Message:
-----------
View and ViewNavigator PARB changes.

MobileApplication
canCancelBackKeyBehavior has been renamed exitApplicationOnBackKey (also impacts ViewNavigator and TabbedViewNavigator)

ViewNavigator
backKeyHandler method is now mx_internal, it is no longer part of public api
useDefaultTransitions property has been removed from the framework
canRemoveCurrentView is now mx_internal, it is no longer part of the public api
createVisibiliyAnimation() method has been removed and replaced with the createActionBarShowEffect() and createActionBarHideEffect() methods.
commitViewChange, beginViewChanged and endViewChanged have been renamed to commitNavigatorAction, committingNavigatorAction and navigatorActionCommitted.
maintainNavigationStack removed from ViewNavigator and moved to TabbedViewNavigator

View
VIEW_ACTIVATE, VIEW_DEACTIVATE and REMOVING have been removed from the FlexEvent class and added to the new ViewNavigatorEvent class.
ViewNavigatorEvent class now has a "action" property that indicates what the last committed navigation operation was
ViewNavigatorAction enum class added and is used to populate the action property of a ViewNavigatorEvent
View now dispatches a "backKeyPressed" (FlexEvent.BACK_KEY_PRESSED) event when the back device key is pressed.  This is a cancelable event.  When cancelled, the MobileApplication's default back behavior will not run.

TabbedViewNavigator
Added createTabBarShowEffect() and createTabBarHideEffect() methods
Added a maintainNavigationStack property to the view navigator.  When false, the navigation stack of a navigator is cleared when deactivated.

TabbedMobileApplication
Added maintainNavigationStack proxy property to the application

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

Modified Paths:
--------------
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobilecomponents/src/spark/components/TabbedViewNavigator.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobilecomponents/src/spark/components/View.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobilecomponents/src/spark/components/supportClasses/ViewNavigatorBase.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/tests/performance/mobile/ComponentCatalog/src/ScriptRunner.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobilecomponents/src/spark/components/MobileApplication.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobilecomponents/src/spark/components/TabbedMobileApplication.as</path>
<path kind="file" action="A">/private/flex/sdk/branches/hero_private/frameworks/projects/mobilecomponents/src/spark/components/supportClasses/ViewNavigatorAction.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobilecomponents/src/spark/components/supportClasses/MobileApplicationBase.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/framework/src/mx/events/FlexEvent.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/tests/performance/mobile/ComponentCatalog/src/views/SearchView.mxml</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobilecomponents/src/spark/components/ViewNavigator.as</path>
<path kind="file" action="A">/private/flex/sdk/branches/hero_private/frameworks/projects/mobilecomponents/src/spark/events/ViewNavigatorEvent.as</path>

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

--- frameworks/projects/mobilecomponents/src/spark/components/TabbedViewNavigatorApplication.as
+++ frameworks/projects/mobilecomponents/src/spark/components/TabbedViewNavigatorApplication.as
@@ -50,6 +50,7 @@
      *  @private
      */
     private static const NAVIGATORS_PROPERTY_FLAG:uint = 1 << 0;
+    private static const MAINTAIN_NAVIGATION_STACK_PROPERTY_FLAG:uint = 1 << 1;

     //--------------------------------------------------------------------------
     //
@@ -123,9 +124,12 @@
     /**
      *  @private
      */
-    override public function get canCancelBackKeyBehavior():Boolean
-    {
-        return navigator && navigator.canCancelBackKeyBehavior;
+    override public function get exitApplicationOnBackKey():Boolean
+    {
+    	if (navigator)
+    		return navigator.exitApplicationOnBackKey;
+
+        return super.exitApplicationOnBackKey;
     }

     //----------------------------------
@@ -199,6 +203,48 @@
             navigatorProperties.navigators = value;
     }

+    //----------------------------------
+    //  maintainNavigationStack
+    //----------------------------------
+    /**
+     *  This property indicates whether the navigation stack of the view
+     *  should remain intact when the navigator is deactivated by its
+     *  parent navigator.  If set to true, when reactivated the view history
+     *  will remain the same.  If false, the navigator will display the
+     *  first view in its navigation stack.
+     *
+     *  @default true
+     *
+     *  @see spark.components.TabbedViewNavigator
+     *
+     *  @langversion 3.0
+     *  @playerversion Flash 10.1
+     *  @playerversion AIR 2.5
+     *  @productversion Flex 4.5
+     */
+    public function get maintainNavigationStack():Boolean
+    {
+        if (navigator)
+            return navigator.maintainNavigationStack;
+        else
+            return navigatorProperties.maintainNavigationStack;
+    }
+
+    /**
+     *  @private
+     */
+    public function set maintainNavigationStack(value:Boolean):void
+    {
+        if (navigator)
+        {
+            navigator.maintainNavigationStack = value;
+            navigatorProperties = BitFlagUtil.update(navigatorProperties as uint,
+                MAINTAIN_NAVIGATION_STACK_PROPERTY_FLAG, true);
+        }
+        else
+            navigatorProperties.maintainNavigationStack = value;
+    }
+
     //--------------------------------------------------------------------------
     //
     //  Overridden Methods: MobileApplicationBase
@@ -318,6 +364,13 @@
                     NAVIGATORS_PROPERTY_FLAG, true);
             }

+            if (navigatorProperties.maintainNavigationStack !== undefined)
+            {
+                navigator.maintainNavigationStack = navigatorProperties.maintainNavigationStack;
+                newNavigatorProperties = BitFlagUtil.update(newNavigatorProperties,
+                    MAINTAIN_NAVIGATION_STACK_PROPERTY_FLAG, true);
+            }
+
             // Set the stage focus to the navigator
             systemManager.stage.focus = navigator;
         }
@@ -332,8 +385,10 @@

         if (instance == navigator)
         {
+        	// FIXME (chiedozi): maintainNavigationStack check ISSET
             // Always want to save the navigation stack
-            navigatorProperties = {navigators:navigator.navigators};
+            navigatorProperties = {navigators:navigator.navigators,
+                                   maintainNavigationStack:navigator.maintainNavigationStack};
         }
     }
 }


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

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

 package mx.controls.advancedDataGridClasses
 {


Transferred from the Adobe Open Source Subversion Repository

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

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

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

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

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

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

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

--- frameworks/projects/advancedgrids/src/mx/controls/advancedDataGridClasses/AdvancedDataGridColumnGroup.as
+++ frameworks/projects/advancedgrids/src/mx/controls/advancedDataGridClasses/AdvancedDataGridColumnGroup.as
@@ -0,0 +1,273 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+//  ADOBE SYSTEMS INCORPORATED
+//  Copyright 2009 Adobe Systems Incorporated
+//  All Rights Reserved.
+//
+//  NOTICE: Adobe permits you to use, modify, and distribute this file
+//  in accordance with the terms of the license agreement accompanying it.
+//
+////////////////////////////////////////////////////////////////////////////////
+
+package mx.controls.advancedDataGridClasses
+{
+import flash.events.Event;
+
+[DefaultProperty("children")]
+
+/**
+ *  Use the AdvancedDataGridColumnGroup class to specify column groups for
+ *  the AdvancedDataGrid control.
+ *  You can specify one or more AdvancedDataGridColumn classes as children of
+ *  the AdvancedDataGridColumnGroup class, or nest AdvancedDataGridColumnGroup classes
+ *  to create nested column groups.
+ *  The AdvancedDataGrid.columnGroup property
+ *  takes an Array of AdvancedDataGridColumnGroup instances to specify the column groups.
+ *
+ *
The following example uses the AdvancedDataGridColumnGroup class to define
+ *  a column group named Revenues that contains two columns: Actual and Estimate.

+ *
+ *

+ *  <mx:AdvancedDataGrid id="myADG"
+ *       dataProvider="{dpFlat}"
+ *       width="100%" height="100%">
+ *       <mx:groupedColumns>
+ *           <mx:AdvancedDataGridColumn dataField="Region"/>
+ *           <mx:AdvancedDataGridColumn dataField="Territory"/>
+ *           <mx:AdvancedDataGridColumn dataField="Territory_Rep"
+ *               headerText="Territory Rep"/>
+ *           <mx:AdvancedDataGridColumnGroup headerText="Revenues">
+ *               <mx:AdvancedDataGridColumn dataField="Actual"/>
+ *               <mx:AdvancedDataGridColumn dataField="Estimate"/>
+ *           </mx:AdvancedDataGridColumnGroup>
+ *       </mx:groupedColumns>
+ *  </mx:AdvancedDataGrid>

+ *
+ *  @mxml
+ *
+ *
You use the <mx.AdvancedDataGridColumnGroup> tag to configure a column
+ *  group of a AdvancedDataGrid control.
+ *  You specify the <mx.AdvancedDataGridColumnGroup> tag as a child
+ *  of the groupedColumns property in MXML.
+ *  The <mx.AdvancedDataGridcolumn> tag defines the following tag attributes:

+ *
+ *

+ *  <mx:AdvancedDataGridColumn
+ *  Properties
+ *    children="No default"
+ *    childrenDragEnabled="true|false"
+ *  />
+ *

+ *
+ *  @see mx.controls.AdvancedDataGrid
+ *  @see mx.controls.AdvancedDataGrid#columnGroup
+ *
+*
+*  @langversion 3.0
+*  @playerversion Flash 9
+*  @playerversion AIR 1.1
+*  @productversion Flex 3
+*/
+public class AdvancedDataGridColumnGroup extends AdvancedDataGridColumn
+{
+    include "../../core/Version.as";
+
+    //--------------------------------------------------------------------------
+    //
+    //  Constructor
+    //
+    //--------------------------------------------------------------------------
+
+    /**
+     *  Constructor.
+     *
+     *  @param columnName The name of the field in the data provider
+     *  associated with the column group, and the text for the header cell of this
+     *  column.  This is equivalent to setting the dataField
+     *  and headerText properties.
+     *
+     *
+     *  @langversion 3.0
+     *  @playerversion Flash 9
+     *  @playerversion AIR 1.1
+     *  @productversion Flex 3
+     */
+    public function AdvancedDataGridColumnGroup(columnName:String = null)
+    {
+        super(columnName);
+    }
+
+    //--------------------------------------------------------------------------
+    //
+    //  Properties
+    //
+    //--------------------------------------------------------------------------
+
+    //----------------------------------
+    // children
+    //----------------------------------
+
+    /**
+     *  An Array of AdvancedDataGridColumn instances that define the columns
+     *  of the column group.
+     *
+     *  @langversion 3.0
+     *  @playerversion Flash 9
+     *  @playerversion AIR 1.1
+     *  @productversion Flex 3
+     */
+    public var children:Array = [];
+
+    //----------------------------------
+    // childrenDragEnabled
+    //----------------------------------
+
+    /**
+     *  Specifies whether the child columns can be dragged to reposition them in the group.
+     *  If false, child columns cannot be reordered even if
+     *  the AdvancedDataGridColumn.dragEnabled property is set
+     *  to true for a child column.
+     *
+     *  @default true
+     *
+     *  @langversion 3.0
+     *  @playerversion Flash 9
+     *  @playerversion AIR 1.1
+     *  @productversion Flex 3
+     */
+    public var childrenDragEnabled:Boolean = true;
+
+    //----------------------------------
+    // width
+    //----------------------------------
+
+    private var _width:Number = 100;
+
+    /**
+     *  @private
+     */
+    override public function get width():Number
+    {
+        if(this.children && this.children.length > 0)
+            return _width;
+        else
+            return super.width;
+    }
+
+    /**
+     *  @private
+     */
+    override public function set width(value:Number):void
+    {
+        if(this.children && this.children.length > 0)
+        {
+            _width = value;
+            dispatchEvent(new Event("widthChanged"));
+        }
+        else
+        {
+            super.width = value;
+        }
+    }
+    //--------------------------------------------------------------------------
+    //
+    //  Overriden Methods
+    //
+    //--------------------------------------------------------------------------
+
+    /**
+     *  @private
+     */
+    override protected function copyProperties(col:AdvancedDataGridColumn):void
+    {
+    	super.copyProperties(col);
+
+    	// copy the remaining properties
+    	AdvancedDataGridColumnGroup(col).childrenDragEnabled = childrenDragEnabled;
+    }
+
+    /**
+     *  @private
+     */
+    override public function clone():AdvancedDataGridColumn
+    {
+    	// make a new column group
+    	var col:AdvancedDataGridColumnGroup = new AdvancedDataGridColumnGroup();
+
+    	// copy the properties
+    	copyProperties(col);
+
+    	// check the children property and clone the columns and column groups
+    	var n:int = children.length;
+    	for (var i:int = 0; i < n; i++)
+    	{
+    		col.children[i] = children[i].clone();
+    	}
+    	return col;
+    }
+
+    //--------------------------------------------------------------------------
+    //
+    //  Methods
+    //
+    //--------------------------------------------------------------------------
+
+    /**
+     *  Returns the data from the data provider for the specified Object.
+     *
+     *
This method is useful when the data for a row contains nested Objects.
+     *  For example, a row is defined by the following data in the data provider:

+     *

+     *  row = { name:"Adobe", address : {
+     *                                    street  : "345 Park Avenue",
+     *                                    city    : "San Jose",
+     *                                    state   : "CA 95110",
+     *                                    country : "USA"
+     *                                  }
+     *                   }

+     *
+     *
You then assign the "address" field to the dataField property
+     *  of the AdvancedDataGridColumnGroup instance. A call to  itemToData(row)
+     *  then returns the address object.

+     *
+     *
This method is similar to the
+     *  AdvancedDataGridColumn.itemToLabel() method.

+     *
+     *  @param data The data provider element.
+     *
+     *  @return The data from the data provider for the specified Object.
+     *
+     *  @see mx.controls.advancedDataGridClasses.AdvancedDataGridColumn
+     *
+     *  @langversion 3.0
+     *  @playerversion Flash 9
+     *  @playerversion AIR 1.1
+     *  @productversion Flex 3
+     */
+    public function itemToData(data:Object):*
+    {
+       if (!data)
+          return null;
+
+       if (labelFunction != null)
+       {
+          data = labelFunction(data, this);
+          return data;
+       }
+       if (typeof(data) == "object" || typeof(data) == "xml")
+       {
+        try
+        {
+            if(dataField !=null)
+                data = data[dataField];
+        }
+        catch(e:Error)
+        {
+           data = null;
+        }
+       }
+       return data;
+    }
+}
+
+}


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

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