Monthly Archives: May 2008

Open Source Flex Component: TreeMap 2.0 (Beta)

After quite a bit of work, I’m relieved to present a beta release for the next version of my TreeMap component for Flex. It took me a while, but I reworked much of the core item renderer code to optimize performance, improve maintenance tasks, and generally make it a better component for everyone to use. For full details, visit the TreeMap project page and grab the new build from the downloads section. The package is marked 2.0.0 BETA.

One of the features I’d like to highlight is the new header renderer. The most obvious change is the new zoom button. Because the headers may be selected (when the branchesSelectable property is set to true), a separate zoom button is needed to differentiate these actions. Additionally, you might notice another interesting change in the example linked below. Choose the “Slice-and-Dice” layout, and you’ll see that some of the headers have a little arrow after any text that gets truncated. Roll the mouse over the header, and it will grow with animation to its optimal size, revealing the full text and the zoom button. A drop shadow makes it pop out a bit to help differentiate the header from the surrounding component. With particularly complex data providers, this feature helps usability enormously because the headers often become very small, which hides parts of the text and the icons on the zoom buttons too.

As with all beta software, a word of warning. This component is not completely tested, the documentation is obviously incomplete, and you should use this in production apps at your own risk. I did my best to get everything stable, but obviously, this is the very first release of some new code, so I know there will be bugs. If you’re feeling adventurous, though, I hope it works well for you. Should you see any strange behavior, please file a bug report so that I can make the next release better! If you have any questions, send them to the new flextreemap discussion group I set up recently so that others can learn too.

Hey Yahoo!, so long and thanks for all the Flash!

Some personal news for you all. Today’s my last day at Yahoo!. I’ve had an awesome time building cool Flash and Flex components and I’m honored to have been able to shape the best practices and directions taken with ActionScript here under the purple banner. Contributing to the Astra and YUI libraries and helping to expand and improve the Flash Developer Center has been a lot of fun. I’m excited to continue watching what new and interesting open source projects come out of the talented minds at Yahoo! long after I’m gone.

Where am I going now? Next week, I’ll start working full time with Clint and Ben and all the great folks at ESRIA. Besides coding in the trenches on various projects there, I plan to continue contributing to the open source Flash and Flex community as much as possible. Keep your eyes on my blog for more details as I get settled in. I have some cool ideas for applications, components, libraries, and all sorts of fun stuff. ESRIA digs my community contributions, and I’ll definitely have a lot more time to work on a wide range of interesting projects thanks to their support. I’m excited!

What's Up with Flash Player 10, Doc?

But seriously, where are the docs and compiler support for the new and exciting beta of Flash Player 10? I watched the video, and I looked at what is probably the only Flash 10 SWF on the web from the demo page on Adobe Labs. What else can I do? I couldn’t seem to get the the “Download Source” buttons to work at all, and now I’m getting frustrated! There’s a new Flash Player, and I want to play! I need API docs and a new playerglobal.swc to do it. Let me write some code and run it, damnit!

Yours truly,
Every Flash developer on the planet

UPDATE: Targeting Flash Player 10 Beta with Flex SDK 3.0.x

UPDATE 2: Lee Brimelow made a Video Tutorial on Compiling for Flash Player 10

UPDATE 3: Download the Flash Player 10 API Documentation. Courtesy of Lee Brimelow again.

Yahoo! Astra 1.2 has new layout containers for Flash! (and more)

Grab the open source goodness known as Astra 1.2 from the Yahoo! Flash Developer Center and read all about the new 1.2 release on the Yahoo! Flash Blog. This release includes updates to the Flash components, the removal of the Flex Maps hack from the Web APIs library (use the new Yahoo! Maps AS3 API instead), and the addition of the new Astra Utilities library.

Looking over the release notes, I realize that I made loads of contributions to this release. In particular, here are some highlights:

  • Charts now support legends! This is a much needed feature that just required a bit of time to get right.

  • Some cool new additions to LineCharts. I’ll be writing a blog post highlighting some of these new features soon.

  • Layout containers should be a big help to many projects. I’ve seen time and again Flex developers doing an AS3 project and complaining that there are no layout controls available in Flash CS3. Now you’ve got HBoxPane, VBoxPane, FlowPane, TilePane, and BorderPane at your disposal.

  • A lightweight Animation class. Yeah, I know, why do we need another tween library? We probably don’t, but when I wrote it, nothing else quite fit my needs. This actually got released in 1.1 as part of the charts, but now that we’ve got a library for generic utilities, I can give it a proper moment in the spotlight.

  • The layout utility provides the core framework used by the Flash CS3 layout containers. The purpose of this library is to allow component developers to build layout containers for any component set a bit more easily. Please read the documentation on YDN if you want to learn more. I explain the layout utility in much more detail over there.

