RTSPClient: Correct state debug output

RTSPClient: Correct state debug output

--- src/com/axis/rtspclient/RTSPClient.as
+++ src/com/axis/rtspclient/RTSPClient.as
@@ -233,7 +233,7 @@
         trace("RTSPClient: STATE_INITIAL");

       case STATE_OPTIONS:
-        trace("RTSPClient: STATE_DESCRIBE");
+        trace("RTSPClient: STATE_OPTIONS");
         this.methods = parsed.headers.public.split(/[ ]*,[ ]*/);
         sendDescribeReq();


ImageEditor, Flash: Fix typo and the code for default scaling method.

--- src/flash/src/com/ImageEditor.as
+++ src/flash/src/com/ImageEditor.as
@@ -17,9 +17,9 @@
 	import flash.geom.Point;
 	import flash.geom.Rectangle;

+	import mxi.events.OProgressEvent;
 	import mxi.image.ascb.filters.ColorMatrixArrays;
 	import mxi.image.ascb.filters.ConvolutionMatrixArrays;
-	import mxi.events.OProgressEvent;

 	public class ImageEditor extends OEventDispatcher
@@ -216,13 +216,7 @@

 		protected function _scale(scale:Number, resample:String = 'default', multiStep:Boolean = true) : void
-		{
-			if (resample == 'default') {
-				_matrix.scale(scale, scale);
-				onOperationComplete();
-				return;
-			}
-
+		{
 			if (!_bd) {
 				_bd = _bdOriginal.clone();
 			}
@@ -251,13 +245,13 @@
 				if (newScale < 0.5 || newScale > 2) {
 					newScale = newScale < 0.5 ? 0.5 : 2;
 				}
-
+
 				// special care for default scaling method
-				if (resample == 'deafult') {
+				if (resample == 'default') {
 					_matrix.scale(newScale, newScale);
 					onOperationComplete();
 					draw();
-					if (_bd.width <= dstWidth) {
+					if (scale < 1 && _bd.width <= dstWidth || _bd.width >= dstWidth) {
 						onDrawComplete();
 					} else {
 						dispatchEvent(new OProgressEvent(OProgressEvent.PROGRESS, step++, totalSteps));


remove useless optional parameter values

--- src/org/mangui/HLS/muxing/AVC.as
+++ src/org/mangui/HLS/muxing/AVC.as
@@ -35,7 +35,7 @@
         /** Get Avcc header from AVC stream
         See ISO 14496-15, 5.2.4.1 for the description of AVCDecoderConfigurationRecord
         **/
-        public static function getAVCC(nalu:ByteArray,position:Number=0):ByteArray {
+        public static function getAVCC(nalu:ByteArray,position:Number):ByteArray {
             // Find SPS and PPS units in AVC stream.
             var units:Vector.<VideoFrame> = AVC.getNALU(nalu,position);
             var sps:Number = -1;
@@ -84,7 +84,7 @@

         /** Return an array with NAL delimiter indexes. **/
-        public static function getNALU(nalu:ByteArray,position:Number=0):Vector.<VideoFrame> {
+        public static function getNALU(nalu:ByteArray,position:Number):Vector.<VideoFrame> {
             var units:Vector.<VideoFrame> = new Vector.<VideoFrame>();
             var unit_start:Number;
             var unit_type:Number;


Stop printing square brackets around the log level. Be more like our Java logging.

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

--- src/as/com/threerings/util/Log.as
+++ src/as/com/threerings/util/Log.as
@@ -316,7 +316,7 @@
     /** The configured log levels. */
     protected static var _setLevels :Object = { "": DEBUG }; // global: debug

-    /** The names of each level. The last one isn't used, it corresponds with OFF. */
-    protected static const LEVEL_NAMES :Array = [ "[debug]", "[INFO]", "[WARNING]", false ];
+    /** The outputted names of each level. The last one isn't used, it corresponds with OFF. */
+    protected static const LEVEL_NAMES :Array = [ "debug", "INFO", "WARNING", false ];
 }
 }


Add MBC1

Add MBC1

--- index.as
+++ index.as
@@ -31,6 +31,7 @@
 let wram: *uint8;   // Work RAM – 8 KiB
 let oam: *uint8;    // Sprite Attribute Table (OAM) – 160 B
 let hram: *uint8;   // High RAM – 127 B
+let eram: *uint8;   // External RAM – (defined by cart)

 // CPU: State
 let is_running = true;
@@ -84,6 +85,7 @@
 }

 def reset() {
+  mmu_reset();
   joy_reset();
   gpu_reset();
   cpu_reset();
@@ -124,43 +126,31 @@
     free(rom);
   }

+  // Free External ROM (if needed)
+  if eram != 0 as *uint8 {
+    free(eram);
+  }
+
   // Allocate space in ROM
   rom = malloc(length);

   // Read file into ROM
   fread(rom, 1, length, stream);
-}
-
-def dump_rom() {
-  // Gather ROM information
-  // Title
-  let rom_title = malloc(16) as str;
-  strncpy(rom_title, (rom + 0x134) as str, 16);
-
-  // Licensee
-  let licensee = *(rom + 0x14B);
-  if licensee == 0x33 {
-    let licensee_0 = *(rom + 0x0144);
-    let licensee_1 = *(rom + 0x0145);
-
-    printf("warn: unexpected (new) licensee code: %02X %02X\n", licensee_0, licensee_1);
-  }
-
-  // CGB Flag
-  let cgb_mode = *(rom + 0x143);
-
-  // SGB Flag
-  let is_sgb = *(rom + 0x146) == 0x03;
-
-  // Cartridge Type
-  let cart = *(rom + 0x147);
-
-  // ROM Size
-  let rom_size = (32 * 1024) << *(rom + 0x148);
-
-  // External RAM Size
+
+  // Allocate space in external RAM
+  let eram_size = rom_get_ext_ram_size();
+  if eram_size > 0 {
+    eram = malloc(size_t(eram_size));
+
+    // Zero out space
+    memset(eram, 0, size_t(eram_size));
+  }
+}
+
+def rom_get_ext_ram_size(): uint16 {
   let ext_ram_size_code = *(rom + 0x149);
-  let ext_ram_size = (if ext_ram_size_code == 0x01 {
+
+  return (if ext_ram_size_code == 0x01 {
     2;
   } else if ext_ram_size_code == 0x02 {
     8;
@@ -169,6 +159,37 @@
   } else {
     0;
   }) * 1024;
+}
+
+def dump_rom() {
+  // Gather ROM information
+  // Title
+  let rom_title = malloc(16) as str;
+  strncpy(rom_title, (rom + 0x134) as str, 16);
+
+  // Licensee
+  let licensee = *(rom + 0x14B);
+  if licensee == 0x33 {
+    let licensee_0 = *(rom + 0x0144);
+    let licensee_1 = *(rom + 0x0145);
+
+    printf("warn: unexpected (new) licensee code: %02X %02X\n", licensee_0, licensee_1);
+  }
+
+  // CGB Flag
+  let cgb_mode = *(rom + 0x143);
+
+  // SGB Flag
+  let is_sgb = *(rom + 0x146) == 0x03;
+
+  // Cartridge Type
+  let cart = *(rom + 0x147);
+
+  // ROM Size
+  let rom_size = (32 * 1024) << *(rom + 0x148);
+
+  // External RAM Size
+  let ext_ram_size = rom_get_ext_ram_size();

   // Destination Code
   let dst_code = *(rom + 0x014A);
@@ -215,11 +236,144 @@
 // [MMU] Memory Management Unit
 // =============================================================================

+let mmu_mapper: uint8;
+
+let MM_NONE: uint8 = 0;
+let MM_MBC1: uint8 = 1;
+
+let mmu_mapper_read8: (uint16, *uint8) -> bool;
+let mmu_mapper_write8: (uint16, uint8) -> bool;
+
+// TODO: What does this start at?
+let mmu_mbc1_rom_bank: uint8 = 0x01;
+let mmu_mbc1_ram_bank: uint8 = 0x00;
+let mmu_mbc1_ram_enable = false;
+let mmu_mbc1_mode: uint8 = 0x00;
+
+def mmu_reset() {
+  // Get cartridge type
+  let cart = *(rom + 0x147);
+  if cart == 0x00 {
+    mmu_mapper = MM_NONE;
+    mmu_mapper_read8 = mmu_none_read8;
+    mmu_mapper_write8 = mmu_none_write8;
+  } else if cart == 0x01 or cart == 0x02 or cart == 0x03 {
+    mmu_mapper = MM_MBC1;
+    mmu_mapper_read8 = mmu_mbc1_read8;
+    mmu_mapper_write8 = mmu_mbc1_write8;
+  } else {
+    printf("error: unsupported memory bank controller: %02X\n", cart);
+  }
+}
+
+def mmu_none_read8(address: uint16, ptr: *uint8): bool {
+  // ROM: $0000 – $7FFF
+  if (address & 0xF000) <= 0x7000 {
+    *ptr = *(rom + address);
+
+    return true;
+  }
+
+  return false;
+}
+
+def mmu_none_write8(address: uint16, value: uint8): bool {
+  // ROM: $0000 – $7FFF
+  if (address & 0xF000) <= 0x7000 {
+    // Deny all writes (but declare them handled)
+    return true;
+  }
+
+  return false;
+}
+
+def mmu_mbc1_read8(address: uint16, ptr: *uint8): bool {
+  if address <= 0x3FFF {
+    // This area always contains the first 16KBytes of the cartridge ROM.
+    *ptr = *(rom + address);
+  } else if address <= 0x7FFF {
+    // This area may contain any of the further 16KByte banks of the ROM,
+    // allowing to address up to 125 ROM Banks (almost 2MByte).
+    *ptr = *((rom + (mmu_mbc1_rom_bank * 0x4000)) + (address - 0x4000));
+  } else if address >= 0xA000 and address <= 0xBFFF {
+    // External RAM
+    let eram_size = rom_get_ext_ram_size();
+    let offset = address - 0xA000;
+    if mmu_mbc1_ram_enable and offset < eram_size {
+      *ptr = *((eram + (mmu_mbc1_ram_bank * 0x2000)) + offset);
+    } else {
+      // External RAM is not enabled
+      *ptr = 0xFF;
+    }
+  } else {
+    // Unhandled
+    return false;
+  }
+
+  return true;
+}
+
+def mmu_mbc1_write8(address: uint16, value: uint8): bool {
+  // TODO: If RAM Bank Number / ROM Bank Number were calculated from
+  //       the two registers it'd make this code cleaner
+
+  if address <= 0x1FFF {
+    // RAM Enable
+    mmu_mbc1_ram_enable = (value & 0x0A) != 0;
+  } else if address <= 0x3FFF {
+    // ROM Bank Number (lower 5 bits)
+    mmu_mbc1_rom_bank &= ~0x1F;
+    mmu_mbc1_rom_bank |= (value & 0x1F);
+
+    // Selecting an invalid bank will bump you up a bank
+    let n = (mmu_mbc1_rom_bank & 0x1F);
+    if n == 0x20 or n == 0x40 or n == 0x60 or n == 0x00 {
+      mmu_mbc1_rom_bank += 1;
+    }
+  } else if address <= 0x5FFF {
+    // RAM Bank Number OR Upper 2 bits of ROM Bank Number
+    if mmu_mbc1_mode == 0x00 {
+      mmu_mbc1_ram_bank = value & 0x3;
+    } else if mmu_mbc1_mode == 0x01 {
+      mmu_mbc1_rom_bank &= ~0x60;
+      mmu_mbc1_rom_bank |= (value & 0x3) << 5;
+    }
+  } else if address <= 0x7FFF {
+    // ROM/RAM Mode Select
+    let mode = value & 0x1;
+    if mode != mmu_mbc1_mode {
+      if mode == 0x00 {
+        let tmp = (mmu_mbc1_rom_bank & 0x60) >> 5;
+        mmu_mbc1_rom_bank &= ~0x60;
+        mmu_mbc1_ram_bank = tmp;
+      } else if mode == 0x01 {
+        let tmp = mmu_mbc1_ram_bank;
+        mmu_mbc1_ram_bank = 0x00;
+        mmu_mbc1_rom_bank &= ~0x60;
+        mmu_mbc1_rom_bank |= (tmp & 0x3) << 5;
+      }
+    }
+  } else if address >= 0xA000 and address <= 0xBFFF {
+    // External RAM
+    let eram_size = rom_get_ext_ram_size();
+    let offset = address - 0xA000;
+    if mmu_mbc1_ram_enable and offset < eram_size {
+      *((eram + (mmu_mbc1_ram_bank * 0x2000)) + offset) = value;
+    }
+  } else {
+    // Unhandled
+    return false;
+  }
+
+  return true;
+}
+
 // Read 8-bits
 def mmu_read8(address: uint16): uint8 {
-  // ROM: $0000 – $7FFF
-  if (address & 0xF000) <= 0x7000 {
-    return *(rom + address);
+  // Check with memory bank controller if it handles this address
+  let rv: uint8;
+  if mmu_mapper_read8(address, &rv) {
+    return rv;
   }

   // Video RAM: $8000 – $9FFF
@@ -229,12 +383,6 @@
     if mode == 3 { return 0xFF; }

     return *(vram + (address & 0x1FFF));
-  }
-
-  // External RAM: $A000 – $BFFF
-  if (address & 0xF000) <= 0xB000 {
-    printf("warn: unhandled read from external ram: $%04X\n", address);
-    return 0xFF;
   }

   // Work RAM: $C000 – $DFFF
@@ -313,8 +461,8 @@

 // Write 8-bits
 def mmu_write8(address: uint16, value: uint8) {
-  // ROM: $0000 – $7FFF
-  if (address & 0xF000) <= 0x7000 {
+  // Check with memory bank controller if it handles this address
+  if mmu_mapper_write8(address, value) {
     return;
   }

@@ -327,12 +475,6 @@
     // GPU VRAM
     *(vram + (address & 0x1FFF)) = value;

-    return;
-  }
-
-  // External RAM: $A000 – $BFFF
-  if (address & 0xF000) <= 0xB000 {
-    printf("warn: unhandled write to external ram: $%04X ($%02X)\n", address, value);
     return;
   }


clean up

clean up

--- testSrc/com/kemsky/TestStream.as
+++ testSrc/com/kemsky/TestStream.as
@@ -937,7 +937,7 @@
             var second:Object = {item: secondName};
             var third:Object = {item: thirdName};

-            var s:Stream = $([first, second, third]);
+            var s:Stream = $(first, second, third);
             var items:Stream = s..item;
             assertEquals(items.length, 3);
             assertEquals(items[0], firstName);


Transferred from the Adobe Open Source Subversion Repository

Revision: 10633
Author:   dloverin@adobe.com
Date:     2009-09-28T13:24:30.559033Z

Log Message:
-----------
Use styleManager instance instead of StyleManager singleton (framework and compiler generated code)

Modified compiler generated style code for the FlexInit class. The style related changes are only available with the -keep option. AST generation is coming later.

Only the framework project is changed here. The other projects are will be changed soon.

QE notes: None.
Doc notes: None.
Bugs:
Reviewer: Alex and Paul
Tests run: checkintests, all Mustella tests(no new failures)
Is noteworthy for integration: no.

Modified Paths:
--------------
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/skins/halo/ButtonBarButtonSkin.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/skins/halo/HaloBorder.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/containers/accordionClasses/AccordionHeader.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/containers/utilityClasses/CanvasLayout.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/ButtonBar.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/DateChooser.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/managers/dragClasses/DragProxy.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/skins/halo/ScrollArrowSkin.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/core/Container.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/skins/halo/ButtonSkin.as</path>
<path kind="file" action="M">/flex/sdk/trunk/modules/compiler/src/java/flex2/configuration_en.properties</path>
<path kind="file" action="M">/flex/sdk/trunk/modules/compiler/src/java/flex2/compiler/common/CompilerConfiguration.java</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/skins/halo/ProgressIndeterminateSkin.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/skins/halo/DateChooserMonthArrowSkin.as</path>
<path kind="file" action="M">/flex/sdk/trunk/modules/compiler/src/java/flex2/compiler/mxml/lang/StandardDefs.java</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/skins/halo/SliderThumbSkin.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/DateField.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/containers/DividedBox.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/managers/DragManagerImpl.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/core/Application.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/skins/halo/ScrollThumbSkin.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/dataGridClasses/DataGridColumn.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/styles/StyleManagerImpl.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/styles/IStyleModule.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/listClasses/ListBase.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/containers/Form.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/styles/IStyleManager2.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/ComboBox.as</path>
<path kind="file" action="M">/flex/sdk/trunk/modules/compiler/src/java/flex2/tools/PreLink.java</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/styles/StyleManager.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/Label.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/DataGrid.as</path>
<path kind="file" action="M">/flex/sdk/trunk/modules/compiler/src/java/flex2/compiler/mxml/gen/ClassDefLib.vm</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/skins/halo/ProgressTrackSkin.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/skins/halo/TitleBackground.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/skins/halo/NumericStepperDownSkin.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/skins/halo/PopUpButtonSkin.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/skins/ProgrammaticSkin.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/skins/halo/TabSkin.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/textClasses/TextRange.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/core/LayoutContainer.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/skins/halo/AccordionHeaderSkin.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/skins/halo/CheckBoxIcon.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/skins/halo/NumericStepperUpSkin.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/skins/halo/RadioButtonIcon.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/core/UITextField.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/states/SetStyle.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/skins/halo/ComboBoxArrowSkin.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/dataGridClasses/DataGridHeaderBase.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/containers/FormItem.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/core/UIComponent.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/dataGridClasses/DataGridHeader.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/skins/halo/MenuBarBackgroundSkin.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/skins/halo/ProgressBarSkin.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/SWFLoader.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/skins/halo/BusyCursor.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/events/Request.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/MenuBar.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/Tree.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/styles/CSSStyleDeclaration.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/containers/Accordion.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/skins/halo/SliderTrackSkin.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/styles/StyleProtoChain.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/List.as</path>
<path kind="file" action="M">/flex/sdk/trunk/modules/compiler/src/java/flex2/compiler/css/StyleModule.vm</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/skins/halo/ScrollTrackSkin.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/listClasses/TileBase.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/dataGridClasses/DataGridItemRenderer.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/skins/halo/DataGridHeaderBackgroundSkin.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/managers/CursorManagerImpl.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/modules/ModuleManager.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/effects/effectClasses/SetStyleActionInstance.as</path>
<path kind="file" action="M">/flex/sdk/trunk/modules/compiler/src/java/flex2/compiler/css/StyleDef.vm</path>

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

--- frameworks/projects/mx/src/mx/core/LayoutContainer.as
+++ frameworks/projects/mx/src/mx/core/LayoutContainer.as
@@ -35,7 +35,6 @@
 import mx.managers.SystemManager;
 import mx.styles.CSSStyleDeclaration;
 import mx.styles.IStyleClient;
-import mx.styles.StyleManager;

 use namespace mx_internal;


Transferred from the Adobe Open Source Subversion Repository

Revision: 2462
Author:   jimurphy@adobe.com
Date:     2008-07-14T19:13:06.620116Z

Log Message:
-----------
gumbo push to trunk

Modified Paths:
--------------
214 paths were modified

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

--- frameworks/projects/rpc/src/mx/rpc/xml/IXMLEncoder.as
+++ frameworks/projects/rpc/src/mx/rpc/xml/IXMLEncoder.as
@@ -62,13 +62,11 @@
     function set xmlSpecialCharsFilter(func:Function):void;

     /**
-     * When true, null values
-     * are encoded according to XML Schema rules (requires nillable=true
-     * to be set in the definition).
-     * When false, null values are always encoded with the
-     * xsi:nil="true" attribute.
-     *
-     * @default false
+     * When strictNillability is set to true, null values
+     * are encoded according to XML Schema rules (requires nillable=true
+     * to be set in the definition). When strictNillability is set to
+     * false, null values are always encoded with the
+     * xsi:nil="true" attribute. The default is false.
      */
      function get strictNillability():Boolean;


Memoize max drawn rather than caching keyframes

--- exporter/src/main/as/flump/export/DisplayCreator.as
+++ exporter/src/main/as/flump/export/DisplayCreator.as
@@ -19,7 +19,7 @@
 import starling.textures.Texture;

 import com.threerings.util.Map;
-import com.threerings.util.Maps;
+import com.threerings.util.maps.ValueComputingMap;

 public class DisplayCreator
 {
@@ -53,12 +53,15 @@
         return subtexUsage;
     }

-    /** Gets the maximum number of pixels drawn in a single frame by the given id. If it's
+    /**
+     * Gets the maximum number of pixels drawn in a single frame by the given id. If it's
      * a texture, that's just the number of pixels in the texture. For a movie, it's the frame with
      * the largest set of textures present in its keyframe. For movies inside movies, the frame
      * drawn usage is the maximum that movie can draw. We're trying to get the worst case here.
      */
-    public function getMaxDrawn (name :String) :int {
+    public function getMaxDrawn (name :String) :int { return _maxDrawn.get(name); }
+
+    protected function calcMaxDrawn (name :String) :int {
         if (name == null) return 0;
         if (FLIPBOOK_TEXTURE.exec(name) != null || _lib.getLibrary(name) is XflTexture) {
             const tex :Texture = getStarlingTexture(name);
@@ -66,17 +69,11 @@
         }
         const xflMovie :MovieMold = _lib.getLibrary(name, MovieMold);
         var maxDrawn :int = 0;
-        var calculatedKeyframes :Map = Maps.newMapOf(KeyframeMold);
         for (var ii :int = 0; ii < xflMovie.frames; ii++) {
             var drawn :int = 0;
             for each (var layer :LayerMold in xflMovie.layers) {
                 var kf :KeyframeMold = layer.keyframeForFrame(ii);
-                if (kf.visible) {
-                    if (!calculatedKeyframes.containsKey(kf)) {
-                        calculatedKeyframes.put(kf, getMaxDrawn(kf.id));
-                    }
-                    drawn += calculatedKeyframes.get(kf);
-                }
+                drawn += kf.visible ? getMaxDrawn(kf.id) : 0;
             }
             maxDrawn = Math.max(maxDrawn, drawn);
         }
@@ -121,6 +118,7 @@
         else return loadMovie(MovieMold(libraryItem).libraryItem);
     }

+    protected var _maxDrawn :Map = ValueComputingMap.newMapOf(String, calcMaxDrawn);
     protected const _textures :Dictionary = new Dictionary();// library name to Texture
     protected const _textureOffsets :Dictionary = new Dictionary();// library name to Point
     protected var _lib :XflLibrary;


Transferred from the Adobe Open Source Subversion Repository

Revision: 3399
Author:   jimurphy@adobe.com
Date:     2008-09-29T15:51:24.666752Z

Log Message:
-----------
Merged 3.0.x revisions 3361,3364-3365,3367,3370,3381 -> trunk

Modified Paths:
--------------
<path kind="dir" action="M">/flex/sdk/trunk</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/rpc/src/mx/rpc/events/ResultEvent.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/rpc/src/mx/rpc/xml/XMLDecoder.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/scrollClasses/ScrollBar.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/ButtonBar.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/validators/CurrencyValidator.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/collections/SortField.as</path>

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

--- frameworks/projects/mx/src/mx/controls/ButtonBar.as
+++ frameworks/projects/mx/src/mx/controls/ButtonBar.as
@@ -966,7 +966,7 @@
      */
     mx_internal function drawButtonFocus(index:int, focused:Boolean):void
     {
-        if (index < numChildren)
+        if (numChildren > 0 && index < numChildren)
         {
             var b:Button = Button(getChildAt(index));
             b.drawFocus(focused && focusManager.showFocusIndicator);


Transferred from the Adobe Open Source Subversion Repository

Revision: 17114
Author:   matamel@adobe.com
Date:     2010-07-29T08:15:41.870649Z

Log Message:
-----------
Revert the fix to  SDK-16648; it broke backwards compatibility in MXML.

Modified Paths:
--------------
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/rpc/src/mx/messaging/ChannelSet.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/rpc/src/mx/messaging/Channel.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/rpc/src/mx/messaging/MessageAgent.as</path>

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

--- frameworks/projects/rpc/src/mx/messaging/Channel.as
+++ frameworks/projects/rpc/src/mx/messaging/Channel.as
@@ -46,7 +46,7 @@
  *
  *  @eventType mx.messaging.events.ChannelEvent.CONNECT
  */
-[Event(name="connect", type="mx.messaging.events.ChannelEvent")]
+[Event(name="channelConnect", type="mx.messaging.events.ChannelEvent")]

 /**
  *  Dispatched after the channel has disconnected from its endpoint.
@@ -59,7 +59,7 @@
  *  @productversion BlazeDS 4
  *  @productversion LCDS 3
  */
-[Event(name="disconnect", type="mx.messaging.events.ChannelEvent")]
+[Event(name="channelDisconnect", type="mx.messaging.events.ChannelEvent")]

 /**
  *  Dispatched after the channel has faulted.
@@ -72,7 +72,7 @@
  *  @productversion BlazeDS 4
  *  @productversion LCDS 3
  */
-[Event(name="fault", type="mx.messaging.events.ChannelFaultEvent")]
+[Event(name="channelFault", type="mx.messaging.events.ChannelFaultEvent")]

 /**
  *  Dispatched when a channel receives a message from its endpoint.


Transferred from the Adobe Open Source Subversion Repository

Revision: 7274
Author:   chaase@adobe.com
Date:     2009-05-26T17:35:32.210331Z

Log Message:
-----------
Fixed several feature-complete effects bugs, plus one ScrollBar bug.

QE Notes: None
Doc Notes: None
Bugs: sdk-21093, sdk-21130, sdk-21243, sdk-21128, sdk-20698, sdk-20125, sdk-21138
Reviewer: Jason
tests: checkintests mustella effects cyclone

Modified Paths:
--------------
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/effects/Effect.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/effects/supportClasses/AnimateInstance.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/effects/animation/Animation.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/effects/animation/IAnimationTarget.as</path>
<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/framework/src/mx/effects/CompositeEffect.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/effects/Fade.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/ScrollBar.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/components/supportClasses/AnimationTarget.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/spark/effects/AnimateTransform.as</path>

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

--- frameworks/projects/spark/src/spark/effects/Fade.as
+++ frameworks/projects/spark/src/spark/effects/Fade.as
@@ -11,9 +11,9 @@

 package spark.effects
 {
+import mx.effects.IEffectInstance;
+
 import spark.effects.supportClasses.FadeInstance;
-
-import mx.effects.IEffectInstance;

 /**
  *  The Fade effect animates the alpha property of a component.
@@ -111,6 +111,42 @@
      */
     public var alphaTo:Number;

+    //----------------------------------
+    //  affectVisibility
+    //----------------------------------
+
+    [Inspectable(category="General", defaultValue="true")]
+
+    /**
+     *  Fade animates the alpha value of its target
+     *  objects. But it may also be desirable for Fade to automatically
+     *  affect the visible property as well, setting that
+     *  property to false when fading out a visible object
+     *  or setting it to true when fading in a non-visible
+     *  object. The setting of this flag determines whether that side-effect
+     *  will persist after the Fade is complete.
+     *
+     *
For example, an object which is not visible when a fade-in
+     *  operation is run on it will become visible when the effect runs and
+     *  stay visible when the effect finishes.

+     *
+     *
Note that if the visible property is specified
+     *  explicitly in state values, this behavior will not counter the
+     *  instructions when going into that state. For example, an object
+     *  which is not visible and which has a visible value
+     *  of false in some state "StateX" will remain non-visible
+     *  after any Fade effect runs on it, even if that Fade effect
+     *  explicitly faded the object in.

+     *
+     *  @default true
+     *
+     *  @langversion 3.0
+     *  @playerversion Flash 10
+     *  @playerversion AIR 1.5
+     *  @productversion Flex 4
+     */
+    public var affectVisibility:Boolean = true;
+
     //--------------------------------------------------------------------------
     //
     // Methods
@@ -128,6 +164,7 @@

         fadeInstance.alphaFrom = alphaFrom;
         fadeInstance.alphaTo = alphaTo;
+        fadeInstance.affectVisibility = affectVisibility;
     }

     /**


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

--- frameworks/projects/charts/src/mx/charts/chartClasses/IAxisRenderer.as
+++ frameworks/projects/charts/src/mx/charts/chartClasses/IAxisRenderer.as
@@ -1,11 +1,19 @@
 ////////////////////////////////////////////////////////////////////////////////
 //
-//  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.
+//  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
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+//  Unless required by applicable law or agreed to in writing, software
+//  distributed under the License is distributed on an "AS IS" BASIS,
+//  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//  See the License for the specific language governing permissions and
+//  limitations under the License.
 //
 ////////////////////////////////////////////////////////////////////////////////


Transferred from the Adobe Open Source Subversion Repository

Revision: 7163
Author:   aharui@adobe.com
Date:     2009-05-21T02:19:55.813792Z

Log Message:
-----------
Initial checkin of frame 1 cleanup.  In an RSL linkage, more classes will now come from the RSL because they are no longer needed in frame 1, and the size of the application SWF will be smaller.

QE Notes: None
Doc Notes: Maybe.  All new classes should be undocumented, but it might be worth checking that and any changes to interfaces
Bugs:
Reviewer: darrell
tests: checkintests mustella/MarshallPlan

Modified Paths:
--------------
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/listClasses/TileListItemRenderer.as</path>
<path kind="file" action="A">/flex/sdk/trunk/frameworks/projects/framework/src/mx/managers/systemClasses/ActiveWindowManager.as</path>
<path kind="dir" action="A">/flex/sdk/trunk/frameworks/projects/framework/src/mx/managers/marshalClasses</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/managers/LayoutManager.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/events/RSLEvent.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/Menu.as</path>
<path kind="file" action="A">/flex/sdk/trunk/frameworks/projects/framework/src/mx/managers/marshalClasses/MarshalPopUpData.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/core/IEmbeddedFontRegistry.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/managers/PopUpManagerImpl.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/ColorPicker.as</path>
<path kind="file" action="M">/flex/sdk/trunk/modules/compiler/src/java/flex2/compiler/mxml/lang/StandardDefs.java</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/managers/systemClasses/EventProxy.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/core/UITextFormat.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/DateField.as</path>
<path kind="file" action="M">/flex/sdk/trunk/tools/dependencychecker/flex/tools/dependencychecker/FrameworkSwcDependencyRules.java</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/managers/DragManagerImpl.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/core/Application.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/dataGridClasses/DataGridColumn.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/styles/StyleManagerImpl.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/core/EmbeddedFontRegistry.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/managers/ToolTipManagerImpl.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/framework/src/mx/core/EmbeddedFont.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/ComboBox.as</path>
<path kind="file" action="M">/flex/sdk/trunk/modules/compiler/src/java/flex2/tools/PreLink.java</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/managers/SystemManager.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/preloaders/Preloader.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/resources/ResourceManagerImpl.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/core/ResourceModuleRSLItem.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/FrameworkClasses.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/core/ISWFBridgeProvider.as</path>
<path kind="file" action="A">/flex/sdk/trunk/frameworks/projects/framework/src/mx/managers/marshalClasses/FocusManagerMarshalMixin.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/airframework/src/mx/core/Window.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/resources/ResourceManager.as</path>
<path kind="file" action="A">/flex/sdk/trunk/frameworks/projects/framework/src/mx/managers/IMarshalSystemManager.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/events/EventListenerRequest.as</path>
<path kind="file" action="A">/flex/sdk/trunk/frameworks/projects/framework/src/mx/managers/marshalClasses/ToolTipManagerMarshalMixin.as</path>
<path kind="file" action="M">/flex/sdk/trunk/tools/dependencychecker/frameworkSwcExceptionsList.txt</path>
<path kind="file" action="M">/flex/sdk/trunk/mustella/MustellaResultsParser.java</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/Alert.as</path>
<path kind="file" action="A">/flex/sdk/trunk/frameworks/projects/framework/src/mx/managers/systemClasses/ChildManager.as</path>
<path kind="file" action="A">/flex/sdk/trunk/frameworks/projects/framework/src/mx/managers/systemClasses/MarshallPlan.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/core/UITextField.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/managers/SystemManagerGlobals.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/core/SWFBridgeGroup.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/alertClasses/AlertForm.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/airframework/src/spark/components/Window.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/treeClasses/TreeItemRenderer.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/managers/ISystemManager.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework_textLayout/src/mx/core/UITLFTextField.as</path>
<path kind="file" action="A">/flex/sdk/trunk/frameworks/projects/framework/src/mx/managers/marshalClasses/DragManagerMarshalMixin.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/core/UIComponent.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/SWFLoader.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/MenuBar.as</path>
<path kind="file" action="A">/flex/sdk/trunk/frameworks/projects/framework/src/mx/events/Request.as</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/framework/src/mx/styles/CSSStyleDeclaration.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/PopUpButton.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/events/FlexEvent.as</path>
<path kind="file" action="A">/flex/sdk/trunk/frameworks/projects/framework/src/mx/managers/IActiveWindowManager.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/managers/FocusManager.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/airframework/src/mx/managers/WindowedSystemManager.as</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="A">/flex/sdk/trunk/frameworks/projects/framework/src/mx/managers/marshalClasses/PopUpManagerMarshalMixin.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/listClasses/ListItemRenderer.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/managers/SystemManagerProxy.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/messaging/config/LoaderConfig.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/managers/IFocusManager.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/preloaders/DownloadProgressBar.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/core/ScrollControlBase.as</path>
<path kind="file" action="A">/flex/sdk/trunk/frameworks/projects/framework/src/mx/managers/ISystemManagerChildManager.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/dataGridClasses/DataGridItemRenderer.as</path>
<path kind="file" action="A">/flex/sdk/trunk/frameworks/projects/framework/src/mx/managers/marshalClasses/CursorManagerMarshalMixin.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/managers/CursorManagerImpl.as</path>
<path kind="file" action="A">/flex/sdk/trunk/frameworks/projects/framework/src/mx/managers/PopUpData.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/core/ISWFBridgeGroup.as</path>

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

--- frameworks/projects/framework/src/mx/managers/IMarshalSystemManager.as
+++ frameworks/projects/framework/src/mx/managers/IMarshalSystemManager.as
@@ -0,0 +1,136 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+//  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.managers
+{
+
+import flash.display.DisplayObject;
+import flash.events.Event;
+import flash.events.IEventDispatcher;
+import flash.geom.Rectangle;
+import mx.core.ISWFBridgeGroup;
+
+/**
+ */
+public interface IMarshalSystemManager
+{
+	//--------------------------------------------------------------------------
+	//
+	//  Properties
+	//
+	//--------------------------------------------------------------------------
+
+    //----------------------------------
+    //  swfBridgeGroup
+    //----------------------------------
+
+    /**
+     *  Contains all the bridges to other applications
+     *  that this application is connected to.
+     */
+    function get swfBridgeGroup():ISWFBridgeGroup;
+    function set swfBridgeGroup(value:ISWFBridgeGroup):void;
+
+	//--------------------------------------------------------------------------
+	//
+	//  Methods
+	//
+	//--------------------------------------------------------------------------
+
+	/**
+     *  Adds a child bridge to the system manager.
+     *  Each child bridge represents components in another sandbox
+     *  or compiled with a different version of Flex.
+     *
+     *  @param bridge The bridge for the child.
+     *
+     *  @param owner The SWFLoader for the child.
+     */
+    function addChildBridge(bridge:IEventDispatcher, owner:DisplayObject):void;
+
+    /**
+     *  Adds a child bridge to the system manager.
+     *  Each child bridge represents components in another sandbox
+     *  or compiled with a different version of Flex.
+     *
+     *  @param bridge The bridge for the child
+     */
+    function removeChildBridge(bridge:IEventDispatcher):void;
+
+	/**
+	 *  Dispatch a message to all parent and child applications in this SystemManager's SWF bridge group, regardless of
+	 *  whether they are in the same SecurityDomain or not. You can optionally exclude an application with this method's parameters.
+	 *
+     	 *  @param event The event to dispatch.
+     	 *
+     	 *  @param skip Specifies an IEventDispatcher that you do not want to dispatch a message to. This is typically used to skip the
+     	 *  IEventDispatcher that originated the event.
+	 *
+     	 *  @param trackClones Whether to keep a reference to the events as they are dispatched.
+     	 *
+     	 *  @param toOtherSystemManagers Whether to dispatch the event to other top-level SystemManagers in AIR.
+	 */
+	function dispatchEventFromSWFBridges(event:Event, skip:IEventDispatcher = null, trackClones:Boolean = false, toOtherSystemManagers:Boolean = false):void
+
+    /**
+     *  Determines if the caller using this system manager
+     *  should should communicate directly with other managers
+     *  or if it should communicate with a bridge.
+     *
+     *  @return true if the caller using this system manager
+     *  should  communicate using sandbox bridges.
+     *  If false the system manager may directly call
+     *  other managers directly via references.
+     */
+    function useSWFBridge():Boolean;
+
+    /**
+     *  Adds child to sandbox root in the layer requested.
+     *
+     *  @param layer Name of IChildList in SystemManager
+     *
+     *  @param child DisplayObject to add
+     */
+    function addChildToSandboxRoot(layer:String, child:DisplayObject):void;
+
+    /**
+     *  Removes child from sandbox root in the layer requested.
+     *
+     *  @param layer Name of IChildList in SystemManager
+     *
+     *  @param child DisplayObject to add
+     */
+    function removeChildFromSandboxRoot(layer:String, child:DisplayObject):void;
+
+    /**
+     *  Tests if a display object is in a child application
+     *  that is loaded in compatibility mode or in an untrusted sandbox.
+     *
+     *  @param displayObject The DisplayObject to test.
+     *
+     *  @return true if displayObject
+     *  is in a child application that is loaded in compatibility mode
+     *  or in an untrusted sandbox, and false otherwise.
+     */
+    function isDisplayObjectInABridgedApplication(
+                        displayObject:DisplayObject):Boolean;
+
+	/**
+	 * @private
+	 *
+	 * Notify parent that a new window has been activated.
+	 *
+	 * @param window window that was activated.
+	 */
+	function dispatchActivatedWindowEvent(window:DisplayObject):void
+}
+
+}


6502 sname key input and move implementation

--- 6502/easy6502/snake-ex.as
+++ 6502/easy6502/snake-ex.as
@@ -27,7 +27,7 @@

 ; System variables
 define sysRandom    $fe
-define sysLastKey   $ff
+define sysKey       $ff

   jsr init
   jsr loop
@@ -74,10 +74,56 @@
   rts

 loop:
+  jsr readKeys
   jsr drawSnake
   jsr drawApple
   jmp loop

+  readKeys:
+    lda sysKey
+    cmp #ASCII_w
+    beq upKey
+    cmp #ASCII_d
+    beq rightKey
+    cmp #ASCII_s
+    beq downKey
+    cmp #ASCII_a
+    beq leftKey
+    rts
+  upKey:
+    lda #movingDown
+    bit snakeDirection
+    bne illegalMove
+
+    lda #movingUp
+    sta snakeDirection
+    rts
+  rightKey:
+    lda #movingLeft
+    bit snakeDirection
+    bne illegalMove
+
+    lda #movingRight
+    sta snakeDirection
+    rts
+  downKey:
+    lda #movingUp
+    bit snakeDirection
+    bne illegalMove
+
+    lda #movingDown
+    sta snakeDirection
+    rts
+  leftKey:
+    lda #movingRight
+    bit snakeDirection
+    bne illegalMove
+
+    lda #movingLeft
+    sta snakeDirection
+    rts
+  illegalMove:
+    rts

 drawSnake:
   ldx snakeLength


test commit

test commit

--- as3-processor/com/mozaic/mozaic.as
+++ as3-processor/com/mozaic/mozaic.as
@@ -18,8 +18,6 @@

 		}

-
-
 	}

 }


Restoring functionality to type-guess 'int' for integral numbers.

This affects uint, int, and Number (basically, anything that "fits"
in an int will be considered an int), but that's probably more useful
than automatically "promoting" ints to double precision floats.

We can provide wrappers at a later date to allow integral Numbers
to be passed in as double precision.

--- driver/src/main/flex/org/postgresql/util/getType.as
+++ driver/src/main/flex/org/postgresql/util/getType.as
@@ -4,8 +4,11 @@
     import flash.utils.getQualifiedClassName;

     /**
-     * Determine the type of the given Object. Note that at the moment, due to some
-     * Flash Player shenanigans, this does not work well with numeric types (int, uint, and Number).
+     * Determine the type of the given Object. Note that at the moment, due to some
+     * Flash Player shenanigans, this does not work well with numeric types (int,
+     * uint, and Number). We take the pragmatic approach that anything
+     * numeric that fits in 32 bits and is integral is an int, and all other numeric
+     * values are considered Number.
      * @param value Object whose class to determine; must not be null
      * @return Class of the given object
      */
@@ -18,6 +21,8 @@
             // work around. Will revisit.
             var fqcn:String = getQualifiedClassName(value);
             return Class(getDefinitionByName(fqcn));
+        } else if (value is int) {
+            return int;
         } else {
             return Class(value.constructor);
         }


Transferred from the Adobe Open Source Subversion Repository

Revision: 21076
Author:   jasonsj@adobe.com
Date:     2011-04-13T21:20:17.893728Z

Log Message:
-----------
Fix title alignment regression from previous SDK-30131 fix. Corrected tightWidth to unscaledWidth for proper sizing and truncation.

QE notes: none
Doc notes: none
Bugs:
SDK-30131 The titleDisplay of the actionBar steals mouse events because its bounds extend that of the ActionBar
Reviewer: tkraikit
Tests run: checkintests
Is noteworthy for integration: no

Modified Paths:
--------------
/private/flex/sdk/trunk/frameworks/projects/mobiletheme/src/spark/skins/mobile/ActionBarSkin.as

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

--- frameworks/projects/mobiletheme/src/spark/skins/mobile/ActionBarSkin.as
+++ frameworks/projects/mobiletheme/src/spark/skins/mobile/ActionBarSkin.as
@@ -654,20 +654,19 @@
             titleDisplay.text = title;
         titleDisplay.commitStyles();

-        // use preferred width/height, setLayoutBoundsSize will accommodate
-        // for tight text adjustment
-        var tightWidth:Number = titleDisplay.getPreferredBoundsWidth();
+        // use preferred height, setLayoutBoundsSize will accommodate for tight
+        // text adjustment
         var tightHeight:Number = titleDisplay.getPreferredBoundsHeight();
         var tightY:Number = (unscaledHeight - tightHeight) / 2;

-        titleDisplay.setLayoutBoundsSize(tightWidth, tightHeight);
+        titleDisplay.setLayoutBoundsSize(unscaledWidth, tightHeight);
         titleDisplay.setLayoutBoundsPosition(0, (unscaledHeight - tightHeight) / 2);

         // now truncate the text
         titleDisplay.truncateToFit();

         titleDisplayShadow.commitStyles();
-        titleDisplayShadow.setLayoutBoundsSize(tightWidth, tightHeight);
+        titleDisplayShadow.setLayoutBoundsSize(unscaledWidth, tightHeight);
         titleDisplayShadow.setLayoutBoundsPosition(0, tightY + 1);

         titleDisplayShadow.alpha = getStyle("textShadowAlpha");


Transferred from the Adobe Open Source Subversion Repository

Revision: 20012
Author:   jasonsj@adobe.com
Date:     2011-01-29T00:57:26.112385Z

Log Message:
-----------
Removing Button FIXMEs. Changed button shadow logic to remove tight text accounting.

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

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

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

--- frameworks/projects/mobiletheme/src/spark/skins/mobile/ButtonBarSkin.as
+++ frameworks/projects/mobiletheme/src/spark/skins/mobile/ButtonBarSkin.as
@@ -47,9 +47,6 @@
     public function ButtonBarSkin()
     {
         super();
-
-        // FIXME (jasonsj): not supported for GPU
-        // blendMode = BlendMode.LAYER;
     }

     //--------------------------------------------------------------------------
@@ -129,8 +126,6 @@
      */
     override protected function commitCurrentState():void
     {
-        // TODO (tkraikit): disabled state, apply 0.5 alpha (set BlendMode => LAYER)
-        // FIXME (jasonsj): not supported for GPU
         alpha = (currentState == "disabled") ? 0.5 : 1;
     }


Transferred from the Adobe Open Source Subversion Repository

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

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

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

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


Transferred from the Adobe Open Source Subversion Repository

Revision: 11088
Author:   hhillen@paciellogroup.com
Date:     2009-10-22T20:14:16.491190Z

Log Message:
-----------
Spark AccImpl Classes

Modified Paths:
--------------
<path kind="file" action="A">/flex/sdk/trunk/frameworks/projects/spark/src/spark/accessibility/TextAreaAccImpl.as</path>
<path kind="file" action="A">/flex/sdk/trunk/frameworks/projects/spark/src/spark/accessibility/SpinnerAccImpl.as</path>
<path kind="file" action="A">/flex/sdk/trunk/frameworks/projects/spark/src/spark/accessibility/PanelAccImpl.as</path>
<path kind="file" action="A">/flex/sdk/trunk/frameworks/projects/spark/src/spark/accessibility/ButtonBarAccImpl.as</path>
<path kind="file" action="A">/flex/sdk/trunk/frameworks/projects/spark/src/spark/accessibility/SliderAccImpl.as</path>
<path kind="file" action="A">/flex/sdk/trunk/frameworks/projects/spark/src/spark/accessibility/TextInputAccImpl.as</path>
<path kind="dir" action="A">/flex/sdk/trunk/frameworks/projects/spark/src/spark/accessibility</path>
<path kind="file" action="A">/flex/sdk/trunk/frameworks/projects/spark/src/spark/accessibility/CheckBoxAccImpl.as</path>
<path kind="file" action="A">/flex/sdk/trunk/frameworks/projects/spark/src/spark/accessibility/ListBaseAccImpl.as</path>
<path kind="file" action="A">/flex/sdk/trunk/frameworks/projects/spark/src/spark/accessibility/SkinnableTextBaseAccImpl.as</path>
<path kind="file" action="A">/flex/sdk/trunk/frameworks/projects/spark/src/spark/accessibility/DropDownListAccImpl.as</path>
<path kind="file" action="A">/flex/sdk/trunk/frameworks/projects/spark/src/spark/accessibility/RadioButtonAccImpl.as</path>
<path kind="file" action="A">/flex/sdk/trunk/frameworks/projects/spark/src/spark/accessibility/ButtonAccImpl.as</path>

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

--- frameworks/projects/spark/src/spark/accessibility/RadioButtonAccImpl.as
+++ frameworks/projects/spark/src/spark/accessibility/RadioButtonAccImpl.as
@@ -0,0 +1,141 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+//  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 spark.accessibility
+{
+
+import mx.core.UIComponent;
+import mx.core.mx_internal;
+
+import spark.components.RadioButton;
+import spark.components.RadioButtonGroup;
+
+use namespace mx_internal;
+
+/**
+ *  RadioButtonAccImpl is a subclass of AccessibilityImplementation
+ *  which implements accessibility for the RadioButton class.
+ *
+ *  @langversion 3.0
+ *  @playerversion Flash 9
+ *  @playerversion AIR 1.1
+ *  @productversion Flex 3
+ */
+public class RadioButtonAccImpl extends CheckBoxAccImpl
+{
+    include "../core/Version.as";
+
+    //--------------------------------------------------------------------------
+    //
+    //  Class methods
+    //
+    //--------------------------------------------------------------------------
+
+    /**
+     *  Enables accessibility in the RadioButton class.
+     *
+     *
This method is called by application startup code
+     *  that is autogenerated by the MXML compiler.
+     *  Afterwards, when instances of RadioButton are initialized,
+     *  their accessibilityImplementation property
+     *  will be set to an instance of this class.

+     *
+     *  @langversion 3.0
+     *  @playerversion Flash 10
+     *  @playerversion AIR 1.5
+     *  @productversion Flex 4
+     */
+    public static function enableAccessibility():void
+    {
+        RadioButton.createAccessibilityImplementation =
+            createAccessibilityImplementation;
+    }
+
+    /**
+     *  @private
+     *  Creates a RadioButton's AccessibilityImplementation object.
+     *  This method is called from UIComponent's
+     *  initializeAccessibility() method.
+     */
+    mx_internal static function createAccessibilityImplementation(
+                                component:UIComponent):void
+    {
+        component.accessibilityImplementation =
+            new RadioButtonAccImpl(component);
+    }
+
+    //--------------------------------------------------------------------------
+    //
+    //  Constructor
+    //
+    //--------------------------------------------------------------------------
+
+    /**
+     *  Constructor.
+     *
+     *  @param master The UIComponent instance that this AccImpl instance
+     *  is making accessible.
+     *
+     *  @langversion 3.0
+     *  @playerversion Flash 10
+     *  @playerversion AIR 1.5
+     *  @productversion Flex 4
+     */
+    public function RadioButtonAccImpl(master:UIComponent)
+    {
+        super(master);
+
+        role = 0x2D; // ROLE_SYSTEM_RADIOBUTTON
+    }
+
+    //--------------------------------------------------------------------------
+    //
+    //  Overridden methods: AccImpl
+    //
+    //--------------------------------------------------------------------------
+
+     /**
+     *  @private
+     *  method for returning the name of the radio button
+     *  which is spoken out by the screen reader.
+     *  The RadioButton should return the label as the name
+     *  with m of n string and ListBox should return the name
+     *  specified in the Accessibility Panel.
+     *
+     *  @param childID uint
+     *
+     *  @return Name String
+     */
+    override protected function getName(childID:uint):String
+    {
+
+        var name:String = RadioButton(master).label;
+        var radioGroup:RadioButtonGroup = RadioButton(master).group;
+        if (radioGroup)
+        {
+           var index:int = 0;
+           var n:int = radioGroup.numRadioButtons;
+           for (var i:int = 0; i < n; i++)
+           {
+               var radioButton:RadioButton = radioGroup.getRadioButtonAt(i);
+               if (radioButton === master)
+               {
+                   index = i + 1;
+                   break;
+               }
+           }
+           name += " " + index + " of " + n;
+        }
+        return name;
+    }
+}
+
+}


Transferred from the Adobe Open Source Subversion Repository

Revision: 16498
Author:   cframpto@adobe.com
Date:     2010-06-08T19:37:42.309866Z

Log Message:
-----------
Very rough initial cut at the ColumnHeaderBar.  The ColumnHeaderBar is in the DataGridSkin but commented out.

Modified Paths:
--------------
<path kind="file" action="M">/private/flex/sdk/branches/flex4_5/frameworks/projects/spark/src/SparkClasses.as</path>
<path kind="file" action="A">/private/flex/sdk/branches/flex4_5/frameworks/projects/spark/src/spark/components/ColumnHeaderBar.as</path>
<path kind="file" action="A">/private/flex/sdk/branches/flex4_5/frameworks/projects/spark/src/spark/components/ColumnHeaderBar.png</path>
<path kind="file" action="A">/private/flex/sdk/branches/flex4_5/frameworks/projects/spark/src/spark/components/supportClasses/DefaultColumnHeaderRenderer.as</path>
<path kind="file" action="A">/private/flex/sdk/branches/flex4_5/frameworks/projects/spark/src/spark/skins/spark/ColumnHeaderBarSkin.mxml</path>
<path kind="file" action="M">/private/flex/sdk/branches/flex4_5/frameworks/projects/spark/src/spark/components/supportClasses/GridColumn.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/flex4_5/frameworks/projects/spark/src/spark/skins/spark/DataGridSkin.mxml</path>
<path kind="file" action="M">/private/flex/sdk/branches/flex4_5/frameworks/projects/spark/src/spark/components/GridContainerBase.as</path>

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

--- frameworks/projects/spark/src/spark/components/GridColumnHeaderGroup.as
+++ frameworks/projects/spark/src/spark/components/GridColumnHeaderGroup.as
@@ -0,0 +1,666 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+//  ADOBE SYSTEMS INCORPORATED
+//  Copyright 2008 Adobe Systems Incorporated
+//  All Rights Reserved.
+//
+//  NOTICE: Adobe permits you to use, modify, and distribute this file
+//  in accordance with the terms of the license agreement accompanying it.
+//
+////////////////////////////////////////////////////////////////////////////////
+
+package spark.components
+{
+import flash.events.Event;
+import flash.events.MouseEvent;
+import flash.geom.Rectangle;
+
+import mx.collections.IList;
+import mx.core.ClassFactory;
+import mx.core.IFactory;
+import mx.core.IVisualElement;
+import mx.core.mx_internal;
+import mx.events.CollectionEvent;
+import mx.events.CollectionEventKind;
+import mx.managers.IFocusManagerComponent;
+
+import spark.components.supportClasses.DefaultColumnHeaderRenderer;
+import spark.components.supportClasses.GridColumn;
+import spark.events.RendererExistenceEvent;
+import spark.utils.LabelUtil;
+
+use namespace mx_internal;
+
+[IconFile("ColumnHeaderBar.png")]
+
+/**
+ * Questions:
+ *  - Should you be able to tab to the ColumnHeaderBar?
+ *  - How about to each item within the bar?
+ *  - Should you be able to move between the items using the keyboard?
+ *  - Contract between Grid and ColumnHeaderBar?
+ *  - how is the column width determined?
+ *  - how does the ColumnHeaderBar find out about column changes?
+ *  - do column headers support word-wrap thru skinning?
+ *  - If we allow developers to provide custom item renderers that either extend
+ *      ItemRenderer or implement IItemRenderer directly, we'll be inheriting
+ *      ItemRenderer's 7 states (see ItemRenderer/getCurrentRendererState()).
+ *      That means that developers will not be able to configure the renderer
+ *      based on its column's sort-direction.  That's probably not going to
+ *      work, which means that we'll need a ColumnHeaderRenderer subclass of
+ *      ItemRenderer that adds extra states.
+ */
+
+/**
+ *  The ColumnHeaderBar control defines
+ *
+ *  @langversion 3.0
+ *  @playerversion Flash 10
+ *  @playerversion AIR 2.0
+ *  @productversion Flex 4.5
+ */
+public class ColumnHeaderBar extends SkinnableDataContainer implements IFocusManagerComponent
+{
+    include "../core/Version.as";
+
+    //--------------------------------------------------------------------------
+    //
+    //  Constructor
+    //
+    //--------------------------------------------------------------------------
+
+    /**
+     *  Constructor.
+     *
+     *  @langversion 3.0
+     *  @playerversion Flash 10
+     *  @playerversion AIR 1.5
+     *  @productversion Flex 4
+     */
+    public function ColumnHeaderBar()
+    {
+        super();
+
+        itemRendererFunction = defaultColumnHeaderBarItemRendererFunction;
+    }
+
+    //--------------------------------------------------------------------------
+    //
+    //  Properties
+    //
+    //--------------------------------------------------------------------------
+
+    //----------------------------------
+    //  columns
+    //----------------------------------
+
+    /**
+     *  @private
+     */
+    public function set columns(value:IList):void
+    {
+        super.dataProvider = value;
+        invalidateDisplayList();
+    }
+
+    //----------------------------------
+    //  firstItemRenderer
+    //----------------------------------
+
+    private var _firstItemRenderer:IFactory = null;
+
+    [Bindable("firstItemRendererChanged")]
+
+    /**
+     *  A factory for IItemRenderers used to render the header for the first
+     *  grid columns.  If not specified, the column header bar's
+     *  headerItemRenderer is return.
+     *
+     *  @default The value of the firstItemRenderer, or the headerItemRenderer,
+     *  if this has not been set.
+     *
+     *  @see #dataField
+     *  @see GridItemRenderer
+     */
+    public function get firstItemRenderer():IFactory
+    {
+        return (_firstItemRenderer) ? _firstItemRenderer : itemRenderer;
+    }
+
+    /**
+     *  @private
+     */
+    public function set firstItemRenderer(value:IFactory):void
+    {
+        if (_firstItemRenderer == value)
+            return;
+
+        _firstItemRenderer = value;
+        dispatchChangeEvent("firstItemRendererChanged");
+
+        invalidateDisplayList();
+    }
+
+    //----------------------------------
+    //  grid
+    //----------------------------------
+
+    private var _grid:Grid;
+
+    /**
+     *  @private
+     */
+    public function set grid(value:Grid):void
+    {
+        if (_grid == value)
+            return;
+
+        _grid = value;
+        invalidateDisplayList();
+    }
+
+    //----------------------------------
+    //  horizontalScrollPosition
+    //----------------------------------
+
+    private var _horizontalScrollPosition:int;
+
+    public function get horizontalScrollPosition():Number
+    {
+        return dataGroup ?
+               dataGroup.horizontalScrollPosition : _horizontalScrollPosition;
+    }
+
+    /**
+     *  @private
+     */
+    public function set horizontalScrollPosition(value:Number):void
+    {
+        // If there is no layout, dataGroup caches this.
+        if (dataGroup)
+            dataGroup.horizontalScrollPosition = value;
+        else
+            _horizontalScrollPosition = value;
+    }
+
+    //----------------------------------
+    //  labelField
+    //----------------------------------
+
+    /**
+     *  @private
+     */
+    private var _labelField:String = "headerText";
+
+    /**
+     *  @private
+     */
+    private var labelFieldOrFunctionChanged:Boolean;
+
+    /**
+     *  The name of the field in the data provider items to display
+     *  as the header label.
+     *  The labelFunction property overrides this property.
+     *
+     *  @default "headerText"
+     *
+     *  @langversion 3.0
+     *  @playerversion Flash 10
+     *  @playerversion AIR 2
+     *  @productversion Flex 4.5
+     */
+    public function get labelField():String
+    {
+        return _labelField;
+    }
+
+    /**
+     *  @private
+     */
+    public function set labelField(value:String):void
+    {
+        if (value == _labelField)
+            return
+
+            _labelField = value;
+        labelFieldOrFunctionChanged = true;
+        invalidateProperties();
+    }
+
+    //----------------------------------
+    //  labelFunction
+    //----------------------------------
+
+    /**
+     *  @private
+     */
+    private var _labelFunction:Function;
+
+    /**
+     *  A user-supplied function to run on each item to determine its label.
+     *  The labelFunction property overrides
+     *  the labelField property.
+     *
+     *
You can supply a labelFunction that finds the
+     *  appropriate fields and returns a displayable string. The
+     *  labelFunction is also good for handling formatting and
+     *  localization.

+     *
+     *
The label function takes a single argument which is the item in
+     *  the data provider and returns a String.

+     *

+     *  myLabelFunction(item:Object):String

+     *
+     *  @default null
+     *
+     *  @langversion 3.0
+     *  @playerversion Flash 10
+     *  @playerversion AIR 2
+     *  @productversion Flex 4.5
+     */
+    public function get labelFunction():Function
+    {
+        return _labelFunction;
+    }
+
+    /**
+     *  @private
+     */
+    public function set labelFunction(value:Function):void
+    {
+        if (value == _labelFunction)
+            return
+
+            _labelFunction = value;
+        labelFieldOrFunctionChanged = true;
+        invalidateProperties();
+    }
+
+    //----------------------------------
+    //  lastItemRenderer
+    //----------------------------------
+
+    private var _lastItemRenderer:IFactory = null;
+
+    [Bindable("lastItemRendererChanged")]
+
+    /**
+     *  A factory for IItemRenderers used to render the header for the last
+     *  grid columns.  If not specified, the column header bar's
+     *  itemRenderer is return.
+     *
+     *  @default The value of the lastItemRenderer, or the itemRenderer,
+     *  if this has not been set.
+     *
+     *  @see #dataField
+     *  @see GridItemRenderer
+     */
+    public function get lastItemRenderer():IFactory
+    {
+        return (_lastItemRenderer) ? _lastItemRenderer : itemRenderer;
+    }
+
+    /**
+     *  @private
+     */
+    public function set lastItemRenderer(value:IFactory):void
+    {
+        if (_lastItemRenderer == value)
+            return;
+
+        _lastItemRenderer = value;
+        dispatchChangeEvent("lastItemRendererChanged");
+
+        invalidateDisplayList();
+    }
+
+    //--------------------------------------------------------------------------
+    //
+    //  Overridden Properties
+    //
+    //--------------------------------------------------------------------------
+
+    //----------------------------------
+    //  dataProvider
+    //----------------------------------
+
+    /**
+     *  TBD: this is for the column headers
+     *
+     *  @langversion 3.0
+     *  @playerversion Flash 10
+     *  @playerversion AIR 1.5
+     *  @productversion Flex 4
+     */
+    override public function set dataProvider(value:IList):void
+    {
+        if (dataProvider)
+            dataProvider.removeEventListener(CollectionEvent.COLLECTION_CHANGE, dataProvider_collectionChangeHandler);
+
+        // ensure that our listener is added before the dataGroup which adds a listener during
+        // the base class setter if the dataGroup already exists.  If the dataGroup isn't
+        // created yet, then we still be first.
+        if (value)
+            value.addEventListener(CollectionEvent.COLLECTION_CHANGE, dataProvider_collectionChangeHandler);
+
+        super.dataProvider = value;
+    }
+
+    //----------------------------------
+    //  itemRenderer
+    //----------------------------------
+
+    private var _itemRenderer:IFactory = null;
+
+    [Bindable("itemRendererChanged")]
+
+    /**
+     *  A factory for IItemRenderers used to render the header for the
+     *  grid columns.  If not specified, the
+     *  DefaultColumnHeaderRenderer is returned.
+     *
+     *
The default item renderer just displays the value of its
+     *  label property, which is based on the dataProvider item for
+     *  the column, and on the column's headerText property.  Custom item
+     *  renderers that derive more values from the column item and include
+     *  more complex visuals are easily created by subclassing
+     *  ItemRenderer.

+     *
+     *  @default The value of the headerItemRenderer.
+     *
+     *  @see DefaultColumnHeaderRenderer
+     */
+    override public function get itemRenderer():IFactory
+    {
+        if (!_itemRenderer)
+            _itemRenderer = new ClassFactory(DefaultColumnHeaderRenderer);
+
+        return _itemRenderer;
+    }
+
+    /**
+     *  @private
+     */
+    override public function set itemRenderer(value:IFactory):void
+    {
+        if (_itemRenderer == value)
+            return;
+
+        _itemRenderer = value;
+        invalidateDisplayList();
+
+        dispatchChangeEvent("itemRendererChanged");
+    }
+
+    //--------------------------------------------------------------------------
+    //
+    //  Overridden Methods
+    //
+    //--------------------------------------------------------------------------
+
+    /**
+     *  @private
+     */
+    override protected function partAdded(partName:String, instance:Object):void
+    {
+        super.partAdded(partName, instance);
+
+        if (instance == dataGroup)
+        {
+            dataGroup.horizontalScrollPosition = _horizontalScrollPosition;
+            dataGroup.addEventListener(RendererExistenceEvent.RENDERER_ADD, dataGroup_rendererAddHandler);
+            dataGroup.addEventListener(RendererExistenceEvent.RENDERER_REMOVE, dataGroup_rendererRemoveHandler);
+        }
+    }
+
+    /**
+     * @private
+     */
+    override protected function partRemoved(partName:String, instance:Object):void
+    {
+        if (instance == dataGroup)
+        {
+            dataGroup.removeEventListener(RendererExistenceEvent.RENDERER_ADD, dataGroup_rendererAddHandler);
+            dataGroup.removeEventListener(RendererExistenceEvent.RENDERER_REMOVE, dataGroup_rendererRemoveHandler);
+        }
+
+        super.partRemoved(partName, instance);
+    }
+
+    /**
+     *  @private
+     */
+    override public function invalidateDisplayList():void
+    {
+        super.invalidateDisplayList();
+        if (dataGroup)
+            dataGroup.invalidateDisplayList();
+    }
+
+    /**
+     *  @private
+     */
+    override protected function commitProperties():void
+    {
+        if (labelFieldOrFunctionChanged)
+        {
+            // Cycle through all instantiated renderers to push the correct text
+            // in to the renderer by setting its label property
+            if (dataGroup)
+            {
+                var itemIndex:int;
+
+                // if virtual layout, only loop through the indices in view
+                // otherwise, loop through all of the item renderers
+                if (layout && layout.useVirtualLayout)
+                {
+                    for each (itemIndex in dataGroup.getItemIndicesInView())
+                    {
+                        updateRendererLabelProperty(itemIndex);
+                    }
+                }
+                else
+                {
+                    var n:int = dataGroup.numElements;
+                    for (itemIndex = 0; itemIndex < n; itemIndex++)
+                    {
+                        updateRendererLabelProperty(itemIndex);
+                    }
+                }
+            }
+
+            labelFieldOrFunctionChanged = false;
+        }
+    }
+
+    /**
+     * @private
+     */
+    override protected function updateDisplayList(unscaledWidth:Number,
+                                                  unscaledHeight:Number):void
+    {
+        super.updateDisplayList(unscaledWidth, unscaledHeight);
+
+        // ToDo: where/when should this be done?
+
+        // Size the renderers to match the column widths.
+        if (dataGroup && _grid)
+        {
+            const indicesInView:Vector.<int> = dataGroup.getItemIndicesInView();
+            for each (var itemIndex:int in indicesInView)
+            {
+                var renderer:IVisualElement =
+                    dataGroup.getElementAt(itemIndex) as IVisualElement;
+                if (renderer)
+                {
+                    // The width includes the columnGap.
+                    var r:Rectangle = _grid.getCellBounds(0, itemIndex);
+                    if (r)
+                        renderer.width = r.width;
+                }
+            }
+       }
+    }
+
+    /**
+     *  Given a data item, return the correct text a renderer
+     *  should display while taking the labelField
+     *  and labelFunction properties into account.
+     *
+     *  @param item A data item
+     *
+     *  @return String representing the text to display for the
+     *  data item in the  renderer.
+     *
+     *  @langversion 3.0
+     *  @playerversion Flash 10
+     *  @playerversion AIR 1.5
+     *  @productversion Flex 4
+     */
+    override public function itemToLabel(item:Object):String
+    {
+        return LabelUtil.itemToLabel(item, labelField, labelFunction);
+    }
+
+    //--------------------------------------------------------------------------
+    //
+    //  Private Methods
+    //
+    //--------------------------------------------------------------------------
+
+    private function dispatchChangeEvent(type:String):void
+    {
+        if (hasEventListener(type))
+            dispatchEvent(new Event(type));
+    }
+
+    /**
+     *  @private
+     */
+    private function updateRendererLabelProperty(itemIndex:int):void
+    {
+        // grab the renderer at that index and re-compute it's label property
+        var renderer:IItemRenderer = dataGroup.getElementAt(itemIndex) as IItemRenderer;
+        if (renderer)
+            renderer.label = itemToLabel(renderer.data);
+    }
+
+    /**
+     *  @private
+     *  If the first column use the firstItemRenderer, if the last column use
+     *  the lastItemRenderer, otherwise use the itemRenderer.
+     */
+    private function defaultColumnHeaderBarItemRendererFunction(data:Object):IFactory
+    {
+        var column:GridColumn = GridColumn(data);
+
+        var columnIndex:int = column.columnIndex;
+
+        if (columnIndex == 0)
+            return firstItemRenderer;
+
+        if (columnIndex == dataProvider.length - 1)
+            return lastItemRenderer;
+
+        return itemRenderer;
+    }
+
+
+    //--------------------------------------------------------------------------
+    //
+    //  Event Handlers
+    //
+    //--------------------------------------------------------------------------
+
+    /**
+     *  @private
+     *  Called when the mouse is clicked.
+     */
+    private function item_clickHandler(event:MouseEvent):void
+    {
+        var newIndex:int;
+        if (event.currentTarget is IItemRenderer)
+            newIndex = IItemRenderer(event.currentTarget).itemIndex;
+        else
+            newIndex = dataGroup.getElementIndex(event.currentTarget as IVisualElement);
+    }
+
+    /**
+     *  @private
+     *  Called when contents within the dataProvider changes.
+     *
+     *  @param event The collection change event
+     *
+     *  @langversion 3.0
+     *  @playerversion Flash 10
+     *  @playerversion AIR 1.5
+     *  @productversion Flex 4
+     */
+    protected function dataProvider_collectionChangeHandler(event:Event):void
+    {
+        // ToDo: what should be done if columns change?
+
+        if (event is CollectionEvent)
+        {
+            var ce:CollectionEvent = CollectionEvent(event);
+
+            if (ce.kind == CollectionEventKind.ADD)
+            {
+            }
+            else if (ce.kind == CollectionEventKind.REMOVE)
+            {
+            }
+            else if (ce.kind == CollectionEventKind.RESET)
+            {
+            }
+            else if (ce.kind == CollectionEventKind.REFRESH)
+            {
+            }
+            else if (ce.kind == CollectionEventKind.REPLACE ||
+                    ce.kind == CollectionEventKind.MOVE)
+            {
+                //These cases are handled by the DataGroup skinpart
+            }
+        }
+    }
+
+    /**
+     *  @private
+     */
+    private function dataGroup_rendererAddHandler(event:RendererExistenceEvent):void
+    {
+        const renderer:IItemRenderer = event.renderer as IItemRenderer;
+        if (renderer)
+        {
+            renderer.addEventListener(MouseEvent.CLICK, item_clickHandler);
+
+            // ToDo: should the width of the renderer be set here or somewhere
+            // else?
+            if (_grid)
+            {
+                var r:Rectangle = _grid.getCellBounds(0, renderer.itemIndex);
+                if (r)
+                    renderer.width = r.width;
+                else
+                    invalidateDisplayList();
+            }
+
+            // ToDo: deal with focus issues
+            //if (renderer is IFocusManagerComponent)
+            //    IFocusManagerComponent(renderer).focusEnabled = false;
+        }
+    }
+
+    /**
+     *  @private
+     */
+    private function dataGroup_rendererRemoveHandler(event:RendererExistenceEvent):void
+    {
+        const renderer:IVisualElement = event.renderer;
+        if (renderer)
+            renderer.removeEventListener(MouseEvent.CLICK, item_clickHandler);
+    }
+}
+
+}
+