Building a Better TileList: A Custom Scrollable TileList using Flex


I use a TileList component quite often when building Flex applications. Recently, I was asked to create a nice, smooth, horizontal scrolling effect for a TileList containing a 3×3 page grid of 40 or so images. After many unsuccessful attempts to cajole the TileList into the proper behavior, I decided to roll my own.

It seems the fundamental problem with the TileList, which extends from the ListBase class, is its management of item renderers. It gets confused when attempting an animation to change the horizontal scroll position using an AnimateProperty effect. It seems that item renderers get confused when moving items into view using an effect.

Wrangling Flex Labels: Auto-sizing Text


I am currently working on a project where we have a
fixed-width dialog box, and need to fit the title text in a label. The problem
is, the text is too long. What to do? Well, the basic Flex Label provides you a
couple of options: show an ellipsis (…) at the end of the label or cut the text
off. Neither of these solutions was viable.

This is a common problem that occurs in UI development:
fitting text in a limited space. My solution to this was to create a LabelUtil
class that automatically adjusts the font size of the text to fit the width of
the label.

Going with the Flow: Tips and Tricks for Using the Adobe Flex TextFlow Component


We’ve been busily developing using Flex 4 (aka “Gumbo”) here at the Grio offices and are impressed with many of its new features. One of the more interesting but difficult to decipher features is the TextFlow component.

The TextFlow component is used to layout text in a highly controlled way. It uses an XML-based markup language, Text Layout Format (TLF), to define the content of the TextFlow. TLF uses some similar tags to HTML (<div>, <p>, <span>), but it is definitely not HTML.  This may trip you up a bit as you learn TLF; I recommend reading the Adobe Labs info before diving too deep into development (

Grio Completes Flex App for Compiere, Inc.


Grio has recently completed a custom Adobe Flex application for Compiere, Inc. Compiere delivers the most widely used open source enterprise resource planning (ERP) and customer relationship management (CRM) solution with more than 1.8 million software downloads.

Grio was employed by Compiere to help create a new Flex-based module that will be delivered in Compiere's upcoming release.

Feel My Pain: NSXMLParser Problems Upgrading to the iPhone 3.0 SDK


I set out a couple of weeks ago to port the Killer Deals
application from the iPhone 2.2.1 SDK to 3.0. “No problem”, I thought; the
application doesn’t veer far from the standard APIs and controls, and it is a
relatively straightforward application, implementation-wise.

As I was making my updates (some minor method and property
name changes here and there), I stumbled upon a show stopper: The NSXMLParser
was no longer parsing my XML data. After scratching my head for a few hours, I
finally figured out the problem.

Broadcasting Information: How to use the iPhone Notification Center


There are times when building an iPhone application that you
need to inform other parts of the program to do something, without regard to
what or where those parts are. The NSNotificationCenter (aka “notification
center”) is the way to go in these cases. Using notifications supports ‘loose
coupling’, which is a good thing in software design.

A notification center object provides a mechanism for
broadcasting information (“notifications”) within a task. An
NSNotificationCenter object is basically a notification dispatch table. For
those familiar with Windows programming, this pattern is similar to the Windows
Message Loop architecture.

Keeping it Clean: Creating a Profanity Filter with Flex


I was recently tasked with writing a profanity filter for the chat module of an AIR application. I did some research and alas, there were no Flex examples to be found. I thought I’d share my implementation with you.

The filter needed to replace naughty words with asterisks: so profanities such as ‘f— you’ would appear as ‘**** you’. The filter also required the ability to use localized word ‘blacklists’.