Transferred from the Adobe Open Source Subversion Repository

Revision: 1968
Author:   jimurphy@adobe.com
Date:     2008-06-05T15:31:56.961691Z

Log Message:
-----------
Merge 3.0.x revisions [1940,1954] -> trunk

Modified Paths:
--------------
<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/airframework/src/mx/core/FlexHTMLLoader.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/airframework/src/mx/controls/FileSystemEnumerationMode.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/airframework/src/mx/controls/FileSystemHistoryButton.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/airframework/src/mx/controls/FileSystemTree.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/in/air/mac/AIR Integration Kit.tbz2</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/airframework/src/mx/utils/DirectoryEnumeration.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/airframework/src/mx/utils/DirectoryEnumerationMode.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/airframework/src/mx/controls/FileSystemComboBox.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/airframework/src/mx/events/AIREvent.as</path>
<path kind="dir" action="M">/flex/sdk/trunk</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/airframework/src/mx/controls/FileSystemList.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/airframework/src/mx/events/FileEvent.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/airframework/src/mx/core/windowClasses/StatusBar.as</path>
<path kind="file" action="M">/flex/sdk/trunk/in/air/win/AIR Integration Kit.zip</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/airframework/src/mx/controls/FileSystemDataGrid.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/airframework/src/mx/skins/halo/ApplicationTitleBarBackgroundSkin.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/airframework/src/mx/core/WindowedApplication.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/airframework/src/mx/managers/NativeDragManagerImpl.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/airframework/src/mx/events/FlexNativeMenuEvent.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/airframework/src/mx/skins/halo/WindowMinimizeButtonSkin.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/airframework/src/mx/skins/halo/WindowMaximizeButtonSkin.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/airframework/src/mx/skins/halo/WindowRestoreButtonSkin.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/airframework/src/mx/skins/halo/StatusBarBackgroundSkin.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/airframework/src/mx/core/IWindow.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/airframework/src/mx/controls/FileSystemSizeDisplayMode.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/airframework/src/mx/managers/WindowedSystemManager.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/airframework/src/mx/events/FlexNativeWindowBoundsEvent.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/airframework/src/mx/skins/halo/WindowBackground.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/airframework/src/mx/core/windowClasses/TitleBar.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/airframework/src/mx/skins/halo/WindowCloseButtonSkin.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/airframework/src/mx/controls/FlexNativeMenu.as</path>

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

--- frameworks/projects/airframework/src/mx/events/FlexNativeWindowBoundsEvent.as
+++ frameworks/projects/airframework/src/mx/events/FlexNativeWindowBoundsEvent.as
@@ -23,7 +23,7 @@
  *  @see mx.core.Window
  *  @see mx.core.WindowedApplication
  *
- *  @productversion Apollo 1.0
+ *  @playerversion AIR 1.1
  */
 public class FlexNativeWindowBoundsEvent extends NativeWindowBoundsEvent
 {


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

--- frameworks/projects/automation/src/mx/automation/events/AutomationAirEvent.as
+++ frameworks/projects/automation/src/mx/automation/events/AutomationAirEvent.as
@@ -0,0 +1,93 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+//  ADOBE SYSTEMS INCORPORATED
+//  Copyright 2009 Adobe Systems Incorporated
+//  All Rights Reserved.
+//
+//  NOTICE: Adobe permits you to use, modify, and distribute this file
+//  in accordance with the terms of the license agreement accompanying it.
+//
+////////////////////////////////////////////////////////////////////////////////
+
+package mx.automation.events
+{
+	import flash.events.Event;
+
+	/**
+	 *  The AutomationAirEvent class represents event objects that are dispatched
+	 *  by the AutomationManager. The event is dispatched to indicate the creation
+	 *  of a new window in AIR. Too libraries can listen to this, communicate the
+	 *  same to the parent and do the needfult to get the handle of the window
+	 *  and associate the same with the id of the window passed.
+	 *
+	 *  @langversion 3.0
+	 *  @playerversion Flash 9
+	 *  @playerversion AIR 1.1
+	 *  @productversion Flex 4
+	 */
+	public class AutomationAirEvent extends Event
+	{
+		include "../../core/Version.as";
+
+		//--------------------------------------------------------------------------
+		//
+		//  Class constants
+		//
+		//--------------------------------------------------------------------------
+
+
+		public static const NEW_AIR_WINDOW:String = "newAirWindow";
+
+
+		//--------------------------------------------------------------------------
+		//
+		//  Constructor
+		//
+		//--------------------------------------------------------------------------
+
+		/**
+		 *  Constructor.
+		 *
+		 *  @param type The event type; indicates the action that caused the event.
+		 *
+		 *  @param bubbles Whether the event can bubble up the display list hierarchy.
+		 *
+		 *  @param cancelable Whether the behavior associated with the event can be prevented.
+		 *
+		 *
+		 *  @langversion 3.0
+		 *  @playerversion Flash 9
+		 *  @playerversion AIR 1.1
+		 *  @productversion Flex 4
+		 */
+		public function AutomationAirEvent(type:String = NEW_AIR_WINDOW,
+										   bubbles:Boolean = true,
+										   cancelable:Boolean = true,
+										   windowId:String = null )
+		{
+			super(type, bubbles, cancelable);
+			this.windowId = windowId;
+		}
+
+		//--------------------------------------------------------------------------
+		//
+		//  Properties
+		//
+		//--------------------------------------------------------------------------
+		public var windowId:String;
+		//--------------------------------------------------------------------------
+		//
+		//  Overridden methods: Event
+		//
+		//--------------------------------------------------------------------------
+
+		/**
+		 *  @private
+		 */
+		override public function clone():Event
+		{
+			return new AutomationAirEvent(type, bubbles, cancelable,windowId);
+		}
+	}
+
+}


Fix animation rendering issues by converting the Scheduler class to only use a Timer instance and deferring redraws to the screen update (vertical blanking) period.

--- flare/src/flare/animate/Scheduler.as
+++ flare/src/flare/animate/Scheduler.as
@@ -1,10 +1,8 @@
 package flare.animate
 {
-	import flash.display.Shape;
-	import flash.events.Event;
 	import flash.events.TimerEvent;
 	import flash.utils.Timer;
-
+
 	/**
 	 * Scheduler that oversees animation and time-based processing. Uses an
 	 * internal timer to regularly invoke the current set of scheduled
@@ -13,7 +11,7 @@
 	 * the ISchedulable interface will need to be scheduled. Use the
 	 * <tt>Scheduler.instance</tt> property, and not the constructor, to get
 	 * a reference to the active scheduler.
-	 *
+	 *
 	 *
By default, the Scheduler issues updates to all scheduled items each
 	 * time the Flash Player advances to the next frame, as reported by the
 	 * Event.ENTER_FRAME event. To instead set the update interval
@@ -24,26 +22,20 @@
 		private static const _instance:Scheduler = new Scheduler(_Lock);
 		/** The default Scheduler instance. */
 		public static function get instance():Scheduler { return _instance; }
-
+
 		private var _scheduled:Array; // list of all currently scheduled items
 		private var _ids:Object;      // map of all named items
 		private var _timer:Timer;     // timer for interval-based scheduling
-		private var _obj:Shape;       // shape for getting ENTER_FRAME events
-
+
 		/**
 		 * Sets the timer interval (in milliseconds) at which the scheduler
-		 * should process events. If this value is greater than zero, a
-		 * Timer instance will be used to trigger scheduler
-		 * updates at the given interval. If this value is less than or equal
-		 * to zero (the default), scheduler updates will be issued with each
-		 * time the Flash Player advances to the next frame according to the
-		 * Event.ENTER_FRAME event.
+		 * should process events.
 		 */
 		public function get timerInterval():Number { return _timer.delay; }
 		public function set timerInterval(t:Number):void {
 			pause(); _timer.delay = (t>0 ? t : 0); play();
 		}
-
+
 		/**
 		 * Creates a new Scheduler--this constructor should be not used;
 		 * instead use the instance property.
@@ -53,39 +45,31 @@
 			if (lock == _Lock) {
 				_scheduled = [];
 				_ids = {};
-				_obj = new Shape();
 				_timer = new Timer(0);
-				_timer.addEventListener(TimerEvent.TIMER, tick);
+				_timer.addEventListener(TimerEvent.TIMER, tick, false, 0, true);
 			} else {
 				throw new Error("Invalid constructor. Use Scheduler.instance.");
 			}
 		}
-
+
 		/**
 		 * Plays the scheduler, allowing it to process events.
 		 */
 		private function play():void
 		{
-			if (timerInterval <= 0) {
-				if (!_obj.hasEventListener(Event.ENTER_FRAME))
-					_obj.addEventListener(Event.ENTER_FRAME, tick);
-			} else if (!_timer.running) {
+			if (!_timer.running) {
 				_timer.start();
 			}
 		}
-
+
 		/**
 		 * Pauses the scheduler, so that events are not processed.
 		 */
 		private function pause():void
 		{
-			if (timerInterval <= 0) {
-				_obj.removeEventListener(Event.ENTER_FRAME, tick);
-			} else {
-				_timer.stop();
-			}
+			_timer.stop();
 		}
-
+
 		/**
 		 * Adds an object to the scheduling list.
 		 * @param item a schedulable object to add
@@ -99,7 +83,7 @@
 			_scheduled.push(item);
 			play();
 		}
-
+
 		/**
 		 * Removes an object from the scheduling list.
 		 * @param item the object to remove
@@ -117,10 +101,10 @@
 			}
 			return (idx >= 0);
 		}
-
+
 		/**
 		 * Indicates if an object with the given id is currently in the
-		 * scheduler queue.
+		 * scheduler queue.
 		 * @param id the id to check for
 		 * @return true if an object with that id is currently scheduled,
 		 *  false otherwise
@@ -129,7 +113,7 @@
 		{
 			return _ids[id] != undefined;
 		}
-
+
 		/**
 		 * Looks up the scheduled object indicated by the given id, if any.
 		 * @param id the id to lookup
@@ -139,9 +123,9 @@
 		{
 			return id==null ? null : _ids[id];
 		}
-
+
 		/**
-		 * Cancels any scheduled object with a matching id.
+		 * Cancels any scheduled object with a matching id.
 		 * @param id the id to cancel
 		 * @return true if an object was found and cancelled, false otherwise
 		 */
@@ -156,27 +140,30 @@
 				return false;
 			}
 		}
-
+
 		/**
 		 * Frame/timer callback that invokes each scheduled object.
 		 * @param event the event that triggered the callback
 		 */
-		public function tick(event:Event) : void
-        {
-        	// all events will see the same timestamp
-        	var time:Number = new Date().time;
-
-        	for each (var s:ISchedulable in _scheduled) {
-        		if (s.evaluate(time))
-        			remove(s);
-        	}
-        	if (_scheduled.length == 0) {
-        		pause();
-        	}
-        }
-
+		public function tick(event:TimerEvent) : void
+		{
+			// all events will see the same timestamp
+			var time:Number = new Date().time;
+
+			for each (var s:ISchedulable in _scheduled) {
+				if (s.evaluate(time))
+					remove(s);
+			}
+			if (_scheduled.length == 0) {
+				pause();
+			}
+
+			// Defer rendering to the screen update (vertical blanking) period
+			event.updateAfterEvent();
+		}
+
 	} // end of class Scheduler
 }

 // scheduler lock class to enforce singleton pattern
