Review: FDT Vs FlashDevelop

FDT Pure Coding Comfort

For my recent presentation on the Gaia Framework for Adobe Flash, I chose to steer away from my usual FlashDevelop editor to use FDT.

Since I never code in Flash IDE anymore, and that I use FlashDevelop daily, in this review of FDT I shall present a view that’s unique by comparing the two. I am no Flex developer and chances to use MXML is far in between, so this review will also be focused on using FDT to code ActionScript.

Importing

After using the Gaia Framework to generate the core files for me, importing them into a new project in the workspace was pretty easy.

Flash Explorer (Pane) -> Right Click -> Import… -> General -> File System

It took me a while to understand that I have to set the “Source Folder” for the codes to parse.

Flash Explorer (Pane) -> Right Click on folder -> Source Folder -> Add to Classpath

Code Warnings / Errors

Right after parsing the codes, the “Problems” pane became full of warnings (400+ to be exact). While I think it’s very useful to know about warnings and errors, showing me all the warnings found in the Gaia Framework and TweenLite were too much for me. If my code has a warning now, I will probably not notice since I’m never going to sieve through all those warnings to find mine.

It’ll be better if there’s a function to NOT SHOW the warnings from certain packages/classes.

[UPDATE 2: As highlighted by Maxim, Eclipse has a filter mechanism (Configure the filters to be applied to this view) for the “Problems” View (upper right corner of the view).]

This way, we don’t have to sieve through codes that have warnings that were not written by us in the first place.

What’s good however, is that errors are made known to me while I’m typing, and I can immediate correct it. This is invaluable and something that FlashDevelop doesn’t provide. Solid feature.

TODOs

While both FlashDevelop and FDT provide the “Tasks” pane to keep track of TODOs, FDT shines better as it provides checkboxes, and allows you to prioritise your tasks.

Templates / Snippets

(Ctrl+Space)
I’ve learnt to code so much faster with snippets in FlashDevelop that I tend to reject any editor without this type of feature. I’m glad that FDT provides a similar feature called Templates.

Windows -> Preferences -> FDT -> Editor -> Templates

It makes me a happier person that FDT’s templates are even more robust, in that you can set variables in place so that when you generate it, it lets you go through and change each variable via a tab process.

Open Resource

(Ctrl+Shift+R)
I love this feature in eclipse, and since FDT is built into eclipse, I’m happy to be able to use this feature again. FlashDevelop does not have this type of feature which makes finding files on large projects a hazard.

However, if the resource that I found and opened is a .fla file, the IDE tries to open it in eclipse itself, which of course, is undesirable. I’m not sure if FDT is able to do anything to change that, but will definitely make this feature stand out even more if it opens up in Flash IDE instead. Another work around is filtering out .fla files altogether. The former is definitely better.

[UPDATE 3: Even though editing this does not affect Open Resource, it is still good to know. Maxim mentioned that you can open .fla files in Flash IDE from FDT.]

Window -> Preferences -> FDT -> Tools -> Flash -> Flash IDE

Refactor

Both features, namely “Rename” and “Move” of refactoring are great. I can rename variables and move them from one package to another, and it automatically updates all references. Very awesome. Given the fact that FlashDevelop does not have something like that, it makes FDT stand out even more.

Quick Outline

(Ctrl+O)
There are so much use cases for this one because it’s so useful. All I have to do is to press the shortcut, and I can select what I’m looking for, and will be brought to the location. This is something that I wished FlashDevelop has without me needing to go through my codes, or worse, someone else’s.

Type Hierarchy

(Ctrl+T)
This feature is a worthy mention. In FlashDevelop, I often find myself looking up classes and their ancestors by hitting F4 multiple times. In order to check a certain class ancestry, depending on the situation, I might have to do these quite a number of times. It’s convenient, but once it spans over a few classes, the process becomes cumbersome.

The “Type Hierarchy” feature on the other hand, brings up the entire ancestry and in a single glance, I can see if the class inherits from another certain class. This saves me a fair amount of time from opening those extraneous files.

Code Assist

(Ctrl+Space)
While the Code Assist feature is great, it is a hassle to use. It only comes up whenever I hit the shortcut, which slows me down considerably. I was not able to find a way to make Code Assist come up as soon as I type something, unlike FlashDevelop, which has this as its default behaviour.

[UPDATE 4: Find how to boost your code assist!]

Contextual Code Generation

(Ctrl+1)
Unless it’s not known to me, FlashDevelop does better in this area. In FlashDevelop I was able to generate functions (including getters and setters), implement interfaces and promote variables, all by using a single shortcut. I was not able to find such a feature in FDT.

[UPDATE 1: After a hint by Kris, I played around and managed to find the shortcut to perform contextual code generation in FDT is Ctrl+1. It was however, still not as good as FlashDevelop in my opinion, since I was not able to implement interfaces with this shortcut.

A particular note to generate functions is that you have to end off the variable with parenthesis before it will work for functions.]