Again, grab all the new downloads from the Yahoo! Flash Developer Center. All of our releases are available under the terms of the new BSD license, so enjoy! If you have any questions, comments, bug reports, or feature requests, please post them to the ydn-flash list.

Adobe needs to improve accessibility in Flash Player

For the last couple of weeks, I’ve been focused entirely on understanding the accessibility capabilities of Flash Player. My goals were two-fold. First, I needed to learn as much as possible about the documented and undocumented APIs available to ActionScript (The “undocumented” link purposefully leads to a page that doesn’t exist). Second, I wanted to use my findings to create a list of feature requests so that Adobe can improve accessibility support in future versions of Flash Player.

The following list compiles, in no particular order, what I felt were the more important missing features related to Flash Player’s accessibility. After each description, I link to the relevant feature request in Adobe’s public bug database. Please vote!

  • Flash Player isn’t accessible on a Mac

    For a cross-platform runtime, it’s a little troubling to see that Flash Player on a Mac can’t communicate with a assistive technology. Mac OS X 10.4 and 10.5 both include a built-in screen reader, called VoiceOver. With two versions supported by the base Mac operating system (it’s not an addon), I sincerely hope support for VoiceOver is a priority for the upcoming Flash Player 10.

    Feature Request: Support Accessibility API on Mac OS X

  • The AccessibilityProperties class doesn’t support roles

    Adobe recommends that we use the documented class, AccessibilityProperties. This class provides a simple API for many properties used by screen readers. One property it doesn’t expose is the role of the accessible object. Everything seen by a screen reader in Flash Player is a “graphic”. I’d love to be able to specify that an object is a button or a list.

    WAI-ARIA roles are recommended for UI controls created in HTML. I think this would be a great standard for Adobe to use as a basis for Flash Player’s accessibility.

    Feature Request: Support for roles in AccessibilityProperties

  • AccessibilityProperties doesn’t expose the display list hierarchy

    This one’s a little more abstract, but the hierarchy of accessible objects on the display list isn’t made available to accessibility clients when you use AccessibilityProperties. If I make a TabBar control, I cannot specify that individual tabs are children of the TabBar.

    I can’t declare the ultimate importance of this feature because I’m not an experienced screen reader user, but I definitely noticed the difference while testing with Microsoft’s Accessibility Explorer. When viewing native Windows applications, it displays a nice tree of objects that one can navigate. In a Flash Player application, I only saw a flat list of objects. At the very least, if this hierarchy isn’t important for screen reader users, it helps a developer to organize a very complex application for debugging purposes.

    Feature Request: Support for Object Hierarchy in AccessibilityProperties

  • Some accessibility APIs in Flash Player are undocumented

    As I stated previously, Flash Player has undocumented accessibility APIs. The Flex components and the Flash CS3 components both uses the undocumented class flash.accessibility.AccessibilityImplementation. It appears this class is based on the IAccessible interface from Microsoft’s Active Accessibility (MSAA).

    Unfortunately, Adobe’s implementation for ActionScript is incomplete because it doesn’t provide all the same functionality available to developers using MSAA. Additionally, this API is obviously platform-specific, so future Mac support will likely need to be handled very differently.

    I believe that Adobe needs to do one of two things.

    1. AccessibilityImplementation should be fully documented. If Adobe wants the developer community to be able to build complete components of the same quality as the Flex framework components, we should have access to the same APIs.

    2. Alternatively, if Adobe believes that we shouldn’t be using the AccessibilityImplementation class (the reasons I stated above are good reasons why we shouldn’t use it), they should not use this API themselves. It looks unprofessional. If that’s the case, substitute a better API that will allow cross-platform development and more complex controls. This may be possible with some simple additions to the existing AccessibilityProperties class.

    Feature Request: Accessibility implementations use undocumented APIs

For more information about the limitations of Flash Player’s Accessibility features, see Niqui Merret’s blog post from last year, Accessibility in Flash bug and issue list. For information related to web accessibility and laws in various jurisdictions around the world, see Policies Relating to Web Accessibility. In time, accessibility laws will become stronger, and it’s important that Flash Player provides better support early so that developers can prepare.