Flex Builder, for me, is a pleasure to use on a daily basis. It does what it does well and has its limitation, and I’m happy to accept that (for now). However it isn’t what you would call “feature rich”. Compared to the default eclipse Java Development Tools (JDT) and Flex Builders nearest rival, FDT Flex Builder doesn’t sparkle all that brightly.
Yes it does have a useful interface for the debugger, a visual layout view, various importers and wizards and a memory profiler (if you have the Professional version), to name a few; and all are great features. However when compared to other tools of a similar nature Flex Builder has a selection of ‘holes’ it really needs to fill. From my perspective there are some core features / functionality that really should have been included in Flex Builder 2, and hopefully if enough people agree then perhaps some of the following might get in to Flex Builder 4. To that end I’ve put together a list of elements I’d like to see in FB4. Most of these I have had reiterated from numerous developers I know so I don’t think this is a “What Mike wants” lists.
I’ve put the items in a list below (in no particular order) and where warranted I’ve gone in to further detail below it.
- Embedded assets in the Design view
- Asset import paths
- CSS Editor Linking
- ResourceBundle integration
- ASDoc integration
- Larger scope of document tags
- Font Embedding
- Tasks i.e TODO / FIXME
Templates are a big thing for me personally as I have a default set of comment blocks and stub code I put in to almost every ActionScript class. However I currently do this via a keyboard macro application and via “snippets” templates that are part of JDT. Not a really clean process as Flex Builder doesn’t come with either of these out of the box (or functionality that comes close). Both JDT and FDT have templates, as do numerous other eclipse based plugins, so it can’t be hard to include them.
Embedded Assets in Design View
I like the design view. Even if you are intimate with MXML and ActionScript the design view helps speed up the initial structural layout of your application / view. That said when it comes to embedded assets, especially images or SWFs, the results are a bit hit and miss. Sometimes it will display the embedded object whereas the norm is to just show you a generic icon marker scaled to the dimensions of the embedded element. This makes the use of the design view almost worthless as you can’t realistically align or position anything in relation to potential elements within your assets. This is a real problem as it permeates the entire application and doesn’t give a truly representative view of what your current design looks like.
I personally tend to have both the embedded and non embedded code in my files and then just comment out the one I need to use, not ideal but it works.
At this point in time based on the information floating online in regards to Thermo I don’t think that it will a) be integrated in to FB4 to begin with b) actually offer the functionality required.
Asset Import Paths
Within the property inspector if your component supports images you get the option of locating an image (the small folder icon that appears to the left of the image path text input. Now this still has me confused. If I click this icon it opens a system “Open Files” dialog that allows me to locate a file on my machine.
I’m confused for a few reasons, firstly if you are in a team environment and you use source control anything added this way will likely not be included in your project submission as it doesn’t import the file in to the project structure it just makes an @Embed link to the file wherever it may be on your machine. Secondly, why is it showing me the system “Open Files” dialog in the first place? The likelihood is that I have already imported assets in to a folder within my project and I want to add one of those without the hassle of typing the full path. So surely common sense would dictate that this would open up a dialog that was scoped to my project folder – like the “Select Artwork Folder” does when using the Artwork importation wizard. And finally this is just a really bad habit to get people in to. We have a structured project layout for a reason, it keeps everything organized and in one place. Even Dreamweaver warns you if you have assets located outside of the project. This for me personally fails on usability and functionality and really needs resolving.
CSS Editor Linking
With each new version of Flex Builder the CSS editor get a little bit better but it would be really handy if you could just CTRL / CMD + Click on a CSS reference in a styleName tag and be able to jump directly to the CSS entry in your stylesheet. That’s all nothing more just the ability to save a few extra seconds not having to open the CSS file and scroll / search for the entry you need.
ResourceBundles are a good thing. So why does it take a totally separate command line driven process to create them? When dealing with localized content the traditional “Flash” appraoch is to rely on XML and load the language that is relevant as required. If people are going to move over to using ResourceBundles then the process by which you create them needs to be integrated in to the Flex IDE. It’s confusing enough for most to get their heads around in the first place, but then to expect them to open up a terminal window and duly type away is pretty poor process at the very least and annoying at most.
While we can all run ASDoc from the command line it does dilute the value of Flex Builder through its absence. Most if not all Flex Builder users now resort to running ANT scripts to manually run ASDoc in the background. Again ANT isn’t part of the stand alone version of Flex Builder so you can’t do this out of the box. This is one of my all time top features I’d love to see in Flex Builder 4. If it worked like JavaDoc does in eclipse I’d be over the Moon.
Larger Scope of Document Tags
It would be really great to have greater support for the accepted tags used for automatic document generation (see JavaDoc). While we have quite a few already it would be good to get to the same level (as relevant) as JavaDoc, NDoc et al.
Having used Flex for quite a while now I’m pretty accustomed to most of its quirks and processes. However on a recent project I had a real eye opener with embedded fonts. It turns out that the corporate font of a well know mobile devices manufacturer didn’t embed identically via the three main accepted ways of font embedding. i.e via CSS @font-face embed code, via the [Embed] meta data tag and through straight in line font embedding via the fontFamily=”” MXML attribute. that said this paragraph isn’t about quirks in font embedding; it’s more about the “rough” approach to embedding the font in the first place.
Most I would suspect embed their fonts via CSS and this while quick to do could be made a lot more streamlined. I’d personally like to see a font selector so I can select the font (and the appropriate weight / size) and have that all added automatically. Think Artwork importer for fonts. Also if you use an embedded font for your CSS there isn’t a clean way to switch out the CSS embedded fonts for non embedded fonts.
Tasks – TODO / FIXME
This is a nice little feature that while there is a third-party plugin to perform the basic functionality it has been in hibernation for a few years now and doesn’t look like it will revive anytime soon. For those who have no idea what I’m talking about let me explain. In eclipse and therefore Flex Builder there is a panel called Tasks. This acts as a todo list / bookmark system that operates by automatically adding an entry if you place a comment inside your classes or MXML files that is proceeded with // TODO or // FIXME and then a sentence or two describing why have added it. The real advantage this has is the very fact it adds it to the Tasks panel as you can just double click the entry and it will load up the class and go straight to the issue. It also provides a mechanism for you to manage and highlight interim issues that need to be resolved that may not necessarily break the application. All in all very handy and worthy of inclusion I feel.
I personally don’t think these items are a big ask. In fact I think a lot of these could be easily added in as there are already “dead” or “dying” third-party solutions that could do with updating or incorporating, only time will tell if that is the case.
If you have any additional things you think should be in Flex Builder 4 please feel free to add then in the comments. If you think I’m talking out of my hat, feel free to let me know :p