-class _Lock { }+class _Lock { }


fixed title_tf handling

fixed title_tf handling

--- src/eu/stefaner/elasticlists/ui/facetboxes/geo/MapMarker.as
+++ src/eu/stefaner/elasticlists/ui/facetboxes/geo/MapMarker.as
@@ -12,11 +12,9 @@
 		private static const MIN_HEIGHT : Number = 2;
 		private static const MAX_HEIGHT : Number = 12;
 		public var location : Location = new Location(0, 0);
-		public var defaultSize : Number;

 		public function MapMarker() {
 			super();
-			defaultSize = width;
 		}

 		override public function init(c : FacetBox, d : FacetValue) : void {
@@ -36,7 +34,7 @@
 				addChild(selectionMarker);
 			}
 			super.initGraphics();
-			removeChild(title_tf);
+			title_tf.visible = false;
 		}

 		override public function updateStats() : void {


Transferred from the Adobe Open Source Subversion Repository

Revision: 3593
Author:   smgilson@adobe.com
Date:     2008-10-13T17:42:13.039023Z

Log Message:
-----------
ASdoc updates

Checkin Test Passed: Yes
QA: No
Bug:
Doc: No

Modified Paths:
--------------
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/mx/components/baseClasses/FxRange.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/mx/components/baseClasses/FxTrackBase.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/mx/components/baseClasses/FxSlider.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/mx/components/baseClasses/FxScrollBar.as</path>

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

--- frameworks/projects/spark/src/spark/components/supportClasses/ScrollBarBase.as
+++ frameworks/projects/spark/src/spark/components/supportClasses/ScrollBarBase.as
@@ -21,16 +21,18 @@
 import mx.core.IViewport;

 /**
- *  A ScrollBar control is used to help position
+ *  The FxScrollBar class helps to position
  *  the portion of data that is displayed when there is too much data
- *  to fit in a display area.
+ *  to fit in a display area.
+ *  The FxScrollBar class displays a pair of scrollbars and a viewport.
+ *  A viewport is a UIComponent that implements IViewport, such as Group.
  *
- *
This control extends the Range class and
+ *
This control extends the FxTrackBase class and
  *  is the base class for the FxHScrollBar and FxVScrollBar
  *  controls.

  *
- *
A ScrollBar consists of a track, a variable-size scroll thumb, and
- *  two optional arrow buttons. The ScrollBar control uses four parameters
+ *
A scroll bar consists of a track, a variable-size scroll thumb, and
+ *  two optional arrow buttons. The FxScrollBar class uses four parameters
  *  to calculate its display state:

  *
  *

@@ -44,6 +46,8 @@
  *    range, where the range is the set of values between
  *    the minimum range value and the maximum range value.

  *

+ *
+ *  @see mx.core.IViewport
  */
 public class FxScrollBar extends FxTrackBase
 {
@@ -83,18 +87,19 @@
     [SkinPart(required="false")]

     /**
-     *  decrementButton is an optional SkinPart that defines a button
-     *  that, when pressed, will step the scrollbar "up", which is equivalent
-     *  to a decreasing step in the value property.
+     *  An optional skin part that defines a button
+     *  that, when pressed, steps the scrollbar up.
+     *  This is equivalent to a decreasing step to the value property.
      */
     public var decrementButton:FxButton;

     [SkinPart(required="false")]

     /**
-     *  incrementButton is an optional SkinPart that defines a button
-     *  that, when pressed, will step the scrollbar "down", which is equivalent
-     *  to a increasing step in the value property.
+     *  An optional skin part that defines a button
+     *  that, when pressed, steps the scrollbar down.
+     *  This is equivalent
+     *  to an increasing step to the value property.
      */
     public var incrementButton:FxButton;

@@ -125,7 +130,10 @@
     //
     //--------------------------------------------------------------------------

-    override public function set valueInterval(value:Number):void
+    /**
+     *  @inheritDoc
+     */
+     override public function set valueInterval(value:Number):void
     {
         super.valueInterval = value;

@@ -148,8 +156,8 @@
     private var pageSizeChanged:Boolean = false;

     /**
-     *  Amount of change in value when
-     *  the range is paged. Affects the thumb size.
+     *  The change in the value of the value property
+     *  when you call the page() method.
      *
      *  @default 20
      */
@@ -158,6 +166,9 @@
         return _pageSize;
     }

+    /**
+     *  @private
+     */
     public function set pageSize(value:Number):void
     {
         if (value == _pageSize)
@@ -176,11 +187,22 @@

     private var _viewport:IViewport;

+    /**
+     *  The ViewPort object associated with the scroll bars.
+     *  A viewport is a UIComponent that implements the IViewport interface,
+     *  such as the Group component.
+     *
+     *  @see mx.components.Group
+     *
+     */
     public function get viewport():IViewport
     {
         return _viewport;
     }

+    /**
+     *  @private
+     */
     public function set viewport(value:IViewport):void
     {
         _viewport = value;
@@ -263,7 +285,7 @@
     }

     /**
-     *  Make the skins reflect the enabled state of the ScrollBar.
+     *  @inheritDoc
      */
     override protected function enableSkinParts(value:Boolean):void
     {
@@ -276,10 +298,16 @@
     }

     /**
-     *  Pages the value up or down.
+     *  Adds or subtracts pageSize from value.
+     *  For an add, the new value is the closets multiple of pageSize
+     *  that is larger than the current value.
+     *  For an subtraction, the new value
+     *  is the closets multiple of pageSize that is
+     *  smaller than the current value.
+     *  The minimum value of value is pageSize.
      *
-     *  @param increase Whether the paging action increases or
-     *  decreases value.
+     *  @param increase Whether the paging action adds (true)or
+     *  decreases (false) value.
      */
     public function page(increase:Boolean = true):void
     {
@@ -290,8 +318,8 @@
     }

     /**
-     *  This utility method calculates an appropriate size for
-     *  the thumb, given the current range, pageSize, and
+     *  Calculate the size for
+     *  the thumb from the current range, pageSize, and
      *  trackSize settings.
      */
     override protected function calculateThumbSize():Number
@@ -316,6 +344,7 @@
     //---------------------------------

     /**
+     *  @private
      *  Handle a click on the up button of the scroll bar. This
      *  should up one step.
      */
@@ -333,6 +362,7 @@
     }

     /**
+     *  @private
      *  Handle a click on the down button of the scroll bar. This
      *  should down one step.
      */
@@ -354,6 +384,7 @@
     //---------------------------------

     /**
+     *  @private
      *  Handle mouse-down events for the scroll track. In our handler,
      *  we figure out where the event occurred on the track and begin
      *  paging the scroll position toward that location. We start a
@@ -469,6 +500,7 @@
     }

     /**
+     *  @private
      *  Handle mouse-move events for track scrolling anywhere on the stage
      */
     private function stage_track_mouseMoveHandler(event:MouseEvent):void


Transferred from the Adobe Open Source Subversion Repository

Revision: 2644
Author:   egeorgie@adobe.com
Date:     2008-07-28T23:58:09.872940Z

Log Message:
-----------
First pass at unifying layout APIs between UIComponent and GraphicElement, more to come with additional check-ins.

reviewed by Ryan, Glenn, Gordon, Chet

Modified Paths:
--------------
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/flex/graphics/Path.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/flex/graphics/Ellipse.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/flex/graphics/Rect.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/flex/graphics/TextBox.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/flex/graphics/IGraphicElement.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/flex/graphics/TextGraphic.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/Line.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/flex/graphics/FilledElement.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/flex4/src/flex/graphics/BitmapGraphic.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/flex/graphics/graphicsClasses/TextGraphicElement.as</path>

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

--- frameworks/projects/spark/src/spark/primitives/supportClasses/FilledElement.as
+++ frameworks/projects/spark/src/spark/primitives/supportClasses/FilledElement.as
@@ -88,7 +88,7 @@
 				fill_propertyChangeHandler);

 		dispatchPropertyChangeEvent("fill", oldValue, _fill);
-		notifyElementChanged();
+		invalidateDisplayList();
 	}

 	//--------------------------------------------------------------------------
@@ -105,7 +105,7 @@
 		// Don't call super.beginDraw() since it will also set up an
 		// invisible fill.

-		var bounds:Rectangle = new Rectangle(0, 0, drawWidth, drawHeight);
+		var bounds:Rectangle = new Rectangle(0, 0, width, height);
 		if (stroke)
 			stroke.draw(g, bounds);
 		else
@@ -138,7 +138,7 @@
 	 */
 	private function fill_propertyChangeHandler(event:Event):void
 	{
-		notifyElementChanged();
+		invalidateDisplayList();
 	}
 }
 }


adding hook for selectionColor

adding hook for selectionColor

git-svn-id: 02605e11d3a461bc7e12f3f3880edf4b0c8dcfd0@4304 3e7533ad-8678-4d30-8e38-00a379d3f0d0

--- src/laml/display/Label.as
+++ src/laml/display/Label.as
@@ -13,10 +13,11 @@

 		override protected function initialize():void {
 			super.initialize();
+			model.validate_border = validateBorder;
+			model.validate_embedFonts = validateEmbedFonts;
+			model.validate_selectable = validateSelectable;
+			model.validate_selectionColor = validateSelectionColor;
 			model.validate_textFormat = validateTextFormat;
-			model.validate_selectable = validateSelectable;
-			model.validate_embedFonts = validateEmbedFonts;
-			model.validate_border = validateBorder;
 			text = "";
 		}

@@ -85,6 +86,18 @@
 			return model.selectable;
 		}

