I’ve been busy upgrading to Ext 3.1, and with that have come a number of welcomed design changes in our framework. Previously we were dynamically building a viewport and using renderTo and applyTo to create most of the widgets within, which is a bit of problem with layouts, so we’ve gone back to the drawing board and have re-engineered the viewport design.
Essentially now we build the entire viewport and components in a single function call, which when you think of it is a bit of a nightmare when you have 20-30 components on a page, so we’ve cut the amount of code/config down by calling our custom javascript functions and reusing some meta objects defined in the header, we’ve simply replaced “widget.render” with “return widget” in our js functions, meaning we haven’t had to recode much at all, as Ext supports the defining of “items” as Mixed, meaning it could be config or an instantiated object.
The benefit we now get from this is that all the widgets are managed by a Layout Manager and are dynamically resized when the size/display of the layout changes. This is the big difference between jQuery and Ext (@ the APEX community) when you see the beauty of your widgets being resized based on the change of the screen size, collapse of regions/panels etc, you’ll understand why Ext is a much better way to go than jQuery widgets, which are mostly working independently of each other.
At the moment we are supporting the grouping of regions/widgets into “Panes”, “Tab Panels”, “Accordions”, & “Panels”. However this is only at one level, i.e. we can’t support a “Tab Panel” inside an “Accordion”, however we’re working on a design change that will work recursively, so you will be able to do this infinitely by using something like a simple dot notation for the REGION_STATIC_ID e.g. tabpanel1.accordion2.panel1 which I’ll try and translate into:
- rendering a region/widget within the first panel that is within the second accordion slot within the first tab within the pane. (We use the REGION_POSITION to define what pane the region/widget belongs to)
It all sounds well in theory but I’ll have to run some tests to see how deep we can go with the nesting of widgets. The other new functionality that has been introduced is allowing custom config to be defined for all layouts and widgets in APEX development runtime mode. We simply use a Property Grid to achieve this. We’ve separated the config between widget config and layout config for group level widgets, here’s a screenshot to give you an idea.
The other new bit of functionality that w’ve introduced is Accordions, it’s basically the exact same design as our Tab Panel code, so it’s been really quick to implement and use. You simply set ACCORDION[Sequence No] in your REGION_STATIC_ID. Here’s a few screenshots from our dev environment.
An here’s what the page looks like in the IDE
The next big area of focus is back on the Editable Grid and using the row editor!





