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
@ Font Embedding. Adobe may wait for greater support of CSS3 in browsers before they improve this. The specification isn’t close to being agreed upon or even ready. But I think we may be able to find some sort of compiler embedding as in Flash. We can only hope.
A step in the right direction:
Have you seen a IDE FactoryÂ´s plugin? It is beta now but it looks like a worthy buy when it is released. http://www.idefactory.com/
@Dimitar, @Jens IDEFactory looks promising. I’ll think I’ll install it and give it a whirl. However I have to be honest that I’d be loathed to pay even more money out for enhanced productivity (not that I know how much IDEFactory Enterprise plugin will be).
I may change my mind once I’ve tried the beta though :p
@Kevin We already have a choice of three different font compilers in Flex. In my mind it’s more to do with making embedding a font easier and reflective in the Design view.
You are right though, if we had a dilaog like the Flash authoring version, that would go some way to help the pain :)
@IDE Factory The Enterprise IDE Plugin will be very affordable, we don’t want cost to be a barrier for anyone. We are also interested in releasing new features quickly and intend to do so in the future. We are also considering publishing the APIs for our own framework to make it accessible to being extended by third parties. This would make it very easy for example to do your own AS3 code generation from Flex Builder 3, if you want to support a particular framework or any other purpose.
@Luis, thanks for the update. I’m just about to install it so I may do a review of it at some point as a link back to this original article :)
You are missing the biggest one: the ability to evaluate functions in the Expressions window.
Hi, just a quick note to say that some of the things on your list are indeed going to be in Flex Builder 4.
@Joel: FB4 will have the ability to evaluate functions in the Expressions window, yay!
– Mike Morearty, Flex Builder team
Yep, confirming Mike’s confirmation: Flex Builder 4 will shorten your list considerably. Watch around MAX 2008 for more details.
– Tim Buntel, Flex Builder PM
Refactor needs serious help. Copy and Paste of a *.as class should at least rename the class and the constructor for you. See IntelliJ’s refactor capability to fill in the rest of what’s missing.
Error highlighting of known compiler issues is a paramount time saver. Every editor worth noting for a given language keeps you from fat-fingering variable names and unknown objects. The list of preventable compiler issues is long, that’s just a start.
Auto-imports for all referenced libraries even if I decide to type it out (or on cut and paste operation). For some reason it’s hit or miss unless you crack return when the class is highlighted in the type ahead helper. This actually goes back to preventing compiler problems again.. I can’t tell you how many wasted minutes I’ve had hunting down import paths for Adobe classes.
Code formatting (I may be blowing smoke here but certainly there should be a way to format based on a template (not to be confused with the Templates entry you mentioned first)) Maybe I have missed it but java’s Ctrl+Shift+F doesn’t do anything when Flexing and there’s no place to specify format options…
Fix Ctrl+Shift+T and make it work with a FB build that has JDT added to it after install. It (sometimes) works with FB but rarely works for java classes with JDT installed after the FB install.
OK. I’m done ranting… maybe not. There are many other irritating things that I’ll not list here, but I have to agree that it’s come a long way. It’s potential is HUGE. The platform itself is a pleasure to work with although coming from a java world (you couldn’t tell could ya ;-) the tool is inadequate considering the dollars Adobe wants us to fork out for it…
@Mike, @Tim, good to hear that – I’l be at MAX in SF so I’ll be sure to check out the announcements :D