+		public function set selectionColor(color:Number):void {
+			model.selectionColor = color;
+		}
+
+		public function get selectionColor():Number {
+			return model.selectionColor;
+		}
+
+		protected function validateSelectionColor(newValue:*, oldValue:*):void {
+			trace(">> validate selection color");
+		}
+
 		protected function validateSelectable(newValue:*, oldValue:*):void {
 			textView.selectable = newValue;
 			textView.mouseEnabled = newValue;


Transferred from the Adobe Open Source Subversion Repository

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

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

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

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

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

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

--- frameworks/projects/mx/src/mx/controls/ButtonBar.as
+++ frameworks/projects/mx/src/mx/controls/ButtonBar.as
@@ -0,0 +1,1173 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+//  ADOBE SYSTEMS INCORPORATED
+//  Copyright 2005-2007 Adobe Systems Incorporated
+//  All Rights Reserved.
+//
+//  NOTICE: Adobe permits you to use, modify, and distribute this file
+//  in accordance with the terms of the license agreement accompanying it.
+//
+////////////////////////////////////////////////////////////////////////////////
+
+package mx.controls
+{
+
+import flash.display.DisplayObject;
+import flash.events.Event;
+import flash.events.EventPhase;
+import flash.events.KeyboardEvent;
+import flash.events.MouseEvent;
+import flash.ui.Keyboard;
+import mx.containers.BoxDirection;
+import mx.controls.buttonBarClasses.ButtonBarButton;
+import mx.core.ClassFactory;
+import mx.core.EdgeMetrics;
+import mx.core.IFlexDisplayObject;
+import mx.core.IUIComponent;
+import mx.core.mx_internal;
+import mx.events.ChildExistenceChangedEvent;
+import mx.events.ItemClickEvent;
+import mx.managers.IFocusManagerComponent;
+import mx.styles.CSSStyleDeclaration;
+import mx.styles.StyleManager;
+
+use namespace mx_internal;
+
+//--------------------------------------
+//  Events
+//--------------------------------------
+
+/**
+ *  Dispatched when a user clicks a button.
+ *  This event is only dispatched if the dataProvider property
+ *  does not refer to a ViewStack container.
+ *
+ *  @eventType mx.events.ItemClickEvent.ITEM_CLICK
+ */
+[Event(name="itemClick", type="mx.events.ItemClickEvent")]
+
+//--------------------------------------
+//  Styles
+//--------------------------------------
+
+/**
+ *  Height of each button, in pixels.
+ *  If undefined, the height of each button is determined by the font styles
+ *  applied to the container.
+ *  If you set this property, the specified value overrides this calculation.
+ */
+[Style(name="buttonHeight", type="Number", format="Length", inherit="no")]
+
+/**
+ *  Name of CSS style declaration that specifies styles for the buttons.
+ */
+[Style(name="buttonStyleName", type="String", inherit="no")]
+
+/**
+ *  Width of each button, in pixels.
+ *  If undefined, the default width of each button is calculated from its label text.
+ */
+[Style(name="buttonWidth", type="Number", format="Length", inherit="no")]
+
+/**
+ *  Name of CSS style declaration that specifies styles for the first button.
+ *  If this is unspecified, the default value
+ *  of the buttonStyleName style property is used.
+ */
+[Style(name="firstButtonStyleName", type="String", inherit="no")]
+
+/**
+ * Horizontal alignment of all buttons within the ButtonBar. Since individual
+ * buttons stretch to fill the entire ButtonBar, this style is only useful if you
+ * use the buttonWidth style and the combined widths of the buttons are less than
+ * than the width of the ButtonBar.
+ * Possible values are "left", "center",
+ * and "right".
+ *
+ * @default "center"
+ */
+[Style(name="horizontalAlign", type="String", enumeration="left,center,right", inherit="no")]
+
+/**
+ *  Number of pixels between children in the horizontal direction.
+ *
+ *  @default 0
+ */
+[Style(name="horizontalGap", type="Number", format="Length", inherit="no")]
+
+/**
+ *  Name of CSS style declaration that specifies styles for the last button.
+ *  If this is unspecified, the default value
+ *  of the buttonStyleName style property is used.
+ *//**
+ * Vertical alignment of all buttons within the ButtonBar. Since individual
+ * buttons stretch to fill the entire ButtonBar, this style is only useful if you
+ * use the buttonHeight style and the combined heights of the buttons are less than
+ * than the width of the ButtonBar.
+ * Possible values are "top", "middle",
+ * and "bottom".
+ *
+ * @default "middle"
+ */
+[Style(name="lastButtonStyleName", type="String", inherit="no")]
+
+/**
+ * Vertical alignment of all buttons within the ButtonBar. Since individual
+ * buttons stretch to fill the entire ButtonBar, this style is only useful if you
+ * use the buttonHeight style and the combined heights of the buttons are less than
+ * than the width of the ButtonBar.
+ * Possible values are "top", "middle",
+ * and "bottom".
+ *
+ * @default "middle"
+ */
+[Style(name="verticalAlign", type="String", enumeration="top,middle,bottom", inherit="no")]
+
+/**
+ *  Number of pixels between children in the vertical direction.
+ *
+ *  @default 0
+ */
+[Style(name="verticalGap", type="Number", format="Length", inherit="no")]
+
+//--------------------------------------
+//  Excluded APIs
+//--------------------------------------
+
+[Exclude(name="horizontalLineScrollSize", kind="property")]
+[Exclude(name="horizontalPageScrollSize", kind="property")]
+[Exclude(name="horizontalScrollBar", kind="property")]
+[Exclude(name="horizontalScrollPolicy", kind="property")]
+[Exclude(name="horizontalScrollPosition", kind="property")]
+[Exclude(name="maxHorizontalScrollPosition", kind="property")]
+[Exclude(name="maxVerticalScrollPosition", kind="property")]
+[Exclude(name="verticalLineScrollSize", kind="property")]
+[Exclude(name="verticalPageScrollSize", kind="property")]
+[Exclude(name="verticalScrollBar", kind="property")]
+[Exclude(name="verticalScrollPolicy", kind="property")]
+[Exclude(name="verticalScrollPosition", kind="property")]
+
+[Exclude(name="scroll", kind="event")]
+[Exclude(name="click", kind="event")]
+
+[Exclude(name="backgroundAlpha", kind="style")]
+[Exclude(name="backgroundAttachment", kind="style")]
+[Exclude(name="backgroundColor", kind="style")]
+[Exclude(name="backgroundImage", kind="style")]
+[Exclude(name="backgroundSize", kind="style")]
+[Exclude(name="borderColor", kind="style")]
+[Exclude(name="borderSides", kind="style")]
+[Exclude(name="borderSkin", kind="style")]
+[Exclude(name="borderStyle", kind="style")]
+[Exclude(name="borderThickness", kind="style")]
+[Exclude(name="cornerRadius", kind="style")]
+[Exclude(name="dropShadowColor", kind="style")]
+[Exclude(name="dropShadowEnabled", kind="style")]
+[Exclude(name="horizontalScrollBarStyleName", kind="style")]
+[Exclude(name="shadowCapColor", kind="style")]
+[Exclude(name="shadowColor", kind="style")]
+[Exclude(name="shadowDirection", kind="style")]
+[Exclude(name="shadowDistance", kind="style")]
+[Exclude(name="verticalScrollBarStyleName", kind="style")]
+
+//--------------------------------------
+//  Other metadata
+//--------------------------------------
+
+[DefaultProperty("dataProvider")]
+
+[IconFile("ButtonBar.png")]
+
+[MaxChildren(0)]
+
+/**
+ *  The ButtonBar control defines a horizontal or vertical group of
+ *  logically related push buttons with a common look and navigation.
+ *
+ *
A push button is one that does not remember its selected state
+ *  when selected.
+ *  The typical use for a push button in a button bar is for grouping
+ *  a set of related buttons together, which gives them a common look
+ *  and navigation, and handling the logic for the click event
+ *  in a single place.

+ *
+ *
The ButtonBar control creates Button controls based on the value of
+ *  its dataProvider property.
+ *  Even though ButtonBar is a subclass of Container, do not use methods such as
+ *  Container.addChild() and Container.removeChild()
+ *  to add or remove Button controls.
+ *  Instead, use methods such as addItem() and removeItem()
+ *  to manipulate the dataProvider property.
+ *  The ButtonBar control automatically adds or removes the necessary children based on
+ *  changes to the dataProvider property.

+ *
+ *
To control the styling of the buttons of the ButtonBar control, use the
+ *  buttonStyleName, firstButtonStyleName,
+ *  and lastButtonStyleName style properties;
+ *  do not try to style the individual Button controls
+ *  that make up the ButtonBar control.

+ *
+ *
You can use the ToggleButtonBar control to define a group
+ *  of toggle buttons.

+ *
+ *
ButtonBar control has the following default characteristics:

+ *

+ *

+ *        Characteristic
+ *        Description
+ *

+ *

+ *        Preferred size
+ *        Wide enough to contain all buttons with their label text and icons, if any, plus any padding and separators, and high enough to accommodate the button height.
+ *

+ *

+ *        Control resizing rules
+ *        The controls do not resize by default. Specify percentage sizes if you want your ButtonBar to resize based on the size of its parent container.
+ *

+ *

+ *        Padding
+ *        0 pixels for the top, bottom, left, and right properties.
+ *

+ *

+ *
+ *  @mxml
+ *
+ *
The <mx:ButtonBar> tag inherits all the tag attributes
+ *  of its superclass, and adds the following tag attributes:

+ *
+ *

+ *  <mx:ButtonBar
+ *    Styles
+ *    buttonHeight="undefined"
+ *    buttonStyleName="Name of CSS style declaration, which specifies
+ *    styles for the buttons"
+ *    buttonWidth="undefined"
+ *    firstButtonStyleName="The value of buttonStyleName"
+ *    focusAlpha="0.4"
+ *    focusRoundedCorners="tl tr bl br"
+ *    horizontalAlign="center|left|right"
+ *    horizontalGap="0"
+ *    lastButtonStyleName="The value of buttonStyleName"
+ *    verticalAlign="middle|top|bottom"
+ *    verticalGap="0"
+ *
+ *    Events
+ *    itemClick="No default"
+ *    >
+ *    ...
+ *       child tags
+ *    ...
+ *  </mx:ButtonBar>
+ *

+ *
+ *  @see mx.controls.ToggleButtonBar
+ *  @see mx.controls.LinkBar
+ *  @includeExample examples/ButtonBarExample.mxml
+ */
+ public class ButtonBar extends NavBar implements IFocusManagerComponent
+{
+    include "../core/Version.as";
+
+    //--------------------------------------------------------------------------
+    //
+    //  Constructor
+    //
+    //--------------------------------------------------------------------------
+
+    /**
+     *  Constructor.
+     */
+    public function ButtonBar()
+    {
+        super();
+
+        tabEnabled = true;
+
+        navItemFactory = new ClassFactory(ButtonBarButton);
+
+        // Add event listeners for scaleX/scaleY changed.
+        // Since we hard-code sizes into our children,
+        // scaling can cause rounding errors so we need
+        // to clear our hard-coded values whenever the scale changes.
+        addEventListener("scaleXChanged", scaleChangedHandler);
+        addEventListener("scaleYChanged", scaleChangedHandler);
+
+        addEventListener(ChildExistenceChangedEvent.CHILD_REMOVE,
+                         childRemoveHandler);
+    }
+
+    //--------------------------------------------------------------------------
+    //
+    //  Variables
+    //
+    //--------------------------------------------------------------------------
+
+    /**
+     *  @private
+     *  Internal flag to indicate when a click event has been triggered
+     *  programmatically, as opposed to an actual user click.
+     *  This happens when the button selection happens by keyboard navigation
+     *  or when selectedIndex is set programmatically.
+     *  When this is true, the focus rect shouldn't be drawn
+     *  for the currently selected button.
+     */
+    mx_internal var simulatedClickTriggerEvent:Event = null;
+
+    /**
+     *  @private
+     *  Name of style used to specify buttonStyleName.
+     *  Overridden by TabBar.
+     */
+    mx_internal var buttonStyleNameProp:String = "buttonStyleName";
+
+    /**
+     *  @private
+     *  Name of style used to specify buttonStyleName.
+     *  Overridden by TabBar.
+     */
+    mx_internal var firstButtonStyleNameProp:String = "firstButtonStyleName";
+
+    /**
+     *  @private
+     *  Name of style used to specify buttonStyleName.
+     *  Overridden by TabBar.
+     */
+    mx_internal var lastButtonStyleNameProp:String = "lastButtonStyleName";
+
+    /**
+     *  @private
+     *  Name of style used to specify buttonWidth.
+     *  Overridden by TabBar.
+     */
+    mx_internal var buttonWidthProp:String = "buttonWidth";
+
+    /**
+     *  @private
+     *  Name of style used to specify buttonHeight.
+     *  Overridden by TabBar.
+     */
+    mx_internal var buttonHeightProp:String = "buttonHeight";
+
+    /**
+     *  @private
+     *  Flag indicating whether buttons widths should be recalculated.
+     */
+    private var recalcButtonWidths:Boolean = false;
+
+    /**
+     *  @private
+     *  Flag indicating whether buttons heights should be recalculated.
+     */
+    private var recalcButtonHeights:Boolean = false;
+
+    /**
+     *  @private
+     *  The value of the unscaledWidth parameter during the most recent
+     *  call to updateDisplayList
+     */
+    private var oldUnscaledWidth:Number;
+
+    /**
+     *  @private
+     *  The value of the unscaledHeight parameter during the most recent
+     *  call to updateDisplayList
+     */
+    private var oldUnscaledHeight:Number;
+
+    /**
+     *  @private
+     *  Index of currently focused child.
+     */
+    mx_internal var focusedIndex:int = 0;
+
+    /**
+     *  @private
+     *  Flag indicating whether direction has changed.
+     */
+    private var directionChanged:Boolean = false;
+
+    //--------------------------------------------------------------------------
+    //
+    //  Overridden properties
+    //
+    //--------------------------------------------------------------------------
+
+    //----------------------------------
+    //  borderMetrics
+    //----------------------------------
+
+    /**
+     *  @private
+     */
+    override public function get borderMetrics():EdgeMetrics
+    {
+        return EdgeMetrics.EMPTY;
+    }
+
+    //----------------------------------
+    //  direction
+    //----------------------------------
+
+    [Bindable("directionChanged")]
+    [Inspectable(category="General", enumeration="vertical,horizontal", defaultValue="horizontal")]
+
+    /**
+     *  @private
+     */
+    override public function set direction(value:String):void
+    {
+        if (initialized && value != direction)
+        {
+            directionChanged = true;
+            invalidateProperties();
+        }
+
+        super.direction = value;
+    }
+
+    //----------------------------------
+    //  viewMetrics
+    //----------------------------------
+
+    /**
+     *  @private
+     */
+    override public function get viewMetrics():EdgeMetrics
+    {
+        return EdgeMetrics.EMPTY;
+    }
+
+    //--------------------------------------------------------------------------
+    //
+    //  Overridden methods
+    //
+    //--------------------------------------------------------------------------
+
+    /**
+     *  @private
+     */
+    override public function styleChanged(styleProp:String):void
+    {
+        var allStyles:Boolean = styleProp == null || styleProp == "styleName";
+
+        super.styleChanged(styleProp);
+
+        if (allStyles ||
+            styleProp == buttonStyleNameProp ||
+            styleProp == firstButtonStyleNameProp ||
+            styleProp == lastButtonStyleNameProp)
+        {
+            var buttonStyleName:String = getStyle(buttonStyleNameProp);
+            var firstButtonStyleName:String = getStyle(firstButtonStyleNameProp);
+            var lastButtonStyleName:String = getStyle(lastButtonStyleNameProp);
+
+            if (!buttonStyleName)
+                buttonStyleName = "ButtonBarButton";
+            if (!firstButtonStyleName)
+                firstButtonStyleName = buttonStyleName;
+            if (!lastButtonStyleName)
+                lastButtonStyleName = buttonStyleName;
+
+            var newStyleName:String;
+
+            var n:int = numChildren;
+            for (var i:int = 0; i < n; i++)
+            {
+                if (i == 0)
+                    newStyleName = firstButtonStyleName;
+                else if (i == (n - 1))
+                    newStyleName = lastButtonStyleName;
+                else
+                    newStyleName = buttonStyleName;
+
+                Button(getChildAt(i)).styleName = newStyleName;
+            }
+
+            recalcButtonWidths = recalcButtonHeights = true;
+        }
+
+        if (styleProp == buttonWidthProp)
+            recalcButtonWidths = true;
+        else if (styleProp == buttonHeightProp)
+            recalcButtonHeights = true;
+
+    }
+
+    /**
+     *  @private
+     */
+    override protected function commitProperties():void
+    {
+        super.commitProperties();
+
+        if (directionChanged)
+        {
+            directionChanged = false;
+
+            // refresh skins
+            var n:int = numChildren;
+            for (var i:int = 0; i < n; i++)
+                Button(getChildAt(i)).changeSkins();
+        }
+    }
+
+    /**
+     *  @private
+     */
+    override protected function measure():void
+    {
+        super.measure();
+
+        var vm:EdgeMetrics = viewMetricsAndPadding;
+
+        measuredWidth = calcFullWidth() + vm.left + vm.right;
+        measuredHeight = calcFullHeight() + vm.top + vm.bottom;
+
+        // If explicit button sizes are specified, our preferred sizes are our
+        // minimum sizes.
+        if (getStyle(buttonWidthProp))
+            measuredMinWidth = measuredWidth;
+        if (getStyle(buttonHeightProp))
+            measuredMinHeight = measuredHeight;
+
+    }
+
+    /**
+     *  @private
+     */
+    override protected function updateDisplayList(unscaledWidth:Number,
+                                                  unscaledHeight:Number):void
+    {
+        // We pre-process our child sizes, so we call super.updateDisplayList() later.
+
+        const isHorizontal:Boolean = (direction == BoxDirection.HORIZONTAL);
+        const isVertical:Boolean = !isHorizontal;
+
+        var buttonWidth:Number = getStyle(buttonWidthProp);
+        var buttonHeightStyle:Number = getStyle(buttonHeightProp);
+        var buttonHeight:Number = buttonHeightStyle;
+
+        var vm:EdgeMetrics = viewMetricsAndPadding;
+
+        var n:int = numChildren;
+        var horizontalGap:Number = getStyle("horizontalGap");
+        var verticalGap:Number = getStyle("verticalGap");
+        var totalHorizontalGap:Number = isHorizontal && numChildren > 0 ?
+        								horizontalGap * (n - 1) : 0;
+        var totalVerticalGap:Number = isVertical && numChildren > 0 ?
+        							  verticalGap * (n - 1) : 0;
+        var w:Number = unscaledWidth - vm.left - vm.right - totalHorizontalGap;
+        var h:Number = unscaledHeight - vm.top - vm.bottom - totalVerticalGap;
+        if (!w || !h)
+            return;
+
+        if (border)
+            border.visible = false;
+
+        if (unscaledWidth != oldUnscaledWidth)
+        {
+            recalcButtonWidths = true;
+            oldUnscaledWidth = unscaledWidth;
+        }
+
+        if (unscaledHeight != oldUnscaledHeight)
+        {
+            recalcButtonHeights = true;
+            oldUnscaledHeight = unscaledHeight;
+        }
+
+        var i:int;
+        var c:Button;
+
+        var excessSpace:Number;
+
+        // See if we need to recalculate the button widths
+        if (recalcButtonWidths)
+        {
+            recalcButtonWidths = false;
+
+            if (isNaN(buttonWidth) && isVertical)
+                buttonWidth = w;
+
+            excessSpace = w - (calcFullWidth() - totalHorizontalGap);
+            var averageWidth:int = n > 0 ? w / n : 0;
+            // Number of children larger than average width
+            var nLarge:int = 0;
+
+            // Sum of all preferred widths (required if excessSpace != 0)
+            var tw:Number = 0;
+            // Sum of all preferred widths of children
+            // smaller than average width.
+            var tSmall:int = 0;
+            if (excessSpace != 0 && isHorizontal)
+            {
+                for (i = 0; i < n; i++)
+                {
+                    c = Button(getChildAt(i));
+                    if (isNaN(c.explicitWidth))
+                    {
+                        var mw:int = c.measuredWidth;
+                        tw += mw;
+                        if (mw > averageWidth)
+                            nLarge++;
+                        else
+                            tSmall += mw;
+                    }
+                }
+            }
+            else
+            {
+                tw = w;
+            }
+
+            for (i = 0; i < n; i++)
+            {
+                c = Button(getChildAt(i));
+                if (isNaN(c.explicitWidth))
+                {
+                    c.minWidth = 0;
+                    if (!isNaN(buttonWidth))
+                    {
+                            c.minWidth = c.maxWidth = buttonWidth;
+                            c.percentWidth = buttonWidth / Math.min(w, tw) * 100;
+                    }
+
+                    // Assign measured width to children smaller than average.
+                    // Distribute the remaining width to others.
+                    else if (excessSpace < 0)
+                    {
+                        var assignedWidth:int = c.measuredWidth;
+                        if (assignedWidth > averageWidth)
+                            assignedWidth = (w - tSmall) / nLarge;
+
+                        c.percentWidth = Number(assignedWidth) / w * 100;
+                    }
+
+                    // If they fit comfortably with extra space left,
+                    // expand them.
+                    else if (excessSpace > 0)
+                    {
+                        c.percentWidth = c.measuredWidth / tw * 100;
+                    }
+
+                    else
+                    {
+                        c.percentWidth = NaN;
+                    }
+
+                    // If vertical, expand to fit horizontally.
+                    if (isVertical)
+                        c.percentWidth = 100;
+                }
+            }
+        }
+
+        // See if we need to recalculate the button heights
+        if (recalcButtonHeights)
+        {
+            recalcButtonHeights = false;
+
+            if (isNaN(buttonHeight) && isHorizontal)
+                buttonHeight = h;
+
+            excessSpace = h - (calcFullHeight() - totalVerticalGap);
+
+            // Sum of all preferred heights (required if excessSpace != 0).
+            var th:Number = 0;
+            if (excessSpace != 0 && isVertical)
+            {
+                for (i = 0; i < n; i++)
+                {
+                    c = Button(getChildAt(i));
+                    if (isNaN(c.explicitHeight))
+                        th += c.measuredHeight;
+                }
+            }
+
+            for (i = 0; i < n; i++)
+            {
+                c = Button(getChildAt(i));
+                if (isNaN(c.explicitHeight))
+                {
+                    c.minHeight = 0;
+                    if (!isNaN(buttonHeight))
+                    {
+                        c.minHeight = buttonHeight;
+                        c.percentHeight = buttonHeight / Math.min(th, h) * 100;
+                    }
+                    if (!isNaN(buttonHeightStyle))
+                        c.maxHeight = buttonHeightStyle;
+
+                    // If horizontal, expand to fit vertically.
+                    if (isHorizontal)
+                        c.percentHeight = 100;
+
+                    // If they won't fit, squeeze them in.
+                    else if (excessSpace < 0)
+                        c.percentHeight = c.measuredHeight / th * 100;
+
+                    // If they fit comfortably with extra space left,
+                    // expand them.
+                    else if (excessSpace > 0)
+                        c.percentHeight = c.measuredHeight / th * 100;
+
+                    else
+                        c.percentHeight = NaN;
+                }
+            }
+        }
+
+        // Since we pre-process our child dimensions, we call super.updateDisplayList()
+        // last.
+        super.updateDisplayList(unscaledWidth, unscaledHeight);
+    }
+
+    /**
+     *  @private
+     */
+    override public function drawFocus(isFocused:Boolean):void
+    {
+        drawButtonFocus(focusedIndex, isFocused);
+    }
+
+    /**
+     *  @private
+     */
+    override protected function createNavItem(
+                                        label:String,
+                                        icon:Class = null):IFlexDisplayObject
+    {
+        var newButton:Button = Button(navItemFactory.newInstance());
+
+        // Set tabEnabled to false so individual buttons don't get focus.
+        newButton.focusEnabled = false;
+
+        var buttonStyleName:String = getStyle(buttonStyleNameProp);
+        var firstButtonStyleName:String = getStyle(firstButtonStyleNameProp);
+        var lastButtonStyleName:String = getStyle(lastButtonStyleNameProp);
+
+        if (!buttonStyleName)
+            buttonStyleName = "ButtonBarButton";
+        if (!firstButtonStyleName)
+            firstButtonStyleName = buttonStyleName;
+        if (!lastButtonStyleName)
+            lastButtonStyleName = buttonStyleName;
+
+        var n:int = numChildren;
+        if (n == 0)
+        {
+            newButton.styleName = buttonStyleName;
+        }
+        else
+        {
+            newButton.styleName = lastButtonStyleName;
+            var cssStyleDeclaration:CSSStyleDeclaration =
+                StyleManager.getStyleDeclaration("." + lastButtonStyleName);
+
+            if (cssStyleDeclaration &&
+                !cssStyleDeclaration.getStyle("focusRoundedCorners"))
+            {
+                newButton.setStyle("focusRoundedCorners", "tr br");
+            }
+
+            // Refresh the skins for the last button that was in this position.
+            var first:Boolean = (n == 1);
+            var lastButton:Button = Button(getChildAt(first ? 0 : n - 1));
+
+            if (first)
+            {
+                lastButton.styleName = firstButtonStyleName;
+                cssStyleDeclaration =
+                    StyleManager.getStyleDeclaration("." + firstButtonStyleName);
+
+                if (cssStyleDeclaration &&
+                    !cssStyleDeclaration.getStyle("focusRoundedCorners"))
+                {
+                    lastButton.setStyle("focusRoundedCorners", "tl bl");
+                }
+            }
+            else
+            {
+                lastButton.styleName = buttonStyleName;
+                cssStyleDeclaration =
+                    StyleManager.getStyleDeclaration("." + buttonStyleName);
+
+                if (cssStyleDeclaration &&
+                    !cssStyleDeclaration.getStyle("focusRoundedCorners"))
+                {
+                    lastButton.setStyle("focusRoundedCorners", "");
+                }
+            }
+
+            lastButton.changeSkins();
+            lastButton.invalidateDisplayList();
+        }
+
+        newButton.label = label;
+        newButton.setStyle("icon", icon);
+
+        newButton.addEventListener(MouseEvent.CLICK, clickHandler);
+
+        addChild(newButton);
+
+        recalcButtonWidths = recalcButtonHeights = true;
+
+        return newButton;
+    }
+
+    /**
+     *  @private
+     */
+    override protected function resetNavItems():void
+    {
+        recalcButtonWidths = recalcButtonHeights = true;
+
+        invalidateDisplayList();
+    }
+
+    //--------------------------------------------------------------------------
+    //
+    //  Methods
+    //
+    //--------------------------------------------------------------------------
+
+    /**
+     *  @private
+     */
+    private function calcFullWidth():Number
+    {
+        var n:int = numChildren;
+        var gap:Number = 0;
+
+        if (n == 0)
+            return 0;
+        else if (n > 1)
+            gap = getStyle("horizontalGap");
+
+        var horizontal:Boolean = (direction == BoxDirection.HORIZONTAL);
+
+        var buttonWidth:Number = getStyle(buttonWidthProp);
+
+        var child:IUIComponent = IUIComponent(getChildAt(0));
+
+        var w:Number;
+        if (buttonWidth)
+            w = isNaN(child.explicitWidth) ? buttonWidth : child.explicitWidth;
+        else
+            w = child.getExplicitOrMeasuredWidth();
+
+        for (var i:int = 1; i < n; i++)
+        {
+            child = IUIComponent(getChildAt(i));
+
+            var cw:Number;
+            if (buttonWidth)
+            {
+                cw = isNaN(child.explicitWidth) ?
+                     buttonWidth :
+                     child.explicitWidth;
+            }
+            else
+            {
+                cw = child.getExplicitOrMeasuredWidth();
+            }
+
+            if (horizontal)
+                w += (gap + cw);
+            else
+                w = Math.max(w, cw);
+        }
+
+        return w;
+    }
+
+    /**
+     *  @private
+     */
+    private function calcFullHeight():Number
+    {
+        var n:int = numChildren;
+        var gap:Number;
+
+        if (n == 0)
+            return 0;
+        else if (n > 1)
+            gap = getStyle("verticalGap");
+
+        var vertical:Boolean = (direction == BoxDirection.VERTICAL);
+
+        var buttonHeight:Number = getStyle(buttonHeightProp);
+
+        var child:IUIComponent = IUIComponent(getChildAt(0));
+
+        var h:Number;
+        if (buttonHeight)
+        {
+            h = isNaN(child.explicitHeight) ?
+                buttonHeight :
+                child.explicitHeight;
+        }
+        else
+        {
+            h = child.getExplicitOrMeasuredHeight();
+        }
+
+        for (var i:int = 1; i < n; i++)
+        {
+            child = IUIComponent(getChildAt(i));
+
+            var ch:Number;
+            if (buttonHeight)
+            {
+                ch = isNaN(child.explicitHeight) ?
+                     buttonHeight :child.explicitHeight;
+            }
+            else
+            {
+                ch = child.getExplicitOrMeasuredHeight();
+            }
+
+            if (vertical)
+                h += (gap + ch);
+            else
+                h = Math.max(h, ch);
+        }
+
+        return h;
+    }
+
+    /**
+     *  @private
+     *  Returns the previous valid child index, or -1 if there are no children.
+     *  Used by keyboard navigation.
+     */
+    mx_internal function prevIndex(index:int):int
+    {
+        var n:int = numChildren;
+        return index == 0 ? n - 1 : index - 1;
+    }
+
+    /**
+     *  @private
+     *  Returns the next valid child index, or -1 if there are no children.
+     *  Used by keyboard navigation.
+     */
+    mx_internal function nextIndex(index:int):int
+    {
+        var n:int = numChildren;
+        if (n == 0)
+            return -1;
+        else
+            return index == n - 1 ? 0 : index + 1;
+    }
+
+    /**
+     *  @private
+     */
+    mx_internal function drawButtonFocus(index:int, focused:Boolean):void
+    {
+        if (index < numChildren)
+        {
+            var b:Button = Button(getChildAt(index));
+            b.drawFocus(focused && focusManager.showFocusIndicator);
+
+            // internal event for accessibility
+            if (focused)
+                dispatchEvent(new Event("focusDraw"));
+
+            // If the button is losing focus, set its phase to UP,
+            // which will cause a redraw.
+            if (!focused && b.phase != ButtonPhase.UP)
+                b.phase = ButtonPhase.UP;
+        }
+    }
+
+    //--------------------------------------------------------------------------
+    //
+    //  Overridden event handlers: UIComponent
+    //
+    //--------------------------------------------------------------------------
+
+    /**
+     *  @private
+     */
+    override protected function keyDownHandler(event:KeyboardEvent):void
+    {
+        // Ignore events that bubble up from the child ButtonBarButtons.
+        // such as the one we redispatch below from the focused child
+        // when the SPACE key is released.
+        if (event.eventPhase != EventPhase.AT_TARGET)
+            return;
+
+        switch (event.keyCode)
+        {
+            case Keyboard.DOWN:
+            case Keyboard.RIGHT:
+            {
+                focusManager.showFocusIndicator = true;
+                drawButtonFocus(focusedIndex, false);
+                focusedIndex = nextIndex(focusedIndex);
+
+                if (focusedIndex != -1)
+                {
+                    drawButtonFocus(focusedIndex, true);
+                }
+
+                event.stopPropagation();
+                break;
+            }
+
+            case Keyboard.UP:
+            case Keyboard.LEFT:
+            {
+                focusManager.showFocusIndicator = true;
+                drawButtonFocus(focusedIndex, false);
+                focusedIndex = prevIndex(focusedIndex);
+
+                if (focusedIndex != -1)
+                {
+                    drawButtonFocus(focusedIndex, true);
+                }
+
+                event.stopPropagation();
+                break;
+            }
+
+            case Keyboard.SPACE:
+            {
+                if (focusedIndex != -1)
+                {
+                    // Redispatch from the focused ButtonBarButton
+                    // to get it to appear pressed.
+                    var child:Button = Button(getChildAt(focusedIndex));
+                    child.dispatchEvent(event);
+                }
+
+                event.stopPropagation();
+                break;
+            }
+        }
+    }
+
+    /**
+     *  @private
+     */
+    override protected function keyUpHandler(event:KeyboardEvent):void
+    {
+        // Ignore events that bubble up from the child ButtonBarButtons.
+        // such as the one we redispatch below from the focused child
+        // when the SPACE key is released.
+        if (event.eventPhase != EventPhase.AT_TARGET)
+            return;
+
+        switch (event.keyCode)
+        {
+            case Keyboard.SPACE:
+            {
+                if (focusedIndex != -1)
+                {
+                    // Redispatch from the focused ButtonBarButton
+                    // to get it to appear released.
+                    var child:Button = Button(getChildAt(focusedIndex));
+                    child.dispatchEvent(event);
+                }
+
+                event.stopPropagation();
+                break;
+            }
+        }
+    }
+
+    //--------------------------------------------------------------------------
+    //
+    //  Overridden event handlers: NavBar
+    //
+    //--------------------------------------------------------------------------
+
+    /**
+     *  @private
+     */
+    override protected function clickHandler(event:MouseEvent):void
+    {
+        if (simulatedClickTriggerEvent == null)
+        {
+            focusedIndex = getChildIndex(DisplayObject(event.currentTarget));
+            drawButtonFocus(focusedIndex, true);
+        }
+
+        super.clickHandler(event);
+    }
+
+    //--------------------------------------------------------------------------
+    //
+    //  Event handlers
+    //
+    //--------------------------------------------------------------------------
+
+    /**
+     *  @private
+     */
+    private function childRemoveHandler(event:ChildExistenceChangedEvent):void
+    {
+        var child:DisplayObject = event.relatedObject;
+        var index:int = getChildIndex(child);
+        var n:int = numChildren;
+        if (n < 2)
+        {
+            // Don't bother if it's the last child.
+            return;
+        }
+
+        var buttonStyleName:String = getStyle(buttonStyleNameProp);
+        var firstButtonStyleName:String = getStyle(firstButtonStyleNameProp);
+        var lastButtonStyleName:String = getStyle(lastButtonStyleNameProp);
+
+        if (!buttonStyleName)
+            buttonStyleName = "buttonBarButtonStyle";
+        if (!firstButtonStyleName)
+            firstButtonStyleName = buttonStyleName;
+        if (!lastButtonStyleName)
+            lastButtonStyleName = buttonStyleName;
+
+        // Refresh the skins for the last button that was in this position.
+        if (index == 0 || index == n - 1)
+        {
+            var button:Button = Button(getChildAt(index == n - 1 ? n - 2 : 0));
+
+            button.styleName = index == 0 ?
+                               firstButtonStyleName :
+                               lastButtonStyleName;
+
+            button.changeSkins();
+            button.invalidateDisplayList();
+        }
+    }
+
+    /**
+     *  @private
+     */
+    private function scaleChangedHandler(event:Event):void
+    {
+        // This is called whenever scaleX or scaleY is changed.
+        // We need to clear out the preferredWidth/preferredHeight
+        // of our children since scaling can cause rounding errors
+        // which then are not corrected when un-scaled.
+
+        for (var i:int = 0; i < numChildren; i++)
+        {
+            var child:Button = getChildAt(i) as Button;
+            if (child)
+            {
+                child.explicitWidth = NaN;
+                child.minWidth = NaN;
+                child.maxWidth = NaN;
+
+                child.explicitHeight = NaN;
+                child.minHeight = NaN;
+                child.maxHeight = NaN;
+            }
+        }
+    }
+}
+
+}


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

--- frameworks/projects/mx/src/mx/controls/DateField.as
+++ frameworks/projects/mx/src/mx/controls/DateField.as
@@ -1,11 +1,19 @@
 ////////////////////////////////////////////////////////////////////////////////
 //
-//  ADOBE SYSTEMS INCORPORATED
-//  Copyright 2003-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.
 //
 ////////////////////////////////////////////////////////////////////////////////


fix up imports per platform

fix up imports per platform

--- frameworks/projects/Core/as/src/org/apache/flex/events/Event.as
+++ frameworks/projects/Core/as/src/org/apache/flex/events/Event.as
@@ -18,11 +18,10 @@
 ////////////////////////////////////////////////////////////////////////////////
 package org.apache.flex.events
 {
-
     COMPILE::AS3 {
         import flash.events.Event;
     }
-
+
 	COMPILE::JS {
 		import goog.events.Event;
 	}


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

--- frameworks/projects/advancedgrids/src/mx/olap/IOLAPQueryAxis.as
+++ frameworks/projects/advancedgrids/src/mx/olap/IOLAPQueryAxis.as
@@ -1,13 +1,3 @@
-////////////////////////////////////////////////////////////////////////////////
-//
-//  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.olap
 {


Transferred from the Adobe Open Source Subversion Repository

Revision: 5101
Author:   gauravj@adobe.com
Date:     2009-02-27T05:22:45.887116Z

Log Message:
-----------
Update action script files with asdoc version tags.

QE Notes: None.
Doc Notes: Please review and update as necessary.
tests: checkintests

Modified Paths:
--------------
663 paths were modified

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

--- frameworks/projects/framework/src/mx/core/ISWFBridgeProvider.as
+++ frameworks/projects/framework/src/mx/core/ISWFBridgeProvider.as
@@ -22,6 +22,11 @@
  *  This interface lets a caller get a bridge to that application.
  *  Once the caller has the bridge, it can then dispatch events
  *  to the application.
+ *
+ *  @langversion 3.0
+ *  @playerversion Flash 9
+ *  @playerversion AIR 1.1
+ *  @productversion Flex 3
  */
 public interface ISWFBridgeProvider
 {
@@ -39,6 +44,11 @@
      *  A bridge to the application that is associated with the implementor of this
      *  interface. The IEventDispatcher that can be used to send events to an
      *  application in a different ApplicationDomain or a different sandbox.
+     *
+     *  @langversion 3.0
+     *  @playerversion Flash 9
+     *  @playerversion AIR 1.1
+     *  @productversion Flex 3
      */
     function get swfBridge():IEventDispatcher;

@@ -47,6 +57,11 @@
      *  to messages that originate in the child.
      *
      *  true if access if allowed; otherwise false.
+     *
+     *  @langversion 3.0
+     *  @playerversion Flash 9
+     *  @playerversion AIR 1.1
+     *  @productversion Flex 3
      */
     function get childAllowsParent():Boolean;

@@ -55,6 +70,11 @@
      *  to messages that originate in the parent.
      *
      *  true if access if allowed; otherwise false.
+     *
+     *  @langversion 3.0
+     *  @playerversion Flash 9
+     *  @playerversion AIR 1.1
+     *  @productversion Flex 3
      */
     function get parentAllowsChild():Boolean;
 }


Transferred from the Adobe Open Source Subversion Repository

Revision: 11039
Author:   chaase@adobe.com
Date:     2009-10-20T23:37:59.923557Z

Log Message:
-----------
Added and corrected ASDocs for the various transformPointToParent() functions. Also modified parameter names to be more correct (and understandable).

QE notes: -
Doc notes: Added ASDocs, fixes bug 23337
Bugs: SDK-23337
Reviewer: Ely
Tests run: checkintests, mustella spark transform effects
Is noteworthy for integration: no

Modified Paths:
--------------
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/core/SpriteVisualElement.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/primitives/supportClasses/GraphicElement.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/UIComponent.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/core/AdvancedLayoutFeatures.as</path>

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

--- frameworks/projects/spark/src/spark/core/SpriteVisualElement.as
+++ frameworks/projects/spark/src/spark/core/SpriteVisualElement.as
@@ -2200,21 +2200,42 @@
         }
     }

-    public function transformPointToParent(transformCenter:Vector3D,position:Vector3D,postLayoutPosition:Vector3D):void
+    /**
+     * A utility method to transform a point specified in the local
+     * coordinates of this object to its location in the object's parent's
+     * coordinates. The pre-layout and post-layout result will be set on
+     * the position and postLayoutPosition
+     * parameters, if they are non-null.
+     *
+     * @param localPosition The point to be transformed, specified in the
+     * local coordinates of the object.
+     * @position A Vector3D point that will hold the pre-layout
+     * result. If null, the parameter is ignored.
+     * @postLayoutPosition A Vector3D point that will hold the post-layout
+     * result. If null, the parameter is ignored.
+     *
+     *  @langversion 3.0
+     *  @playerversion Flash 10
+     *  @playerversion AIR 1.5
+     *  @productversion Flex 4
+     */
+    public function transformPointToParent(localPosition:Vector3D,
+                                           position:Vector3D,
+                                           postLayoutPosition:Vector3D):void
 	{
 		if (_layoutFeatures != null)
 		{
-			_layoutFeatures.transformPointToParent(true, transformCenter,
+			_layoutFeatures.transformPointToParent(true, localPosition,
 				position, postLayoutPosition);
 		}
 		else
 		{
 			if (xformPt == null)
 				xformPt = new Point();
-			if (transformCenter)
+			if (localPosition)
 			{
-				xformPt.x = transformCenter.x;
-				xformPt.y = transformCenter.y;
+				xformPt.x = localPosition.x;
+				xformPt.y = localPosition.y;
 			}
 			else
 			{


Transferred from the Adobe Open Source Subversion Repository

Revision: 3321
Author:   hmuller@adobe.com
Date:     2008-09-23T21:21:31.020570Z

Log Message:
-----------
Created ILayout implementation LayoutBase and made it the base
class for the three existing layouts. LayoutBase defines the
following properties:

  target - the Group or DataGroup (GroupBase) that whose
  layout property is _this_ layout.

  verticalScrollPosition, horizontalScrollPosition - the
  origin of the target's scrollRect.  These properties were
  defined by GroupBase.

LayoutBase also adds some new protected methods:

  scrollPositionChanged() - called when the
  vertical,horizontalScrollPosition properties change.

  updateScrollRect() - syncs the scrollRect with the
  vertical,horizontalScrollPosition properties

  invalidateTargetSizeAndDisplayList() - convenience
  method that calls invalidateSize,DisplayList().

LayoutBase also defines empty implementations of measure
and updateDisplayList.

GroupBase now delegates vertical,horizontalScrollPosition
to its layout and redispatches the layout's propertyChange
events for these properties.

QE: No
Doc: No
Checkintests: Pass
Reviewer: Evtim
Bugs:
   SDK-17002 -  includeInLayout no longer being respected

Modified Paths:
--------------
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/flex/layout/BasicLayout.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/flex/core/GroupBase.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/flex/component/Selector.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/flex/component/VGroup.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/flex/layout/HorizontalLayout.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/flex/layout/VerticalLayout.as</path>
<path kind="file" action="A">/flex/sdk/trunk/frameworks/projects/flex4/src/flex/layout/LayoutBase.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/flex/component/HGroup.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/flex/intf/ILayout.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/flex/component/Scroller.as</path>

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

--- frameworks/projects/spark/src/spark/layouts/HorizontalLayout.as
+++ frameworks/projects/spark/src/spark/layouts/HorizontalLayout.as
@@ -28,7 +28,7 @@
 /**
  *  Documentation is not currently available.
  */
-public class HorizontalLayout extends EventDispatcher implements ILayout
+public class HorizontalLayout extends LayoutBase
 {
     include "../core/Version.as";

@@ -37,16 +37,6 @@
     //  Class methods
     //
     //--------------------------------------------------------------------------
-
-    private static function hasPercentWidth( layoutItem:ILayoutItem ):Boolean
-    {
-    	return !isNaN( layoutItem.percentSize.x );
-    }
-
-    private static function hasPercentHeight( layoutItem:ILayoutItem ):Boolean
-    {
-        return !isNaN( layoutItem.percentSize.y );
-    }

     private static function calculatePercentHeight( layoutItem:ILayoutItem, height:Number ):Number
     {
@@ -75,32 +65,10 @@
     //  Properties
     //
     //--------------------------------------------------------------------------
-
-    private var _target:GroupBase;
-
-    public function get target():GroupBase
-    {
-        return _target;
-    }
-
-    public function set target(value:GroupBase):void
-    {
-        _target = value;
-    }

     //----------------------------------
     //  gap
     //----------------------------------
-
-    private function invalidateTargetSizeAndDisplayList():void
-    {
-        var layoutTarget:GroupBase = target;
-        if (layoutTarget != null)
-        {
-            layoutTarget.invalidateSize();
-            layoutTarget.invalidateDisplayList();
-        }
-    }

     private var _gap:int = 6;

@@ -555,7 +523,7 @@
     }

-    public function measure():void
+    override public function measure():void
     {
     	var layoutTarget:GroupBase = target;
         if (!layoutTarget)
@@ -568,7 +536,7 @@
     }

-    public function updateDisplayList(unscaledWidth:Number, unscaledHeight:Number):void
+    override public function updateDisplayList(unscaledWidth:Number, unscaledHeight:Number):void
     {
     	var layoutTarget:GroupBase = target;
         if (!layoutTarget)
@@ -576,11 +544,12 @@

         // TODO EGeorgie: use vector
         var layoutItemArray:Array = new Array();
+        var layoutItem:ILayoutItem;
         var count:uint = layoutTarget.numLayoutItems;
         var totalCount:uint = count; // How many items will be laid out
         for (var i:int = 0; i < count; i++)
         {
-            var layoutItem:ILayoutItem = layoutTarget.getLayoutItemAt(i);
+            layoutItem = layoutTarget.getLayoutItemAt(i);
             if (!layoutItem || !layoutItem.includeInLayout)
             {
             	totalCount--;
@@ -615,19 +584,19 @@

         for (var index:int = 0; index < count; index++)
         {
-            var lo:ILayoutItem = layoutTarget.getLayoutItemAt(index);
+            layoutItem = layoutTarget.getLayoutItemAt(index);
             if (!layoutItem || !layoutItem.includeInLayout)
                 continue;

             // Set the layout item's acutual size and position
-            var y:Number = (unscaledHeight - lo.actualSize.y) * vAlign;
-            lo.setActualPosition(x, y);
-            var dy:Number = lo.actualSize.y;
+            var y:Number = (unscaledHeight - layoutItem.actualSize.y) * vAlign;
+            layoutItem.setActualPosition(x, y);
+            var dy:Number = layoutItem.actualSize.y;
             if (!variableColumnWidth)
-                lo.setActualSize(columnWidth, dy);
+                layoutItem.setActualSize(columnWidth, dy);

             // Update maxX,Y, first,lastVisibleIndex, and x
-            var dx:Number = lo.actualSize.x;
+            var dx:Number = layoutItem.actualSize.x;
             maxX = Math.max(maxX, x + dx);
             maxY = Math.max(maxY, y + dy);
             if((x < maxVisibleX) && ((x + dx) > minVisibleX))
@@ -643,7 +612,8 @@

         setColumnCount(visibleColumns);
         setIndexInView(firstColInView, lastColInView);
-        layoutTarget.setContentSize(maxX, maxY);
+        layoutTarget.setContentSize(maxX, maxY);
+        updateScrollRect(unscaledWidth, unscaledHeight);
     }


Transferred from the Adobe Open Source Subversion Repository

Revision: 3020
Author:   hmuller@adobe.com
Date:     2008-08-27T23:15:11.883082Z

Log Message:
-----------
Group/Viewport changes per feedback from the kick-off meeting.

Group contentWidth,Height properties are now read-only.  Layouts
must set them with new method Group::setContentSize().

Layouts call setContentSize at both measure and updateDisplayList
time.  Doing so at measure time may be unnecessary although
the measured size of scrollbar thumbs can depend indirectly on
a Group's content size.

Group now updates its own scrollRect at updateDisplayList time, rather
than having each layout do so

QE: Yes
Doc: No
Checkintests: Pass
Reviewer: Ryan

Modified Paths:
--------------
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/flex/layout/BasicLayout.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/layout/HorizontalLayout.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/flex/layout/VerticalLayout.as</path>

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

--- frameworks/projects/spark/src/spark/layouts/HorizontalLayout.as
+++ frameworks/projects/spark/src/spark/layouts/HorizontalLayout.as
@@ -348,11 +348,10 @@
         layoutTarget.measuredWidth = (explicitColumnCount == -1) ? preferredWidth : visibleWidth;
         layoutTarget.measuredHeight = preferredHeight;

-        layoutTarget.contentWidth = preferredWidth;
-        layoutTarget.contentHeight = preferredHeight;
-
         layoutTarget.measuredMinWidth = minWidth;
         layoutTarget.measuredMinHeight = minHeight;
+
+        layoutTarget.setContentSize(preferredWidth, preferredHeight);
     }

@@ -393,11 +392,10 @@
         layoutTarget.measuredWidth = visibleWidth;
         layoutTarget.measuredHeight = rowHeight;

-        layoutTarget.contentWidth = contentWidth;
-        layoutTarget.contentHeight = rowHeight;
-
         layoutTarget.measuredMinWidth = columnWidth;
         layoutTarget.measuredMinHeight = minRowHeight;
+
+        layoutTarget.setContentSize(contentWidth, rowHeight);
     }

@@ -453,21 +451,25 @@

         // Finally, position the objects
         var x:Number = 0;
+        var maxX:Number = 0;
+        var maxY:Number = 0;
         for each (var lo:ILayoutItem in layoutItemArray)
         {
             var y:Number = (unscaledHeight - lo.actualSize.y) * vAlign;
             lo.setActualPosition(x, y);
+            var dy:Number = lo.actualSize.y;
             if (!variableColumnWidth)
-            	lo.setActualSize(columnWidth, lo.actualSize.y);
+            	lo.setActualSize(columnWidth, dy);
             var dx:Number = lo.actualSize.x;
+            maxX = Math.max(maxX, x + dx);
+            maxY = Math.max(maxY, y + dy);
             if((explicitColumnCount == -1) && (x < maxVisibleX) && ((x + dx) > minVisibleX))
             	visibleColumns += 1;
             x += dx + gap;
         }
         if (explicitColumnCount == -1)
-        	setColumnCount(visibleColumns);
-
-        BasicLayout.setScrollRect(layoutTarget, unscaledWidth, unscaledHeight);
+        	setColumnCount(visibleColumns);
+        layoutTarget.setContentSize(maxX, maxY);
     }


Transferred from the Adobe Open Source Subversion Repository

Revision: 6792
Author:   jimurphy@adobe.com
Date:     2009-05-11T18:24:09.346026Z

Log Message:
-----------
Merged revisions 6729,6731,6746,6755,6757,6765,6767-6768,6770-6772,6775,6784-6786,6790 from http://p01weblab02.corp.adobe.com/svn/opensource/flex/sdk/branches/beta1

Modified Paths:
--------------
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/components/DataGroup.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/utilities/src/FlashContainerPlaceholder.as</path>
<path kind="file" action="M">/flex/sdk/trunk/modules/compiler/src/java/flex2/compiler/fxg/FlexFXG2SWFTranscoder.java</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/primitives/supportClasses/TextGraphicElement.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/components/Group.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/flash-integration/src/mx/flash/FlexContentHolder.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/components/supportClasses/ButtonBase.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flash-integration/src/mx/flash/ContainerMovieClip.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/effects/Effect.as</path>
<path kind="dir" action="M">/flex/sdk/trunk</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/airframework/src/spark/components/WindowedApplication.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/components/TextArea.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/flex4/src/spark/layouts/VerticalLayout.as</path>
<path kind="file" action="M">/flex/sdk/trunk/modules/fxgutils/src/java/com/adobe/internal/fxg/swf/TypeHelper.java</path>
<path kind="dir" copyfrom-path="/flex/sdk/branches/beta1/modules/fxgutils/src/java/com/adobe/internal/fxg/swf/types" copyfrom-rev="6790" action="A">/flex/sdk/trunk/modules/fxgutils/src/java/com/adobe/internal/fxg/swf/types</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/primitives/RichEditableText.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/effects/Resize.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/components/supportClasses/ListBase.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/primitives/RichText.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/skins/default/ButtonSkin.mxml</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/layouts/HorizontalLayout.as</path>
<path kind="file" action="M">/flex/sdk/trunk/modules/fxgutils/src/java/com/adobe/fxg/swf/FXG2SWFTranscoder.java</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/components/Application.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/primitives/SimpleText.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/layouts/TileLayout.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/components/supportClasses/TextBase.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/effects/supportClasses/ResizeInstance.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/components/List.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/components/supportClasses/ScrollerLayout.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/layouts/supportClasses/LayoutBase.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/skins/default/RadioButtonSkin.mxml</path>
<path kind="file" copyfrom-path="/flex/sdk/branches/beta1/modules/fxgutils/src/java/com/adobe/internal/fxg/swf/types/FXGMatrix.java" copyfrom-rev="6790" action="R">/flex/sdk/trunk/modules/fxgutils/src/java/com/adobe/internal/fxg/swf/types/FXGMatrix.java</path>

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

--- frameworks/projects/spark/src/spark/layouts/HorizontalLayout.as
+++ frameworks/projects/spark/src/spark/layouts/HorizontalLayout.as
@@ -1182,9 +1182,13 @@
      */
      override public function getDestinationIndex(navigationUnit:uint, currentIndex:int):int
      {
-        if (!target)
+        if (!target || target.numElements < 1)
             return -1;
+
+        // Make sure currentIndex is within range
         var maxIndex:int = target.numElements - 1;
+        currentIndex = Math.max(0, Math.min(maxIndex, currentIndex));
+
         var newIndex:int;
         var bounds:Rectangle;
         var x:Number;
@@ -1232,7 +1236,7 @@

                     // Find the element after the last element that spans left of the x position
                     newIndex = currentIndex - 1;
-                    while (0 < newIndex)
+                    while (0 <= newIndex)
                     {
                         bounds = getElementBounds(newIndex);
                         if (bounds && bounds.left < x)
@@ -1276,7 +1280,7 @@

                     // Find the element before the first element that spans right of the y position
                     newIndex = currentIndex + 1;
-                    while (newIndex < maxIndex)
+                    while (newIndex <= maxIndex)
                     {
                         bounds = getElementBounds(newIndex);
                         if (bounds && bounds.right > x)


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

--- frameworks/projects/advancedgrids/src/mx/olap/aggregators/MinAggregator.as
+++ frameworks/projects/advancedgrids/src/mx/olap/aggregators/MinAggregator.as
@@ -1,13 +1,3 @@
-////////////////////////////////////////////////////////////////////////////////
-//
-//  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.olap.aggregators


Transferred from the Adobe Open Source Subversion Repository

Revision: 7953
Author:   chaase@adobe.com
Date:     2009-06-18T15:27:47.178122Z

Log Message:
-----------
Small PARB effects change (oversight, should have been in Monday's commit). This removes the Fade.affectVisibility property. We used to automatically side-effect the 'visible' property on target objects when they were faded out or in, and exposed the affectVisibility flag to allow the developer to deny this side-effect. PARB requested that we just have that behavior but not allow the developer to tweak it. Now, an object that is not visible will be set to visible if Fade fades it in (when manually played - transitions are a different situation). We do not, however, set the visible flag to false automatically when fading it out, because that seems just wrong.

QE Notes: Should have no impact - this flag was new, and we knew when it went in that we were probably removing it soon. No tests exist for it.
Doc Notes:
Bugs:
Reviewer: Hans
Tests: checkintests

Modified Paths:
--------------
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/effects/supportClasses/FadeInstance.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/effects/Fade.as</path>

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

--- frameworks/projects/spark/src/spark/effects/supportClasses/FadeInstance.as
+++ frameworks/projects/spark/src/spark/effects/supportClasses/FadeInstance.as
@@ -104,20 +104,6 @@
      */
     public var alphaTo:Number;

-    //----------------------------------
-    //  affectVisibility
-    //----------------------------------
-
-    /**
-     *  @copy spark.effects.Fade#affectVisibility
-     *
-     *  @langversion 3.0
-     *  @playerversion Flash 10
-     *  @playerversion AIR 1.5
-     *  @productversion Flex 4
-     */
-    public var affectVisibility:Boolean;
-
     /**
      *  @private
      */
@@ -185,9 +171,9 @@
         // to be fading it in
         if ("visible" in target && !target.visible &&
             alphaFrom == 0 && alphaTo != 0 &&
-            ((propChanges && propChanges.end["visible"] !== undefined &&
-              propertyChanges.end["visible"] != propertyChanges.start["visible"]) ||
-             affectVisibility))
+            (!propertyChanges ||
+             (propChanges.end["visible"] !== undefined &&
+                propChanges.end["visible"] != propChanges.start["visible"])))
         {
             target.alpha = 0;
             target.visible = true;
@@ -198,9 +184,8 @@
         // side-effecting and what we should reset at the end
         if ("visible" in target && target.visible &&
             alphaFrom != 0 && alphaTo == 0 &&
-            ((propChanges && propChanges.end["visible"] !== undefined &&
-              propertyChanges.end["visible"] != propertyChanges.start["visible"]) ||
-             affectVisibility))
+            propChanges && propChanges.end["visible"] !== undefined &&
+            propertyChanges.end["visible"] != propertyChanges.start["visible"])
         {
             makeInvisible = true;
         }


Transferred from the Adobe Open Source Subversion Repository

Revision: 2464
Author:   jimurphy@adobe.com
Date:     2008-07-14T19:50:33.449468Z

Log Message:
-----------
add flex 4 to trunk

Modified Paths:
--------------
134 paths were modified

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

--- frameworks/projects/spark/src/spark/effects/supportClasses/FadeInstance.as
+++ frameworks/projects/spark/src/spark/effects/supportClasses/FadeInstance.as
@@ -0,0 +1,169 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+//  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 flex.effects.effectClasses
+{
+import flash.events.Event;
+
+import flex.core.Group;
+import flex.effects.PropertyValuesHolder;
+import flex.graphics.graphicsClasses.GraphicElement;
+
+import mx.effects.effectClasses.PropertyChanges;
+import mx.events.FlexEvent;
+import mx.managers.LayoutManager;
+
+public class FadeInstance extends AnimatePropertiesInstance
+{
+    public function FadeInstance(target:Object)
+    {
+        super(target);
+    }
+
+    /**
+     *  @private
+     *  The original transparency level.
+     */
+    private var origAlpha:Number = NaN;
+
+    /**
+     *  @private
+     */
+    private var restoreAlpha:Boolean;
+
+    //--------------------------------------------------------------------------
+    //
+    //  Properties
+    //
+    //--------------------------------------------------------------------------
+
+    //----------------------------------
+    //  alphaFrom
+    //----------------------------------
+
+    /**
+     *  Initial transparency level between 0.0 and 1.0,
+     *  where 0.0 means transparent and 1.0 means fully opaque.
+     */
+    public var alphaFrom:Number;
+
+    //----------------------------------
+    //  alphaFrom
+    //----------------------------------
+
+    /**
+     *  Final transparency level between 0.0 and 1.0,
+     *  where 0.0 means transparent and 1.0 means fully opaque.
+     */
+    public var alphaTo:Number;
+
+    /**
+     *  @private
+     */
+    override public function play():void
+    {
+        // Remember the original value of the target object's alpha
+        origAlpha = target.alpha;
+        var revalidate:Boolean = false;
+
+        var propChanges:PropertyChanges = propertyChanges;
+
+        // If nobody assigned a value, make this a "show" effect.
+        if (isNaN(alphaFrom) && isNaN(alphaTo))
+        {
+            if (propChanges && propChanges.end["alpha"] !== undefined)
+            {
+                alphaFrom = origAlpha;
+                alphaTo = propChanges.end["alpha"];
+            }
+            else if (propChanges && propChanges.end["visible"] !== undefined)
+            {
+                alphaFrom = propChanges.start["visible"] ? origAlpha : 0;
+                alphaTo = propChanges.end["visible"] ? origAlpha : 0;
+                // Force target to be visible at effect start
+                if (alphaFrom == 0 && alphaTo != 0)
+                {
+                    target.visible = true;
+                }
+                restoreAlpha = true;
+            }
+            else if (propChanges && propChanges.end["parent"] !== undefined)
+            {
+                alphaFrom = propChanges.start["parent"] ? origAlpha : 0;
+                alphaTo = propChanges.end["parent"] ? origAlpha : 0;
+                restoreAlpha = true;
+            }
+            else if (propChanges && propChanges.end["elementHost"] !== undefined)
+            {
+                alphaFrom = propChanges.start["elementHost"] ? origAlpha : 0;
+                alphaTo = propChanges.end["elementHost"] ? origAlpha : 0;
+                if (alphaFrom == 0)
+                {
+                    target.alpha = 0;
+                    if (GraphicElement(target).elementHost)
+                        Group(GraphicElement(target).elementHost).validateNow();
+                }
+                restoreAlpha = true;
+            }
+            else
+            {
+                alphaFrom = 0;
+                alphaTo = origAlpha;
+            }
+        }
+        else if (isNaN(alphaFrom))
+        {
+            alphaFrom = (alphaTo == 0) ? origAlpha : 0;
+        }
+        else if (isNaN(alphaTo))
+        {
+            if (propChanges && propChanges.end["alpha"] !== undefined)
+            {
+                alphaTo = propChanges.end["alpha"];
+            }
+            else
+            {
+                alphaTo = (alphaFrom == 0) ? origAlpha : 0;
+            }
+        }
+
+        propertyValuesList =
+            [new PropertyValuesHolder("alpha", [alphaFrom, alphaTo])];
+
+        super.play();
+    }
+
+    private var hideOnEffectEnd:Boolean = false;
+
+    /**
+     *  Handle any cleanup from this effect, such as setting the target to
+     *  be visible (or not) or removed (or not).
+     *  @private
+     */
+    override public function onTweenEnd(value:Object):void
+    {
+        // Call super function first so we don't clobber resetting the alpha.
+        super.onTweenEnd(value);
+
+        // TODO: ideally, we would put the visible=false logic in this effect
+        // We don't want to depend on a private variable on the target
+        // to do this
+        if (hideOnEffectEnd)
+        {
+            target.setVisible(false, true);
+        }
+        if (restoreAlpha)
+        {
+            target.alpha = origAlpha;
+        }
+    }
+}
+}


remove useless line

remove useless line

--- src/org/mangui/hls/model/Level.as
+++ src/org/mangui/hls/model/Level.as
@@ -182,7 +182,6 @@
                 frag = getFragmentfromSeqNum(_fragments[i].seqnum);
                 if (frag != null) {
                     continuity_offset = frag.continuity - _fragments[i].continuity;
-                    _fragments[i].continuity
                     if(!isNaN(frag.data.pts_start)) {
                     _fragments[i].data = frag.data;
                     idx_with_metrics = i;


set Minko.VERSION to 2.0

set Minko.VERSION to 2.0

--- src/aerys/minko/Minko.as
+++ src/aerys/minko/Minko.as
@@ -4,7 +4,7 @@

 	public final class Minko
 	{
-		private static const VERSION	: String	= "2.0b";
+		private static const VERSION	: String	= '2.0';

 		private static var _logger		: ILogger	= null;
 		private static var _debugLevel	: uint		= 0; // LogLevel.DISABLED;