About two and a half years ago, I got my first look at something called "Bolt." It was an early alpha of what would go on to become ColdFusion Builder. I remember thinking, nothing could get me to switch IDEs. Two years later, I can't believe I ever lived without it.
That's why I'm thrilled to join in announcing the ColdFusion Builder team is releasing Coldfusion Builder 2 Beta to Labs today.
ColdFusion Builder has a ton of cool features, and I'm sure the usual suspects will give you a complete run down. But I'll focus on what they've done to win me over with this release.
First, they focused on making it not just an editor, but an extremely productive one. More shortcuts are available, those shortcuts are more configurable, and you can create your own.
One of my favorite new features is called Quick Fix, which is a little hard to explain, but awesome when you get it. Let's say you're working in a file, and you know you need a function down the road but don't want to stop your flow to go off and write it. So you write the call out, and your editor gives you red squiggly lines telling you that the function is undefined. But ColdFusion Builder gives you a yellow squiggly. This isn't that exciting, except that when you see a yellow squiggly, you can hit a shortcut and get the option to generate that function. ColdFusion Builder will then generate the function definition for you, including typing any arguments in it based on what you passed into it when you wrote the call. Very cool, very productive. It's also not limited to just functions. You can create standalone functions this way, or functions in existing CFCs, or even CFCs.
Finally, my favorite feature from ColdFusion Builder 1 is getting an upgrade. ColdFusion Builder Extensions have gotten some cool treatment from the team. There is tons more interactivity between the server and the IDE. Extensions can now launch in views, instead of a modal box. Finally, extensions can even add their own custom Code Assist.
All of these features and more are available for download today on Labs. Get it, try it out, and get more productive, today.
If you want to participate in building Apptacular, you want to look at the source, and tests, etc. Check it out on GitHub: http://bit.ly/ApptacularGitHub
If you want to know more about what Apptacular can do for you, check out these tutorial videos:
I'm proud to say we released ColdFusion Builder Update 1 today.
You can read the release notes for yourself, but the small picture here is that we fixed a bunch of bugs. Most were related to performance or usability. The big picture is that the team kept its promise of faster updates for CFBuilder than we've seen from the ColdFusion team before. It's been 3 months since we released CFBuilder and despite working on ColdFusion 9.0.1 and Storm, the team came through with an update.
In order to run the update, you must use the Adobe Updater. To update:
From the Help menu, select Adobe ColdFusion Builder Updates. The updater files are downloaded and silently installed.
Important Notes:
If you are on Windows 7 or Windows 2008 Server, you must run ColdFusion Builder as an administrator to run.
If you have issues with update on CFBuilder as a plugin, close Eclipse and relaunch with the –clean option.
This will run the Adobe Updater for all of your Adobe software, not just CFBuilder.
Sorry for the MeatLoaf-esque title, but I have a video demo that shows off some new features of both ColdFusion Builder extensions in general, and Apptacular in particular.
onProjectCreate
One feature of extensions that hasn't been getting any play is the fact that you can wire up your extensions to run after a project is created. At the end of the New Project Wizard you can choose from a list of all of the extensions that have this enabled, and run anything an extension can do. This is really cool for starting up your projects with your preferred structure and style right from the get go. The video demo shows running Apptacular in this manner.
Prefixes
ORM and databases are great together, but sometimes database conventions run afoul of ORM best practices. Take table prefixes for example. Having a table with tbl_user makes some sense on the database side, it's basically Hungarian notation for tables. (I've also seen people append the schema name to the table, as in the video.)
As necessary as it may be on the database side, it's a big pain on the ORM side. We don't want to work with a tbl_user object, we want to work with a user object.
Apptacular allows you to set a prefix that you can have removed from any of your tables. In this case it will convert the table tbl_user to the ORM entity user. Very handy, and saves a lot of work.
Plurals
The other convention that gets in the way of generating ORM content from the database is plurals in tables. So table users should translate to the ORM entity user. I've added a checkmark option that will try and do that for you.
So these options combine to make writing clean, readable ORM from databases with these conventions really quick and easy. Check out the video to see this in action.
One of the things missing from ColdFusion Builder Extensions is the ability to make spacers in your menu items. This makes it a little hard to organize menu items.
But it turns out that you can add handlerless menu items. I have posted sample SML below.
Unfortunately, they are still clickable but because they don't have a handler they don't do anything. So it's not a perfect solution, but it does make it a little easier to organize your menu options.
To combat this I build all of my extensions with ANT. (I know we provide a packager, but the work flow doesn't work for me.) Here're the relevant ANT targets:
<target name="build.copy.files" description="Create a installable version of the source code."> <echo message="Copying Files to Build Location"/> <copy todir="${build.dir}" preservelastmodified="true"> <fileset dir="${dev.dir}"> <exclude name='settings.xml'/> <exclude name='settings.properties'/> <exclude name='.project'/> <exclude name='.settings'/> <exclude name='build.xml'/> <exclude name='**/.DS_Store'/> </fileset> </copy> </target>
<target name="build.zip" description="Creates a zip file of the build."> <echo message="Creating Zip File"/> <zip destfile="${package.dir}/${app.name}.zip" basedir="${build.dir}"/> </target>
Since the cat's out of the bag on the fact that ColdFusion Builder comes bundled with Flash Builder, I thought it might be good to share some tips for using them together.
This article goes over using ColdFusion services with Flash Builder. It uses ColdFusion Builder and Apptacular to generate back-end services. It then shows you how to consume them with Flash Builder. Yes, it uses Apptacular, so if you want to get your hands on that, there is a download link. The copy of Apptacular included in this article definitely works with the demo. Past that, I know I've added some bug fixes since then, so caveat downloader.