Thursday, January 21, 2010

Oracle APEX 4.0 + Ext JS = Happy Days

2010 is going to be a great year!

I've taken Oracle APEX 4.0 for a spin over the last couple of weeks having a look at the new plugins functionality.
So far I've really only scratched the surface, but like it very much so far.

After integrating Ext 3.1 into a theme, I created a couple of plugins following Patrick Wolfs' post on how to create a plug-in. You can see the result above.

What's really nice about it, is now we can define attributes for the plugin, which can be assigned to the page item, as shown below for the Spinner.

So now I can choose my "spinner" item type and define the attributes without having to write a single line of javascript. Nice!

The Application Builder incorporates nice touches with the "Settings" region also.
For the spinner example, I have set the "Decimal Precision" fields visibility to be dependent on "Allow Decimals" value being true.
Selecting false, automatically hides the "Decimal Precision" field.

So if you haven't already done so, register a workspace at and give Oracle APEX 4.0 a go.
The APEX team are looking for feedback and suggestions on how to make the product even better, and they really do use your feedback.

My New Years Resolution is to write a book on "Oracle APEX 4.0 with Ext JS".
I've already arranged a publisher, and the first chapter is well underway - but more about that in another post.

With the new plugins functionality in APEX 4.0 and the highly customizable components in Ext JS, you'll be building amazing web apps faster than ever. 

Like I said before, 2010 is going to be a great year!


Mark Moran said...

Great work Mark. Have you tried to get the extjs date picker into a plugin yet with extjs 3.1?

Thanks for all your hard work!


Mark Lancaster said...

Hi Mark Moran

I haven't integrated the date-picker into a plugin yet, but it would be very very easy.

I've been using the Ext JS datepicker for 3 years. So far I've never needed to do anything but apply it generically, as per

Plugins will make it a snap to make it configurable e.g. limit to date-range, or weekdays, or greater than another date item etc.

I expect similar functionality is available from the jQuery datepicker integrated into APEX, but will stick with the Ext version to maintain visual consistency.

Once APEX 4.0 EA2 comes out I'll start looking in earnest - for now I'm flat out writing my book.



Alfredo said...

Hi Mark!
We are using apexlib in our project and when we try to integrate extjs message box, we have a trouble the cascade lovs fail and firebug report an “vFieldValue is undefined
[Break on this error] vAjaxRequest.add(pLovEntry.oUsedFi…ace(/\:/g, String.fromCharCode(1))); ” error in apexlib-full.js line 6287.
What can we try? tx in advance!

Mark Lancaster said...

Hi Alfredo

I haven't tried the apexlib library so can't give any insights there.

The error looks like it is expecting a javascript variable to be populated, but hasn't been.
Try wrapping your call to the apexlib code in an Ext.onReady statement.


Alfredo said...

Tx Markfor your attention!

We want to implement the msgbox, but it seems that some in the extjs library crash with the apexlib, i remember that when i try to implement the modal had the same problem.
Well we will trying and if we found something we will tell you.
Or have sme idea?

David said...


Any chance you would be willing to share your PlayPen workspace with the public?


Mark Lancaster said...

Hi David

No I won't be opening up this site, I am doing something even better!

I'm in the process of writing a book on Oracle APEX 4.0 with Ext JS.
It will be available in a "raw format" in the next week or two.

Raw, meaning you have access to the unedited chapters as soon as they are written, currently I've done 8 of 11 chapters.

The book is based on the latest version of Ext JS, and uses new APEX features like Plugins and Dynamic Actions in APEX 4.0.

The book includes an APEX theme using Ext JS, and PL/SQL source code as well.

I really need to update my demo site, as the books theme is much improved.