[UPDATE 2: Maxim pointed out to me that the “Quick Assist” function (Ctrl+1), is able to implement interfaces too. Read his full comment on it. :) ]

Code Formatting

(Ctrl+Shift+F)
I adore the details that FDT allows me to customise the way to auto format my codes. For the first time, if I’m taking over someone else’s project, I can simply hit the shortcut, and dirty formatting are instantly cleaned to the way I like it. Set your preferences in:

Window -> Preferences -> FDT -> Code Style -> Formatter

SWC Browsing

Not something that I view as important, FDT is able to view what classes are inside an SWC, and generates a class with its methods and variables for a detailed look. SWC browsing takes other people packaged code to a view that’s neater and easier to refer.

FlashDevelop on the other hand, even offers you to see an overview of the classes used in both SWF and SWC, although there’s no generated source to peek.

Cross Platform

Love the fact that FDT is able to work in both Windows and Mac OS environments. As FlashDevelop uses the Microsoft .NET 2.0 framework, it can only run in Windows.

Price

The price is possibly the biggest hold back for me, since FlashDevelop is free to use.

About Flashmech

I have too many things in plans for my own good. But well, that's me. :) I love God, praise Him, and trust that He has the best plans in life for me.
This entry was posted in FDT, Reviews, Softwares and tagged . Bookmark the permalink.

14 Responses to Review: FDT Vs FlashDevelop

  1. gibo says:

    Code Generation..
    window > preferences > editor > templates

  2. flashmech says:

    Sorry was not clear enough. I meant contextual code generation. :)

  3. Kris says:

    Contextual code generation: Ctrl-Shift-1 :)

  4. flashmech says:

    @Kris
    Ctrl-Shift-1 dint work for me. However I tried around and discovered it to be Ctrl-1 instead. πŸ˜‰

  5. Philippe says:

    Fair comparison, FDT has certainly a few inspiring niceties.

    SWC Browsing: FD beta8 pre-release generates “code to peek” as well πŸ˜‰

  6. flashmech says:

    @Philippe
    That’s very nice to know! It’s been pretty quiet for FlashDevelop for a couple of months and I know you guys must be cooking something pretty awesome! πŸ˜‰

  7. Jensa says:

    Hi Lionel,
    About this feature:

    > implement interfaces

    I know that FDT can create a new class from an interface and vice versa. I’ve seen it shown, but since I don’t use FDT myself, unfortunately I can’t tell you how to do it…

    J

  8. flashmech says:

    @Jensa
    Yup it is able to implement the interface when you first create a new class. However, it ends there. If at a later point you wish to add another interface, there’s no shortcut (in my knowledge) that you can generate the interface functions.

  9. Steven Sacks says:

    Hey Lionel,

    Could you please email me the list of warnings/errors that FDT says it finds in Gaia? I’m unaware of any of these and I like to make a very concerted effort to keep Gaia’s source absolutely strict and as compliant as possible.

    Thanks!

  10. Steven Sacks says:

    I’d like to see more information comparing FDT’s autocompletion to FlashDevelop’s. Considering how strong FlashDevelop’s autocomplete is (the best I’ve ever seen), I somehow doubt FDT’s could not be as good because it’s based in Eclipse which has limitations for autocompletion that FlasHDevelop does not.

    The three primary reasons I use FlashDevelop are its autocompletion, project panel and contextual code generation, in that order.

  11. Maxim says:

    Hi,

    thank you for a really nice Review.

    I would like to add a few tips.

    Eclipse has a filter mechanism for Problems View (have a look on upper right corner of the view).
    So you could handle the problem of showing too much warnings.

    Ctrl 1 (or Command 1 on Mac) is the so called “Quick Assist” function. It helps you to solve problems that are appearing in your code. If you are clicking Ctrl 1 it will navigate to the nearest problem (nearest to your cursor position) and will show you a list with possible solutions for that problem. That means, that if you are adding a new Interface to your class, the class name will get an error marker so if you want to solve this problem you should put your cursor next to class name and click Ctrl 1 than choose “Implement all unimplemented members”

  12. Maxim says:

    Oh, I see another one by “Open Resource”

    You do have a possibility to open FLA files in Flash IDE on FDT.
    Check the “Open FLA in Flash IDE” on Preferences… > FDT.
    And then set the Path in: Preferences… > FDT > Tools > Flash > “Flash IDE”

  13. flashmech says:

    @Maxim
    Many thanks for the extra tips! I’ll be sure to check them out and update this post accordingly. πŸ˜€

  14. sam says:

    Eclipse has a large learning curve – once there however – there is no going back. Unbelievable.

    Once you integrate your PHP, HTML, XML, ANT, Java, Javascript, CVS, SVN, FTP, all seamlessly integrated into an inbuilt browser running directly to your local or remote server then things are simply amazing. Stunning.

    For anyone who has not taken the time to learn eclipse to its fullest then it is worth at least trying.

    CTRL – L is a must……