It’s been a while since my last post but this is simply because I’ve never been so busy in my life. Both Peter, myself, and the team have been working long hours 7 days a week, but… today I’m taking a moment to breathe and give you some insight what’s happening behind the scenes within the formation of our new company FOEX GmbH.
It’s all about plugins
We have built (and continue to build) a framework of plugins called FOEX that is essentially a new foundation layer for APEX application development. We have been modularly building these plugins for over 12 months and constantly refactoring them to work cohesively together or independently. Using several plugins or the entire suite, developers can build rich internet applications backed by the Sencha Ext JS 4 UI library and Application Express. Visit tryfoexnow.com to keep an eye on our progress.
But plugins are just the beginning
My personal drive for building plugins is not for the achievement/reward of writing them, but to use them, and use them in multiple different ways. The ultimate goal is so we can achieve any complex development requirement thrown at us. Now that we have the first version of the framework almost ready, we can start building applications. This is the exciting part which allows us to see a whole range of different possibilities and understand where we still need to improve to make things even better than they currently are.
In order to document and use the plugins we are working on ways to demo their features in a real world usable way. One of the most usable ways we can think of is to build a new application to assist the current APEX builder and look for ways to help improve developer productivity whilst building applications using our plugins. Both Peter and myself are devoted SQL Developer users and we want to bring some of those GUI capabilities to APEX. Here’s a screenshot from our LAB of our FBuilder project that we’re designing to do just that! (and built using just our plugins in APEX)
Inspiration has come from a lot of places, a special mention goes out to Noel Portugal for his OraTweet solution released a number of years ago… I hope Noel doesn’t mind us promoting his work and drawing inspiration from with our tweet deck inspired demo using our twitter and layout plugins.
To ensure we have the most secure plugins available we have formed an alliance with Recx Ltd but our partnership goes beyond that. We want people to build the most beautiful and secure applications possible, and to do that we want to evangelize how important security is and embed it within the cycle of your development process. But we aren’t security specialists and that’s why we called on the best in the business, Recx Ltd, to be part of a new era in APEX development setting a whole new standard.
It won’t be long before we’re releasing our new company website and opening an invitation up for interested parties willing to be involved in our hosted framework beta testing program, not dissimilar to apex.oracle.com, with a downloadable release to follow after completion of the beta trials. For those that have immediate project requirements we will be open to discussions to help get you moving ASAP before our official release launch.
Spreading the Word
Peter and I will both be at the Austrian User Group conference day in June, and will also be attending Kscope 12 and presenting. If your interested in what we are doing we urge you to come and meet us and talk with us. We’re both passionate about APEX development and want to plant the same seeds in you, that were planted in us.
The amount of work to get where we are has been huge, but it pales in comparison to the mountain that is ahead of us which we have started to climb. We’re on a long journey and sometimes we underestimate the amount of time it takes to get to the next base camp. The point to take away is that we’re always moving forwards and our first base camp is now in sight. We have an ambitious roadmap to bring new applications to life, release version 2.0, produce a Sencha Touch framework for APEX, introduce new modular solutions similar to interactive reports, the list goes on… and on…
So on a final note, as the saying goes “Rome wasn’t built in a day” and it wasn’t…. but soon your applications might be
I thought I would follow up a previous blog post on the Ext JS layout plugin I’m building for APEX, it’s 95% complete and the results are making me go WOW and I thought I would share the “high” that I’m currently feeling.
Amid the task of documenting the plugins (the above screenshot) I started to tweak and enhance certain parts of the code to add in more flexibility. On a side note, I’m think I’m my own worst enemy at times because I find it so hard to resist improving things which I’ve read is a typical developer trait. The benefit in this case though is that I’ve coded in the ability for multiple layouts to be defined on a single page which don’t consume the full browser window. What this means is that a border layout can be defined within an existing APEX region and sized accordingly, either to fill the width of the region or using a fixed setting defined within the plugin settings.
Here’s an example of what an Ext border layout looks like which generally is used to fill the browser window.
and here’s a screenshot of an APEX page with 2 border layouts defined in 2 APEX regions with a bunch of editable grids and trees defined in a nested layout structure. I have to say that testing has been made extremely easy by being able to copy regions and their sub regions in a few mouse clicks. A big thanks to the APEX dev team on that 4.0 enhancement.
Now the above is a pretty dense example and has been built to highlight the flexibility of the plugin and does not necessarily mean you’ll build applications this way. The benefits of adding in a layout that can be controlled in size means that it can be easier to add the layout plugin into existing APEX applications and also embed within actual websites. The layout can either be a border (as per the above screenshot), tab, accordion, column, stacked, or single stretched region. Here’s an example from the Dow Jones Indexes to give you an idea…
I’m pretty excited about what we can do with APEX and Ext JS. What’s currently missing is Ext JS charts, forms, menu’s, and an Ext Super LOV (Dan you’ve inspired me) but those are coming very soon and here’s a screenshot of the tree grid that’s almost ready…
Once the above plugins are completed the next step is to build some amazing APEX applications to showcase APEX as a heavyweight contender in the UI development arena, and if you ask me it’s already got the serverside belt.
Now I know I’m not alone here, so ask yourself the question: Wouldn’t it be wonderful if we could have a customizable page layout that was responsive to window resizing, cleverly hide/shows content whilst packing in as much content as possible without making the page unreadable… oh and it’s simple to use? If that’s not enough how about we add the elimination of cross browser support issues and greatly reduce code maintenance requirements. Is there really such a Nirvana for APEX developers?
Well I think I may have just found it in the form of Ext JS layouts. I’ve recently been working on an Ext JS layout plugin for APEX that takes advantage of the new capabilities in APEX 4.0. The 4.0 feature that has made this plugin possible is the introduction of a parent child region hierarchy (which is still my most favourite feature in 4.0 along with plugins of course). The plugin supports the organisation of any APEX region into a structured and responsive page layout.
Here’s an example of the APEX layout plugin in action using only the border layout.
So looking at the above screenshot you’re probably thinking that the end result is really not much different from what you can achieve with the jQuery UI layout plugin, but this is Ext JS we’re talking about so the above was just a basic example. So to ramp up a little competition here’s a taste of what’s achievable with the APEX layout plugin when using a series of nested layouts in combination with the grid and tree plugin which I’ve previously built.
The above screenshot consists of:
- Four Panels – North, South, West, and Center using a BORDER layout
- Five editable grids with a combination of cell and row editing capability
- Two searchable AJAX trees with a 50,000+ record hierarchical dataset
- One interactive Report
- One standard APEX form
- Two Tab Panels, One nested within the First
- Two Accordion regions
- A combination of HBOX and VBOX layouts
Now how long would you expect to take to build such a page, given that your SQL queries are defined for the grids and trees? How does 30mins sound? and that’s probably a conservative estimate. I can promise you it took even less for the above example. It’s just purely amazing the productivity and end results you can get when combining both APEX & Ext JS.
The Ext Layouts supported by the plugin are:
- BORDER – Any combination of NORTH,SOUTH,EAST,WEST,CENTER Panels
- VBOX – vertical stacked regions
- HBOX – horizontal stacked regions
- ACCORDION – vertical expand/collapse behaviour showing 1 region at a time
- TABPANEL – a set of tabs to hide show region content
- FIT – automatically fills the container, for single regions
The most exciting thing about the above layouts is that they can be used in any combination, in any order, and nested X many levels deep, to generate the most organized and efficient way to present and interact with your APEX page regions and plugins. Forget endless page scrolling and disorganized content, maximize your end users viewing experience by using an IKEA like organizational approach to your pages. The layout plugin has the ability to generate the most complex layouts you could imagine, the only limitation is your browser and device’s performance. Ext JS 4.1 has some significant performance improvements coming which means that we will be able to push the boundaries even further.
But wait there’s still more… (says he… the dodgy car salesman)
The plugin includes state saving at either the session or application level to remember collapsed/expanded panels and sizing which is saved server side which ensures that the experience can be maintained across devices. Plus the tree and grid plugins which I’ve produced will automatically size correctly on page load, window, resizing, and panel collapse/expand and also benefit from lazy rendering so page load time is reduced. You can even define custom Ext config for every region to ensure you can tailor the display to your exact requirements, e.g. hiding headers, disabling/enabling scrollbars etc.
It won’t be long before the plugin will be available for download, and if your really keen to get your hands on a beta version before that date arrives just leave a message on my website contact form.
More to follow soon…..