<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-869579236085438805</id><updated>2012-01-18T18:36:04.674-08:00</updated><category term='apex'/><category term='ausoug'/><title type='text'>Random Insights into Oracle</title><subtitle type='html'>Insights&lt;br&gt;
 a. an understanding of relationships that sheds light on or helps solve a problem.&lt;br&gt;
 b. (in psychotherapy) the recognition of sources of emotional difficulty.&lt;br&gt;
 c. an understanding of the motivational forces behind one's actions, thoughts, or behavior; self-knowledge.</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://oracleinsights.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/869579236085438805/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://oracleinsights.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Mark Lancaster</name><uri>http://www.blogger.com/profile/06316329564169609358</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>62</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-869579236085438805.post-3558666629485556754</id><published>2011-10-02T22:09:00.000-07:00</published><updated>2011-10-02T22:10:03.023-07:00</updated><title type='text'>Not happy Jan - follow up</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;
A while ago I posted &lt;a href="http://oracleinsights.blogspot.com/2011/08/apex-41-not-happy-jan.html"&gt;Not Happy, Jan!&lt;/a&gt; about the changed behavior of list templates for hierarchical lists.&lt;br /&gt;
&lt;br /&gt;
The changed behavior in APEX 4.1 meant my atypical hierarchical template which produced JSON&amp;nbsp; instead of HTML lists no longer worked.&lt;br /&gt;
&lt;br /&gt;
I've re-implemented the template to handle APEX 4.1. To see it in action, and how it works go to &lt;a href="http://apex.oracle.com/pls/otn/f?p=PLAYPEN:2025"&gt;http://apex.oracle.com/pls/otn/f?p=PLAYPEN:2025&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/869579236085438805-3558666629485556754?l=oracleinsights.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oracleinsights.blogspot.com/feeds/3558666629485556754/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=869579236085438805&amp;postID=3558666629485556754' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/869579236085438805/posts/default/3558666629485556754'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/869579236085438805/posts/default/3558666629485556754'/><link rel='alternate' type='text/html' href='http://oracleinsights.blogspot.com/2011/10/not-happy-jan-follow-up.html' title='Not happy Jan - follow up'/><author><name>Mark Lancaster</name><uri>http://www.blogger.com/profile/06316329564169609358</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-869579236085438805.post-3631824039351126403</id><published>2011-09-27T05:05:00.000-07:00</published><updated>2011-09-27T05:05:57.090-07:00</updated><title type='text'>Dynamic Actions - Changed behavior in APEX 4.1</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;
APEX 4.1 Dynamic Actions have a changed behavior over 4.0 version when executing a &lt;b&gt;Static Assignment&lt;/b&gt; or &lt;b&gt;JavaScript Expression&lt;/b&gt; against &lt;b&gt;multiple elements&lt;/b&gt;.&lt;br /&gt;
&lt;br /&gt;
Reading that back makes it sound sufficiently obscure that it may not be an issue for you. Hopefully not, but let's run through the changed&amp;nbsp;behavior, the reasons behind it, how to detect it and how to resolve it.&lt;br /&gt;
&lt;br /&gt;
Firstly, some background.&lt;br /&gt;
As part of a demo on dynamic actions, I set the value of 3 items using a dynamic action, as shown below:&lt;br /&gt;
&lt;img alt="apex_4_0.png" src="https://mail.google.com/mail/?ui=2&amp;amp;ik=72c87f2b45&amp;amp;view=att&amp;amp;th=13286997f83f6b83&amp;amp;attid=0.1&amp;amp;disp=emb&amp;amp;realattid=ii_132868d202fa246f&amp;amp;zw" title="apex_4_0.png" /&gt;&lt;br /&gt;
&lt;br /&gt;
This worked perfectly fine until I upgraded to 4.1, where the first items' value was set, and the remaining item values are set to null.&lt;br /&gt;
&lt;br /&gt;
Comparing the Dynamic Actions JavaScript for setValue (JavaScript Expression) code for 4.0 to 4.1 reveals why the change occurs.&lt;br /&gt;
&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: arial, sans-serif; font-size: 13px;"&gt;&lt;/span&gt;&lt;br /&gt;
&lt;div&gt;
&lt;div style="background-color: white;"&gt;
&lt;b&gt;apex_dynamic_actions_4_0:&lt;/b&gt;&lt;/div&gt;
&lt;div style="background-color: white;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;pre class="brush:js" style="background-color: white;"&gt;setValue : function(){
        ...snipped...
    
        } else if (lSetType === 'JAVASCRIPT_EXPRESSION') {
            lResult = eval(lJavaScriptExpression);
            if (lResult){
                this.affectedElements.each(function() {
                    $s(this, lResult);
                });
            }
        }
    },
&lt;/pre&gt;
&lt;div style="background-color: white;"&gt;
&lt;div&gt;
&lt;b&gt;&lt;br /&gt;
&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;apex_dynamic_actions_4_1:&lt;/b&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;pre class="brush:js" style="background-color: white;"&gt;setValue : function(){
        ...snipped...
    
        } else if (lSetType === 'JAVASCRIPT_EXPRESSION') {
            lJSExpression = eval(lJavaScriptExpression);
            this.affectedElements.each(function(i){
                // Set the value to the first affected element, null the rest.
                lValueToSet = (i===0?lJSExpression:'');
                $s(this, lValueToSet, null, lSuppressChangeEvent);
            });
        }
    },
&lt;/pre&gt;
&lt;div style="background-color: white;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style="background-color: white;"&gt;
As the comment indicates, the changed behavior is by design.&lt;br /&gt;
&lt;br /&gt;
&lt;span class="Apple-style-span" style="color: #990000; font-size: large;"&gt;Reasons behind the change&lt;/span&gt;&lt;br /&gt;
Anthony Rayner from the APEX development team was kind enough to explain the reasoning behind the change:&lt;/div&gt;
&lt;blockquote&gt;
&lt;span class="Apple-style-span" style="background-color: white; font-family: arial, sans-serif; font-size: 13px;"&gt;&lt;span class="Apple-style-span" style="color: #666666;"&gt;This is indeed changed behaviour as you describe, introduced in 4.1. I don't know if you've seen this already, but we added a section to the&amp;nbsp;&lt;a href="http://download.oracle.com/docs/cd/E23903_01/doc/doc.41/e21672/toc.htm#CACFHAFB" saprocessedanchor="true" target="_blank"&gt;release notes on just this&lt;/a&gt;. I have copied this below for your convenience:&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;blockquote&gt;
&lt;h3 style="background-color: white; font-family: Tahoma, sans-serif; font-size: 18px; font-style: normal; font-variant: normal; font-weight: bold; letter-spacing: normal; line-height: normal; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px;"&gt;
&lt;span class="Apple-style-span" style="color: #666666;"&gt;4.9&amp;nbsp;Dynamic Action Set Value with Multiple Affected Elements&lt;/span&gt;&lt;/h3&gt;
&lt;div style="background-color: white; font-family: Tahoma, sans-serif; font-size: small; font-style: normal; font-variant: normal; letter-spacing: normal; line-height: normal; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px;"&gt;
&lt;span class="Apple-style-span" style="color: #666666;"&gt;In dynamic actions, prior to Application Express 4.1, it was possible to use the Set Value action to set multiple Affected Elements, but only to the same value, not different values. In Application Express 4.1, we introduced the following new capabilities to set multiple values from dynamic actions:&lt;/span&gt;&lt;/div&gt;
&lt;ul style="background-color: white; font-family: Tahoma, sans-serif; font-size: small; font-style: normal; font-variant: normal; letter-spacing: normal; line-height: normal; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px;"&gt;
&lt;li style="margin-left: 15px;"&gt;&lt;span class="Apple-style-span" style="color: #666666;"&gt;Action 'Set Value' &amp;gt; Set Type 'SQL Statement' - You can now define a SQL Query to return between 1 and 100 columns, which is used to set the 'Affected Elements' in the order defined (1st column is used to set 1st affected element, and so on). Previously, this only supported querying for 1 column, but could be used to set multiple affected elements to that same 1 column value.&lt;/span&gt;&lt;/li&gt;
&lt;li style="margin-left: 15px;"&gt;&lt;span class="Apple-style-span" style="color: #666666;"&gt;Action 'Execute PL/SQL Code' - A new 'Page Items to Return' attribute that sets any page item values on the page to their updated values in session state.&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;div style="background-color: white; font-family: Tahoma, sans-serif; font-size: small; font-style: normal; font-variant: normal; letter-spacing: normal; line-height: normal; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px;"&gt;
&lt;span class="Apple-style-span" style="color: #666666;"&gt;With the introduction of some built-in options to retrieve multiple values, Application Express no longer supports the ability to retrieve 1 value that could then be used to set multiple page items. This was done for simplicity and usability. If you had defined a 'Set Value' dynamic action that set multiple Affected Elements to the same value, here is how you can fix this, according to the 'Set Value' dynamic action's 'Set Type':&lt;/span&gt;&lt;/div&gt;
&lt;ul style="background-color: white; font-family: Tahoma, sans-serif; font-size: small; font-style: normal; font-variant: normal; letter-spacing: normal; line-height: normal; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px;"&gt;
&lt;li style="margin-left: 15px;"&gt;&lt;span class="Apple-style-span" style="color: #666666;"&gt;Static Assignment - Define additional 'Actions' for each Affected Element, setting them all to the same value.&lt;/span&gt;&lt;/li&gt;
&lt;li style="margin-left: 15px;"&gt;&lt;span class="Apple-style-span" style="color: #666666;"&gt;JavaScript Expression - Define additional 'Actions' for each Affected Element, setting them all to the same value.&lt;/span&gt;&lt;/li&gt;
&lt;li style="margin-left: 15px;"&gt;&lt;span class="Apple-style-span" style="color: #666666;"&gt;SQL Statement - Alter your SQL Statement such that it selects the same column value, with different column aliases for each Affected Element.&lt;/span&gt;&lt;/li&gt;
&lt;li style="margin-left: 15px;"&gt;&lt;span class="Apple-style-span" style="color: #666666;"&gt;PL/SQL Expression - Consider changing this over to use the 'Execute PL/SQL Code' action type, in conjunction with the 'Page Items to Return' attribute. The 'PL/SQL Code' would need to ensure the page item's value is updated in session state, such that 'Page Items to Return' returned the updated value.&lt;/span&gt;&lt;/li&gt;
&lt;li style="margin-left: 15px;"&gt;&lt;span class="Apple-style-span" style="color: #666666;"&gt;PL/SQL Function Body - Consider changing this over to use the 'Execute PL/SQL Code' action type, in conjunction with the 'Page Items to Return' attribute. The 'PL/SQL Code' would need to ensure the page item's value is updated in session state, such that 'Page Items to Return' returned the updated value.&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;
&lt;span class="Apple-style-span" style="color: #666666;"&gt;&lt;br /&gt;
So really this change was prompted by the introduction of support for setting multiple different values from 1 'Set Value &amp;gt; Set Type (SQL Statement)'. This introduced a 'positional' notation of sorts for this set type, whereby affected elements map, by position to values returned from the SQL Statement. We felt with this introduction, that it would be simpler not to continue to support the setting of multiple affected elements to the same value, but rather that if this is desired, that one of the above techniques should be used instead, depending on set type. We felt this in the long run was simpler and more intuitive and that hopefully this would have minimal impact when upgrading from 4.0.&lt;/span&gt;&lt;/blockquote&gt;
&lt;div style="background-color: white;"&gt;
Hmm, that makes the reasoning behind the change a lot clearer. I really like the idea of being able to use a single dynamic action to update a bunch of fields at once.&lt;br /&gt;
&lt;br /&gt;
For example, you could change the shipping method for goods delivery. Using a Dynamic Action with a "PL/SQL Code" action type you could update the shipping charges, subtotal amount, expected delivery date and terms &amp;amp; conditions all at once. Nice!&lt;br /&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style="background-color: white;"&gt;
&lt;span class="Apple-style-span" style="color: #660000; font-size: large;"&gt;How to detect if this impacts you&lt;/span&gt;&lt;/div&gt;
&lt;div style="background-color: white;"&gt;
Running the following query in 4.0 or 4.1 will identify any dynamic actions that are affected:&lt;/div&gt;
&lt;div style="background-color: white;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;pre class="brush: sql"&gt;select a.workspace
      ,a.application_id
      ,a.application_name
      ,a.page_id
      ,a.page_name
      ,a.attribute_01
      ,a.dynamic_action_name
      ,a.action_name
      ,a.action_sequence
      ,a.dynamic_action_event_result
      ,a.affected_elements
  from APEX_APPLICATION_PAGE_DA_ACTS a
 where a.action_code = 'NATIVE_SET_VALUE'
   and a.attribute_01 in ('JAVASCRIPT_EXPRESSION','STATIC_ASSIGNMENT')
   and a.affected_elements_type = 'Item'
   and instr(a.affected_elements, ',') &amp;gt; 0;

&lt;/pre&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;span class="Apple-style-span" style="color: #660000; font-size: large;"&gt;Adjusting for the changed behavior&lt;/span&gt;&lt;br /&gt;
In my example I already have the value I want to assign, the most appropriate alternative here is to use a JavaScript Expression. Instead of defining a single Dynamic Action to affect multiple items, just create multiple actions each updating a single item as shown below.&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://3.bp.blogspot.com/-2Lu7gZBbR_I/ToBcTaMEiVI/AAAAAAAAALk/OFH0H-IQ3Ts/s1600/screenshot016.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/-2Lu7gZBbR_I/ToBcTaMEiVI/AAAAAAAAALk/OFH0H-IQ3Ts/s1600/screenshot016.png" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/869579236085438805-3631824039351126403?l=oracleinsights.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oracleinsights.blogspot.com/feeds/3631824039351126403/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=869579236085438805&amp;postID=3631824039351126403' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/869579236085438805/posts/default/3631824039351126403'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/869579236085438805/posts/default/3631824039351126403'/><link rel='alternate' type='text/html' href='http://oracleinsights.blogspot.com/2011/09/dynamic-actions-changed-behavior-in.html' title='Dynamic Actions - Changed behavior in APEX 4.1'/><author><name>Mark Lancaster</name><uri>http://www.blogger.com/profile/06316329564169609358</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/-2Lu7gZBbR_I/ToBcTaMEiVI/AAAAAAAAALk/OFH0H-IQ3Ts/s72-c/screenshot016.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-869579236085438805.post-8340009998291120479</id><published>2011-09-11T05:28:00.000-07:00</published><updated>2011-09-11T05:28:31.407-07:00</updated><title type='text'>APEX CSS Repository: How to include background images easily using Data URIs</title><content type='html'>One of the challenges with loading CSS files into the APEX CSS Repository is dealing with references to background images. &lt;br /&gt;
In the screenshot from my &lt;a href="http://apex.oracle.com/pls/otn/f?p=playpen"&gt;demo site&lt;/a&gt;, I'm using a series of background images for the toolbar items.&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: left;"&gt;
&lt;a href="http://1.bp.blogspot.com/-smJvkiIwvf8/TmyIg90NBXI/AAAAAAAAALg/Ft9FZj3Bojg/s1600/screenshot013.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/-smJvkiIwvf8/TmyIg90NBXI/AAAAAAAAALg/Ft9FZj3Bojg/s1600/screenshot013.png" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: left;"&gt;
&lt;/div&gt;
&lt;br /&gt;
Typically when you are hosting your own web-server, your web assets (images, CSS and JavaScript files) are loaded onto the web-server.&lt;br /&gt;
The CSS file will contain references to background images like:&lt;br /&gt;
&lt;pre class="brush: css"&gt;.ico-add {
    background-image: url( ../images/icon/add.gif ) !important;
}
.ico-delete {
    background-image: url( ../images/icon/delete.gif ) !important;
}
&lt;/pre&gt;
&lt;br /&gt;
The CSS rules reference the background-image by specifying a relative path to the image location.&lt;br /&gt;
&lt;br /&gt;
If you loaded the CSS file into the APEX CSS Repository, you need to adjust the path to the image location to &amp;nbsp;use an absolute path like:&lt;br /&gt;
&lt;pre class="brush: css"&gt;.ico-add {
    background-image: url( /ux/playpen/resources/images/icon/add.gif ) !important;
}
.ico-delete {
    background-image: url( /ux/playpen/resources/images/icon/delete.gif ) !important;
}
&lt;/pre&gt;
&lt;br /&gt;
Adding a path alias to your web-server config to resolve the path on the server completes the task:&lt;br /&gt;
&lt;pre class="brush: js"&gt;&amp;lt;Context path="/ux" &amp;nbsp; &amp;nbsp; &amp;nbsp; docBase="C:\playpen\web\ux" reloadable="true" crossContext="true" /&amp;gt;
&lt;/pre&gt;
&lt;br /&gt;
&lt;span class="Apple-style-span" style="color: #990000; font-size: large;"&gt;&lt;b&gt;It's more complicated on Hosted APEX websites&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
On a hosted APEX website like &lt;b&gt;apex.oracle.com&lt;/b&gt; you don't have access to the web-server so you need to load the files into the APEX Repository. Let's also assume you don't have access to 3rd party web-server to host the files either :)&lt;br /&gt;
&lt;br /&gt;
So now your images, JavaScript and CSS files are loaded into the Repository and the page templates have been updated to include the JavaScript and CSS files by using the &lt;b&gt;#APP_IMAGES#&lt;/b&gt; or &lt;b&gt;#WORKSPACE_IMAGES#&lt;/b&gt; substitution tags:&lt;br /&gt;
&lt;br /&gt;
&lt;pre class="brush: html"&gt;&amp;lt;html&amp;gt;
&amp;lt;head&amp;gt;
    &amp;lt;title&amp;gt;#TITLE#&amp;lt;/title&amp;gt;
    #HEAD#
    &amp;lt;link rel="stylesheet" href="#WORKSPACE_IMAGES#playpen.css" type="text/css"&amp;gt;
&amp;lt;/head&amp;gt;
&lt;/pre&gt;
Ideally, you would like to use the &lt;b&gt;#APP_IMAGES#&lt;/b&gt;&amp;nbsp;or&amp;nbsp;&lt;b&gt;#WORKSPACE_IMAGES#&lt;/b&gt;&amp;nbsp;substitution tags within the CSS file:&lt;br /&gt;
&lt;pre class="brush: css"&gt;.ico-add {
    background-image: url( #WORKSPACE_IMAGES#add.gif ) !important;
}
.ico-delete {
    background-image: url( &amp;amp;WORKSPACE_IMAGES.delete.gif ) !important;
}
&lt;/pre&gt;
But APEX 4.1 and earlier versions do not substitute either the hash tag or substitution variable alternatives shown.&lt;br /&gt;
&lt;br /&gt;
This leaves two less desirable options:&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;embed the stylesheet directly in the page template, which resolves the substitution tags but adds overhead to every page, or,&lt;/li&gt;
&lt;li&gt;replace the #WORKSPACE_IMAGES# reference with it's resolved name in the CSS file&lt;br /&gt;
e.g. #WORKSPACE_IMAGES#add.gif becomes&amp;nbsp;http://apex.oracle.com/pls/otn/wwv_flow_file_mgr.get_file?p_security_group_id=441224701954687600&amp;amp;p_fname=add.gif&lt;br /&gt;
This makes the application less transportable.&lt;/li&gt;
&lt;/ul&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span class="Apple-style-span" style="color: #990000; font-size: large;"&gt;&lt;b&gt;Data URIs to the Rescue&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;
Data URIs provide a way for data to be included inline in a web page as though it was an external resource. The data URI format&amp;nbsp;&lt;a href="http://tools.ietf.org/html/rfc2397"&gt;RFC 2397&lt;/a&gt;&amp;nbsp;is pretty simple:&lt;br /&gt;
&lt;pre style="background-attachment: initial; background-clip: initial; background-color: #efefef; background-image: initial; background-origin: initial; font-family: monospace; line-height: 13px; margin-bottom: 1em; overflow-x: auto; overflow-y: hidden; padding-bottom: 1em; padding-left: 1.5em; padding-right: 1.5em; padding-top: 1em;"&gt;&lt;code style="font-family: monospace; font-style: normal; line-height: 13px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;"&gt;data:[&amp;lt;MIME-type&amp;gt;][;charset=&amp;lt;encoding&amp;gt;][;base64],&amp;lt;data&amp;gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;br /&gt;
Encoding our previous example looks like:&lt;br /&gt;
&lt;pre&gt;.ico-add {
    background-image: url(data:image/gif;base64,R0lGODlhEAAQAOZ3AHe8YHO6XDSBLIe4cF+eUKDZlq/fppfVi6vUnLTZparUnW61WFaYSJbUi4/CfTmFMH2+Z73ktpbTiXeuY0CJNnnBZNTrz4e4cbXbqI7MhHzDa7jdr1OWRZXUimyqWkKNNrvcr3i0ZIm+eIrCec7pyVCZQXy6ZKbQloXNeZPNiKDZlWirU3DBY0KLOODy3LbdrESMOrLbqInIf42+e53YknG+X3rGa2WrVYHMdXS3XLfgr7PZpZfMhTSCLMXowJTTirfaqrTapqXbm2+1WLXfrKbPlm+1WX25a3WsYT2INGajVmuqWH6yaXyxZzeEL0OPOHqvZUeOPLPdqYO1bZnRi5jMinm9bsvmw37Hb6TOlGmlWH25an28Zn7BabTdqobJejyHMozLgV2cTY7Sg5LFgICzatzx2K/fpX+5bXS3W5jMh4rPfYbJfNfu0oS2bmqsW77itleeRXK5W5jLhpfHhXC4Wf///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAHcALAAAAAAQABAAAAengHeCg4SFhnduZU0Th4MXWVcWJBtoWocDIC4RQgVnPiMEhQNAZjQpGQ0dYzpHDIR0bSo/MnZ2KBpYRHGDUy8GYWxWtW8AAVRkUYJMcAdftc92dV0KLYJQUms40LV1EAhJgkhVEjYsN9x1cjwzD4MrXhU1ANwLOUFPhEpbMcV1RkNpdnjoUUhMCAxquJiYk2CJgEMcSjg4UUTEh4eN7sCgAMZJxo+DAgEAOw==) !important;
}
.ico-delete {
    background-image: url(data:image/gif;base64,R0lGODlhEAAQAOZwAPaEbPqdi7dKK+6Sj+BpavGdlvCMd/eTfvmSfvnLxPm5r9pkYfJ3Y99qavqjke2TjupcUMZVQsxbTPWmofi2qONuY8tZSbxQMviMdvSOgbxLMNFeU+l/eOl7cL5PNsFNM/3c2PNzXfupnPiUf/qah/q6rulbT/KtqvzHuupmXOqDff3b1PCRf89hU8RQNNpjX+R4cfivpOZaUu5mUvCFcNZgVPjDvvWjn/aroverocxSPPqTf/SinvN5Y++GfuljW/iGcPqrneNrYeh6deBlXPzUzfSgnuJwZrhKKuZWTOJ7dcBTOvaCaPCDe+6MgddiXN1qaPBkVu6KdfnTzPGcluZYTNxkY7pLLtBPPt5qZ8dXRfWvpb5TONddUfOno71RNeZWUO6EffeRfrhOLttpZPWsofGOevS0qttWS+ZZTtljXeddWe5qXuxfVOlZTf///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAHAALAAAAAAQABAAAAeigHCCg4SFhnBQVgtqh4MNDzZTCWdHG4cEJyAlDgEiKB0ShQReKyQsZiMIGBQVWoQqRQEHUgC1AD0xWINZW0EGbcDBDBkcS4JkCjs0b8zNbmwFHoIvOUBMzc4pVBeCT05iIW7i4yZNSleDaDhRM+NuVTI3LoQtQmVtEG5pSWA8NUiFLBCZ4OPHmjBGugg4FEHHkAEDYHxY2AgOly8axlTcOCgQADs=) !important;
}
&lt;/pre&gt;
&lt;br /&gt;
While it looks much more complicated and bloated, Data URIs provide a performance benefit because they reduce the number of HTTP requests, allowing pages to load faster.&lt;br /&gt;
&lt;span class="Apple-style-span" style="background-color: white; font-family: arial, helvetica, clean, sans-serif; font-size: 13px; line-height: 16px;"&gt;&lt;/span&gt;&lt;br /&gt;
&lt;div style="margin-bottom: 1em; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;"&gt;
&lt;br /&gt;
Most modern browsers support data URIs:&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;Firefox 2+&lt;/li&gt;
&lt;li&gt;Opera 7.2+ - data URIs must not be longer than 4100 characters&lt;/li&gt;
&lt;li&gt;Chrome (all versions)&lt;/li&gt;
&lt;li&gt;Safari (all versions)&lt;/li&gt;
&lt;li&gt;Internet Explorer 8+ - data URIs must be smaller than 32k&lt;/li&gt;
&lt;/ul&gt;
For IE6 and IE7 you need to use a&amp;nbsp;separate&amp;nbsp;browser&amp;nbsp;dependent&amp;nbsp;CSS file, but the rapid decline in usage for these legacy browsers will remove the issue over time.&lt;/div&gt;
&lt;br /&gt;
&lt;span class="Apple-style-span" style="color: #990000; font-size: large;"&gt;&lt;b&gt;How to encode Data URIs in your CSS file&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
I'm using &lt;a href="http://github.com/nzakas/cssembed"&gt;CSSEmbed&lt;/a&gt; by&amp;nbsp;Nicholas C. Zakas, a Java command line utility that reads in a CSS file, identifies the images referenced within, converts them to data URIs, and outputs the resulting style sheet.&lt;br /&gt;
The basic syntax is:&lt;br /&gt;
&lt;span class="Apple-style-span" style="background-color: white; font-family: arial, helvetica, clean, sans-serif; font-size: 13px; line-height: 16px;"&gt;&lt;/span&gt;&lt;br /&gt;
&lt;pre style="background-attachment: initial; background-clip: initial; background-color: #efefef; background-image: initial; background-origin: initial; font-family: monospace; line-height: 13px; margin-bottom: 1em; overflow-x: auto; overflow-y: hidden; padding-bottom: 1em; padding-left: 1.5em; padding-right: 1.5em; padding-top: 1em;"&gt;&lt;code style="font-family: monospace; font-style: normal; line-height: 13px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;"&gt;java -jar cssembed-x.y.z.jar -o &amp;lt;output filename&amp;gt; &amp;lt;input filename&amp;gt;&lt;/code&gt;&lt;/pre&gt;
To learn more about the utility see Nicholas's blog on &lt;a href="http://www.nczonline.net/blog/2009/11/03/automatic-data-uri-embedding-in-css-files/"&gt;Automatic data URI embedding in CSS files&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/869579236085438805-8340009998291120479?l=oracleinsights.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oracleinsights.blogspot.com/feeds/8340009998291120479/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=869579236085438805&amp;postID=8340009998291120479' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/869579236085438805/posts/default/8340009998291120479'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/869579236085438805/posts/default/8340009998291120479'/><link rel='alternate' type='text/html' href='http://oracleinsights.blogspot.com/2011/09/apex-css-repository-how-to-include.html' title='APEX CSS Repository: How to include background images easily using Data URIs'/><author><name>Mark Lancaster</name><uri>http://www.blogger.com/profile/06316329564169609358</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/-smJvkiIwvf8/TmyIg90NBXI/AAAAAAAAALg/Ft9FZj3Bojg/s72-c/screenshot013.png' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-869579236085438805.post-7029150549460523501</id><published>2011-08-19T17:34:00.000-07:00</published><updated>2011-08-21T00:09:15.870-07:00</updated><title type='text'>Oracle Real World Performance Day</title><content type='html'>I've just got back from attending the &lt;b&gt;InSync11 Oracle Real World Performance Day&lt;/b&gt; held in Sydney, Australia.&lt;br /&gt;
&lt;br /&gt;
&lt;span class="Apple-style-span" style="color: #990000;"&gt;&lt;b&gt;Absolutely inspiring day&lt;/b&gt;&lt;/span&gt;, with 3 renowned Oracle performance experts in&amp;nbsp;Tom Kyte, Andrew Holdsworth &amp;amp; Graham Wood sharing the stage the entire day, giving their insights from the developer, dba and system architect perspectives.&lt;br /&gt;
&lt;br /&gt;
The format was very&amp;nbsp;conversational, with a discussion about the principles behind a topic, examples the presenters have encountered and then demonstrations of how changing values or coding approaches impacts performance. There is nothing quite like seeing a live demonstration of row by row processing compared with set based processing, or how setting open_cursors too high can bring down performance.&lt;br /&gt;
&lt;br /&gt;
Materials from the presentations are available:&lt;br /&gt;
&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="http://asktom.oracle.com/pls/apex/z?p_url=ASKTOM%2Edownload_file%3Fp_file%3D9232377018220753074&amp;amp;p_cat=realworld.zip&amp;amp;p_company=822925097021874"&gt;Tom Kytes slides&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://apex.oracle.com/pls/apex/f?p=44785:24:0::::P24_CONTENT_ID,P24_PREV_PAGE:5565,24"&gt;Real World Performance Series Videos&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;div&gt;
The day started with a data warehouse story of an ETL performance issue, with the networking team, dba and BI teams in a room, each saying their piece of the puzzle was fine; the database was idling, network was performing fine and the ETL process hadn't changed, but overall performance had recently degraded...&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span class="Apple-style-span" style="color: #990000;"&gt;&lt;b&gt;Deja vu&lt;/b&gt;&lt;/span&gt;, at this point a DBA colleague from work and I looked across at each other - we had been it this exact position a few months earlier. The discussion from the experts around this was insightful; if only they had been present when we were tearing our hair out trying to solve the issue.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
The day only got better from there on. Tom even mentioned the&amp;nbsp;&lt;a href="http://joelkallman.blogspot.com/2011/04/application-express-40-and-library.html"&gt;APEX 4.0 and Library Cache Latch Contention issue in Oracle DB 11.2.0.2&lt;/a&gt;.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
If you get the opportunity to attend a&amp;nbsp;&lt;b&gt;Real World Performance Day&lt;/b&gt;&amp;nbsp;as they tour the globe, I highly recommend it.&lt;/div&gt;
&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/869579236085438805-7029150549460523501?l=oracleinsights.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oracleinsights.blogspot.com/feeds/7029150549460523501/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=869579236085438805&amp;postID=7029150549460523501' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/869579236085438805/posts/default/7029150549460523501'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/869579236085438805/posts/default/7029150549460523501'/><link rel='alternate' type='text/html' href='http://oracleinsights.blogspot.com/2011/08/oracle-real-world-performance-day.html' title='Oracle Real World Performance Day'/><author><name>Mark Lancaster</name><uri>http://www.blogger.com/profile/06316329564169609358</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-869579236085438805.post-7379833397780316892</id><published>2011-08-01T17:46:00.000-07:00</published><updated>2011-08-01T17:46:55.624-07:00</updated><title type='text'>APEX 4.1: Not happy, Jan!</title><content type='html'>&lt;a href="http://www.youtube.com/watch?v=2akt3P8ltLM"&gt;"Not happy, Jan!"&lt;/a&gt; is a line from a popular TV advertisement that entered the Australian vernacular.&lt;br /&gt;
The advertisement showed a manager expressing her displeasure towards the fleeing figure of one of her staff, as she ran having neglected to book an ad in the upcoming year's Yellow Pages.&lt;br /&gt;
&lt;br /&gt;
While I'm looking forward to using the new APEX 4.1 release and welcome the many new features available, my "Not happy, Jan!" moment came when the recently upgraded &lt;a href="http://apex.oracle.com/"&gt;apex.oracle.com&lt;/a&gt; website broke my application navigation.&lt;br /&gt;
&lt;br /&gt;
For a number of years, I've been using hierarchical list templates to output JSON rather than HTML. This has been very useful allowing me to generate data for a JavaScript tree component using the APEX builtin conditional list entries and authorization to control displaying tree nodes.&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://3.bp.blogspot.com/-z_s5TAp9FzI/TjdFoltRq2I/AAAAAAAAALM/4TBGKzaKQ3s/s1600/not_happy.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/-z_s5TAp9FzI/TjdFoltRq2I/AAAAAAAAALM/4TBGKzaKQ3s/s1600/not_happy.png" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
Changed functionality now means that the "Between Sub List Items" template attribute is not output unless the corresponding "Sub List Template" attribute contains a "&amp;lt;/li&amp;gt;" tag.&lt;br /&gt;
&lt;br /&gt;
Why is this necessary?&lt;br /&gt;
I guess its to do with changed functionality to support dynamic SQL lists or mobile themes, but couldn't the developer just leave the template field blank for some templates?&lt;br /&gt;
&lt;br /&gt;
Its possible to code around the issue using plugin functionality, but for now my site is broken until I update it.&lt;br /&gt;
&lt;br /&gt;
I think the APEX team are terrific and do a really great job, but perhaps they got this one wrong.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/869579236085438805-7379833397780316892?l=oracleinsights.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oracleinsights.blogspot.com/feeds/7379833397780316892/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=869579236085438805&amp;postID=7379833397780316892' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/869579236085438805/posts/default/7379833397780316892'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/869579236085438805/posts/default/7379833397780316892'/><link rel='alternate' type='text/html' href='http://oracleinsights.blogspot.com/2011/08/apex-41-not-happy-jan.html' title='APEX 4.1: Not happy, Jan!'/><author><name>Mark Lancaster</name><uri>http://www.blogger.com/profile/06316329564169609358</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/-z_s5TAp9FzI/TjdFoltRq2I/AAAAAAAAALM/4TBGKzaKQ3s/s72-c/not_happy.png' height='72' width='72'/><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-869579236085438805.post-4097044898384554828</id><published>2011-07-18T04:18:00.000-07:00</published><updated>2011-07-18T04:18:35.521-07:00</updated><title type='text'>Packt Publishing discounts on Oracle books</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://www.packtpub.com/sites/default/files/oracle%20apex%20ext%20jigsaw2.jpg" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"&gt;&lt;img border="0" src="http://www.packtpub.com/sites/default/files/oracle%20apex%20ext%20jigsaw2.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;
Just noticed that Packt Publishing are celebrating the publication of its &lt;a href="http://www.packtpub.com/article/50th-oracle-book-offer"&gt;50th Oracle book&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
They are offering some attractive discounts on all their Oracle books.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;Buy any Oracle print book and get 20% off&lt;/li&gt;
&lt;li&gt;Buy any Oracle eBook and get 30% off&lt;/li&gt;
&lt;/ul&gt;
&lt;br /&gt;
There is also a competition to win a year's free subscription to their online library, so a good time to pick up a book or two.&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/869579236085438805-4097044898384554828?l=oracleinsights.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oracleinsights.blogspot.com/feeds/4097044898384554828/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=869579236085438805&amp;postID=4097044898384554828' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/869579236085438805/posts/default/4097044898384554828'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/869579236085438805/posts/default/4097044898384554828'/><link rel='alternate' type='text/html' href='http://oracleinsights.blogspot.com/2011/07/packt-publishing-discounts-on-oracle.html' title='Packt Publishing discounts on Oracle books'/><author><name>Mark Lancaster</name><uri>http://www.blogger.com/profile/06316329564169609358</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-869579236085438805.post-2265770182374956911</id><published>2011-06-17T20:04:00.000-07:00</published><updated>2011-06-25T04:51:51.888-07:00</updated><title type='text'>Updated Code Bundle for "Oracle Application Express 4.0 with Ext JS"</title><content type='html'>For those of you patiently waiting for the updated code bundle, its &lt;a href="https://www.packtpub.com/support?nid=6752"&gt;finally available&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://4.bp.blogspot.com/-_3sbah1bRtg/TfwPy8G9SfI/AAAAAAAAAKw/kYICjSaPh8Y/s1600/playpen_app.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://4.bp.blogspot.com/-_3sbah1bRtg/TfwPy8G9SfI/AAAAAAAAAKw/kYICjSaPh8Y/s1600/playpen_app.png" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
The bundle includes the template application shown above.&lt;br /&gt;
All you need to do is install the application, including the supporting objects, and then upload the web assets and Ext JS library to your web server.&lt;br /&gt;
&lt;br /&gt;
When you download the code, just extract the highlighted code bundle, the other folder is the original code bundle which can be&amp;nbsp;discarded&amp;nbsp;(I don't know why they included it).&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://4.bp.blogspot.com/-UuMVe0_kSdA/TfwS59yRVkI/AAAAAAAAAK0/G8wA2Liz_aY/s1600/screenshot003.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://4.bp.blogspot.com/-UuMVe0_kSdA/TfwS59yRVkI/AAAAAAAAAK0/G8wA2Liz_aY/s1600/screenshot003.png" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
One last change...&lt;br /&gt;
&lt;br /&gt;
Add the following CSS rules to the playpen-book.css file:&lt;br /&gt;
&lt;br /&gt;
&lt;pre class="brush: css"&gt;.ux-table input[type="text"] {
    background-color: #FFFFFF;
    background-image: url(/ux/extjs/resources/images/default/form/text-bg.gif);
    background-repeat: repeat-x;
    border: 1px solid #B5B8C8;
    padding: 2px 3px 0;
    line-height: normal;
}

.ux-table input[type="text"] {
    height: 18px; 
    vertical-align: middle;
}
&lt;/pre&gt;
&lt;br /&gt;
Gremlins, they're everywhere.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/869579236085438805-2265770182374956911?l=oracleinsights.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oracleinsights.blogspot.com/feeds/2265770182374956911/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=869579236085438805&amp;postID=2265770182374956911' title='10 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/869579236085438805/posts/default/2265770182374956911'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/869579236085438805/posts/default/2265770182374956911'/><link rel='alternate' type='text/html' href='http://oracleinsights.blogspot.com/2011/06/updated-code-bundle-for-oracle.html' title='Updated Code Bundle for &quot;Oracle Application Express 4.0 with Ext JS&quot;'/><author><name>Mark Lancaster</name><uri>http://www.blogger.com/profile/06316329564169609358</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/-_3sbah1bRtg/TfwPy8G9SfI/AAAAAAAAAKw/kYICjSaPh8Y/s72-c/playpen_app.png' height='72' width='72'/><thr:total>10</thr:total></entry><entry><id>tag:blogger.com,1999:blog-869579236085438805.post-4626990375047867291</id><published>2011-03-31T03:56:00.000-07:00</published><updated>2011-03-31T03:56:40.917-07:00</updated><title type='text'>Book Released: Oracle Application Express 4.0 with Ext JS</title><content type='html'>&lt;table&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td&gt;&lt;a href="https://www.packtpub.com/oracle-application-express-4-0-with-ext-js/book" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="320" src="https://www.packtpub.com/sites/default/files/Oracle%20Apex%204.0%20with%20Ext%20JS.jpg" width="276" /&gt;&lt;/a&gt;
&lt;/td&gt;&lt;td valign="top"&gt;I'm very happy to announce that my book&amp;nbsp;&lt;a href="https://www.packtpub.com/oracle-application-express-4-0-with-ext-js/book"&gt;Oracle Application Express 4.0 with Ext JS&lt;/a&gt;&amp;nbsp;is now officially published.&lt;br /&gt;
&lt;br /&gt;
A printed copy turned up in the mail recently, and I'm very pleased with the final result.
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;div style="-webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;
&amp;nbsp;The&amp;nbsp;&lt;a href="https://www.packtpub.com/toc/oracle-application-express-40-ext-js-table-contents"&gt;table of contents&lt;/a&gt;&amp;nbsp;for the book as well as a&amp;nbsp;&lt;a href="https://www.packtpub.com/oracle-application-express-4-0-with-ext-js/book"&gt;sample chapter&lt;/a&gt;&amp;nbsp;is available on the Packt website.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;a href="http://sueharper.blogspot.com/"&gt;Sue Harper&lt;/a&gt; blogged about the three phases of book writing:&lt;br /&gt;
&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;before the book - Seems like a good idea&lt;/li&gt;
&lt;li&gt;during the book - Not a good idea, will this ever end? Who's idea was this anyway?&lt;/li&gt;
&lt;li&gt;after the book - That was easy ... what's next?&lt;/li&gt;
&lt;/ul&gt;
&lt;br /&gt;
After spending most evenings and weekends writing until midnight for the last 15 months, I've definitely done the first two phases, but haven't quite reached the last phase yet.&lt;br /&gt;
&lt;br /&gt;
&lt;span class="Apple-style-span" style="color: #660000; font-family: Verdana, sans-serif;"&gt;&lt;b&gt;Still to do&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
The code bundle available to download on the Packt website includes code from each of the chapters.&lt;br /&gt;
I will be updating it in the next couple of weeks to:&lt;br /&gt;
&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;include the Ext JS library, so the stand-alone examples work when the bundle is unzipped&lt;/li&gt;
&lt;li&gt;add the APEX TEMPLATE application, CSS, JavaScript and image files used in the book&lt;/li&gt;
&lt;li&gt;include a few extras that didn't make it into the book.&lt;/li&gt;
&lt;/ul&gt;
&lt;div&gt;
I'll write another blog post when the updated code bundle is available.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Then after that my demo site definitely needs an overhaul, it's looking sadly neglected...&lt;/div&gt;
&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/869579236085438805-4626990375047867291?l=oracleinsights.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oracleinsights.blogspot.com/feeds/4626990375047867291/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=869579236085438805&amp;postID=4626990375047867291' title='21 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/869579236085438805/posts/default/4626990375047867291'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/869579236085438805/posts/default/4626990375047867291'/><link rel='alternate' type='text/html' href='http://oracleinsights.blogspot.com/2011/03/book-released-oracle-application.html' title='Book Released: Oracle Application Express 4.0 with Ext JS'/><author><name>Mark Lancaster</name><uri>http://www.blogger.com/profile/06316329564169609358</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>21</thr:total></entry><entry><id>tag:blogger.com,1999:blog-869579236085438805.post-4637465880015951488</id><published>2011-03-10T05:50:00.000-08:00</published><updated>2011-03-10T05:50:36.620-08:00</updated><title type='text'>Bookmarklets to extend APEX 4.0</title><content type='html'>APEX allows you to add help text for your pages at a page level, and also an item level.&lt;br /&gt;
Your only given a plain textarea to add your text, as you can see in the following screenshot.&lt;br /&gt;
&lt;b&gt;&lt;span style="color: #cc0000;"&gt;Hint APEX team&lt;/span&gt;&lt;/b&gt;: can we change this in the next version?&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="https://lh3.googleusercontent.com/-QCMvYJPUX7w/TXjPg3VruWI/AAAAAAAAAKM/pkfdddQv6sQ/s1600/screen1.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="https://lh3.googleusercontent.com/-QCMvYJPUX7w/TXjPg3VruWI/AAAAAAAAAKM/pkfdddQv6sQ/s1600/screen1.png" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
One way to replace the textarea with the APEX Rich Text Editor is to use a &lt;a href="http://en.wikipedia.org/wiki/Bookmarklet"&gt;Bookmarklet&lt;/a&gt;, which allows you to embed JavaScript code in a browser bookmark.&lt;br /&gt;
Then simply click the bookmarklet to convert the textarea to a Rich Text Editor when needed:&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="https://lh4.googleusercontent.com/-f6OAMjNOMdY/TXjTxhJNozI/AAAAAAAAAKQ/wB172eG00rk/s1600/screen2.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="https://lh4.googleusercontent.com/-f6OAMjNOMdY/TXjTxhJNozI/AAAAAAAAAKQ/wB172eG00rk/s1600/screen2.png" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
Simply drag the following links onto your browser bar to save the bookmarklets:&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="javascript:(function(){function%20getScript(url,success){var%20script=document.createElement('script');script.src=url;var%20head=document.getElementsByTagName('head')[0];var%20done=false;script.onload=script.onreadystatechange=function(){if(!done&amp;amp;&amp;amp;(!this.readyState||this.readyState=='loaded'||this.readyState=='complete')){done=true;success();}};head.appendChild(script);}function%20run(){apex.widget.ckeditor3(&amp;quot;#F4000_P4301_HELP_TEXT&amp;quot;,{&amp;quot;language&amp;quot;:&amp;quot;en&amp;quot;,&amp;quot;toolbar&amp;quot;:&amp;quot;Basic&amp;quot;,&amp;quot;toolbarStartupExpanded&amp;quot;:true,&amp;quot;skin&amp;quot;:&amp;quot;kama&amp;quot;});}if(!window.CKEDITOR){getScript('/i/libraries/ckeditor/3.2/ckeditor.js',function(){run();});}else{run();}})();"&gt;Page Level Help&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="javascript:(function(){function%20getScript(url,success){var%20script=document.createElement('script');script.src=url;var%20head=document.getElementsByTagName('head')[0];var%20done=false;script.onload=script.onreadystatechange=function(){if(!done&amp;amp;&amp;amp;(!this.readyState||this.readyState=='loaded'||this.readyState=='complete')){done=true;success();}};head.appendChild(script);}function%20run(){apex.widget.ckeditor3(&amp;quot;#F4000_P4311_ITEM_HELP&amp;quot;,{&amp;quot;language&amp;quot;:&amp;quot;en&amp;quot;,&amp;quot;toolbar&amp;quot;:&amp;quot;Basic&amp;quot;,&amp;quot;toolbarStartupExpanded&amp;quot;:true,&amp;quot;skin&amp;quot;:&amp;quot;kama&amp;quot;});}if(!window.CKEDITOR){getScript('/i/libraries/ckeditor/3.2/ckeditor.js',function(){run();});}else{run();}})();"&gt;Item Level Help&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
The source code for the Page Level Help bookmarklet is:&lt;br /&gt;
&lt;pre class="brush: js"&gt;javascript: (function(){
    function getScript(url, success){
        var script = document.createElement('script');
        script.src = url;
        var head = document.getElementsByTagName('head')[0];
        var done = false;
        /* Attach handlers for all browsers*/
        script.onload = script.onreadystatechange = function(){
            if (!done &amp;amp;&amp;amp; (!this.readyState || this.readyState == 'loaded' || this.readyState == 'complete')) {
                done = true;
                success();
            }
        };
        head.appendChild(script);
    }
    /* Code to execute after script loaded */
    function run(){
        apex.widget.ckeditor3("#F4000_P4301_HELP_TEXT", {
            "language": "en",
            "toolbar": "Basic",
            "toolbarStartupExpanded": true,
            "skin": "kama"
        });
    }
    /* Main */
    if (!window.CKEDITOR) {
        getScript('/i/libraries/ckeditor/3.2/ckeditor.js', function(){
            run();
        });
    }
    else {
        run();
    }
})();
&lt;/pre&gt;
&lt;br /&gt;
All we are doing is adding the ckeditor.js file when it's not present, and then converting the specified page item to use the basic CKEditor. &lt;br /&gt;For the advanced version replace &lt;b&gt;"toolbar": "Basic"&lt;/b&gt; with &lt;b&gt;"toolbar" : "Full"&lt;/b&gt;.&lt;br /&gt;
&lt;br /&gt;
You may need to adjust the item reference if your not using Application Express 4.0.2.00.07, or a translated version.&lt;br /&gt;
&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/869579236085438805-4637465880015951488?l=oracleinsights.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oracleinsights.blogspot.com/feeds/4637465880015951488/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=869579236085438805&amp;postID=4637465880015951488' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/869579236085438805/posts/default/4637465880015951488'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/869579236085438805/posts/default/4637465880015951488'/><link rel='alternate' type='text/html' href='http://oracleinsights.blogspot.com/2011/03/bookmarklets-to-extend-apex-40.html' title='Bookmarklets to extend APEX 4.0'/><author><name>Mark Lancaster</name><uri>http://www.blogger.com/profile/06316329564169609358</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='https://lh3.googleusercontent.com/-QCMvYJPUX7w/TXjPg3VruWI/AAAAAAAAAKM/pkfdddQv6sQ/s72-c/screen1.png' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-869579236085438805.post-3532404086687770398</id><published>2011-03-03T14:45:00.000-08:00</published><updated>2011-03-03T14:48:05.138-08:00</updated><title type='text'>APEX_PUBLIC_USER password expires on 11g</title><content type='html'>Just read Scott Wesley's post on&amp;nbsp;&lt;a href="http://triangle-circle-square.blogspot.com/2011/03/apex-listener-issues.html"&gt;APEX Listener issues&lt;/a&gt;&amp;nbsp;which was being caused by Oracle 11g automatically expiring passwords.&lt;br /&gt;
&lt;br /&gt;
The cleanest solution is to use an &lt;b&gt;unlimited password lifetime profile&lt;/b&gt;, and assign to APEX_PUBLIC_USER.&lt;br /&gt;
&lt;br /&gt;
This is done simply by:&lt;br /&gt;
&lt;br /&gt;
&lt;pre class="brush: sql"&gt;CREATE PROFILE UNLIMITED_PASSWORD_LIFETIME LIMIT
  SESSIONS_PER_USER DEFAULT
  CPU_PER_SESSION DEFAULT
  CPU_PER_CALL DEFAULT
  CONNECT_TIME DEFAULT
  IDLE_TIME DEFAULT
  LOGICAL_READS_PER_SESSION DEFAULT
  LOGICAL_READS_PER_CALL DEFAULT
  COMPOSITE_LIMIT DEFAULT
  PRIVATE_SGA DEFAULT
  FAILED_LOGIN_ATTEMPTS DEFAULT
  PASSWORD_LIFE_TIME UNLIMITED    /** this sets unlimited lifetime */
  PASSWORD_REUSE_TIME DEFAULT
  PASSWORD_REUSE_MAX DEFAULT
  PASSWORD_LOCK_TIME DEFAULT
  PASSWORD_GRACE_TIME DEFAULT
  PASSWORD_VERIFY_FUNCTION DEFAULT;


ALTER USER APEX_PUBLIC_USER
 PROFILE UNLIMITED_PASSWORD_LIFETIME
 ACCOUNT LOCK;
&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/869579236085438805-3532404086687770398?l=oracleinsights.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oracleinsights.blogspot.com/feeds/3532404086687770398/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=869579236085438805&amp;postID=3532404086687770398' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/869579236085438805/posts/default/3532404086687770398'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/869579236085438805/posts/default/3532404086687770398'/><link rel='alternate' type='text/html' href='http://oracleinsights.blogspot.com/2011/03/apexpublicuser-password-expires-on-11g.html' title='APEX_PUBLIC_USER password expires on 11g'/><author><name>Mark Lancaster</name><uri>http://www.blogger.com/profile/06316329564169609358</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-869579236085438805.post-1526889673909467171</id><published>2011-01-30T04:11:00.000-08:00</published><updated>2011-01-30T04:11:02.079-08:00</updated><title type='text'>Web page optimization with Page Speed</title><content type='html'>I've only recently become aware of Google's &lt;a href="http://code.google.com/speed/page-speed/index.html"&gt;Page Speed&lt;/a&gt; Firefox&amp;nbsp; add-on integrated with the &lt;a href="http://getfirebug.com/"&gt;Firebug&lt;/a&gt; extension.&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://4.bp.blogspot.com/_uLhotpDLaq0/TUVHTumHgfI/AAAAAAAAAKA/Gd53Vczx9Ag/s1600/pagespeed.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://4.bp.blogspot.com/_uLhotpDLaq0/TUVHTumHgfI/AAAAAAAAAKA/Gd53Vczx9Ag/s1600/pagespeed.png" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
Page Speed is Google's equivalent of Yahoo's &lt;a href="http://developer.yahoo.com/yslow/"&gt;YSlow&lt;/a&gt;, also a Firefox add-on  that needs the &lt;a href="http://getfirebug.com/"&gt;Firebug &lt;/a&gt;extension to work.&lt;br /&gt;
Like YSlow it tests the performance of your webpages against a set of criteria, giving an overall score for a page as well as advice on how you can improve your page performance.&lt;br /&gt;
&lt;br /&gt;
Not surprisingly many of the recommendations are similar to Yahoo's, but some are different, giving you an additional perspective on website performance.&lt;br /&gt;
&lt;br /&gt;
As well as telling you how to improve page performance, there are tools built-in to assist you. Page Speed automatically optimizes JavaScript, CSS, and image
files
referenced from a page when you run the analysis, saving them to a local directory. Drilling into a rule, such as &lt;b&gt;Minify CSS&lt;/b&gt; tells you the potential reduction in size as well as a link to the optimized version.&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://1.bp.blogspot.com/_uLhotpDLaq0/TUVQ7REmkGI/AAAAAAAAAKE/3AmiyAhvi9E/s1600/pagespeed2.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/_uLhotpDLaq0/TUVQ7REmkGI/AAAAAAAAAKE/3AmiyAhvi9E/s1600/pagespeed2.png" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
Page Speed also has &lt;a href="http://code.google.com/speed/page-speed/docs/module.html"&gt;mod_pagespeed&lt;/a&gt;, an open-source Apache module for Apache 2.2 that automatically optimizes
web pages and resources on them. I haven't investigated this, but it would be interesting to experiment with.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
I use both YSlow and Page Speed, each tool has something unique to offer. Page Speed is a useful addition to your toolbox for web development.&lt;br /&gt;
&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/869579236085438805-1526889673909467171?l=oracleinsights.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oracleinsights.blogspot.com/feeds/1526889673909467171/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=869579236085438805&amp;postID=1526889673909467171' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/869579236085438805/posts/default/1526889673909467171'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/869579236085438805/posts/default/1526889673909467171'/><link rel='alternate' type='text/html' href='http://oracleinsights.blogspot.com/2011/01/web-page-optimization-with-page-speed.html' title='Web page optimization with Page Speed'/><author><name>Mark Lancaster</name><uri>http://www.blogger.com/profile/06316329564169609358</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_uLhotpDLaq0/TUVHTumHgfI/AAAAAAAAAKA/Gd53Vczx9Ag/s72-c/pagespeed.png' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-869579236085438805.post-5288375863744714579</id><published>2010-12-21T05:39:00.000-08:00</published><updated>2010-12-21T05:41:13.395-08:00</updated><title type='text'>Plugin: Re-sizable columns and save preferences</title><content type='html'>A very quick post, with an example of an &lt;a href="http://apex.oracle.com/pls/otn/f?p=PLAYPEN:145"&gt;APEX GridPanel Plugin&lt;/a&gt; used to convert a&amp;nbsp;APEX&amp;nbsp;Standard Report into an ExtJS GridPanel.&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://2.bp.blogspot.com/_uLhotpDLaq0/TRCtFhb0HVI/AAAAAAAAAJs/Qmpd9Yqb0-Y/s1600/1063_09_014.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://2.bp.blogspot.com/_uLhotpDLaq0/TRCtFhb0HVI/AAAAAAAAAJs/Qmpd9Yqb0-Y/s1600/1063_09_014.png" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
The Plugin implements the following functionality:&lt;br /&gt;
&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;drag-and-drop to re-arrange columns&lt;/li&gt;
&lt;li&gt;check-box menu to show or hide columns&lt;/li&gt;
&lt;li&gt;resizable&amp;nbsp;table to change width&lt;/li&gt;
&lt;li&gt;resizable columns&lt;/li&gt;
&lt;li&gt;save settings and restore defaults.&lt;/li&gt;
&lt;/ul&gt;
&lt;div&gt;
IE has a nasty habit of caching the page, so make sure you do a refresh to retrieve the saved layout.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Full details of how to implement are in chapter 9 of my book&amp;nbsp;&lt;span class="Apple-style-span" style="color: #333333; font-family: Verdana, Arial, sans-serif; font-size: 13px; line-height: 16px;"&gt;&lt;b&gt;&lt;a href="https://www.packtpub.com/oracle-application-express-4-0-with-ext-js/book"&gt;Oracle Application Express 4.0 with Ext JS&lt;/a&gt;&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/869579236085438805-5288375863744714579?l=oracleinsights.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oracleinsights.blogspot.com/feeds/5288375863744714579/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=869579236085438805&amp;postID=5288375863744714579' title='8 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/869579236085438805/posts/default/5288375863744714579'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/869579236085438805/posts/default/5288375863744714579'/><link rel='alternate' type='text/html' href='http://oracleinsights.blogspot.com/2010/12/plugin-re-sizable-columns-and-save.html' title='Plugin: Re-sizable columns and save preferences'/><author><name>Mark Lancaster</name><uri>http://www.blogger.com/profile/06316329564169609358</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_uLhotpDLaq0/TRCtFhb0HVI/AAAAAAAAAJs/Qmpd9Yqb0-Y/s72-c/1063_09_014.png' height='72' width='72'/><thr:total>8</thr:total></entry><entry><id>tag:blogger.com,1999:blog-869579236085438805.post-7442270280354441506</id><published>2010-12-14T02:38:00.000-08:00</published><updated>2010-12-14T02:40:12.392-08:00</updated><title type='text'>Illumination for Developers</title><content type='html'>Just wanted to let people know about an awesome Firebug addon called &lt;a href="http://www.illumination-for-developers.com/"&gt;Illumination for Developers&lt;/a&gt; created by Steven Roussey.&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://4.bp.blogspot.com/_uLhotpDLaq0/TQdGi3LEM8I/AAAAAAAAAJo/RG8HuR8V-UU/s1600/Illumination-2010-11-11_1334.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://4.bp.blogspot.com/_uLhotpDLaq0/TQdGi3LEM8I/AAAAAAAAAJo/RG8HuR8V-UU/s1600/Illumination-2010-11-11_1334.png" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
It makes Firebug know about ExtJS components and it's an absolute gem.&lt;br /&gt;
&lt;br /&gt;
In this screenshot from &lt;a href="http://www.sroussey.com/article/2010/11/11/42724/Illumination"&gt;Steven's blog&lt;/a&gt; you can see the Ext components on the left, and their properties etc on the right.&lt;br /&gt;
&lt;br /&gt;
Currently it supports ExtJS, Sencha Touch, Dojo, SproutCore with plans for qooxdo, jQuery UI and YUI.&lt;br /&gt;
It's early days for it's development, and it will be a commercial product, but looks like a great addition for your toolbox.&lt;br /&gt;
&lt;br /&gt;
BTW, I have no affiliation with the product and don't know Steven. I'm just impressed with the concept.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/869579236085438805-7442270280354441506?l=oracleinsights.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oracleinsights.blogspot.com/feeds/7442270280354441506/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=869579236085438805&amp;postID=7442270280354441506' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/869579236085438805/posts/default/7442270280354441506'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/869579236085438805/posts/default/7442270280354441506'/><link rel='alternate' type='text/html' href='http://oracleinsights.blogspot.com/2010/12/illumination-for-developers.html' title='Illumination for Developers'/><author><name>Mark Lancaster</name><uri>http://www.blogger.com/profile/06316329564169609358</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_uLhotpDLaq0/TQdGi3LEM8I/AAAAAAAAAJo/RG8HuR8V-UU/s72-c/Illumination-2010-11-11_1334.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-869579236085438805.post-5676151531878620925</id><published>2010-11-03T05:59:00.000-07:00</published><updated>2011-01-13T05:48:08.666-08:00</updated><title type='text'>Book "Oracle Application Express 4.0 with Ext JS" released</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://2.bp.blogspot.com/_uLhotpDLaq0/TNFVh68KLUI/AAAAAAAAAJk/uQUAZXi3lV8/s1600/1063EN_MockupCover.jpg" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"&gt;&lt;img border="0" height="400" src="http://2.bp.blogspot.com/_uLhotpDLaq0/TNFVh68KLUI/AAAAAAAAAJk/uQUAZXi3lV8/s400/1063EN_MockupCover.jpg" width="323" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
I'm very pleased to announce my book "&lt;b&gt;Oracle Application Express 4.0 with Ext JS&lt;/b&gt;" has just been released as a RAW book by Packt Publishing.&lt;br /&gt;
&lt;br /&gt;
RAW simply means the book is still being written, with 8 of 11 chapters completed so far.&amp;nbsp;You're getting access to new chapters as they are being completed, in an unedited format.&lt;br /&gt;
&lt;br /&gt;
A RAW book is an ebook, and this one is priced at 40% of the usual eBook price. Once you purchase the RAW book, you can immediately download the content of the book so far, and when new chapters become available, you will be notified, and &amp;nbsp;can download the new version of the book. When the book is published, you will receive the full, finished eBook.&lt;br /&gt;
&lt;br /&gt;
For &lt;a href="https://www.packtpub.com/oracle-application-express-4-0-with-ext-js/book"&gt;details on the book&lt;/a&gt; visit the &lt;a href="https://www.packtpub.com/oracle-application-express-4-0-with-ext-js/book"&gt;Packt website&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
If you're not familiar with Ext JS, take a look at the &lt;a href="http://www.sencha.com/products/js/"&gt;Sencha website&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
APEX combined with Ext JS allows you to create visually impressive web applications easily. Integrating the Ext interface into a APEX theme and powerful widgets as APEX Plug-ins allows you to give your users a much richer Web 2.0 desktop experience.&lt;br /&gt;
&lt;br /&gt;
&lt;div&gt;
Writing the book has been an opportunity to revisit every aspect of integrating the two technologies, with the benefit of over 3 years experience combining the two.&lt;/div&gt;
&lt;br /&gt;
&lt;div&gt;
My knowledge has deepened along the way, and I'm happy to be able to share what I've learnt with you.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/869579236085438805-5676151531878620925?l=oracleinsights.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oracleinsights.blogspot.com/feeds/5676151531878620925/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=869579236085438805&amp;postID=5676151531878620925' title='9 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/869579236085438805/posts/default/5676151531878620925'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/869579236085438805/posts/default/5676151531878620925'/><link rel='alternate' type='text/html' href='http://oracleinsights.blogspot.com/2010/11/book-oracle-application-express-40-with.html' title='Book &quot;Oracle Application Express 4.0 with Ext JS&quot; released'/><author><name>Mark Lancaster</name><uri>http://www.blogger.com/profile/06316329564169609358</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_uLhotpDLaq0/TNFVh68KLUI/AAAAAAAAAJk/uQUAZXi3lV8/s72-c/1063EN_MockupCover.jpg' height='72' width='72'/><thr:total>9</thr:total></entry><entry><id>tag:blogger.com,1999:blog-869579236085438805.post-5162828096279517501</id><published>2010-10-28T21:43:00.000-07:00</published><updated>2010-10-28T21:43:25.430-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ausoug'/><category scheme='http://www.blogger.com/atom/ns#' term='apex'/><title type='text'>Why do go to conferences?</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://1.bp.blogspot.com/_uLhotpDLaq0/TMo3u_5kHcI/AAAAAAAAAJg/QWndjjyEOTE/s1600/connecting-people.jpg" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"&gt;&lt;img border="0" height="240" src="http://1.bp.blogspot.com/_uLhotpDLaq0/TMo3u_5kHcI/AAAAAAAAAJg/QWndjjyEOTE/s320/connecting-people.jpg" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;!--[if gte mso 9]&gt;&lt;xml&gt;
 &lt;w:WordDocument&gt;
  &lt;w:View&gt;Normal&lt;/w:View&gt;
  &lt;w:Zoom&gt;0&lt;/w:Zoom&gt;
  &lt;w:TrackMoves/&gt;
  &lt;w:TrackFormatting/&gt;
  &lt;w:PunctuationKerning/&gt;
  &lt;w:ValidateAgainstSchemas/&gt;
  &lt;w:SaveIfXMLInvalid&gt;false&lt;/w:SaveIfXMLInvalid&gt;
  &lt;w:IgnoreMixedContent&gt;false&lt;/w:IgnoreMixedContent&gt;
  &lt;w:AlwaysShowPlaceholderText&gt;false&lt;/w:AlwaysShowPlaceholderText&gt;
  &lt;w:DoNotPromoteQF/&gt;
  &lt;w:LidThemeOther&gt;EN-AU&lt;/w:LidThemeOther&gt;
  &lt;w:LidThemeAsian&gt;X-NONE&lt;/w:LidThemeAsian&gt;
  &lt;w:LidThemeComplexScript&gt;X-NONE&lt;/w:LidThemeComplexScript&gt;
  &lt;w:Compatibility&gt;
   &lt;w:BreakWrappedTables/&gt;
   &lt;w:SnapToGridInCell/&gt;
   &lt;w:WrapTextWithPunct/&gt;
   &lt;w:UseAsianBreakRules/&gt;
   &lt;w:DontGrowAutofit/&gt;
   &lt;w:SplitPgBreakAndParaMark/&gt;
   &lt;w:DontVertAlignCellWithSp/&gt;
   &lt;w:DontBreakConstrainedForcedTables/&gt;
   &lt;w:DontVertAlignInTxbx/&gt;
   &lt;w:Word11KerningPairs/&gt;
   &lt;w:CachedColBalance/&gt;
  &lt;/w:Compatibility&gt;
  &lt;w:BrowserLevel&gt;MicrosoftInternetExplorer4&lt;/w:BrowserLevel&gt;
  &lt;m:mathPr&gt;
   &lt;m:mathFont m:val="Cambria Math"/&gt;
   &lt;m:brkBin m:val="before"/&gt;
   &lt;m:brkBinSub m:val="&amp;#45;-"/&gt;
   &lt;m:smallFrac m:val="off"/&gt;
   &lt;m:dispDef/&gt;
   &lt;m:lMargin m:val="0"/&gt;
   &lt;m:rMargin m:val="0"/&gt;
   &lt;m:defJc m:val="centerGroup"/&gt;
   &lt;m:wrapIndent m:val="1440"/&gt;
   &lt;m:intLim m:val="subSup"/&gt;
   &lt;m:naryLim m:val="undOvr"/&gt;
  &lt;/m:mathPr&gt;&lt;/w:WordDocument&gt;
&lt;/xml&gt;&lt;![endif]--&gt;&lt;!--[if gte mso 9]&gt;&lt;xml&gt;
 &lt;w:LatentStyles DefLockedState="false" DefUnhideWhenUsed="true"
  DefSemiHidden="true" DefQFormat="false" DefPriority="99"
  LatentStyleCount="267"&gt;
  &lt;w:LsdException Locked="false" Priority="0" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Normal"/&gt;
  &lt;w:LsdException Locked="false" Priority="9" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="heading 1"/&gt;
  &lt;w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 2"/&gt;
  &lt;w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 3"/&gt;
  &lt;w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 4"/&gt;
  &lt;w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 5"/&gt;
  &lt;w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 6"/&gt;
  &lt;w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 7"/&gt;
  &lt;w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 8"/&gt;
  &lt;w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 9"/&gt;
  &lt;w:LsdException Locked="false" Priority="39" Name="toc 1"/&gt;
  &lt;w:LsdException Locked="false" Priority="39" Name="toc 2"/&gt;
  &lt;w:LsdException Locked="false" Priority="39" Name="toc 3"/&gt;
  &lt;w:LsdException Locked="false" Priority="39" Name="toc 4"/&gt;
  &lt;w:LsdException Locked="false" Priority="39" Name="toc 5"/&gt;
  &lt;w:LsdException Locked="false" Priority="39" Name="toc 6"/&gt;
  &lt;w:LsdException Locked="false" Priority="39" Name="toc 7"/&gt;
  &lt;w:LsdException Locked="false" Priority="39" Name="toc 8"/&gt;
  &lt;w:LsdException Locked="false" Priority="39" Name="toc 9"/&gt;
  &lt;w:LsdException Locked="false" Priority="35" QFormat="true" Name="caption"/&gt;
  &lt;w:LsdException Locked="false" Priority="10" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Title"/&gt;
  &lt;w:LsdException Locked="false" Priority="1" Name="Default Paragraph Font"/&gt;
  &lt;w:LsdException Locked="false" Priority="11" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Subtitle"/&gt;
  &lt;w:LsdException Locked="false" Priority="22" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Strong"/&gt;
  &lt;w:LsdException Locked="false" Priority="20" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Emphasis"/&gt;
  &lt;w:LsdException Locked="false" Priority="59" SemiHidden="false"
   UnhideWhenUsed="false" Name="Table Grid"/&gt;
  &lt;w:LsdException Locked="false" UnhideWhenUsed="false" Name="Placeholder Text"/&gt;
  &lt;w:LsdException Locked="false" Priority="1" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="No Spacing"/&gt;
  &lt;w:LsdException Locked="false" Priority="60" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Shading"/&gt;
  &lt;w:LsdException Locked="false" Priority="61" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light List"/&gt;
  &lt;w:LsdException Locked="false" Priority="62" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Grid"/&gt;
  &lt;w:LsdException Locked="false" Priority="63" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 1"/&gt;
  &lt;w:LsdException Locked="false" Priority="64" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 2"/&gt;
  &lt;w:LsdException Locked="false" Priority="65" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 1"/&gt;
  &lt;w:LsdException Locked="false" Priority="66" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 2"/&gt;
  &lt;w:LsdException Locked="false" Priority="67" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 1"/&gt;
  &lt;w:LsdException Locked="false" Priority="68" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 2"/&gt;
  &lt;w:LsdException Locked="false" Priority="69" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 3"/&gt;
  &lt;w:LsdException Locked="false" Priority="70" SemiHidden="false"
   UnhideWhenUsed="false" Name="Dark List"/&gt;
  &lt;w:LsdException Locked="false" Priority="71" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Shading"/&gt;
  &lt;w:LsdException Locked="false" Priority="72" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful List"/&gt;
  &lt;w:LsdException Locked="false" Priority="73" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Grid"/&gt;
  &lt;w:LsdException Locked="false" Priority="60" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Shading Accent 1"/&gt;
  &lt;w:LsdException Locked="false" Priority="61" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light List Accent 1"/&gt;
  &lt;w:LsdException Locked="false" Priority="62" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Grid Accent 1"/&gt;
  &lt;w:LsdException Locked="false" Priority="63" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 1 Accent 1"/&gt;
  &lt;w:LsdException Locked="false" Priority="64" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 2 Accent 1"/&gt;
  &lt;w:LsdException Locked="false" Priority="65" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 1 Accent 1"/&gt;
  &lt;w:LsdException Locked="false" UnhideWhenUsed="false" Name="Revision"/&gt;
  &lt;w:LsdException Locked="false" Priority="34" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="List Paragraph"/&gt;
  &lt;w:LsdException Locked="false" Priority="29" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Quote"/&gt;
  &lt;w:LsdException Locked="false" Priority="30" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Intense Quote"/&gt;
  &lt;w:LsdException Locked="false" Priority="66" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 2 Accent 1"/&gt;
  &lt;w:LsdException Locked="false" Priority="67" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 1 Accent 1"/&gt;
  &lt;w:LsdException Locked="false" Priority="68" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 2 Accent 1"/&gt;
  &lt;w:LsdException Locked="false" Priority="69" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 3 Accent 1"/&gt;
  &lt;w:LsdException Locked="false" Priority="70" SemiHidden="false"
   UnhideWhenUsed="false" Name="Dark List Accent 1"/&gt;
  &lt;w:LsdException Locked="false" Priority="71" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Shading Accent 1"/&gt;
  &lt;w:LsdException Locked="false" Priority="72" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful List Accent 1"/&gt;
  &lt;w:LsdException Locked="false" Priority="73" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Grid Accent 1"/&gt;
  &lt;w:LsdException Locked="false" Priority="60" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Shading Accent 2"/&gt;
  &lt;w:LsdException Locked="false" Priority="61" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light List Accent 2"/&gt;
  &lt;w:LsdException Locked="false" Priority="62" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Grid Accent 2"/&gt;
  &lt;w:LsdException Locked="false" Priority="63" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 1 Accent 2"/&gt;
  &lt;w:LsdException Locked="false" Priority="64" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 2 Accent 2"/&gt;
  &lt;w:LsdException Locked="false" Priority="65" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 1 Accent 2"/&gt;
  &lt;w:LsdException Locked="false" Priority="66" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 2 Accent 2"/&gt;
  &lt;w:LsdException Locked="false" Priority="67" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 1 Accent 2"/&gt;
  &lt;w:LsdException Locked="false" Priority="68" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 2 Accent 2"/&gt;
  &lt;w:LsdException Locked="false" Priority="69" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 3 Accent 2"/&gt;
  &lt;w:LsdException Locked="false" Priority="70" SemiHidden="false"
   UnhideWhenUsed="false" Name="Dark List Accent 2"/&gt;
  &lt;w:LsdException Locked="false" Priority="71" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Shading Accent 2"/&gt;
  &lt;w:LsdException Locked="false" Priority="72" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful List Accent 2"/&gt;
  &lt;w:LsdException Locked="false" Priority="73" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Grid Accent 2"/&gt;
  &lt;w:LsdException Locked="false" Priority="60" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Shading Accent 3"/&gt;
  &lt;w:LsdException Locked="false" Priority="61" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light List Accent 3"/&gt;
  &lt;w:LsdException Locked="false" Priority="62" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Grid Accent 3"/&gt;
  &lt;w:LsdException Locked="false" Priority="63" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 1 Accent 3"/&gt;
  &lt;w:LsdException Locked="false" Priority="64" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 2 Accent 3"/&gt;
  &lt;w:LsdException Locked="false" Priority="65" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 1 Accent 3"/&gt;
  &lt;w:LsdException Locked="false" Priority="66" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 2 Accent 3"/&gt;
  &lt;w:LsdException Locked="false" Priority="67" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 1 Accent 3"/&gt;
  &lt;w:LsdException Locked="false" Priority="68" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 2 Accent 3"/&gt;
  &lt;w:LsdException Locked="false" Priority="69" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 3 Accent 3"/&gt;
  &lt;w:LsdException Locked="false" Priority="70" SemiHidden="false"
   UnhideWhenUsed="false" Name="Dark List Accent 3"/&gt;
  &lt;w:LsdException Locked="false" Priority="71" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Shading Accent 3"/&gt;
  &lt;w:LsdException Locked="false" Priority="72" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful List Accent 3"/&gt;
  &lt;w:LsdException Locked="false" Priority="73" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Grid Accent 3"/&gt;
  &lt;w:LsdException Locked="false" Priority="60" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Shading Accent 4"/&gt;
  &lt;w:LsdException Locked="false" Priority="61" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light List Accent 4"/&gt;
  &lt;w:LsdException Locked="false" Priority="62" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Grid Accent 4"/&gt;
  &lt;w:LsdException Locked="false" Priority="63" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 1 Accent 4"/&gt;
  &lt;w:LsdException Locked="false" Priority="64" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 2 Accent 4"/&gt;
  &lt;w:LsdException Locked="false" Priority="65" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 1 Accent 4"/&gt;
  &lt;w:LsdException Locked="false" Priority="66" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 2 Accent 4"/&gt;
  &lt;w:LsdException Locked="false" Priority="67" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 1 Accent 4"/&gt;
  &lt;w:LsdException Locked="false" Priority="68" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 2 Accent 4"/&gt;
  &lt;w:LsdException Locked="false" Priority="69" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 3 Accent 4"/&gt;
  &lt;w:LsdException Locked="false" Priority="70" SemiHidden="false"
   UnhideWhenUsed="false" Name="Dark List Accent 4"/&gt;
  &lt;w:LsdException Locked="false" Priority="71" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Shading Accent 4"/&gt;
  &lt;w:LsdException Locked="false" Priority="72" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful List Accent 4"/&gt;
  &lt;w:LsdException Locked="false" Priority="73" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Grid Accent 4"/&gt;
  &lt;w:LsdException Locked="false" Priority="60" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Shading Accent 5"/&gt;
  &lt;w:LsdException Locked="false" Priority="61" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light List Accent 5"/&gt;
  &lt;w:LsdException Locked="false" Priority="62" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Grid Accent 5"/&gt;
  &lt;w:LsdException Locked="false" Priority="63" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 1 Accent 5"/&gt;
  &lt;w:LsdException Locked="false" Priority="64" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 2 Accent 5"/&gt;
  &lt;w:LsdException Locked="false" Priority="65" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 1 Accent 5"/&gt;
  &lt;w:LsdException Locked="false" Priority="66" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 2 Accent 5"/&gt;
  &lt;w:LsdException Locked="false" Priority="67" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 1 Accent 5"/&gt;
  &lt;w:LsdException Locked="false" Priority="68" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 2 Accent 5"/&gt;
  &lt;w:LsdException Locked="false" Priority="69" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 3 Accent 5"/&gt;
  &lt;w:LsdException Locked="false" Priority="70" SemiHidden="false"
   UnhideWhenUsed="false" Name="Dark List Accent 5"/&gt;
  &lt;w:LsdException Locked="false" Priority="71" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Shading Accent 5"/&gt;
  &lt;w:LsdException Locked="false" Priority="72" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful List Accent 5"/&gt;
  &lt;w:LsdException Locked="false" Priority="73" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Grid Accent 5"/&gt;
  &lt;w:LsdException Locked="false" Priority="60" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Shading Accent 6"/&gt;
  &lt;w:LsdException Locked="false" Priority="61" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light List Accent 6"/&gt;
  &lt;w:LsdException Locked="false" Priority="62" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Grid Accent 6"/&gt;
  &lt;w:LsdException Locked="false" Priority="63" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 1 Accent 6"/&gt;
  &lt;w:LsdException Locked="false" Priority="64" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 2 Accent 6"/&gt;
  &lt;w:LsdException Locked="false" Priority="65" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 1 Accent 6"/&gt;
  &lt;w:LsdException Locked="false" Priority="66" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 2 Accent 6"/&gt;
  &lt;w:LsdException Locked="false" Priority="67" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 1 Accent 6"/&gt;
  &lt;w:LsdException Locked="false" Priority="68" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 2 Accent 6"/&gt;
  &lt;w:LsdException Locked="false" Priority="69" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 3 Accent 6"/&gt;
  &lt;w:LsdException Locked="false" Priority="70" SemiHidden="false"
   UnhideWhenUsed="false" Name="Dark List Accent 6"/&gt;
  &lt;w:LsdException Locked="false" Priority="71" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Shading Accent 6"/&gt;
  &lt;w:LsdException Locked="false" Priority="72" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful List Accent 6"/&gt;
  &lt;w:LsdException Locked="false" Priority="73" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Grid Accent 6"/&gt;
  &lt;w:LsdException Locked="false" Priority="19" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Subtle Emphasis"/&gt;
  &lt;w:LsdException Locked="false" Priority="21" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Intense Emphasis"/&gt;
  &lt;w:LsdException Locked="false" Priority="31" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Subtle Reference"/&gt;
  &lt;w:LsdException Locked="false" Priority="32" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Intense Reference"/&gt;
  &lt;w:LsdException Locked="false" Priority="33" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Book Title"/&gt;
  &lt;w:LsdException Locked="false" Priority="37" Name="Bibliography"/&gt;
  &lt;w:LsdException Locked="false" Priority="39" QFormat="true" Name="TOC Heading"/&gt;
 &lt;/w:LatentStyles&gt;
&lt;/xml&gt;&lt;![endif]--&gt;&lt;!--[if gte mso 10]&gt;
&lt;style&gt;
 /* Style Definitions */
 table.MsoNormalTable
 {mso-style-name:"Table Normal";
 mso-tstyle-rowband-size:0;
 mso-tstyle-colband-size:0;
 mso-style-noshow:yes;
 mso-style-priority:99;
 mso-style-qformat:yes;
 mso-style-parent:"";
 mso-padding-alt:0cm 5.4pt 0cm 5.4pt;
 mso-para-margin:0cm;
 mso-para-margin-bottom:.0001pt;
 mso-pagination:widow-orphan;
 font-size:11.0pt;
 font-family:"Calibri","sans-serif";
 mso-ascii-font-family:Calibri;
 mso-ascii-theme-font:minor-latin;
 mso-fareast-font-family:"Times New Roman";
 mso-fareast-theme-font:minor-fareast;
 mso-hansi-font-family:Calibri;
 mso-hansi-theme-font:minor-latin;
 mso-bidi-font-family:"Times New Roman";
 mso-bidi-theme-font:minor-bidi;}
&lt;/style&gt;
&lt;![endif]--&gt;&lt;!--[if gte mso 9]&gt;&lt;xml&gt;
 &lt;o:shapedefaults v:ext="edit" spidmax="1026"/&gt;
&lt;/xml&gt;&lt;![endif]--&gt;&lt;!--[if gte mso 9]&gt;&lt;xml&gt;
 &lt;o:shapelayout v:ext="edit"&gt;
  &lt;o:idmap v:ext="edit" data="1"/&gt;
 &lt;/o:shapelayout&gt;&lt;/xml&gt;&lt;![endif]--&gt;

&lt;br /&gt;
&lt;div class="MsoNormal"&gt;
&lt;span lang="EN-US" style="font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 10pt;"&gt;One
of the really nice things about working with Oracle APEX is the sense of
community you gain through the forums with people scattered all over the globe.&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;span lang="EN-US" style="font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 10pt;"&gt;&lt;span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;span lang="EN-US" style="font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 10pt;"&gt;Attending OpenWorld this year was a great opportunity to met face to face with several members of the APEX
development team and APEX enthusiasts after communicating with them via forums
and emails. It's really surprising how much personality comes through in the
written word.&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;span lang="EN-US" style="font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 10pt;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;span lang="EN-US" style="font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 10pt;"&gt;One of the strengths of APEX is how accessible
the APEX development team is to the community. When you visit the APEX stand in the exhibition hall, the people manning it are from the APEX development team - you just can't get better information than directly from the person who developed the functionality.&lt;/span&gt;&lt;br /&gt;
&lt;span lang="EN-US" style="font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 10pt;"&gt;They really are
interested in your feedback and making APEX better.&amp;nbsp;&lt;/span&gt;&lt;br /&gt;
&lt;span lang="EN-US" style="font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 10pt;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span lang="EN-US" style="font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 10pt;"&gt;Leading up to OpenWorld I had contacted some of the team members asking for a small enhancement for Plugins.&lt;/span&gt;&lt;br /&gt;
&lt;span lang="EN-US" style="font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 10pt;"&gt;A few emails later, they had agreed to include the functionality in a future release.&lt;/span&gt;&lt;br /&gt;
&lt;span lang="EN-US" style="font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 10pt;"&gt;Catching up with Patrick Wolf at the APEX booth, we talked a bit more on the subject with a couple of different approaches, before landing on a final solution.&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span lang="EN-US" style="font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 10pt;"&gt;Anyway, I'm looking forward to the 4.02 patch which includes my enhancement request - &lt;/span&gt;&lt;span class="Apple-style-span" style="border-collapse: separate; color: black; font-family: 'Times New Roman'; font-size: medium; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px;"&gt;&lt;span class="Apple-style-span" style="border-collapse: collapse; font-family: arial,sans-serif; font-size: 13px;"&gt;bug# 10157646.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="border-collapse: separate; color: black; font-family: 'Times New Roman'; font-size: medium; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px;"&gt;&lt;span class="Apple-style-span" style="border-collapse: collapse; font-family: arial,sans-serif; font-size: 13px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="border-collapse: separate; color: black; font-family: 'Times New Roman'; font-size: medium; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px;"&gt;&lt;span class="Apple-style-span" style="border-collapse: collapse; font-family: arial,sans-serif; font-size: 13px;"&gt;So that's why I go to conferences - to meet up with people I know online, talk shop, share ideas, and learn new stuff I can use at work.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="border-collapse: separate; color: black; font-family: 'Times New Roman'; font-size: medium; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px;"&gt;&lt;span class="Apple-style-span" style="border-collapse: collapse; font-family: arial,sans-serif; font-size: 13px;"&gt;How about you? Why do you go?&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="border-collapse: separate; color: black; font-family: 'Times New Roman'; font-size: medium; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px;"&gt;&lt;span class="Apple-style-span" style="border-collapse: collapse; font-family: arial,sans-serif; font-size: 13px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="border-collapse: separate; color: black; font-family: 'Times New Roman'; font-size: medium; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px;"&gt;&lt;span class="Apple-style-span" style="border-collapse: collapse; font-family: arial,sans-serif; font-size: 13px;"&gt;The next conference I'll be going to is the &lt;a href="http://www.ausoug.org.au/2020/"&gt;AUSOUG 2020 Conference&lt;/a&gt; in Perth, Australia on Nov 22-23.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="border-collapse: separate; color: black; font-family: 'Times New Roman'; font-size: medium; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px;"&gt;&lt;span class="Apple-style-span" style="border-collapse: collapse; font-family: arial,sans-serif; font-size: 13px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="border-collapse: separate; color: black; font-family: 'Times New Roman'; font-size: medium; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px;"&gt;&lt;span class="Apple-style-span" style="border-collapse: collapse; font-family: arial,sans-serif; font-size: 13px;"&gt;Maybe I'll see you there. &lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/869579236085438805-5162828096279517501?l=oracleinsights.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oracleinsights.blogspot.com/feeds/5162828096279517501/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=869579236085438805&amp;postID=5162828096279517501' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/869579236085438805/posts/default/5162828096279517501'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/869579236085438805/posts/default/5162828096279517501'/><link rel='alternate' type='text/html' href='http://oracleinsights.blogspot.com/2010/10/why-do-go-to-conferences.html' title='Why do go to conferences?'/><author><name>Mark Lancaster</name><uri>http://www.blogger.com/profile/06316329564169609358</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_uLhotpDLaq0/TMo3u_5kHcI/AAAAAAAAAJg/QWndjjyEOTE/s72-c/connecting-people.jpg' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-869579236085438805.post-1268442657418173448</id><published>2010-08-15T01:31:00.000-07:00</published><updated>2010-08-15T01:31:00.953-07:00</updated><title type='text'>Extend APEX 4.0 JS using trigger events</title><content type='html'>APEX 4.0 has introduced JavaScript "trigger events" such as&amp;nbsp;&lt;b&gt;apexbeforerefresh&lt;/b&gt;,&amp;nbsp;&lt;b&gt;apexafterrefresh&lt;/b&gt; and&amp;nbsp;&lt;b&gt;apexbeforepagesubmit&lt;/b&gt;.&lt;br /&gt;
I'm using them to show a "loading" mask on regions when Partial Page Refresh (PPR) is enabled by clicking on the next rows button, or clicking on the heading to sort by a column.&lt;br /&gt;
You can see a live demo of&amp;nbsp;&lt;a href="http://apex.oracle.com/pls/otn/f?p=200801:40:0"&gt;Over-riding APEX JS and using APEX event triggers&lt;/a&gt;.&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://2.bp.blogspot.com/_uLhotpDLaq0/TGeYbike3bI/AAAAAAAAAJQ/Anz7mciIyII/s1600/loading_mask.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="308" src="http://2.bp.blogspot.com/_uLhotpDLaq0/TGeYbike3bI/AAAAAAAAAJQ/Anz7mciIyII/s640/loading_mask.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;
The JavaScript to add this effect is very brief, but there's a lot of concepts to understand.&lt;br /&gt;
To implement just copy into your application's JavaScript.&lt;br /&gt;
&lt;br /&gt;
&lt;pre class="brush: js"&gt;// Copy the APEX function to a new name, so we can override the original.
var apexInitReport = initReport;

// Extend the APEX function by over-riding with our own version and adding functionality
initReport = function(pRegionID, pInternalRegionID, pStyleMouseOver, pStyleChecked) {
   // we can call still call the original (renamed) version to use the existing functionality
   apexInitReport(pRegionID, pInternalRegionID, pStyleMouseOver, pStyleChecked);

   // APEX wraps PPR regions with a DIV with id report_xxx_catch, xxx being the region number
   var c = 'report_' + pInternalRegionID + '_catch';

   // proceed if the PPR region exists
   if (apex.jQuery('#'+c).length) {
      // find the parent DOM node for the PPR
      var p = apex.jQuery('#'+c).parent();

      // Add a bind event to the parent, since the wrapper is deleted on each refresh action.
      // This uses jQuery "live" binding, taking advantage of event bubbling up the DOM hierarchy.
      // ExtJS has more a advanced Event handler.
      apex.jQuery(p).bind('apexbeforerefresh', function(){
          // add a mask when any PPR actions happen 
          // NOTE: this is using the ExtJS library, jQuery users will need to do more work here.
          new Ext.LoadMask(c).show();
      });

   }
}
&lt;/pre&gt;
&lt;br /&gt;
Over-riding the original &lt;b&gt;initReport &lt;/b&gt;function means I don't have to add a call to it in my pages - APEX already does that for me.&lt;br /&gt;
Another advantage is that it is automatically applied to all my PPR reports, regardless of what report template I use.&lt;br /&gt;
&lt;br /&gt;
Those of you with sharp eyes will note the "Go to row" item in the bottom of the screenshot.&lt;br /&gt;
I've added extra functionality to allow me to jump to any row I like.&lt;br /&gt;
I'll be discussing this and other ideas at OpenWorld this year, as well as in my upcoming book on APEX 4.0 with Ext JS.&lt;br /&gt;
&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/869579236085438805-1268442657418173448?l=oracleinsights.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oracleinsights.blogspot.com/feeds/1268442657418173448/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=869579236085438805&amp;postID=1268442657418173448' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/869579236085438805/posts/default/1268442657418173448'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/869579236085438805/posts/default/1268442657418173448'/><link rel='alternate' type='text/html' href='http://oracleinsights.blogspot.com/2010/08/extend-apex-40-js-using-trigger-events.html' title='Extend APEX 4.0 JS using trigger events'/><author><name>Mark Lancaster</name><uri>http://www.blogger.com/profile/06316329564169609358</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_uLhotpDLaq0/TGeYbike3bI/AAAAAAAAAJQ/Anz7mciIyII/s72-c/loading_mask.png' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-869579236085438805.post-4350294861438593488</id><published>2010-02-27T18:42:00.000-08:00</published><updated>2010-02-27T18:45:07.182-08:00</updated><title type='text'>APEX 4.0 joining the chorus for phasing out IE6</title><content type='html'>&lt;div&gt;
&lt;a href="http://2.bp.blogspot.com/_uLhotpDLaq0/S4nWyrLYx8I/AAAAAAAAAI4/EWQPib4yiQI/s1600-h/ie6togo.png" imageanchor="1"&gt;&lt;img border="0" height="115" src="http://2.bp.blogspot.com/_uLhotpDLaq0/S4nWyrLYx8I/AAAAAAAAAI4/EWQPib4yiQI/s640/ie6togo.png" width="640" /&gt;&lt;/a&gt;&lt;a href="http://2.bp.blogspot.com/_uLhotpDLaq0/S4nWyrLYx8I/AAAAAAAAAI4/EWQPib4yiQI/s1600-h/ie6togo.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;br /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div&gt;
Good to see APEX 4.0 has joined a growing chorus of vendors phasing out support of older browsers such as Internet Explorer 6. &lt;br /&gt;Of course, it's up to you to take up the message in your apps.&lt;br /&gt;
&lt;br /&gt;
Facebook requires its users to upgrade to Internet Explorer 8 before creating an account and YouTube has announced that it will stop supporting IE6.&lt;br /&gt;
&lt;br /&gt;
Google recently announced the phasing out of support for IE6 for for Google Apps, claiming 
"We’re following other companies that have done the same, like Twitter, Facebook and Microsoft for Office Web Apps."&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/869579236085438805-4350294861438593488?l=oracleinsights.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oracleinsights.blogspot.com/feeds/4350294861438593488/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=869579236085438805&amp;postID=4350294861438593488' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/869579236085438805/posts/default/4350294861438593488'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/869579236085438805/posts/default/4350294861438593488'/><link rel='alternate' type='text/html' href='http://oracleinsights.blogspot.com/2010/02/apex-40-joining-chorus-for-phasing-out.html' title='APEX 4.0 joining the chorus for phasing out IE6'/><author><name>Mark Lancaster</name><uri>http://www.blogger.com/profile/06316329564169609358</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_uLhotpDLaq0/S4nWyrLYx8I/AAAAAAAAAI4/EWQPib4yiQI/s72-c/ie6togo.png' height='72' width='72'/><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-869579236085438805.post-961727258633108902</id><published>2010-02-26T16:41:00.000-08:00</published><updated>2010-02-26T16:42:19.718-08:00</updated><title type='text'>APEX 4.0 EA2: Improved debugging, my new favorite feature</title><content type='html'>&lt;div class="separator"&gt;
&lt;a href="http://4.bp.blogspot.com/_uLhotpDLaq0/S4hnKYRE5PI/AAAAAAAAAIw/MwHDYIFVnGU/s1600-h/1063_03_002.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="313" src="http://4.bp.blogspot.com/_uLhotpDLaq0/S4hnKYRE5PI/AAAAAAAAAIw/MwHDYIFVnGU/s640/1063_03_002.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div&gt;
Just started looking at EA2, and like very much the new improved debugging.&lt;br /&gt;
&lt;br /&gt;
First of all it's now in a popup window, which is a really good move. &lt;br /&gt;With web pages relying more and more on javascript to render page components and rearrange page layouts, the old "inline" debugging was no longer effective.&lt;br /&gt;
&lt;br /&gt;
I love the performance graph at the top, you really can't miss what areas are taking the longest time to execute.&lt;br /&gt;
Hovering over an item in the graph, shows the step number and name, so it's very quick to diagnose potential problems. &lt;br /&gt;
&lt;br /&gt;
APEX is really coming of age!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/869579236085438805-961727258633108902?l=oracleinsights.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oracleinsights.blogspot.com/feeds/961727258633108902/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=869579236085438805&amp;postID=961727258633108902' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/869579236085438805/posts/default/961727258633108902'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/869579236085438805/posts/default/961727258633108902'/><link rel='alternate' type='text/html' href='http://oracleinsights.blogspot.com/2010/02/apex-40-ea2-improved-debugging-my-new.html' title='APEX 4.0 EA2: Improved debugging, my new favorite feature'/><author><name>Mark Lancaster</name><uri>http://www.blogger.com/profile/06316329564169609358</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_uLhotpDLaq0/S4hnKYRE5PI/AAAAAAAAAIw/MwHDYIFVnGU/s72-c/1063_03_002.png' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-869579236085438805.post-4373966293284661247</id><published>2010-01-21T05:11:00.000-08:00</published><updated>2010-01-21T05:16:23.168-08:00</updated><title type='text'>Oracle APEX 4.0 + Ext JS = Happy Days</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://3.bp.blogspot.com/_uLhotpDLaq0/S1hG8twKJwI/AAAAAAAAAIY/ckwELhwKj6M/s1600-h/1063_01_006.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="212" src="http://3.bp.blogspot.com/_uLhotpDLaq0/S1hG8twKJwI/AAAAAAAAAIY/ckwELhwKj6M/s640/1063_01_006.png" width="640" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;
&lt;div style="width: 100%;"&gt;
&lt;/div&gt;
&lt;br /&gt;
2010 is going to be a great year!&lt;br /&gt;
&lt;br /&gt;
I've taken Oracle APEX 4.0 for a spin over the last couple of weeks having a look at the new plugins functionality.&lt;br /&gt;
So far I've really only scratched the surface, but like it very much so far.&lt;br /&gt;
&lt;br /&gt;
After integrating Ext 3.1 into a theme, I created a couple of plugins following Patrick Wolfs' post on&amp;nbsp;&lt;a href="http://www.inside-oracle-apex.com/oracle-apex-4-0-how-to-create-a-plug-in/"&gt;how to create a plug-in&lt;/a&gt;. You can see the result above.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://1.bp.blogspot.com/_uLhotpDLaq0/S1hKvxH3q-I/AAAAAAAAAIg/ZIC0AN_2Ytc/s1600-h/1063_01_007.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="214" src="http://1.bp.blogspot.com/_uLhotpDLaq0/S1hKvxH3q-I/AAAAAAAAAIg/ZIC0AN_2Ytc/s640/1063_01_007.png" width="640" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;
&lt;br /&gt;
So now I can choose my "spinner" item type and define the attributes without having to write a single line of javascript. Nice!&lt;br /&gt;
&lt;br /&gt;
The Application Builder incorporates nice touches with the "Settings" region also.&lt;br /&gt;
For the spinner example, I have set the "Decimal Precision" fields&amp;nbsp;visibility&amp;nbsp;to be dependent on "Allow Decimals" value being true.&lt;br /&gt;
Selecting false, automatically hides the "Decimal Precision" field.&lt;br /&gt;
&lt;br /&gt;
So if you haven't already done so, register a workspace at&amp;nbsp;&lt;a href="http://tryapexnow.com/"&gt;http://tryapexnow.com&lt;/a&gt;&amp;nbsp;and give Oracle APEX 4.0 a go.&lt;br /&gt;
The APEX team are looking for feedback and suggestions on how to make the product even better, and they really do &lt;a href="http://oracleinsights.blogspot.com/2007/12/apex-enhancement-request-included.html"&gt;use your feedback&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;span style="font-family: inherit;"&gt;My New Years Resolution is to write a book on "&lt;/span&gt;&lt;span style="-webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px; white-space: pre;"&gt;&lt;span style="font-family: inherit;"&gt;Oracle APEX 4.0 with Ext JS".&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="-webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px; white-space: pre;"&gt;I've already arranged a publisher, and the first chapter is well underway - but more about that in another post.&lt;/span&gt;&lt;br /&gt;
&lt;span style="-webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px; white-space: pre;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="-webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px; white-space: pre;"&gt;With the new plugins functionality in APEX 4.0 and the &lt;a href="http://www.extjs.com/products/extjs/"&gt;highly customizable components&lt;/a&gt; in Ext JS, you'll be building amazing web apps faster than ever.&amp;nbsp;&lt;/span&gt;&lt;br /&gt;
&lt;span style="-webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px; white-space: pre;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="-webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px; white-space: pre;"&gt;Like I said before, &lt;span style="-webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; white-space: normal;"&gt;2010 is going to be a great year!&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;span style="font-family: Arial; font-size: small;"&gt;&lt;span style="font-size: 13px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/869579236085438805-4373966293284661247?l=oracleinsights.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oracleinsights.blogspot.com/feeds/4373966293284661247/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=869579236085438805&amp;postID=4373966293284661247' title='7 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/869579236085438805/posts/default/4373966293284661247'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/869579236085438805/posts/default/4373966293284661247'/><link rel='alternate' type='text/html' href='http://oracleinsights.blogspot.com/2010/01/oracle-apex-40-ext-js-happy-days.html' title='Oracle APEX 4.0 + Ext JS = Happy Days'/><author><name>Mark Lancaster</name><uri>http://www.blogger.com/profile/06316329564169609358</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_uLhotpDLaq0/S1hG8twKJwI/AAAAAAAAAIY/ckwELhwKj6M/s72-c/1063_01_006.png' height='72' width='72'/><thr:total>7</thr:total></entry><entry><id>tag:blogger.com,1999:blog-869579236085438805.post-4376852804349265027</id><published>2009-12-14T03:09:00.000-08:00</published><updated>2009-12-14T03:09:46.427-08:00</updated><title type='text'>Another Oracle APEX + Ext JS website</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://2.bp.blogspot.com/_uLhotpDLaq0/SyYXnBx50YI/AAAAAAAAAIQ/IYIqQZeA-8A/s1600-h/screenshot002.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://2.bp.blogspot.com/_uLhotpDLaq0/SyYXnBx50YI/AAAAAAAAAIQ/IYIqQZeA-8A/s640/screenshot002.png" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;
&lt;br /&gt;
Munky (Ben Burrell) has just got his &lt;a href="http://apex.oracle.com/pls/otn/f?p=314159:100"&gt;demo site&lt;/a&gt; up and running after a short delay caused by &lt;a href="http://munkyben.wordpress.com/2009/12/06/extjs-and-cliffs/"&gt;falling off a cliff&lt;/a&gt;!&lt;br /&gt;
&lt;br /&gt;
He's very active in the APEX forums, so I'm looking forward to some interesting content in the new year.&lt;br /&gt;
&lt;br /&gt;
Other APEX + ExtJS sites to follow:&lt;br /&gt;
&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;Matt Nolan:&amp;nbsp;&lt;a href="http://application-express-blog.e-dba.com/"&gt;e-DBA blog&lt;/a&gt; and &lt;a href="http://www.e-dba.com/uk/f?p=APEX_PLUGIN_REGISTRY:HOME:0"&gt;APEX Plugin Registry demo&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Tobias Arnhold:&amp;nbsp;&lt;a href="http://apex-at-work.blogspot.com/"&gt;APEX at Work blog&lt;/a&gt; and &lt;a href="http://apex.oracle.com/pls/otn/f?p=65555:1"&gt;APEX at Work demo&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
If anyone else has APEX + Ext JS demo sites running, please let me know.&lt;/div&gt;
&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/869579236085438805-4376852804349265027?l=oracleinsights.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oracleinsights.blogspot.com/feeds/4376852804349265027/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=869579236085438805&amp;postID=4376852804349265027' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/869579236085438805/posts/default/4376852804349265027'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/869579236085438805/posts/default/4376852804349265027'/><link rel='alternate' type='text/html' href='http://oracleinsights.blogspot.com/2009/12/another-oracle-apex-ext-js-website.html' title='Another Oracle APEX + Ext JS website'/><author><name>Mark Lancaster</name><uri>http://www.blogger.com/profile/06316329564169609358</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_uLhotpDLaq0/SyYXnBx50YI/AAAAAAAAAIQ/IYIqQZeA-8A/s72-c/screenshot002.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-869579236085438805.post-3766881936815390072</id><published>2009-12-13T03:24:00.000-08:00</published><updated>2009-12-13T03:34:27.691-08:00</updated><title type='text'>How to create a Loading Indicator...</title><content type='html'>&lt;div class="loading-indicator"&gt;
&lt;img align="absmiddle" height="32" src="http://extjs.cachefly.net/ext-2.3.0/resources/images/default/shared/large-loading.gif" style="border: 0pt none; margin-right: 8px;" width="32" /&gt;How to create a Loading Indicator...
&lt;br /&gt;
&lt;/div&gt;
CJ recently asked how to implement a loading indicator to hide the page layout changing regions into tab panels on my post &lt;a href="http://oracleinsights.blogspot.com/2008/06/tabbed-regions-in-oracle-apex-using.html"&gt;Tabbed Regions in Oracle APEX using Ext JS&lt;/a&gt;.&lt;br /&gt;
While I use Ext JS to do it on my demo, here is how to do it using plain old javascript:
&lt;br /&gt;
&lt;ol&gt;
&lt;li&gt;Create a div element which has width and height 100% at the beginning of your page.&lt;/li&gt;
&lt;li&gt;Include an animated gif in a floating div to make it look like something is happening.&lt;/li&gt;
&lt;li&gt;Include the rest of your page and javascript below the div. 
&lt;/li&gt;
&lt;li&gt;Delete the div and image after a short delay using some javascript at the end of the page.
&lt;/li&gt;
&lt;/ol&gt;
And here's the example html:
&lt;br /&gt;
&lt;pre class="brush: xml"&gt;&amp;lt;html lang="en-au"&amp;gt;
&amp;lt;head&amp;gt;
  &amp;lt;title&amp;gt;Page loading indicator&amp;lt;/title&amp;gt;
  &amp;lt;!-- standard stylesheets --&amp;gt;

&amp;lt;style type="text/css"&amp;gt;
/*Loading Indicator*/
#loading-mask{
  position:absolute;
  left:0;
  top:0;
  width:100%;
  height:100%;
  z-index:20000;
  background-color:white;
}

#loading{
  position:absolute;
  left:45%;
  top:40%;
  padding:2px;
  z-index:20001;
}

#loading .loading-indicator{
  background:white;
  color:#555;
  font:bold 13px tahoma,arial,helvetica;
  padding:10px;
  margin:0;
  text-align:center;
  height:auto;
}
&amp;lt;/style&amp;gt;

  &amp;lt;script type="text/javascript"&amp;gt;
      function removeElementById(el) {
          var node = document.getElementById(el);
          if (node) {
              node.parentNode.removeChild(node);
          }
      }
      function removeLoading() {
          removeElementById("loading");
          removeElementById("loading-mask");
      }
  &amp;lt;/script&amp;gt;
&amp;lt;/head&amp;gt;

&amp;lt;body&amp;gt;
  &amp;lt;div id="loading-mask" style=""&amp;gt;&amp;lt;/div&amp;gt;
  &amp;lt;div id="loading"&amp;gt;
    &amp;lt;div class="loading-indicator"&amp;gt;&amp;lt;img src="http://extjs.cachefly.net/ext-2.3.0/resources/images/default/shared/large-loading.gif" width="32" height="32" style="margin-right:8px;" align="absmiddle"/&amp;gt;Loading...&amp;lt;/div&amp;gt;
  &amp;lt;/div&amp;gt;

  &amp;lt;!-- include everything, including scripts after the loading indicator --&amp;gt;

  &amp;lt;p&amp;gt;Here is some content that will appear when the loading indicator has been removed.&amp;lt;/p&amp;gt;

&amp;lt;script type="text/javascript"&amp;gt;
    setTimeout("removeLoading()",250);
&amp;lt;/script&amp;gt;
&amp;lt;/body&amp;gt;
&amp;lt;/html&amp;gt;
&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/869579236085438805-3766881936815390072?l=oracleinsights.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oracleinsights.blogspot.com/feeds/3766881936815390072/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=869579236085438805&amp;postID=3766881936815390072' title='8 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/869579236085438805/posts/default/3766881936815390072'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/869579236085438805/posts/default/3766881936815390072'/><link rel='alternate' type='text/html' href='http://oracleinsights.blogspot.com/2009/12/how-to-create-loading-indicator_13.html' title='How to create a Loading Indicator...'/><author><name>Mark Lancaster</name><uri>http://www.blogger.com/profile/06316329564169609358</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>8</thr:total></entry><entry><id>tag:blogger.com,1999:blog-869579236085438805.post-4543605048898237346</id><published>2009-12-10T04:41:00.000-08:00</published><updated>2009-12-10T04:41:43.214-08:00</updated><title type='text'>Quickest way to delete unused templates in Oracle APEX</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_uLhotpDLaq0/SyDrHeb3rwI/AAAAAAAAAHs/6Rj-G75MHM4/s1600-h/splitter.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/_uLhotpDLaq0/SyDrHeb3rwI/AAAAAAAAAHs/6Rj-G75MHM4/s640/splitter.png" /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;/div&gt;&lt;br /&gt;
Best practice is to remove unused/unwanted templates from your application.&lt;br /&gt;
This encourages standardization in your application, which benefits both your users and developers.&lt;br /&gt;
It also reduces the size of your application.&lt;br /&gt;
&lt;br /&gt;
But how to do it quickly?&lt;br /&gt;
APEX deliberately makes you delete them one at a time, a reasonable sanity check for novices.&lt;br /&gt;
But not very helpful if you know exactly what you want.&lt;br /&gt;
&lt;br /&gt;
So here's how:&lt;br /&gt;
&lt;ol&gt;&lt;li&gt;Export the theme&lt;/li&gt;
&lt;li&gt;Use the splitter utility following instructions in&amp;nbsp;apex/utilities/readme.txt&lt;/li&gt;
&lt;li&gt;Comment out the unwanted templates as shown above&amp;nbsp;&lt;/li&gt;
&lt;li&gt;Import the theme from the sql command line.&lt;/li&gt;
&lt;/ol&gt;And best of all, it's iterative, so you can repeat it as often as needed!&lt;br /&gt;
&lt;br /&gt;
Note: It's not the quickest way - &amp;nbsp;but it is the quickest supported way.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/869579236085438805-4543605048898237346?l=oracleinsights.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oracleinsights.blogspot.com/feeds/4543605048898237346/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=869579236085438805&amp;postID=4543605048898237346' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/869579236085438805/posts/default/4543605048898237346'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/869579236085438805/posts/default/4543605048898237346'/><link rel='alternate' type='text/html' href='http://oracleinsights.blogspot.com/2009/12/quickest-way-to-delete-unused-templates.html' title='Quickest way to delete unused templates in Oracle APEX'/><author><name>Mark Lancaster</name><uri>http://www.blogger.com/profile/06316329564169609358</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_uLhotpDLaq0/SyDrHeb3rwI/AAAAAAAAAHs/6Rj-G75MHM4/s72-c/splitter.png' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-869579236085438805.post-3732100369681365174</id><published>2009-11-18T06:01:00.000-08:00</published><updated>2009-11-18T06:05:22.838-08:00</updated><title type='text'>Oracle APEX: Silly Developer toolbar tricks</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_uLhotpDLaq0/SwP6ZZIh_ZI/AAAAAAAAAHk/x1LMqmLLrVM/s1600/leFrog001.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://4.bp.blogspot.com/_uLhotpDLaq0/SwP6ZZIh_ZI/AAAAAAAAAHk/x1LMqmLLrVM/s640/leFrog001.png" /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;/div&gt;&lt;br /&gt;
At the AUSOUG National Conference in Melbourne on the weekend I presented on "Oracle APEX Themes and 4.0 Plug-ins".&lt;br /&gt;
&lt;br /&gt;
The presentation was about creating a Theme in APEX from scratch, and just to make it interesting I did it using &lt;a href="http://jqueryui.com/"&gt;jQuery UI&lt;/a&gt;, and integrated the &lt;a href="http://jqueryui.com/themeroller/"&gt;ThemeRoller&lt;/a&gt; into my theme.&lt;br /&gt;
&lt;br /&gt;
Audience members were curious how the developer toolbar was moved into the header.&lt;br /&gt;
&lt;br /&gt;
I blogged how to&amp;nbsp;&lt;a href="http://oracleinsights.blogspot.com/2008/02/moving-developer-toolbar-with-extjs.html"&gt;Move the Developer toolbar with ExtJS&lt;/a&gt;&amp;nbsp;back in 2008, but since learnt an even easier way - CSS:&lt;br /&gt;
&lt;br /&gt;
&lt;span style="color: #bf9000;"&gt;table[summary="Developer Toolbar"] {position:absolute;top:10px;left:25%;z-index:1000;}&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #bf9000;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;br /&gt;
This positions the toolbar 10 pixels from the top, 25% of the way in from the left margin.&lt;br /&gt;
&lt;br /&gt;
One of the audience members suggested copying it, so you could have 1 copy at the top of the page, and one at the bottom.&lt;br /&gt;
So, ditch the CSS, and use the following jQuery code to copy the toolbar to a div.&lt;br /&gt;
&lt;br /&gt;
This time add the following div to the top of your page template:&lt;br /&gt;
&lt;br /&gt;
&lt;span style="color: #bf9000;"&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #bf9000;"&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #bf9000;"&gt;&amp;lt;div id="topDevToolbar"&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
Then add the following javascript into your page:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;span style="color: #bf9000;"&gt;$(document).ready(function(){&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #bf9000;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; $('table[summary="Developer Toolbar"]').clone().appendTo("#topDevToolbar");&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #bf9000;"&gt;&amp;nbsp;});&lt;/span&gt;&lt;br /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;Now you have 2 toolbars!&lt;br /&gt;
&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/869579236085438805-3732100369681365174?l=oracleinsights.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oracleinsights.blogspot.com/feeds/3732100369681365174/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=869579236085438805&amp;postID=3732100369681365174' title='6 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/869579236085438805/posts/default/3732100369681365174'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/869579236085438805/posts/default/3732100369681365174'/><link rel='alternate' type='text/html' href='http://oracleinsights.blogspot.com/2009/11/oracle-apex-silly-developer-toolbar.html' title='Oracle APEX: Silly Developer toolbar tricks'/><author><name>Mark Lancaster</name><uri>http://www.blogger.com/profile/06316329564169609358</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_uLhotpDLaq0/SwP6ZZIh_ZI/AAAAAAAAAHk/x1LMqmLLrVM/s72-c/leFrog001.png' height='72' width='72'/><thr:total>6</thr:total></entry><entry><id>tag:blogger.com,1999:blog-869579236085438805.post-1554055446199710260</id><published>2009-09-22T03:20:00.000-07:00</published><updated>2009-09-22T03:20:56.695-07:00</updated><title type='text'>JQuery UI confirmed in Oracle Apex 4.0</title><content type='html'>&lt;p&gt;Oracle indicated that jQuery would be included as part of Oracle Apex 4.0 last year at OpenWorld, and this is stated in the current roadmap.&lt;/p&gt;&lt;p&gt;The question is whether Oracle were planning to use jQuery UI or not still remained unanswered.    &lt;br /&gt;
The recent Apex 4.0 video and powerpoint by Mike Hichwa and David Peake has a slide at the beginning making me think that they would be including the jQuery UI.&lt;/p&gt;&lt;p&gt;Today Tyler Muth confirmed that jQuery UI is definitely included as discussed in detail in this &lt;a href="http://forums.oracle.com/forums/thread.jspa?messageID=3776535&amp;amp;#3776720" target="_blank"&gt;forum post&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;So, does this leave ExtJS out in the cold?    &lt;br /&gt;
Well not really, as I indicated earlier in the same &lt;a href="http://forums.oracle.com/forums/thread.jspa?messageID=3776535&amp;amp;#3776535" target="_blank"&gt;forum post&lt;/a&gt;, because ExtJS has a plugable adaptor framework which can use jQuery as a base layer.     &lt;br /&gt;
This allows you to use jQuery for the non-visual aspects and ExtJS on top of it, allowing you to use the best features of both.&lt;/p&gt;&lt;p&gt;The other rumour I heard, is a beta of Oracle Apex 4.0 is very close to going live, &lt;em&gt;but that’s unconfirmed&lt;/em&gt;.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/869579236085438805-1554055446199710260?l=oracleinsights.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oracleinsights.blogspot.com/feeds/1554055446199710260/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=869579236085438805&amp;postID=1554055446199710260' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/869579236085438805/posts/default/1554055446199710260'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/869579236085438805/posts/default/1554055446199710260'/><link rel='alternate' type='text/html' href='http://oracleinsights.blogspot.com/2009/09/jquery-ui-confirmed-in-oracle-apex-40.html' title='JQuery UI confirmed in Oracle Apex 4.0'/><author><name>Mark Lancaster</name><uri>http://www.blogger.com/profile/06316329564169609358</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-869579236085438805.post-8509158936831300972</id><published>2009-09-19T03:29:00.000-07:00</published><updated>2009-09-19T22:15:18.835-07:00</updated><title type='text'>Apex Modal Windows with updates...</title><content type='html'>LOL - and just when I thought I'd get away with being lazy...&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;a href="http://3.bp.blogspot.com/_uLhotpDLaq0/SrSxabIbBqI/AAAAAAAAAHc/_vybvY3jAH0/s1600-h/screenshot002.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/_uLhotpDLaq0/SrSxabIbBqI/AAAAAAAAAHc/_vybvY3jAH0/s400/screenshot002.png" /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Here's an example to keep Vikas &lt;a href="http://apex.oracle.com/pls/otn/f?p=200801:2032:0"&gt;happy&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/869579236085438805-8509158936831300972?l=oracleinsights.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oracleinsights.blogspot.com/feeds/8509158936831300972/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=869579236085438805&amp;postID=8509158936831300972' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/869579236085438805/posts/default/8509158936831300972'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/869579236085438805/posts/default/8509158936831300972'/><link rel='alternate' type='text/html' href='http://oracleinsights.blogspot.com/2009/09/apex-modal-windows-with-updates.html' title='Apex Modal Windows with updates...'/><author><name>Mark Lancaster</name><uri>http://www.blogger.com/profile/06316329564169609358</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_uLhotpDLaq0/SrSxabIbBqI/AAAAAAAAAHc/_vybvY3jAH0/s72-c/screenshot002.png' height='72' width='72'/><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-869579236085438805.post-1099942927050849188</id><published>2009-09-18T05:55:00.001-07:00</published><updated>2009-09-19T03:31:29.385-07:00</updated><title type='text'>Apex Modal Windows are a snap using ExtJS</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_uLhotpDLaq0/SrODi3x2z6I/AAAAAAAAAHM/M6XVlQM4kCc/s1600-h/screenshot001.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/_uLhotpDLaq0/SrODi3x2z6I/AAAAAAAAAHM/M6XVlQM4kCc/s400/screenshot001.png" /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;/div&gt;&lt;br /&gt;
A number of people have been posting about modal windows on the Oracle Apex forum of late.&lt;br /&gt;
&lt;br /&gt;
Some of the solutions provided have used jQuery UI, or using window.showModalDialog.&lt;br /&gt;
&lt;br /&gt;
I’m not a fan of window.showModalDialog as a quick Google search shows it is not supported by all browsers.    &lt;br /&gt;
The jQuery UI version is functional, but the visual appearance doesn’t live up to the ExtJS standards in my opinion.&lt;br /&gt;
&lt;br /&gt;
Anyway have a look at the &lt;a href="http://apex.oracle.com/pls/otn/f?p=200801:2031:0" target="_blank"&gt;Modal Popup Window&lt;/a&gt; example and see what you think.&lt;br /&gt;
To call the popup window I simply add the highlighted onClick text to my edit link as shown below.&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_uLhotpDLaq0/SrODvgR-CvI/AAAAAAAAAHU/Jrj-yN-YR84/s1600-h/column-link.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://2.bp.blogspot.com/_uLhotpDLaq0/SrODvgR-CvI/AAAAAAAAAHU/Jrj-yN-YR84/s400/column-link.png" /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;/div&gt;&lt;br /&gt;
You’d have to agree it doesn’t get much simpler than that.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/869579236085438805-1099942927050849188?l=oracleinsights.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oracleinsights.blogspot.com/feeds/1099942927050849188/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=869579236085438805&amp;postID=1099942927050849188' title='19 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/869579236085438805/posts/default/1099942927050849188'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/869579236085438805/posts/default/1099942927050849188'/><link rel='alternate' type='text/html' href='http://oracleinsights.blogspot.com/2009/09/apex-modal-windows-are-snap-using-extjs.html' title='Apex Modal Windows are a snap using ExtJS'/><author><name>Mark Lancaster</name><uri>http://www.blogger.com/profile/06316329564169609358</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_uLhotpDLaq0/SrODi3x2z6I/AAAAAAAAAHM/M6XVlQM4kCc/s72-c/screenshot001.png' height='72' width='72'/><thr:total>19</thr:total></entry><entry><id>tag:blogger.com,1999:blog-869579236085438805.post-3879357043019358703</id><published>2009-06-10T05:28:00.000-07:00</published><updated>2009-06-10T05:41:33.923-07:00</updated><title type='text'>Oracle APEX: User friendly exceptions and logging</title><content type='html'>One of the bug-bears of Oracle Apex has been intercepting unplanned exceptions and displaying a user-friendly message.

&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_uLhotpDLaq0/Si-o_OxtNeI/AAAAAAAAAHE/4NDWdrKMdZk/s1600-h/ScreenShot036.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 385px;" src="http://3.bp.blogspot.com/_uLhotpDLaq0/Si-o_OxtNeI/AAAAAAAAAHE/4NDWdrKMdZk/s400/ScreenShot036.png" alt="" id="BLOGGER_PHOTO_ID_5345677086963873250" border="0" /&gt;&lt;/a&gt;
I've decided to tackle the issue using a little AJAX to capture the error and retrieve a "nice" user-friendly message.

It also gives me the opportunity to log the error, as well as relevant session information.

Check out &lt;a href="http://apex.oracle.com/pls/otn/f?p=200801:2028:0"&gt;Friendly Exception Messages&lt;/a&gt; with source code.

The code uses Apex built-in javascript, so can be used on any application (no need for ExtJS).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/869579236085438805-3879357043019358703?l=oracleinsights.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oracleinsights.blogspot.com/feeds/3879357043019358703/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=869579236085438805&amp;postID=3879357043019358703' title='8 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/869579236085438805/posts/default/3879357043019358703'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/869579236085438805/posts/default/3879357043019358703'/><link rel='alternate' type='text/html' href='http://oracleinsights.blogspot.com/2009/06/oracle-apex-user-friendly-exceptions.html' title='Oracle APEX: User friendly exceptions and logging'/><author><name>Mark Lancaster</name><uri>http://www.blogger.com/profile/06316329564169609358</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_uLhotpDLaq0/Si-o_OxtNeI/AAAAAAAAAHE/4NDWdrKMdZk/s72-c/ScreenShot036.png' height='72' width='72'/><thr:total>8</thr:total></entry><entry><id>tag:blogger.com,1999:blog-869579236085438805.post-3004726699254138986</id><published>2009-06-09T05:11:00.000-07:00</published><updated>2009-06-09T05:30:25.770-07:00</updated><title type='text'>Another Oracle Apex ExtJS demo site</title><content type='html'>Tobias Arnhold has just released a Apex-ExtJS demo site &lt;a href="http://apex.oracle.com/pls/otn/f?p=65555"&gt;APEX at Work&lt;/a&gt; as well as his &lt;a href="http://apex-at-work.blogspot.com/"&gt;blog&lt;/a&gt;.&lt;div&gt;
&lt;/div&gt;&lt;div&gt;It's well worth a look as Tobias is using a different ExtJS theme and is using more of the standard Apex builtins. &lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;div&gt;I look forward to seeing what he comes up with in the future.&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;div&gt;Hopefully this may encourage a few others to demo their Apex-ExtJS solutions - I've seen screenshots from a number of other sites using ExtJS with Apex with really nice functionality.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/869579236085438805-3004726699254138986?l=oracleinsights.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oracleinsights.blogspot.com/feeds/3004726699254138986/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=869579236085438805&amp;postID=3004726699254138986' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/869579236085438805/posts/default/3004726699254138986'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/869579236085438805/posts/default/3004726699254138986'/><link rel='alternate' type='text/html' href='http://oracleinsights.blogspot.com/2009/06/another-oracle-apex-extjs-demo-site.html' title='Another Oracle Apex ExtJS demo site'/><author><name>Mark Lancaster</name><uri>http://www.blogger.com/profile/06316329564169609358</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-869579236085438805.post-2610450668854512540</id><published>2009-04-29T05:30:00.000-07:00</published><updated>2010-01-21T05:54:06.121-08:00</updated><title type='text'>ExtJS customized Viewport for Oracle APEX</title><content type='html'>One of the issues you may experience with ExtJS, is that it moves html DOM elements around when it renders the page.&lt;br /&gt;
&lt;br /&gt;
For example if your using tab panels or the Viewport.

This can result in your form elements ending up outside of the form.&lt;br /&gt;
You can solve this by using &lt;span style="color: #cc9933; font-weight: bold;"&gt;allowDomMove:false&lt;/span&gt; as discussed in this &lt;a href="http://forums.oracle.com/forums/thread.jspa?messageID=3436028#3436028"&gt;Apex Forum thread&lt;/a&gt; or solve the problem once and for all by using a customized version of the Ext.Viewport.&lt;br /&gt;
&lt;br /&gt;
I like the second option better, so here is the solution.&lt;br /&gt;
&amp;nbsp;1. Replace references to Ext.Viewport with Ext.ux.FormViewport (see below) in your javascript.&lt;br /&gt;
&amp;nbsp;2. Add the following style to your css   &lt;span style="color: #cc9933; font-weight: bold;"&gt;#wwvFlowForm {width:100%; height:100%;}&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style="color: #cc9933; font-weight: bold;"&gt;&lt;/span&gt;

See also &lt;a href="http://oracleinsights.blogspot.com/2008/02/building-complete-oracle-apex-page.html"&gt;Building a complete Oracle Apex page template using ExtJS&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;Enjoy

Mark

&lt;br /&gt;
&lt;br /&gt;
&lt;pre style="border: 1px dashed rgb(47, 111, 171); color: #3f747f; font-size: 12px; line-height: normal; margin: 0pt 15px 10px; overflow-x: auto; overflow-y: hidden; padding: 1em 1.5em;"&gt;/*
* Mark Lancaster Wednesday, 16 January 2008 12:00 PM
*

/**
* @class Ext.ux.FormViewport
* @extends Ext.Container
* A specialized container representing the viewable application area (the browser viewport).
* &lt;br /&gt;
The Viewport renders itself to the wwvFlowForm element, and automatically sizes itself to the size of
* the browser viewport and manages window resizing. There may only be one Viewport created
* in a page. Inner layouts are available by virtue of the fact that all {@link Ext.Panel Panel}s
* added to the Viewport, either through its {@link #items}, or through the items, or the {@link #add}
* method of any of its child Panels may themselves have a layout.&lt;br /&gt;
* &lt;br /&gt;
The Viewport does not provide scrolling, so child Panels within the Viewport should provide
* for scrolling if needed using the {@link #autoScroll} config.&lt;br /&gt;
* By default, when applyTo is not specified, the Viewport renders itself to the document body.
*/
Ext.ux.FormViewport = Ext.extend(Ext.Container, {
/**
* @cfg {Mixed} applyTo
* The id of the node, a DOM node or an existing Element that is already present in
* the document that specifies some panel-specific structural markup.By default, when applyTo is not
* specified, the Viewport renders itself to the document body.
*/
initComponent : function() {
   Ext.ux.FormViewport.superclass.initComponent.call(this);
   document.getElementsByTagName('html')[0].className += ' x-viewport';

   // applyTo specified element
   this.el = Ext.get('wwvFlowForm');
   if (!this.el) {
       this.el = Ext.getBody();
   } else {
       // disable scroll on body
       Ext.getBody().dom.scroll = 'no';
   }

   this.el.setHeight = Ext.emptyFn;
   this.el.setWidth = Ext.emptyFn;
   this.el.setSize = Ext.emptyFn;
   this.el.dom.scroll = 'no';
   this.allowDomMove = false;
   this.autoWidth = true;
   this.autoHeight = true;
   Ext.EventManager.onWindowResize(this.fireResize, this);
   this.renderTo = this.el;
},

fireResize : function(w, h){
   this.fireEvent('resize', this, w, h, w, h);
}
});
Ext.reg('FormViewport', Ext.ux.FormViewport);
&lt;br /&gt;
&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/869579236085438805-2610450668854512540?l=oracleinsights.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oracleinsights.blogspot.com/feeds/2610450668854512540/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=869579236085438805&amp;postID=2610450668854512540' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/869579236085438805/posts/default/2610450668854512540'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/869579236085438805/posts/default/2610450668854512540'/><link rel='alternate' type='text/html' href='http://oracleinsights.blogspot.com/2009/04/extjs-customized-viewport-for-oracle.html' title='ExtJS customized Viewport for Oracle APEX'/><author><name>Mark Lancaster</name><uri>http://www.blogger.com/profile/06316329564169609358</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-869579236085438805.post-1556233494894490161</id><published>2009-03-26T05:29:00.000-07:00</published><updated>2009-12-13T03:57:07.012-08:00</updated><title type='text'>Book Review: Learning Ext JS</title><content type='html'>&lt;a href="http://www.blogger.com/post-create.g?blogID=869579236085438805#" onclick="window.open('http://www.packtpub.com/view_popup/bookimage/1847195148','help','scrollbars=yes,resizable=yes,width=600,height=725,left=180,top=20'); return false;" title="Learning Ext JS"&gt;&lt;img alt="Learning Ext JS" border="0" class="left" height="123" src="http://images.packtpub.com/images/100x123/1847195148.png" title="Learning Ext JS" width="99" /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;div&gt;
&lt;/div&gt;
&lt;div&gt;
I recently took the opportunity when approaced by &lt;a href="http://www.packtpub.com/"&gt;Packt Publishing&lt;/a&gt; to review "Learning Ext JS" by Shea Frederick, Colin Ramsay, and Steve Blades.&lt;br /&gt;
The book is produced as an "eBook", delivered in a PDF format with the book examples available in a zip file.&lt;br /&gt;
&lt;br /&gt;
For readers not familiar with Ext JS, it is a cross-browser JavaScript library for building rich internet applications.
It features highly attractive customizable UI widgets supported by a well designed, documented and extensible Component model.&lt;br /&gt;
&lt;br /&gt;
The book is written with the experienced developer in mind. It's all about getting productive as quickly as possible.
We've all been there, thrown into an unfamiliar technology and expected to perform miracles overnight.
In these situations you can find yourself floundering, looking for some starting guidence while you try to find your feet.&lt;br /&gt;
&lt;br /&gt;
The book is focused very specifically on Ext JS, so if you've never dealt with HTML or javascript before, I'd suggest a second reference to cover that as well.&lt;br /&gt;
Having said that, if your just working with Ext JS for your presentation interface, the book is complete enough to get you up and running.&lt;br /&gt;
&lt;br /&gt;
After an obligitory introduction chapter, and some foundation concepts, your quickly working with Ext widgets. Very soon your creating Ext JS forms, applying textfields, datefields, combos, toolbars and validations.
The very popular Grid an Tree components are also well covered, with Layouts appearing surprising late in the book.&lt;br /&gt;
&lt;br /&gt;
I enjoyed the flow of the book, which is written in an easy reading light hearted style.
The examples clearly explained the concepts, and raised a few chuckles at the same time.

Examples that included server-side code assume a PHP backend, a fairly typical implementation for Ext JS.&lt;br /&gt;
&lt;br /&gt;
I work with Oracle Application Express and PL/SQL, never the less the examples were easy to follow if you focused on the format of the server output rather than the implementation language.&lt;br /&gt;
&lt;br /&gt;
Overall, if your starting out with Ext JS, or struggling understanding the Ext JS examples and scattered forum posts, this book is a good reference.

&lt;br /&gt;
&lt;a href="http://www.packtpub.com/files/learning-extjs-sample-chapter-7-layouts.pdf"&gt;Chapter 7: Layouts&lt;/a&gt; is available as a sample chapter.&lt;br /&gt;
&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/869579236085438805-1556233494894490161?l=oracleinsights.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oracleinsights.blogspot.com/feeds/1556233494894490161/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=869579236085438805&amp;postID=1556233494894490161' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/869579236085438805/posts/default/1556233494894490161'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/869579236085438805/posts/default/1556233494894490161'/><link rel='alternate' type='text/html' href='http://oracleinsights.blogspot.com/2009/03/book-review-learning-ext-js.html' title='Book Review: Learning Ext JS'/><author><name>Mark Lancaster</name><uri>http://www.blogger.com/profile/06316329564169609358</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-869579236085438805.post-1813001897119297958</id><published>2009-03-20T06:17:00.000-07:00</published><updated>2009-12-13T04:02:55.219-08:00</updated><title type='text'>APEX Global AJAX variables - gotta love them</title><content type='html'>&lt;div&gt;
&lt;a href="http://1.bp.blogspot.com/_uLhotpDLaq0/ScOZfP7D-qI/AAAAAAAAAG8/nwQkqcX6b4Q/s1600-h/ScreenShot033.png" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5315260747356568226" src="http://1.bp.blogspot.com/_uLhotpDLaq0/ScOZfP7D-qI/AAAAAAAAAG8/nwQkqcX6b4Q/s640/ScreenShot033.png" style="margin: 0pt 10px 10px 0pt;" /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;/div&gt;
&lt;br /&gt;
I've just added a &lt;a href="http://apex.oracle.com/pls/otn/f?p=200801:2013"&gt;fully AJAX enabled editable tree&lt;/a&gt; on my demo site.&lt;br /&gt;
All modifications to the tree are transmitted to the database via an application process using AJAX.&lt;br /&gt;
&lt;br /&gt;
Values are submitted using wwv_flow package variables:&lt;br /&gt;
&amp;nbsp; g_widget_name&lt;br /&gt;
&amp;nbsp; g_widget_mod&lt;br /&gt;
&amp;nbsp; g_widget_action&lt;br /&gt;
&amp;nbsp; g_widget_action_mod&lt;br /&gt;
&amp;nbsp; g_widget_num_return&lt;br /&gt;
&amp;nbsp; g_x01 .. g_x10&lt;br /&gt;
&lt;br /&gt;
The application process simply calls a database package, which references the wwv_flow package variables and updates the data.&lt;br /&gt;

&lt;span style="font-weight: bold;"&gt;&amp;nbsp;&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-weight: bold;"&gt;The key to AJAX functionality in Oracle Apex is based around these "Global input variables for AJAX utilities".&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
Using these variables, a little javascript to call a simple application process and then we handover to PL/SQL - back in every Oracle developers comfort zone.&lt;br /&gt;
&lt;br /&gt;




This example has a fair bit going on, to see a simpler example check out:




&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="http://apex.oracle.com/pls/otn/f?p=200801:2011"&gt;My demo&lt;/a&gt; using extJS
&lt;/li&gt;
&lt;li&gt;&lt;a href="http://apex.oracle.com/pls/otn/f?p=52603:1"&gt;Tyler Muths demo&lt;/a&gt; which uses jQuery&lt;/li&gt;
&lt;li&gt;&lt;a href="http://apex.oracle.com/pls/otn/f?p=11933:97"&gt;Carl Backstroms demo&lt;/a&gt; using native Apex javascript.&lt;/li&gt;
&lt;/ul&gt;
&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/869579236085438805-1813001897119297958?l=oracleinsights.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oracleinsights.blogspot.com/feeds/1813001897119297958/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=869579236085438805&amp;postID=1813001897119297958' title='6 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/869579236085438805/posts/default/1813001897119297958'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/869579236085438805/posts/default/1813001897119297958'/><link rel='alternate' type='text/html' href='http://oracleinsights.blogspot.com/2009/03/apex-global-ajax-variables-gotta-love.html' title='APEX Global AJAX variables - gotta love them'/><author><name>Mark Lancaster</name><uri>http://www.blogger.com/profile/06316329564169609358</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_uLhotpDLaq0/ScOZfP7D-qI/AAAAAAAAAG8/nwQkqcX6b4Q/s72-c/ScreenShot033.png' height='72' width='72'/><thr:total>6</thr:total></entry><entry><id>tag:blogger.com,1999:blog-869579236085438805.post-7827109873323585267</id><published>2009-02-26T03:41:00.000-08:00</published><updated>2009-02-26T04:08:21.829-08:00</updated><title type='text'>Oracle Apex templates - not just for HTML</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_uLhotpDLaq0/SaaEnP16xUI/AAAAAAAAAG0/mMYOL93xNug/s1600-h/tree-panel.png"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 231px; height: 400px;" src="http://3.bp.blogspot.com/_uLhotpDLaq0/SaaEnP16xUI/AAAAAAAAAG0/mMYOL93xNug/s400/tree-panel.png" alt="" id="BLOGGER_PHOTO_ID_5307075020705154370" border="0" /&gt;&lt;/a&gt;
Have you ever considered using templates for generating something else besides HTML?

You can use Apex templates to generate all sorts of things - XML, javascript and JSON to name a few.

The tree panel shown gets all its data from a list template.

See it in action, and the template details on my &lt;a href="http://apex.oracle.com/pls/otn/f?p=200801:2025:0"&gt;demo&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/869579236085438805-7827109873323585267?l=oracleinsights.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oracleinsights.blogspot.com/feeds/7827109873323585267/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=869579236085438805&amp;postID=7827109873323585267' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/869579236085438805/posts/default/7827109873323585267'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/869579236085438805/posts/default/7827109873323585267'/><link rel='alternate' type='text/html' href='http://oracleinsights.blogspot.com/2009/02/oracle-apex-templates-not-just-for-html.html' title='Oracle Apex templates - not just for HTML'/><author><name>Mark Lancaster</name><uri>http://www.blogger.com/profile/06316329564169609358</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_uLhotpDLaq0/SaaEnP16xUI/AAAAAAAAAG0/mMYOL93xNug/s72-c/tree-panel.png' height='72' width='72'/><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-869579236085438805.post-2143813883272626700</id><published>2008-12-10T05:58:00.001-08:00</published><updated>2008-12-10T06:28:34.862-08:00</updated><title type='text'>ExtJS Grid in Apex (with pagination)</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_uLhotpDLaq0/ST_LQy6hf7I/AAAAAAAAAFg/AENYlg00mUw/s1600-h/ScreenShot032.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 224px;" src="http://2.bp.blogspot.com/_uLhotpDLaq0/ST_LQy6hf7I/AAAAAAAAAFg/AENYlg00mUw/s400/ScreenShot032.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5278160777707093938" /&gt;&lt;/a&gt;Check out the &lt;a href="http://apex.oracle.com/pls/otn/f?p=200801:2017:0"&gt;ExtJS Grid with Pagination&lt;/a&gt; on my &lt;a href="http://apex.oracle.com/pls/otn/f?p=200801:1:0"&gt;demo site&lt;/a&gt;&lt;div&gt;
&lt;/div&gt;&lt;div&gt;So how does it work?&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;div&gt;This is brief, because it's after midnight.&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;Use a Named Column (row template) for the Report to build the grid array data - see page source code for output.
&lt;/li&gt;&lt;li&gt;The query needs to return the data in a JSON escaped format, so use a "SQL Query (PL/SQL  function returning a SQL query)" with generic column names
The function call looks like:&lt;/li&gt;&lt;/ul&gt;&lt;pre style="border: 1px dashed rgb(47, 111, 171); margin: 0pt 15px 10px; padding: 1em 1.5em; color: rgb(63, 116, 127); font-size: 12px; overflow-x: auto; overflow-y: hidden; line-height: normal;"&gt;begin
return json_api.grid_query
  (p_region_id =&gt; 4367612871540792
  ,p_query =&gt;'select * from geo_domains'
  );
end;
&lt;/pre&gt;&lt;ul&gt;&lt;li&gt;The query returned limits the rows and JSON escapes the data, much the same way as Apex does internally (hint: dbms_sql). Also - I set pagination to none, as its handled by my code.
&lt;/li&gt;&lt;li&gt;Pressing next data set on the displayed page fires off a AJAX request (application process) which passes the region_id as well as start, limit and callback function values.
&lt;/li&gt;&lt;li&gt;This executes a database package to re-run the query and return a paginated rowset.
You can see the returned data format using Firebug.&lt;/li&gt;&lt;li&gt;The grid updates the data using builtin ExtJS functionality.
&lt;/li&gt;&lt;/ul&gt;
&lt;/div&gt;&lt;div&gt;Next example will be an updatable grid - also near completion.&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;div&gt;Nighty night - Mark&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/869579236085438805-2143813883272626700?l=oracleinsights.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oracleinsights.blogspot.com/feeds/2143813883272626700/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=869579236085438805&amp;postID=2143813883272626700' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/869579236085438805/posts/default/2143813883272626700'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/869579236085438805/posts/default/2143813883272626700'/><link rel='alternate' type='text/html' href='http://oracleinsights.blogspot.com/2008/12/extjs-grid-in-apex-with-pagination.html' title='ExtJS Grid in Apex (with pagination)'/><author><name>Mark Lancaster</name><uri>http://www.blogger.com/profile/06316329564169609358</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_uLhotpDLaq0/ST_LQy6hf7I/AAAAAAAAAFg/AENYlg00mUw/s72-c/ScreenShot032.png' height='72' width='72'/><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-869579236085438805.post-186216726821170917</id><published>2008-11-26T05:04:00.000-08:00</published><updated>2008-11-26T05:11:11.077-08:00</updated><title type='text'>ExtJS Grids in Oracle Apex</title><content type='html'>Here is a &lt;a href="http://apex.oracle.com/pls/otn/f?p=200801:2015:0"&gt;read-only ExtJS grid&lt;/a&gt; in Oracle Apex.

&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_uLhotpDLaq0/SS1KUcChKBI/AAAAAAAAAFY/XXfHMSx66Hw/s1600-h/ScreenShot031.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 191px;" src="http://2.bp.blogspot.com/_uLhotpDLaq0/SS1KUcChKBI/AAAAAAAAAFY/XXfHMSx66Hw/s400/ScreenShot031.png" alt="" id="BLOGGER_PHOTO_ID_5272952453705312274" border="0" /&gt;&lt;/a&gt;
I'm experimenting with grids and it's coming together quite well - more detail in the future.

Try drag-and-drop, and resizing column headings, then use pagination - very nice.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/869579236085438805-186216726821170917?l=oracleinsights.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oracleinsights.blogspot.com/feeds/186216726821170917/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=869579236085438805&amp;postID=186216726821170917' title='15 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/869579236085438805/posts/default/186216726821170917'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/869579236085438805/posts/default/186216726821170917'/><link rel='alternate' type='text/html' href='http://oracleinsights.blogspot.com/2008/11/extjs-grids-in-oracle-apex.html' title='ExtJS Grids in Oracle Apex'/><author><name>Mark Lancaster</name><uri>http://www.blogger.com/profile/06316329564169609358</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_uLhotpDLaq0/SS1KUcChKBI/AAAAAAAAAFY/XXfHMSx66Hw/s72-c/ScreenShot031.png' height='72' width='72'/><thr:total>15</thr:total></entry><entry><id>tag:blogger.com,1999:blog-869579236085438805.post-7951356396654683782</id><published>2008-11-26T03:02:00.000-08:00</published><updated>2009-12-13T03:51:41.521-08:00</updated><title type='text'>Using ExtJS Calendar and CSS issues</title><content type='html'>Mack McLendon emailed me with an issue he was having with the ExtJS calendar in Apex.

He had successfully got the date functionality working, but as you can see from the screenshot he sent, the calendar is offset to the right.

&lt;a href="http://2.bp.blogspot.com/_uLhotpDLaq0/SS0u9rUo7ZI/AAAAAAAAAFQ/7H79reXdvYs/s1600-h/issue.gif" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5272922375856909714" src="http://2.bp.blogspot.com/_uLhotpDLaq0/SS0u9rUo7ZI/AAAAAAAAAFQ/7H79reXdvYs/s400/issue.gif" style="cursor: pointer; display: block; height: 258px; margin: 0px auto 10px; text-align: center; width: 295px;" /&gt;&lt;/a&gt;Mack wrote further, that disabling the standard Apex CSS and javascript fixed the problem, but at the expense of everything else on the page.

Luckily I was able to answer this easily - having been through the same painful experience myself.

&lt;span style="font-weight: bold;"&gt;&amp;nbsp;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style="font-weight: bold;"&gt;The Solution&lt;/span&gt;&lt;br /&gt;
&lt;style title="owaParaStyle"&gt;
BODY {  SCROLLBAR-HIGHLIGHT-COLOR: #cecfce; SCROLLBAR-ARROW-COLOR: #3f52b8; SCROLLBAR-TRACK-COLOR: #fffbff; SCROLLBAR-DARKSHADOW-COLOR: #fafafa; SCROLLBAR-BASE-COLOR: #f7f7f7 } 
&lt;/style&gt;The issue is caused by the following ul margin rule in apex_3_1.css&lt;br /&gt;
&lt;br /&gt;

ul {  margin:0 0 0 15px; padding:0;}&lt;br /&gt;
&lt;br /&gt;
The solution is simple - make sure you  reference the ext stylesheet after the apex stylesheet (#HEAD# tag) in your page  template.&lt;br /&gt;
&lt;br /&gt;

Ext includes some "reset" styles to ensure uniform appearance  between different browsers, including the following rule:&lt;br /&gt;

ul  {margin:0;padding:0;}&lt;br /&gt;
&lt;br /&gt;

Because the ext stylesheet comes after the apex  stylesheet, the apex style will be overridden, and the calendar appear  correctly.

Related info:
&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="http://oracleinsights.blogspot.com/2008/02/building-complete-oracle-apex-page.html"&gt;Building a complete Oracle Apex page template using ExtJS&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://oracleinsights.blogspot.com/2008/03/implementing-ext-dates-in-oracle-apex.html"&gt;Implementing Ext Dates in Oracle Apex&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://apex.oracle.com/pls/otn/f?p=200801:2004:0"&gt;Dates demo&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.smashingmagazine.com/2007/09/21/css-frameworks-css-reset-design-from-scratch/"&gt;CSS Frameworks + CSS Reset: Design From Scratch&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/869579236085438805-7951356396654683782?l=oracleinsights.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oracleinsights.blogspot.com/feeds/7951356396654683782/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=869579236085438805&amp;postID=7951356396654683782' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/869579236085438805/posts/default/7951356396654683782'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/869579236085438805/posts/default/7951356396654683782'/><link rel='alternate' type='text/html' href='http://oracleinsights.blogspot.com/2008/11/using-extjs-calendar-and-css-issues.html' title='Using ExtJS Calendar and CSS issues'/><author><name>Mark Lancaster</name><uri>http://www.blogger.com/profile/06316329564169609358</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_uLhotpDLaq0/SS0u9rUo7ZI/AAAAAAAAAFQ/7H79reXdvYs/s72-c/issue.gif' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-869579236085438805.post-2789826482661669437</id><published>2008-11-20T02:47:00.000-08:00</published><updated>2009-12-13T03:53:13.312-08:00</updated><title type='text'>Oracle Apex: Boost performance with a CDN</title><content type='html'>Ext has recently partnered with &lt;a href="http://cachefly.com/"&gt;CacheFly&lt;/a&gt;, a global content network, to provide free CDN hosting for the Ext JS framework. See &lt;span style="font-size: 100%;"&gt;&lt;a class="post-title" href="http://extjs.com/blog/2008/11/18/ext-cdn-custom-builds-compression-and-fast-performance/" rel="bookmark"&gt;&lt;/a&gt;&lt;/span&gt;more details on the &lt;a href="http://extjs.com/blog/2008/11/18/ext-cdn-custom-builds-compression-and-fast-performance/"&gt;announcement&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
A content delivery network (CDN) is a collection of web servers distributed across multiple locations to deliver content more efficiently to users.&lt;br /&gt;
The server selected for delivering content to a specific user is typically based on a measure of network proximity.&lt;br /&gt;
&lt;br /&gt;
For example, the server with the fewest network hops or the server with the quickest response time is chosen.

i.e. using a CDN to deliver static content, such as Ext javascript, css and images will result in your &lt;span style="font-weight: bold;"&gt;pages downloading significantly faster&lt;/span&gt;.&lt;br /&gt;
&lt;br /&gt;
I've modified my &lt;a href="http://apex.oracle.com/pls/otn/f?p=200801"&gt;demo site&lt;/a&gt; on apex.oracle.com to see the performance difference.
Previously I was pulling the Ext content from extjs.com - using the CDN gave a &lt;span style="font-weight: bold;"&gt;significant performance boost&lt;/span&gt;, making the demo site load much faster and give it a much snappier feel.&lt;br /&gt;
&lt;br /&gt;
To implement was a snap, just referencing the Ext content in my Oracle Apex page templates from the CacheFly site:

&lt;br /&gt;
&lt;pre style="border: 1px dashed rgb(47, 111, 171); color: #3f747f; font-size: 12px; line-height: normal; margin: 0pt 15px 10px; overflow-x: auto; overflow-y: hidden; padding: 1em 1.5em;"&gt; &amp;lt;script type="text/javascript" src="http://extjs.cachefly.net/ext-2.2/ext-all.js"&amp;gt; &amp;lt;/script&amp;gt;
&amp;lt;link rel="stylesheet" type="text/css" href="http://extjs.cachefly.net/ext-2.2/resources/css/ext-all.css"&amp;gt;
&lt;/pre&gt;
And if that isn't sweet enough, using the Ext’s &lt;a href="http://extjs.com/products/extjs/build/"&gt;Build It!&lt;/a&gt; tool will automatically install your custom version of the Ext library on the CacheFly website.&lt;br /&gt;
&lt;br /&gt;
So after implementing, I wanted to see how much better my YSlow score was now I was using a CDN.
Bugger - no difference - it wasn't detecting the CDN, so a quick check on &lt;a href="http://developer.yahoo.com/yslow/faq.html#faq_cdn"&gt;why, and how to fix&lt;/a&gt;.

Something to think about...&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/869579236085438805-2789826482661669437?l=oracleinsights.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oracleinsights.blogspot.com/feeds/2789826482661669437/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=869579236085438805&amp;postID=2789826482661669437' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/869579236085438805/posts/default/2789826482661669437'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/869579236085438805/posts/default/2789826482661669437'/><link rel='alternate' type='text/html' href='http://oracleinsights.blogspot.com/2008/11/oracle-apex-boost-performance-with-cdn.html' title='Oracle Apex: Boost performance with a CDN'/><author><name>Mark Lancaster</name><uri>http://www.blogger.com/profile/06316329564169609358</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-869579236085438805.post-4249740375308365397</id><published>2008-11-15T04:14:00.000-08:00</published><updated>2008-11-15T04:18:41.846-08:00</updated><title type='text'>Multiple Interactive Report Regions in one page?</title><content type='html'>Here's how to get multiple IRR's in one page.

&lt;span style="font-style: italic;"&gt;Cheat &lt;/span&gt;- just use iframes. See this &lt;a href="http://apex.oracle.com/pls/otn/f?p=200801:2022:0"&gt;example&lt;/a&gt;, which includes an iframed IRR in a popup ExtJS window.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/869579236085438805-4249740375308365397?l=oracleinsights.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oracleinsights.blogspot.com/feeds/4249740375308365397/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=869579236085438805&amp;postID=4249740375308365397' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/869579236085438805/posts/default/4249740375308365397'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/869579236085438805/posts/default/4249740375308365397'/><link rel='alternate' type='text/html' href='http://oracleinsights.blogspot.com/2008/11/multiple-interactive-report-regions-in.html' title='Multiple Interactive Report Regions in one page?'/><author><name>Mark Lancaster</name><uri>http://www.blogger.com/profile/06316329564169609358</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-869579236085438805.post-3096005948645537037</id><published>2008-11-09T02:45:00.000-08:00</published><updated>2009-12-13T04:05:09.454-08:00</updated><title type='text'>Oracle Apex IRR in ExtJS Popup Window</title><content type='html'>&lt;a href="http://3.bp.blogspot.com/_uLhotpDLaq0/SRbOQGICAFI/AAAAAAAAAE4/hAONJD7yhGE/s1600-h/ScreenShot028.png" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5266623590173900882" src="http://3.bp.blogspot.com/_uLhotpDLaq0/SRbOQGICAFI/AAAAAAAAAE4/hAONJD7yhGE/s400/ScreenShot028.png" style="cursor: pointer; display: block; height: 233px; margin: 0px auto 10px; text-align: center; width: 400px;" /&gt;&lt;/a&gt;
Dimitri Gielis emailed recently asking if I'd embedded an Ineractive Report Region (IRR) in a ExtJS popup window.&lt;br /&gt;
&lt;br /&gt;
Well no I hadn't - but it turned out to be straight forward in the end, as you can see in this &lt;a href="http://apex.oracle.com/pls/otn/f?p=200801:2019:0"&gt;demo&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
He raised an interesting point that when he tried the IRR javascript failed (filtering, sorting etc).&lt;br /&gt;
&lt;br /&gt;

I believe Dimitri had been referencing the apexir_WORKSHEET_REGION div when embedding the IRR in a window, whereas I added an extra div tag around the IRR and used that instead.

&lt;span style="font-weight: bold;"&gt;&amp;nbsp;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style="font-weight: bold;"&gt;Such a small difference, such a big impact.&lt;/span&gt;

The next screenshot shows some of the ExtJS windows html with my extra div tag wrapping the IRR.&lt;br /&gt;
&lt;br /&gt;
&lt;a href="http://4.bp.blogspot.com/_uLhotpDLaq0/SRbPauNVx-I/AAAAAAAAAFA/pKXhtB2dQtE/s1600-h/ScreenShot029.png" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5266624872243906530" src="http://4.bp.blogspot.com/_uLhotpDLaq0/SRbPauNVx-I/AAAAAAAAAFA/pKXhtB2dQtE/s400/ScreenShot029.png" style="display: block; height: 69px; margin: 0px auto 10px; text-align: center; width: 400px;" /&gt;&lt;/a&gt;&lt;br /&gt;
Here is the html when referencing the apexir_WORKSHEET_REGION div.&lt;br /&gt;
&lt;br /&gt;
&lt;a href="http://2.bp.blogspot.com/_uLhotpDLaq0/SRbTwca80SI/AAAAAAAAAFI/Dp7RX2jbAuA/s1600-h/ScreenShot030.png" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5266629643472785698" src="http://2.bp.blogspot.com/_uLhotpDLaq0/SRbTwca80SI/AAAAAAAAAFI/Dp7RX2jbAuA/s400/ScreenShot030.png" style="cursor: pointer; display: block; height: 45px; margin: 0px auto 10px; text-align: center; width: 400px;" /&gt;&lt;/a&gt;&lt;br /&gt;
So what's happened?&lt;br /&gt;
&lt;br /&gt;
The apexir_rollover div (containing the filters etc) is no longer just below the apexir_WORKSHEET_REGION div. The relative positioning of these divs makes a difference.&lt;br /&gt;
&lt;br /&gt;
Applying ExtJS functionality to existing html often results in html tags being moved around.
Something to remember when you get unexpected behaviours.&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/869579236085438805-3096005948645537037?l=oracleinsights.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oracleinsights.blogspot.com/feeds/3096005948645537037/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=869579236085438805&amp;postID=3096005948645537037' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/869579236085438805/posts/default/3096005948645537037'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/869579236085438805/posts/default/3096005948645537037'/><link rel='alternate' type='text/html' href='http://oracleinsights.blogspot.com/2008/11/oracle-apex-irr-in-extjs-popup-window.html' title='Oracle Apex IRR in ExtJS Popup Window'/><author><name>Mark Lancaster</name><uri>http://www.blogger.com/profile/06316329564169609358</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_uLhotpDLaq0/SRbOQGICAFI/AAAAAAAAAE4/hAONJD7yhGE/s72-c/ScreenShot028.png' height='72' width='72'/><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-869579236085438805.post-8058805214326396346</id><published>2008-11-07T04:42:00.001-08:00</published><updated>2009-12-13T03:54:56.299-08:00</updated><title type='text'>Oracle Apex Spellchecker not working for you?</title><content type='html'>&lt;a href="http://2.bp.blogspot.com/_uLhotpDLaq0/SRQ3ywREJuI/AAAAAAAAAEw/pxC3ie89Tjg/s1600-h/ScreenShot027.png" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5265895209392416482" src="http://2.bp.blogspot.com/_uLhotpDLaq0/SRQ3ywREJuI/AAAAAAAAAEw/pxC3ie89Tjg/s400/ScreenShot027.png" style="cursor: pointer; float: left; height: 277px; margin: 0pt 10px 10px 0pt; width: 400px;" /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If your a "textareas with spellchecker" look like this when you do a spellcheck, the solution is easily explained.&lt;br /&gt;
&lt;br /&gt;
One of the parameters being passed is the language parameter, found in  &lt;span style="font-weight: bold;"&gt;Shared Components &amp;gt; Edit Globalization Attributes&lt;/span&gt;.&lt;br /&gt;

In my case I have the language set to &lt;span style="font-weight: bold;"&gt;en-au&lt;/span&gt;  (English - Australian). This is nice if you want your date-pickers to &lt;a href="http://oracleinsights.blogspot.com/2008/08/how-to-make-oracle-apex-calendar-start.html"&gt;start the week on Mondays&lt;/a&gt;, but not so good for the spell-checker.&lt;br /&gt;
&lt;br /&gt;
So how do we fix this?&lt;br /&gt;

It's just a case of populating the WWV_FLOW_DICTIONARY$ table for your language.&lt;br /&gt;
So for me the following script does it:&lt;br /&gt;
&lt;span style="font-size: 85%;"&gt;&lt;span style="color: #999900; font-family: courier new;"&gt;insert into wwv_flow_dictionary$&lt;/span&gt;
&lt;span style="color: #999900; font-family: courier new;"&gt;  (language, owner, security_group_id, words, words_capitalized, words_soundex)&lt;/span&gt;
&lt;span style="color: #999900; font-family: courier new;"&gt;select 'en-au', s.owner, s.security_group_id, s.words, s.words_capitalized, s.words_soundex&lt;/span&gt;
&lt;span style="color: #999900; font-family: courier new;"&gt;  from WWV_FLOW_DICTIONARY$ s&lt;/span&gt;
&lt;span style="color: #999900; font-family: courier new;"&gt; where s.language = 'en-us';&lt;/span&gt;
&lt;span style="color: #999900; font-family: courier new;"&gt; &lt;/span&gt;
&lt;span style="color: #999900; font-family: courier new;"&gt;commit;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;

Now if I was really being thorough, I'd go through all the words and fix the American spelling of words.&lt;br /&gt;
But after all, I am a developer and we're generally not known for our spelling :)&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/869579236085438805-8058805214326396346?l=oracleinsights.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oracleinsights.blogspot.com/feeds/8058805214326396346/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=869579236085438805&amp;postID=8058805214326396346' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/869579236085438805/posts/default/8058805214326396346'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/869579236085438805/posts/default/8058805214326396346'/><link rel='alternate' type='text/html' href='http://oracleinsights.blogspot.com/2008/11/oracle-apex-spellchecker-not-working.html' title='Oracle Apex Spellchecker not working for you?'/><author><name>Mark Lancaster</name><uri>http://www.blogger.com/profile/06316329564169609358</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_uLhotpDLaq0/SRQ3ywREJuI/AAAAAAAAAEw/pxC3ie89Tjg/s72-c/ScreenShot027.png' height='72' width='72'/><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-869579236085438805.post-5879058426539806171</id><published>2008-10-30T04:05:00.000-07:00</published><updated>2009-12-13T04:06:33.294-08:00</updated><title type='text'>Thank you Carl - you will be missed</title><content type='html'>It was very sad news to read &lt;a href="http://dgielis.blogspot.com/2008/10/why-oh-why-great-friend-amazing-apex.html"&gt;Dimitri's blog&lt;/a&gt; yesterday that Carl Backstrom had a &lt;a href="http://www.lasvegassun.com/news/2008/oct/27/two-las-vegas-men-killed-sunday-rollover-accident/"&gt;car accident&lt;/a&gt; on Sunday and passed away.&lt;br /&gt;
&lt;br /&gt;
Carl and I had been in regular contact by email over the last 18 months.
He was very generous and accessible with his time, a truly great guy.

I count myself fortunate in meeting up with him in person at Open World this year.&lt;br /&gt;
&lt;br /&gt;
He was very enthusiastic on the 4.0 release of Apex, and spoke of all the upcoming work around AJAX functionality and jQuery integration.&lt;br /&gt;
His enthusiasm was infectious.
Only a week or so ago, I was emailing him of plans to create a jQuery demo playpen for next year.&lt;br /&gt;
&lt;br /&gt;

Sometimes life really doesn't seem to have a sense of justice.&lt;br /&gt;
&lt;br /&gt;
Carl was taken from us much much too young, but not before he left his mark on the world.&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/869579236085438805-5879058426539806171?l=oracleinsights.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oracleinsights.blogspot.com/feeds/5879058426539806171/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=869579236085438805&amp;postID=5879058426539806171' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/869579236085438805/posts/default/5879058426539806171'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/869579236085438805/posts/default/5879058426539806171'/><link rel='alternate' type='text/html' href='http://oracleinsights.blogspot.com/2008/10/thank-you-carl-you-will-be-missed.html' title='Thank you Carl - you will be missed'/><author><name>Mark Lancaster</name><uri>http://www.blogger.com/profile/06316329564169609358</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-869579236085438805.post-8332586146876376025</id><published>2008-10-15T05:30:00.000-07:00</published><updated>2008-10-15T05:44:12.290-07:00</updated><title type='text'>Vista Style Toolbar in Oracle Apex</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_uLhotpDLaq0/SPXkUBHmHGI/AAAAAAAAAEo/rkwoKf6Xksc/s1600-h/vista_toolbar.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://2.bp.blogspot.com/_uLhotpDLaq0/SPXkUBHmHGI/AAAAAAAAAEo/rkwoKf6Xksc/s400/vista_toolbar.png" alt="" id="BLOGGER_PHOTO_ID_5257359172573731938" border="0" /&gt;&lt;/a&gt;This post is short and sweet.
If you want to know how to create a "vista style" toolbar in Apex see &lt;a href="http://apex.oracle.com/pls/otn/f?p=200801:2012:0"&gt;http://apex.oracle.com/pls/otn/f?p=200801:2012:0&lt;/a&gt;

It's easy to customize it, if you like the interactive behaviour, but not the look.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/869579236085438805-8332586146876376025?l=oracleinsights.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oracleinsights.blogspot.com/feeds/8332586146876376025/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=869579236085438805&amp;postID=8332586146876376025' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/869579236085438805/posts/default/8332586146876376025'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/869579236085438805/posts/default/8332586146876376025'/><link rel='alternate' type='text/html' href='http://oracleinsights.blogspot.com/2008/10/vista-style-toolbar-in-oracle-apex.html' title='Vista Style Toolbar in Oracle Apex'/><author><name>Mark Lancaster</name><uri>http://www.blogger.com/profile/06316329564169609358</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_uLhotpDLaq0/SPXkUBHmHGI/AAAAAAAAAEo/rkwoKf6Xksc/s72-c/vista_toolbar.png' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-869579236085438805.post-7579709122925979995</id><published>2008-09-26T08:38:00.000-07:00</published><updated>2009-12-13T04:08:57.847-08:00</updated><title type='text'>Oracle OpenWorld - done and dusted</title><content type='html'>&lt;a href="http://4.bp.blogspot.com/_uLhotpDLaq0/SN0Lq0jJrWI/AAAAAAAAAEA/mPBCVJ8GEjE/s1600-h/IMG_0217.jpg" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5250365570872356194" src="http://4.bp.blogspot.com/_uLhotpDLaq0/SN0Lq0jJrWI/AAAAAAAAAEA/mPBCVJ8GEjE/s320/IMG_0217.jpg" style="cursor: pointer; float: left; margin: 0pt 10px 10px 0pt;" /&gt;&lt;/a&gt;
Oracle OpenWorld is over for another year, and it's time to review the key messages for Oracle Apex.&lt;br /&gt;
&lt;br /&gt;
This was my first visit to OpenWorld, my previous experiences limited to downloading presentations.&lt;br /&gt;
&lt;br /&gt;

So was it worth flying all the way from Australia to see it in person?&lt;br /&gt;
Absolutely - you get so much more from hearing and talking directly to the presenters.&lt;br /&gt;
&lt;br /&gt;
Standouts for me:
&lt;span style="font-weight: bold;"&gt;Tom Kyte's&lt;/span&gt; presentation on database schema design.&lt;br /&gt;
I'd downloaded much of the content of his presentation from other events, but had missed the power of the message. Hearing and seeing the demo really opened my eyes - I'll be reviewing my database design when I get back to work.&lt;br /&gt;
Tom will be presenting at the AUSOUG conference in October, so delegates to the Australian event are in for a treat.&lt;br /&gt;

&lt;span style="font-weight: bold;"&gt;&amp;nbsp;&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-weight: bold;"&gt;Carl Backstrom's&lt;/span&gt; presentation on Web 2.0 functionality coming in Oracle Apex.&lt;br /&gt;
It was great to hear the enthusiasm about the upcoming functionality from Carl. If your not already starting to incorporate AJAX functionality into your applications, it's definitely time to get your head in that space.&lt;br /&gt;
&lt;br /&gt;
I caught up with Carl on the Demo grounds, to see the Web-Sheets functionality, which takes interactive reports to a whole new level. It allows interactive AJAX based editing directly in the report, as well as allowing end users to define and share sheets.&lt;br /&gt;
&lt;br /&gt;
Carl was also very excited that the Oracle legal team have given him the go-ahead to use &lt;span style="font-weight: bold;"&gt;jQuery&lt;/span&gt; in Apex. It means he can focus on higher level AJAX functionality, rather than getting down and dirty with the DOM. Apex 4.0 is very focused on delivering declarative functionality to developers, so they don't have to know AJAX.&lt;br /&gt;
&lt;br /&gt;

And finally, meeting and networking with &lt;span style="font-weight: bold;"&gt;&lt;span style="font-weight: bold;"&gt;&lt;/span&gt;Apex users&lt;/span&gt;. With 33 presentations related to Apex, the enthusiasm for Apex can't be underestimated. Time after time, presenters shared their success stories on Apex, on how quick the development time was, how short the learning curve was, and the value add it gave to their organisations.&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/869579236085438805-7579709122925979995?l=oracleinsights.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oracleinsights.blogspot.com/feeds/7579709122925979995/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=869579236085438805&amp;postID=7579709122925979995' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/869579236085438805/posts/default/7579709122925979995'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/869579236085438805/posts/default/7579709122925979995'/><link rel='alternate' type='text/html' href='http://oracleinsights.blogspot.com/2008/09/oracle-openworld-done-and-dusted.html' title='Oracle OpenWorld - done and dusted'/><author><name>Mark Lancaster</name><uri>http://www.blogger.com/profile/06316329564169609358</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_uLhotpDLaq0/SN0Lq0jJrWI/AAAAAAAAAEA/mPBCVJ8GEjE/s72-c/IMG_0217.jpg' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-869579236085438805.post-3427718365863327485</id><published>2008-08-25T04:04:00.000-07:00</published><updated>2008-08-25T04:29:16.102-07:00</updated><title type='text'>How to make the Oracle Apex calendar start with Monday</title><content type='html'>BHavesh recently asked on my blog how to get a date picker which shows Monday as the first day.

&lt;blockquote&gt;The default apex date picker shows Sunday as first day. But I can see on your &lt;a href="http://apex.oracle.com/pls/otn/f?p=200801:0"&gt;example&lt;/a&gt;, the default apex date picker has Monday as first day.

Is there a way I can also make my default apex date picker to show monday as first day.
&lt;/blockquote&gt;
Good question BHavesh, I wasn't entirely sure how I did it either.
It wasn't a conscious decision on my part, but a quick look with session debugging on revealed the answer, as you can see in the image below.
&lt;div style="text-align: left;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_uLhotpDLaq0/SLKUDDyEY2I/AAAAAAAAADw/O54Sz4yrlTQ/s1600-h/cal1.png"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://1.bp.blogspot.com/_uLhotpDLaq0/SLKUDDyEY2I/AAAAAAAAADw/O54Sz4yrlTQ/s400/cal1.png" alt="" id="BLOGGER_PHOTO_ID_5238412096861135714" border="0" /&gt;&lt;/a&gt;
&lt;/div&gt;












The NLS_TERRITORY is set to "AUSTRALIA".

A quick look in the manual revealed
&lt;blockquote&gt;NLS_TERRITORY specifies the name of the territory whose conventions are to be followed for day and week numbering. &lt;p&gt;This parameter also establishes the default date format, the default decimal character and group separator, and the default ISO and local currency symbols.&lt;/p&gt; &lt;/blockquote&gt;So there's your answer - the territory setting establishes the week numbering.

And where to set it in Oracle Apex? See below.

&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_uLhotpDLaq0/SLKUDOy_2dI/AAAAAAAAAD4/aIPa2eyW94I/s1600-h/cal2.png"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://4.bp.blogspot.com/_uLhotpDLaq0/SLKUDOy_2dI/AAAAAAAAAD4/aIPa2eyW94I/s400/cal2.png" alt="" id="BLOGGER_PHOTO_ID_5238412099817822674" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/869579236085438805-3427718365863327485?l=oracleinsights.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oracleinsights.blogspot.com/feeds/3427718365863327485/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=869579236085438805&amp;postID=3427718365863327485' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/869579236085438805/posts/default/3427718365863327485'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/869579236085438805/posts/default/3427718365863327485'/><link rel='alternate' type='text/html' href='http://oracleinsights.blogspot.com/2008/08/how-to-make-oracle-apex-calendar-start.html' title='How to make the Oracle Apex calendar start with Monday'/><author><name>Mark Lancaster</name><uri>http://www.blogger.com/profile/06316329564169609358</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_uLhotpDLaq0/SLKUDDyEY2I/AAAAAAAAADw/O54Sz4yrlTQ/s72-c/cal1.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-869579236085438805.post-4615551030610806562</id><published>2008-08-15T04:28:00.000-07:00</published><updated>2009-12-13T04:10:24.303-08:00</updated><title type='text'>Oracle Apex - AJAX form created from Javascript</title><content type='html'>&lt;a href="http://4.bp.blogspot.com/_uLhotpDLaq0/SKVoq0bZLII/AAAAAAAAADg/C-ENhFl17yI/s1600-h/ScreenShot026.png" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5234705226725403778" src="http://4.bp.blogspot.com/_uLhotpDLaq0/SKVoq0bZLII/AAAAAAAAADg/C-ENhFl17yI/s400/ScreenShot026.png" style="cursor: pointer; float: right; margin: 0pt 0pt 10px 10px;" /&gt;&lt;/a&gt;
One of the really nice features of using ExtJS is just how easy it is to create a form using javascript.&lt;br /&gt;
&lt;br /&gt;
Combining it with the new &lt;a href="http://carlback.blogspot.com/2008/03/new-stuff-1.html"&gt;Apex global variables&lt;/a&gt; which Carl Backstrom blogged about in May gives some very interesting opportunities.&lt;br /&gt;
&lt;br /&gt;

It means it is now possible to have functionality sitting in a application javascript library ready for use on every page.&lt;br /&gt;
This is exactly what is happening in IRR reports, and the upcoming Websheets functionality.&lt;br /&gt;
&lt;br /&gt;

Combine this with the ability to interrogate  your application using the Apex dictionary views, and suddenly the world is your oyster.&lt;br /&gt;
&lt;br /&gt;
Have a play with &lt;a href="http://apex.oracle.com/pls/otn/f?p=200801:2011:0::::::"&gt;AJAX Form using Globals&lt;/a&gt;  on my demo site.&lt;br /&gt;
&lt;br /&gt;
I'm using the same concept for a AJAX editable tree, which I'll be talking about at Oracle OpenWorld this year.&lt;br /&gt;
Provided I finish building it... :)&lt;br /&gt;
&lt;br /&gt;

Here's a screenshot of current progress.

Mark
&lt;a href="http://1.bp.blogspot.com/_uLhotpDLaq0/SKVwgCb5QbI/AAAAAAAAADo/pDhjRX37T9M/s1600-h/ScreenShot025.png" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5234713837600063922" src="http://1.bp.blogspot.com/_uLhotpDLaq0/SKVwgCb5QbI/AAAAAAAAADo/pDhjRX37T9M/s400/ScreenShot025.png" style="cursor: pointer; float: left; margin: 0pt 10px 10px 0pt;" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/869579236085438805-4615551030610806562?l=oracleinsights.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oracleinsights.blogspot.com/feeds/4615551030610806562/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=869579236085438805&amp;postID=4615551030610806562' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/869579236085438805/posts/default/4615551030610806562'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/869579236085438805/posts/default/4615551030610806562'/><link rel='alternate' type='text/html' href='http://oracleinsights.blogspot.com/2008/08/oracle-apex-ajax-form-created-from.html' title='Oracle Apex - AJAX form created from Javascript'/><author><name>Mark Lancaster</name><uri>http://www.blogger.com/profile/06316329564169609358</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_uLhotpDLaq0/SKVoq0bZLII/AAAAAAAAADg/C-ENhFl17yI/s72-c/ScreenShot026.png' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-869579236085438805.post-4152080931828821914</id><published>2008-07-24T17:17:00.000-07:00</published><updated>2009-12-13T04:11:32.173-08:00</updated><title type='text'>Selecting Apex page items by class using $x_ByClass</title><content type='html'>I just noticed an &lt;a href="http://apex.oracle.com/pls/otn/f?p=11933:157:0::NO:RP::"&gt;&lt;span style="font-weight: bold;"&gt;$x_ByClass&lt;/span&gt; example&lt;/a&gt; on Carl Backstrom's demo site which selects page items using the class attribute.&lt;br /&gt;
&lt;br /&gt;

So why is this important?&lt;br /&gt;
&lt;br /&gt;

It provides you with a mechanism to easily tag form items, typically text input fields, so you can add AJAX functionality to them.&lt;br /&gt;

In Carl's demo he is simply changing the the border color of datepicker items, as a proof of concept.

This is exactly the same technique I use with ExtJS to:
&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;convert text items into &lt;a href="http://apex.oracle.com/pls/otn/f?p=200801:2004:0::::::"&gt;javascript datepickers&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;create &lt;a href="http://apex.oracle.com/pls/otn/f?p=200801:2007:0::::::"&gt;AJAX lookup fields&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;make &lt;a href="http://apex.oracle.com/pls/otn/f?p=200801:2001:0::::::"&gt;textareas resizable&lt;/a&gt; (strictly speaking I select by itemtype)
&lt;/li&gt;
&lt;/ul&gt;
All I have to do is assign a class to a field, and generic javascript code fires looking for the class and applying the functionality.

What's really great is Oracle is building this javascript infrastructure directly into Apex.&lt;br /&gt;
&lt;br /&gt;
It means that developers can easily hook in widgets and AJAX functionality, because the low level plumbing has been done for us.&lt;br /&gt;
&lt;br /&gt;

Mark&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/869579236085438805-4152080931828821914?l=oracleinsights.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oracleinsights.blogspot.com/feeds/4152080931828821914/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=869579236085438805&amp;postID=4152080931828821914' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/869579236085438805/posts/default/4152080931828821914'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/869579236085438805/posts/default/4152080931828821914'/><link rel='alternate' type='text/html' href='http://oracleinsights.blogspot.com/2008/07/selecting-apex-page-items-by-class.html' title='Selecting Apex page items by class using $x_ByClass'/><author><name>Mark Lancaster</name><uri>http://www.blogger.com/profile/06316329564169609358</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-869579236085438805.post-7109290621957586368</id><published>2008-06-19T05:27:00.000-07:00</published><updated>2008-06-19T05:42:22.983-07:00</updated><title type='text'>Oracle Apex Builder CSS fix for Firefox3</title><content type='html'>&lt;p&gt;Does Firefox3 do this to your Oracle Apex Builder?&lt;/p&gt;
&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp0.blogger.com/_uLhotpDLaq0/SFpRLteSEVI/AAAAAAAAADQ/CkGrqSA6n74/s1600-h/ScreenShot019.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp0.blogger.com/_uLhotpDLaq0/SFpRLteSEVI/AAAAAAAAADQ/CkGrqSA6n74/s400/ScreenShot019.png" alt="" id="BLOGGER_PHOTO_ID_5213568780261790034" border="0" /&gt;&lt;/a&gt;

&lt;p&gt;The fix is to disable a CSS attribute for the "fieldset.lov" class, as seen here using Firebug&lt;/p&gt;
&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp1.blogger.com/_uLhotpDLaq0/SFpRXPqxObI/AAAAAAAAADY/n7dNis9T1Nc/s1600-h/ScreenShot022.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp1.blogger.com/_uLhotpDLaq0/SFpRXPqxObI/AAAAAAAAADY/n7dNis9T1Nc/s400/ScreenShot022.png" alt="" id="BLOGGER_PHOTO_ID_5213568978419530162" border="0" /&gt;&lt;/a&gt;

&lt;p&gt;To permanently fix the CSS, modify the apex_3_1.css file.

Search for "fieldset.lov" and delete the "height:1em;" attribute.&lt;/p&gt;&lt;p&gt;I haven't tested to see if this has other undesirable side affects, but so far so good.&lt;/p&gt;Mark&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/869579236085438805-7109290621957586368?l=oracleinsights.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oracleinsights.blogspot.com/feeds/7109290621957586368/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=869579236085438805&amp;postID=7109290621957586368' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/869579236085438805/posts/default/7109290621957586368'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/869579236085438805/posts/default/7109290621957586368'/><link rel='alternate' type='text/html' href='http://oracleinsights.blogspot.com/2008/06/oracle-apex-builder-css-fix-for.html' title='Oracle Apex Builder CSS fix for Firefox3'/><author><name>Mark Lancaster</name><uri>http://www.blogger.com/profile/06316329564169609358</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp0.blogger.com/_uLhotpDLaq0/SFpRLteSEVI/AAAAAAAAADQ/CkGrqSA6n74/s72-c/ScreenShot019.png' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-869579236085438805.post-6424654259020925678</id><published>2008-06-13T04:18:00.000-07:00</published><updated>2009-12-13T03:49:47.443-08:00</updated><title type='text'>Tabbed Regions in Oracle Apex using Extjs</title><content type='html'>David from Scotland emailed asking how I implemented &lt;a href="http://apex.oracle.com/pls/otn/f?p=200801:2005:0"&gt;tabbed regions&lt;/a&gt; on my demo site.&amp;nbsp;&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://3.bp.blogspot.com/_uLhotpDLaq0/SyTUm5zV_dI/AAAAAAAAAH4/zWjO0UsA2gA/s1600-h/ScreenShot018.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/_uLhotpDLaq0/SyTUm5zV_dI/AAAAAAAAAH4/zWjO0UsA2gA/s640/ScreenShot018.png" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;
It's actually very easy using &lt;a href="http://extjs.com/"&gt;Extjs&lt;/a&gt;.

&lt;span style="font-weight: bold;"&gt;&amp;nbsp;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style="font-weight: bold;"&gt;Step 1 - Create a region template which uses static ids&lt;/span&gt;

&lt;span style="color: #999900;"&gt;&amp;nbsp;&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #999900;"&gt;&amp;lt;div id="#REGION_STATIC_ID#" class="tab-content"&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #999900;"&gt;&amp;lt;div class="x-fieldset-bwrap" style="padding:10px"&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #999900;"&gt;&amp;lt;div align="right" class="x-fieldset-tbar"&amp;gt;#CLOSE##PREVIOUS##NEXT##DELETE##EDIT##CHANGE##CREATE##CREATE2##EXPAND##COPY##HELP#&amp;lt;/div&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #999900;"&gt;&amp;lt;div class="x-fieldset-body"&amp;gt;
#BODY#
&amp;lt;/div&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #999900;"&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #999900;"&gt;&amp;lt;/div&amp;gt;
&lt;/span&gt;

&lt;span style="font-weight: bold;"&gt;&amp;nbsp;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style="font-weight: bold;"&gt;Step 2 - Create your report/form regions as usual, but assigning them a static id.&lt;/span&gt;&lt;br /&gt;
I tend to use tab1, tab2, ..., tabn - but that's a personal choice.&lt;br /&gt;
&lt;br /&gt;
&lt;span style="font-weight: bold;"&gt;Step 3 - Add an opening div tag before the first tab region and a closing div tag after the last region.&lt;/span&gt;

&lt;span style="color: #999900;"&gt;&amp;lt;div id="pageTabs"&amp;gt;
&amp;lt;/div&amp;gt;
&lt;/span&gt;&lt;br /&gt;
You can either create extra regions of type "html text" with no template,
or simply add the extra tags in your region header and region footer.

I use extra regions, so it's really obvious whats going on when I look at again in 6 months time.
&lt;a href="http://bp1.blogger.com/_uLhotpDLaq0/SFJjmnyX_QI/AAAAAAAAADI/7GnLWVxKg5w/s1600-h/ScreenShot016.png" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5211337233987534082" src="http://bp1.blogger.com/_uLhotpDLaq0/SFJjmnyX_QI/AAAAAAAAADI/7GnLWVxKg5w/s400/ScreenShot016.png" style="cursor: pointer; display: block; margin: 0px auto 10px; text-align: center;" /&gt;&lt;/a&gt;

When the page is generated the html will look like this:&lt;br /&gt;
&lt;span style="color: #999900;"&gt;&amp;lt;div id="pageTabs"&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #999900;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;div id="tab1" class="tab-content"&amp;gt; &amp;lt;!-- content --&amp;gt; &amp;lt;/div&amp;gt;&amp;nbsp;&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #999900;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;div id="tab2" class="tab-content"&amp;gt; &amp;lt;!-- content --&amp;gt; &amp;lt;/div&amp;gt;&amp;nbsp;&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #999900;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;!-- and so on --&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #999900;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;div id="tabn" class="tab-content"&amp;gt; &amp;lt;!-- content --&amp;gt; &amp;lt;/div&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #999900;"&gt;&amp;lt;/div&amp;gt;&amp;nbsp;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style="font-weight: bold;"&gt;Step 4 - Add the javascript magic&lt;/span&gt;

Here I'm showing 2 tabs, and usually include the script with the closing div tag.

&lt;br /&gt;
&lt;pre&gt;&lt;span style="color: #999900;"&gt;&amp;lt;script type="text/javascript"&amp;gt;
Ext.onReady(function(){
       var tabs = new Ext.TabPanel({
           cls: 'prism',
           applyTo: 'pageTabs',
           plain: true,
           width: 795,
           //height: 450,
           autoHeight:true,
           enableTabScroll:true,
           autoScroll:true,
           activeTab: 0,
           deferredRender: false,
           border: true,
           defaults: {layout:'fit', autoScroll:true},
           items:[
               {contentEl:'tab1', title:'Create/Edit Customer'},
               {contentEl:'tab2', title:'Existing Customers'}
           ]
           });
});
&amp;lt;/script&amp;gt;
&lt;/span&gt;&lt;/pre&gt;
&lt;br /&gt;
The cls: 'prism' is a customisation I use to have a blue background for the tab panel.&lt;br /&gt;
I'll leave that for you to work out how I did that.&lt;br /&gt;
&lt;br /&gt;
As usual, the documentation on &lt;a href="http://extjs.com/deploy/dev/docs/output/Ext.TabPanel.html"&gt;tab panels&lt;/a&gt; goes into far more details.


Mark&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/869579236085438805-6424654259020925678?l=oracleinsights.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oracleinsights.blogspot.com/feeds/6424654259020925678/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=869579236085438805&amp;postID=6424654259020925678' title='30 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/869579236085438805/posts/default/6424654259020925678'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/869579236085438805/posts/default/6424654259020925678'/><link rel='alternate' type='text/html' href='http://oracleinsights.blogspot.com/2008/06/tabbed-regions-in-oracle-apex-using.html' title='Tabbed Regions in Oracle Apex using Extjs'/><author><name>Mark Lancaster</name><uri>http://www.blogger.com/profile/06316329564169609358</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_uLhotpDLaq0/SyTUm5zV_dI/AAAAAAAAAH4/zWjO0UsA2gA/s72-c/ScreenShot018.png' height='72' width='72'/><thr:total>30</thr:total></entry><entry><id>tag:blogger.com,1999:blog-869579236085438805.post-6784951678609792950</id><published>2008-05-30T05:02:00.000-07:00</published><updated>2008-05-30T05:31:55.484-07:00</updated><title type='text'>Horizontal Radiogroups in Oracle Apex</title><content type='html'>I had a requirement to set out a radiogroup horizontally the other day.

Amazingly I'd almost never used radiogroups before in Apex, so didn't know how before searching the forums.

The answer is quite simple: just specify the number of columns in the "List of Values" section against the item, as shown below.

&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp3.blogger.com/_uLhotpDLaq0/SD_zofq175I/AAAAAAAAACw/_KKEU1RY320/s1600-h/ScreenShot013.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp3.blogger.com/_uLhotpDLaq0/SD_zofq175I/AAAAAAAAACw/_KKEU1RY320/s400/ScreenShot013.png" alt="" id="BLOGGER_PHOTO_ID_5206147571285094290" border="0" /&gt;&lt;/a&gt;
So that's fine for a static LOV where you know how many columns to specify.
What about dynamic LOV's?

Have a guess, and then go to my &lt;a href="http://apex.oracle.com/pls/otn/f?p=200801:2010:0"&gt;demo&lt;/a&gt; for the answer.

Mark&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/869579236085438805-6784951678609792950?l=oracleinsights.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oracleinsights.blogspot.com/feeds/6784951678609792950/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=869579236085438805&amp;postID=6784951678609792950' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/869579236085438805/posts/default/6784951678609792950'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/869579236085438805/posts/default/6784951678609792950'/><link rel='alternate' type='text/html' href='http://oracleinsights.blogspot.com/2008/05/horizontal-radiogroups-in-oracle-apex.html' title='Horizontal Radiogroups in Oracle Apex'/><author><name>Mark Lancaster</name><uri>http://www.blogger.com/profile/06316329564169609358</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp3.blogger.com/_uLhotpDLaq0/SD_zofq175I/AAAAAAAAACw/_KKEU1RY320/s72-c/ScreenShot013.png' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-869579236085438805.post-7891501966748620278</id><published>2008-05-01T06:02:00.000-07:00</published><updated>2009-12-13T04:19:39.825-08:00</updated><title type='text'>Carl Backstrom has created a monster</title><content type='html'>Carl Backstrom has created a monster with his forum post on "&lt;a href="http://forums.oracle.com/forums/message.jspa?messageID=2462986"&gt;Enhancement Request Thread : Post 3.1&lt;/a&gt;"&lt;br /&gt;
&lt;br /&gt;
The quality of the requests coming through really is testament to the growing maturity of Oracle Apex.&lt;br /&gt;
It is obvious that many of the respondents have the depth of understanding of the product that is only developed over time.&lt;br /&gt;
&lt;br /&gt;
Interactive report regions (IRR), was a huge step forward in the 3.1 release.&lt;br /&gt;
It really enhanced and simplified implementing query-by-example functionality.&lt;br /&gt;
What's more by using AJAX functionality to only refresh the region, rather than the whole page,
the user experiences better performance and a more interactive experience.&lt;br /&gt;
&lt;br /&gt;
A particular feature to note is the column value filtering, which performs a lookup based on:&lt;br /&gt;
- column values (select distinct)&lt;br /&gt;
- pre-defined lov&lt;br /&gt;
- datatype specific, e.g. a variety of date based alternatives


&lt;span style="font-weight: bold;"&gt;&amp;nbsp;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style="font-weight: bold;"&gt;So what next for future releases post 3.1?&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
To my mind the focus should now be on enhancing the data entry side of Oracle Apex.&lt;br /&gt;
With the reporting side so much improved, data entry is looking a little tired.&lt;br /&gt;
&lt;br /&gt;
Two quick wins here:&lt;br /&gt;
- javascript dates instead of popups&lt;br /&gt;
- AJAX lookups.&lt;br /&gt;
&lt;br /&gt;

Implementing javascript dates is already in the statement of direction, so enough said.&lt;br /&gt;
&lt;br /&gt;
AJAX lookups are not currently mentioned, but I'm sure that internally its very much on the radar.&lt;br /&gt;
Why am I so confident of this?&lt;br /&gt;
Well, mostly because so much of it is already implemented in interactive report regions.&lt;br /&gt;
&lt;br /&gt;

Benefits:&lt;br /&gt;
- allows lookups to be performed on large datasets&lt;br /&gt;
 - allows "auto-complete" functionality i.e. reducing list of values as you type&lt;br /&gt;
- better user experience than popup search forms&lt;br /&gt;
&lt;br /&gt;
To see a working example, look at my demo site &lt;a href="http://apex.oracle.com/pls/otn/f?p=200801:2007:0"&gt;http://apex.oracle.com/pls/otn/f?p=200801:2007:0&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://3.bp.blogspot.com/_uLhotpDLaq0/SyTbu_7RwxI/AAAAAAAAAIA/GsfskgThzYw/s1600-h/ScreenShot012.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/_uLhotpDLaq0/SyTbu_7RwxI/AAAAAAAAAIA/GsfskgThzYw/s640/ScreenShot012.png" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;
&lt;br /&gt;


My implementation is based on a holiday table, which includes a customer_id.&lt;br /&gt;
&lt;br /&gt;
The AJAX functionality calls the following procedure:

&lt;span style="font-family: courier new;"&gt;&amp;nbsp;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style="font-family: courier new;"&gt;PROCEDURE customer_lookup&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-family: courier new;"&gt;
  (p_callback    varchar2&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-family: courier new;"&gt;
  ,p_query       varchar2 default null&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-family: courier new;"&gt;
  ,p_limit       number   default 20&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-family: courier new;"&gt; 
  ,p_start       number   default 0&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-family: courier new;"&gt;  
  ,p_customer_id number   default null
  );

&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
The procedure works as described in the following pseudo-code:

&lt;span style="color: #cc9933;"&gt;&amp;nbsp;&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #cc9933;"&gt;if p_customer_id is not null then&lt;/span&gt;
    &lt;span style="color: #009900;"&gt;&amp;nbsp;&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #009900;"&gt;-- lookup customer details and return in JSON format&lt;/span&gt;
&lt;span style="color: #cc9933;"&gt;&amp;nbsp;&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #cc9933;"&gt;else&lt;/span&gt;
&lt;span style="color: #009900;"&gt;&amp;nbsp;&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #009900;"&gt;-- lookup customers where name like p_query||'%'&amp;nbsp;&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #009900;"&gt;-- return n records in JSON format (configurable by p_limit), starting at record p_start
&lt;/span&gt;&lt;span style="color: #cc9933;"&gt;&amp;nbsp;&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #cc9933;"&gt;end;&lt;/span&gt;


&lt;span style="font-weight: bold;"&gt;&amp;nbsp;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style="font-weight: bold;"&gt;For Apex to implement this:&lt;/span&gt;&lt;br /&gt;
1. New item type (perhaps AJAX lookup?)&lt;br /&gt;
&lt;br /&gt;
2. Developers would need to be able to define a 3 column lov query against the item&lt;br /&gt;
&amp;nbsp;&amp;nbsp; (Nice to have, but 2 column lov OK also)&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp; select value, short_display_value, long_display_value
    from some_table&lt;br /&gt;
&lt;br /&gt;
3. Mudge existing IRR lookup functionality for query and display on page.&lt;br /&gt;
&lt;br /&gt;
Worthwhile? Whats your opinion?&lt;br /&gt;
&lt;br /&gt;
Mark&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/869579236085438805-7891501966748620278?l=oracleinsights.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oracleinsights.blogspot.com/feeds/7891501966748620278/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=869579236085438805&amp;postID=7891501966748620278' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/869579236085438805/posts/default/7891501966748620278'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/869579236085438805/posts/default/7891501966748620278'/><link rel='alternate' type='text/html' href='http://oracleinsights.blogspot.com/2008/05/carl-backstrom-has-created-monster.html' title='Carl Backstrom has created a monster'/><author><name>Mark Lancaster</name><uri>http://www.blogger.com/profile/06316329564169609358</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_uLhotpDLaq0/SyTbu_7RwxI/AAAAAAAAAIA/GsfskgThzYw/s72-c/ScreenShot012.png' height='72' width='72'/><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-869579236085438805.post-3438228847289204748</id><published>2008-03-19T17:01:00.000-07:00</published><updated>2008-03-19T17:39:49.764-07:00</updated><title type='text'>Commenting system javascript on my web-site</title><content type='html'>&lt;div&gt;I've received a few requests to view the commenting system javascript from my demo web-site.&lt;/div&gt;
&lt;div&gt;The javascript is already there for all to see, either by downloading the page or viewing the source directly. &lt;/div&gt;
&lt;div&gt;I would definitely recommend using &lt;a href="http://www.blogger.com/www.mozilla.com/firefox/"&gt;Firefox&lt;/a&gt; and &lt;a href="http://www.getfirebug.com/"&gt;Firebug&lt;/a&gt; when viewing as it allows you to view attached script files as well as the page source.&lt;/div&gt;&lt;div&gt;The screenshot shows the Script tab in Firebug, listing the script files attached to the current page. In the background you can see the source for the active file.&lt;/div&gt;&lt;div&gt;&lt;img id="BLOGGER_PHOTO_ID_5179610190560013698" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://bp3.blogger.com/_uLhotpDLaq0/R-GsBotSrYI/AAAAAAAAABs/TZvQB1P84vk/s320/ScreenShot001.png" border="0" /&gt;&lt;/div&gt;
&lt;p&gt;Most of the javascript for my demo site in contained in a single "application" file &lt;a href="http://apex.oracle.com/pls/otn/wwv_flow_file_mgr.get_file?p_security_group_id=441224701954687600&amp;amp;p_flow_id=200801&amp;amp;p_fname=playpen.js"&gt;playpen.js&lt;/a&gt;.
The code has been compressed, but not obfuscated. This means you can load it into your favorite text editor and read the full source after you've done some formatting.

As far as understanding the code I would highly encourage you to look at &lt;a id="ext-gen91" href="http://extjs.com/deploy/ext-2.0/examples" target="_blank"&gt;Ext 2.0 Samples&lt;/a&gt; and &lt;a id="ext-gen95" href="http://extjs.com/deploy/ext-2.0/docs" target="_blank"&gt;Ext Documentation&lt;/a&gt;. Like anything worthwhile you need to invest time and energy to gain understanding. &lt;/p&gt;&lt;p&gt;The comment form is based on one of the examples for &lt;a href="http://extjs.com/deploy/dev/examples/form/dynamic.html"&gt;dynamic forms&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;Here is a super-brief explaination, I'm a little time challenged at the moment :)&lt;/p&gt;&lt;p&gt;I use an application process to insert the data into the database. &lt;/p&gt;&lt;p&gt;The javascript to do this is on my demo site - just download the source and then format it to see what's going on.&lt;/p&gt;&lt;p&gt;When inserting it into the database I have to unescape the comment so it will render later.
I use dbms_xmlgen.convert(:new.app_comment,dbms_xmlgen.entity_decode) to do this.
There may be a better way I haven't thought of.
I also strip out some html elements such as script, object, embed etc to prevent malicious attacks.&lt;/p&gt;&lt;p&gt;The javascript then does a PPR to display the comment immediately.&lt;/p&gt;&lt;p&gt;If this doesn't make sense to you, time to do some reading and learning :)&lt;/p&gt;&lt;p&gt;Mark&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/869579236085438805-3438228847289204748?l=oracleinsights.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oracleinsights.blogspot.com/feeds/3438228847289204748/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=869579236085438805&amp;postID=3438228847289204748' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/869579236085438805/posts/default/3438228847289204748'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/869579236085438805/posts/default/3438228847289204748'/><link rel='alternate' type='text/html' href='http://oracleinsights.blogspot.com/2008/03/commenting-system-javascript-on-my-web.html' title='Commenting system javascript on my web-site'/><author><name>Mark Lancaster</name><uri>http://www.blogger.com/profile/06316329564169609358</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp3.blogger.com/_uLhotpDLaq0/R-GsBotSrYI/AAAAAAAAABs/TZvQB1P84vk/s72-c/ScreenShot001.png' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-869579236085438805.post-3888651778715305805</id><published>2008-03-06T04:24:00.000-08:00</published><updated>2009-12-13T04:22:18.920-08:00</updated><title type='text'>Implementing Ext Dates in Oracle Apex</title><content type='html'>"Anonymous" asked me for more explanation on how I implemented the Ext date-picker in Oracle Apex, as seen in my &lt;a href="http://apex.oracle.com/pls/otn/f?p=200801:2004:0"&gt;demo.&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
Look, I don't mind answering, but please put a name on your feedback - anonymous is just rude.&lt;br /&gt;
&lt;br /&gt;
Here's the plain English explanation:&lt;br /&gt;
&lt;br /&gt;
&lt;blockquote&gt;
We are converting a simple html input item into a Ext date-picker, which just happens to be associated with a date field in the database.&lt;br /&gt;
&lt;br /&gt;
To make it easy to identify which input items to convert we assign a class of "date-picker" to the item. The code to do the conversion is shown in my demo.&lt;br /&gt;
&lt;br /&gt;
The only other thing to worry about is making sure the date format of the input item matches the database date format.&lt;br /&gt;
&lt;br /&gt;
Everything else you want to know can be learnt by reading the documentation.&lt;br /&gt;
&lt;/blockquote&gt;
Here are the steps:&lt;br /&gt;
&lt;br /&gt;
&lt;span style="font-weight: bold;"&gt;1. Set the database date format in Apex&lt;/span&gt;&lt;br /&gt;
Lets use a mask of DD-Mon-YYYY as there's no confusion internationally.&lt;br /&gt;
In Apex 3.1 do this directly in Home&amp;gt;Application Builder&amp;gt;Application 200801&amp;gt;Shared Components&amp;gt;Edit Globalization Attributes.&lt;br /&gt;
In earlier versions, you need to create application processes for "On Load Before Header" and "On Submit After Page Submission - Before Computations and Validations" with the following code&lt;br /&gt;
&lt;span style="color: #cc9933;"&gt;execute immediate 'alter session set nls_date_format=''DD-Mon-YYYY''';&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style="font-weight: bold;"&gt;2. Create the date item&lt;/span&gt;&lt;br /&gt;
In Apex create a form on a table containing dates.&lt;br /&gt;
Make sure the item type of the date field to display as "Text Field" and not "Date Picker".&lt;br /&gt;
Finally add class="date-picker" in the Form Elements Attributes.&lt;br /&gt;
&lt;br /&gt;
&lt;span style="font-weight: bold;"&gt;3. Add the javascript&lt;/span&gt;&lt;br /&gt;
Include the Ext javascript files in your page template, cut and paste the javascript code from the &lt;a href="http://apex.oracle.com/pls/otn/f?p=200801:2004:"&gt;demo&lt;/a&gt; into your page or page template.&lt;br /&gt;
&lt;br /&gt;
If you run that it all works beautifully.&lt;br /&gt;
You'll notice the code allows for alternative data entry format masks e.g "dd/mm/yyyy" and partial formats e.g. "dd/mm".&lt;br /&gt;
Thats because the alternate formats are easier for keyboard operators.&lt;br /&gt;
See ExtJS documentation on &lt;a href="http://extjs.com/deploy/dev/docs/output/Date.html"&gt;date formats&lt;/a&gt; available.&lt;br /&gt;
&lt;br /&gt;
&lt;span style="font-weight: bold;"&gt;4. Optional step&lt;/span&gt;&lt;br /&gt;
You may have noticed on my demo I use "DD-MON-YYYY", not "DD-Mon-YYYY" as shown in this blog.&lt;br /&gt;
To achieve this I set the database format easily enough, but then had to override the default Ext date names with the following line of javascript in my application javascript file:&lt;br /&gt;
&lt;span style="color: #999900;"&gt;Date.monthNames =["JANUARY","FEBRUARY","MARCH","APRIL","MAY","JUNE","JULY","AUGUST","SEPTEMBER","OCTOBER","NOVEMBER","DECEMBER"];&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
This is the Ext way on internationalizing dates, so it's not a hack.&lt;br /&gt;
What it does is force the javascript date format "d-M-Y" to return the month in uppercase.&lt;br /&gt;
&lt;br /&gt;
Anyway hope this helps.&lt;br /&gt;
&lt;br /&gt;
Mark
&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/869579236085438805-3888651778715305805?l=oracleinsights.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oracleinsights.blogspot.com/feeds/3888651778715305805/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=869579236085438805&amp;postID=3888651778715305805' title='12 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/869579236085438805/posts/default/3888651778715305805'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/869579236085438805/posts/default/3888651778715305805'/><link rel='alternate' type='text/html' href='http://oracleinsights.blogspot.com/2008/03/implementing-ext-dates-in-oracle-apex.html' title='Implementing Ext Dates in Oracle Apex'/><author><name>Mark Lancaster</name><uri>http://www.blogger.com/profile/06316329564169609358</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>12</thr:total></entry><entry><id>tag:blogger.com,1999:blog-869579236085438805.post-710724109687322856</id><published>2008-02-19T15:24:00.000-08:00</published><updated>2008-02-19T16:35:58.638-08:00</updated><title type='text'>Moving the Developer toolbar with ExtJS</title><content type='html'>Received and email on my blog, asking how to move the developer toolbar into the "south" region of a typical ExtJS layout.

This is one of those annoyances developers see, but the end users don't.
For a screenshot see my post from last year &lt;a href="http://oracleinsights.blogspot.com/2007/06/issue-with-apex-htmldbtoolbar.html"&gt;here&lt;/a&gt;.

The solution is very short:

In your page template include a div tag with an id, this is where you want the toolbar to end up.
e.g. &lt;span style="color: rgb(153, 153, 0);"&gt;&lt;span style="font-size:85%;"&gt;&amp;lt;div id="DeveloperToolbar"&amp;gt;&amp;lt;/div&amp;gt;&lt;/span&gt;

&lt;span style="color: rgb(0, 0, 0);"&gt;Add the following code into your application javascript:

&lt;pre&gt;&lt;code style="font-family:Courier; font-size:85%;"&gt;
Ext.app.moveDeveloperToolbar = function() {
  var dest = Ext.get('DeveloperToolbar');
  if (dest) {
      var els=Ext.select("table[summary='Developer Toolbar']",false);
      els.each(function(el){
          el.replace(dest);
      })
  }
}


Ext.onReady(function() {
    /** any other stuff you want to include */   
    Ext.app.moveDeveloperToolbar();
});
&lt;/code&gt;
&lt;/pre&gt;
The code checks the div tag exists, and then searches for a table with a summary property of "Developer Toolbar". For each instance it finds (there is only ever one), it moves it to the destination position.

ExtJS has a powerful DomQuery component, well worth learning. See the &lt;a href="http://extjs.com/learn/Tutorial:DomQuery_v1.1_Basics"&gt;DomQuery&lt;/a&gt; tutorial for further examples.

Mark
&lt;/span&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/869579236085438805-710724109687322856?l=oracleinsights.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oracleinsights.blogspot.com/feeds/710724109687322856/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=869579236085438805&amp;postID=710724109687322856' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/869579236085438805/posts/default/710724109687322856'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/869579236085438805/posts/default/710724109687322856'/><link rel='alternate' type='text/html' href='http://oracleinsights.blogspot.com/2008/02/moving-developer-toolbar-with-extjs.html' title='Moving the Developer toolbar with ExtJS'/><author><name>Mark Lancaster</name><uri>http://www.blogger.com/profile/06316329564169609358</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-869579236085438805.post-7158737456641902970</id><published>2008-02-13T06:09:00.001-08:00</published><updated>2008-02-13T14:57:59.967-08:00</updated><title type='text'>ExtJS Ajax Search field</title><content type='html'>Here is a screenshot of an AJAX search field running in Apex.
Putting an example up on the Oracle Apex demo site may not be possible, as I call a PL/SQL package directly.
&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp1.blogger.com/_uLhotpDLaq0/R7L6HYVoOUI/AAAAAAAAABk/ujIuhHfm5Po/s1600-h/ScreenShot005.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp1.blogger.com/_uLhotpDLaq0/R7L6HYVoOUI/AAAAAAAAABk/ujIuhHfm5Po/s320/ScreenShot005.png" alt="" id="BLOGGER_PHOTO_ID_5166466727246575938" border="0" /&gt;&lt;/a&gt;It's based on the ExtJS &lt;a href="http://extjs.com/deploy/dev/examples/form/forum-search.html"&gt;live search sample&lt;/a&gt;.
We were running it with Ext version 1.1, but had issues with paging. By default it uses "start" and "limit" as parameters - both reserved words with PL/SQL.
If you search the Ext forums, you'll find a solution for Ext 2.0 - just search for mark.lancaster.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/869579236085438805-7158737456641902970?l=oracleinsights.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oracleinsights.blogspot.com/feeds/7158737456641902970/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=869579236085438805&amp;postID=7158737456641902970' title='9 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/869579236085438805/posts/default/7158737456641902970'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/869579236085438805/posts/default/7158737456641902970'/><link rel='alternate' type='text/html' href='http://oracleinsights.blogspot.com/2008/02/here-is-screenshot-of-ajax-search-field.html' title='ExtJS Ajax Search field'/><author><name>Mark Lancaster</name><uri>http://www.blogger.com/profile/06316329564169609358</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp1.blogger.com/_uLhotpDLaq0/R7L6HYVoOUI/AAAAAAAAABk/ujIuhHfm5Po/s72-c/ScreenShot005.png' height='72' width='72'/><thr:total>9</thr:total></entry><entry><id>tag:blogger.com,1999:blog-869579236085438805.post-389185610074724851</id><published>2008-02-13T05:47:00.000-08:00</published><updated>2008-02-13T05:51:12.469-08:00</updated><title type='text'>Ext JS extension like Forms LOV</title><content type='html'>Just noticed on the ExtJS &lt;a href="http://extjs.com/forum/index.php"&gt;forums&lt;/a&gt; that someone has built an extension that behaves like an Oracle Forms LOV.

Here is the &lt;a href="http://extjs.com/forum/showthread.php?t=26146"&gt;post&lt;/a&gt; and a &lt;a href="http://madrabaz.com/ext/ux/LovField/demo/"&gt;demo&lt;/a&gt;.

Old forms programmers never die :)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/869579236085438805-389185610074724851?l=oracleinsights.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oracleinsights.blogspot.com/feeds/389185610074724851/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=869579236085438805&amp;postID=389185610074724851' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/869579236085438805/posts/default/389185610074724851'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/869579236085438805/posts/default/389185610074724851'/><link rel='alternate' type='text/html' href='http://oracleinsights.blogspot.com/2008/02/ext-js-extension-like-forms-lov.html' title='Ext JS extension like Forms LOV'/><author><name>Mark Lancaster</name><uri>http://www.blogger.com/profile/06316329564169609358</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-869579236085438805.post-7968031303441195629</id><published>2008-02-12T04:41:00.000-08:00</published><updated>2009-12-13T04:27:47.441-08:00</updated><title type='text'>Building a complete Oracle Apex page template using ExtJS</title><content type='html'>Following on from my earlier post on &lt;a href="http://oracleinsights.blogspot.com/2008/02/integrating-ext-javascript-library-into.html"&gt;integrating ExtJS&lt;/a&gt; we will now build a complete page template.&lt;br /&gt;
This template will contain:&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;a "north" region containing a logo, title, navigation bar and show current user&lt;/li&gt;
&lt;li&gt;a "west" region containing 2 sub-regions navigation and settings&lt;/li&gt;
&lt;li&gt;a "center" region containing dynamic page content&lt;/li&gt;
&lt;li&gt;a "south" region for footer elements, e.g. copyright notices, links etc.&lt;/li&gt;
&lt;/ul&gt;
When prototyping its often easier to build using static html pages, and then load it into Oracle Apex.&lt;br /&gt;
&lt;br /&gt;
Create a sub-directory in the /ext-2.0.1/examples/ directory. I've called mine "playpen", but it really doesn't matter.&lt;br /&gt;
&lt;br /&gt;
Save the following text as a html file into the directory, e.g. "apex layout.html".&lt;br /&gt;
&lt;br /&gt;
&lt;pre class="brush: xml"&gt;&amp;lt;html lang="&amp;amp;BROWSER_LANGUAGE."&amp;gt;
&amp;lt;head&amp;gt;
 &amp;lt;title&amp;gt;#TITLE#&amp;lt;/title&amp;gt;
 &amp;lt;!-- standard stylesheets --&amp;gt;
 &amp;lt;link rel="stylesheet" type="text/css" href="../../resources/css/ext-all.css" /&amp;gt;

 &amp;lt;!-- this style forces form to fit screen height --&amp;gt;
 &amp;lt;style type="text/css"&amp;gt;
   #wwvFlowForm {width:100%; height:100%;}
 &amp;lt;/style&amp;gt;

 &amp;lt;!-- Ext scripts --&amp;gt;
 &amp;lt;script type="text/javascript" src="../../adapter/ext/ext-base.js"&amp;gt;&amp;lt;/script&amp;gt;
 &amp;lt;script type="text/javascript" src="../../ext-all.js"&amp;gt;&amp;lt;/script&amp;gt;

 &amp;lt;!-- application configuration --&amp;gt;
 &amp;lt;!-- eventually move "application" script to an external file --&amp;gt;
 &amp;lt;script type="text/javascript"&amp;gt;
   Ext.onReady(function(){

      Ext.state.Manager.setProvider(new Ext.state.CookieProvider());

      var myForm = new Ext.Panel({
        applyTo:'wwvFlowForm',
        layout:'border',
           items:[
               new Ext.BoxComponent({ // raw
                   region:'north',
                   el: 'north',
                   height:45
               }),
               new Ext.BoxComponent({ // raw
                   region:'south',
                   el: 'south',
                   height:32
               }),
              {
               region:'west',
               id:'west-panel',
               title:'West',
               split:true,
               width: 200,
               minSize: 175,
               maxSize: 400,
               collapsible: true,
               layout:'accordion',
               layoutConfig:{
                   animate:true
               },
               items: [{
                   contentEl: 'region_position_02',
                   title:'Navigation',
                   autoScroll:true,
                   border:false
               },{
                   contentEl: 'region_position_03',
                   title:'Settings',
                   autoScroll:true,
                   border:false
               }]
           },{
               region:'center',
               contentEl:'pageContent',
               layout:'column',
               autoScroll:true
           }]
       });

   myForm.doLayout();
   });
 &amp;lt;/script&amp;gt;
&amp;lt;/head&amp;gt;
&amp;lt;body&amp;gt;
&amp;lt;form id="wwvFlowForm"&amp;gt;

&amp;lt;!-- -------------------------------------BODY SECTION start------------------------------------- --&amp;gt;
  &amp;lt;div id="north"&amp;gt;
    &amp;lt;table cellpadding="0" cellspacing="0" border="0" width="100%" height="45px"&amp;gt;
      &amp;lt;tr&amp;gt;
        &amp;lt;td valign="top"&amp;gt;#LOGO#&amp;lt;/td&amp;gt;
        &amp;lt;td align="center"&amp;gt;&amp;lt;span style="{  }"&amp;gt;Integrating ExtJS javascript library with Oracle Application Express&amp;lt;/span&amp;gt;&amp;lt;/td&amp;gt;
        &amp;lt;td width="300px" align="right" border="0" style="padding-right:5px"&amp;gt;
          &amp;lt;div style="height:20px"&amp;gt;&amp;amp;USER.&amp;lt;/div&amp;gt;
          &amp;lt;div id="navigation_bar"&amp;gt;#NAVIGATION_BAR#&amp;lt;/div&amp;gt;
        &amp;lt;/td&amp;gt;
      &amp;lt;/tr&amp;gt;
    &amp;lt;/table&amp;gt;
  &amp;lt;/div&amp;gt;

  &amp;lt;div id="west"&amp;gt;&amp;lt;/div&amp;gt;

  &amp;lt;div id="region_position_02"&amp;gt;#REGION_POSITION_02#&amp;lt;/div&amp;gt;
  &amp;lt;div id="region_position_03"&amp;gt;#REGION_POSITION_03#&amp;lt;/div&amp;gt;

  &amp;lt;div id="pageContent"&amp;gt;
    &amp;lt;div id="region_position_01"&amp;gt;#REGION_POSITION_01#&amp;lt;/div&amp;gt;
    &amp;lt;div id="messages" align="center"&amp;gt;#GLOBAL_NOTIFICATION##NOTIFICATION_MESSAGE##SUCCESS_MESSAGE#&amp;lt;/div&amp;gt;
    &amp;lt;div id="region_box_body"&amp;gt;#BOX_BODY#&amp;lt;/div&amp;gt;
    &amp;lt;div id="region_position_04"&amp;gt;#REGION_POSITION_04#&amp;lt;/div&amp;gt;
    &amp;lt;div id="region_position_05"&amp;gt;#REGION_POSITION_05#&amp;lt;/div&amp;gt;
    &amp;lt;div id="region_position_06"&amp;gt;#REGION_POSITION_06#&amp;lt;/div&amp;gt;
    &amp;lt;div id="region_position_07"&amp;gt;#REGION_POSITION_07#&amp;lt;/div&amp;gt;
    &amp;lt;div id="customize"&amp;gt;#CUSTOMIZE#&amp;lt;/div&amp;gt;
    &amp;lt;div id="region_position_08"&amp;gt;#REGION_POSITION_08#&amp;lt;/div&amp;gt;
  &amp;lt;/div&amp;gt;
&amp;lt;!-- -------------------------------------BODY SECTION end------------------------------------- --&amp;gt;

&amp;lt;/form&amp;gt;

  &amp;lt;div id="south"&amp;gt;Some footer content here&amp;lt;/div&amp;gt;
&amp;lt;/body&amp;gt;
&amp;lt;/html&amp;gt;

&lt;/pre&gt;
&lt;br /&gt;
Open it in your browser and you should see something like this:&lt;br /&gt;
&lt;br /&gt;
&lt;a href="http://bp0.blogger.com/_uLhotpDLaq0/R7Gf3YVoOTI/AAAAAAAAABc/J7mnycPh7C0/s1600-h/ScreenShot004.png" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5166086021345458482" src="http://bp0.blogger.com/_uLhotpDLaq0/R7Gf3YVoOTI/AAAAAAAAABc/J7mnycPh7C0/s320/ScreenShot004.png" style="display: block; margin: 0px auto 10px; text-align: center;" /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
Note the "West" panel expands and collapses and is resizable, and the navigation panel is also functional. Resize the width of the West panel, then refresh the page.&lt;br /&gt;
&lt;br /&gt;
Did you notice it kept the new width?&lt;br /&gt;
&lt;br /&gt;
This is all managed by a single line of code:&lt;br /&gt;
&lt;br /&gt;
Ext.state.Manager.setProvider(new Ext.state.CookieProvider());&lt;br /&gt;
&lt;br /&gt;
The panels that make up the page are stateful and remember position, provided a cookie has been registered. Users typically don't even notice unless you point it out to them.&lt;br /&gt;
&lt;br /&gt;
Spend a bit of time looking at the script used to build the layout, consult the ExtJS doco etc.&lt;br /&gt;
&lt;br /&gt;
OK, to make this an Oracle Apex template do the following:&lt;br /&gt;
&lt;br /&gt;
Do a search and replace:&lt;br /&gt;
&lt;br /&gt;
&lt;form id="wwvFlowForm"&gt;
&lt;br /&gt;
&amp;lt;form id="wwvFlowForm"&amp;gt; becomes #FORM_OPEN#&lt;br /&gt;
&lt;br /&gt;
&lt;/form&gt;
&lt;br /&gt;
&amp;lt;/form&amp;gt; becomes #FORM_CLOSE#&lt;br /&gt;
&lt;br /&gt;
Adjust the path of the javascript and css file links, so if you followed my previous post:&lt;br /&gt;
../../becomes /i/themes/ext-2.0.1/&lt;br /&gt;
&lt;br /&gt;
Copy and paste the content into a page template using header, body and footer regions.&lt;br /&gt;
The html already contains comments identifying where to cut.&lt;br /&gt;
&lt;br /&gt;
Whip up a quick page to test it out, and barring any mistakes it should work just like the static version.&lt;br /&gt;
&lt;br /&gt;
Enjoy.&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/869579236085438805-7968031303441195629?l=oracleinsights.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oracleinsights.blogspot.com/feeds/7968031303441195629/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=869579236085438805&amp;postID=7968031303441195629' title='11 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/869579236085438805/posts/default/7968031303441195629'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/869579236085438805/posts/default/7968031303441195629'/><link rel='alternate' type='text/html' href='http://oracleinsights.blogspot.com/2008/02/building-complete-oracle-apex-page.html' title='Building a complete Oracle Apex page template using ExtJS'/><author><name>Mark Lancaster</name><uri>http://www.blogger.com/profile/06316329564169609358</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp0.blogger.com/_uLhotpDLaq0/R7Gf3YVoOTI/AAAAAAAAABc/J7mnycPh7C0/s72-c/ScreenShot004.png' height='72' width='72'/><thr:total>11</thr:total></entry><entry><id>tag:blogger.com,1999:blog-869579236085438805.post-2159963485784120064</id><published>2008-02-05T05:52:00.000-08:00</published><updated>2008-02-10T04:38:40.789-08:00</updated><title type='text'>Integrating Ext javascript library into Oracle Application Express</title><content type='html'>&lt;pre&gt;
So hopefully by now you’ve been to the website &lt;a href="http://extjs.com"&gt;http://extjs.com&lt;/a&gt; and had a look at samples &lt;a href="http://extjs.com/deploy/dev/examples"&gt;http://extjs.com/deploy/dev/examples&lt;/a&gt; and are ready to get your hands dirty.

The first step is to download the latest version from &lt;a href="http://extjs.com/download"&gt;http://extjs.com/download&lt;/a&gt; and load it onto your http server 
(version 2.0.1 at the time of writing).
For Oracle Apex this can be either:
- Embedded PL/SQL gateway
- Oracle HTTP Server and mod_plsql.

For this article I have loading the complete set of unzipped files to a new folder in the 
apex/images/themes directory:
- http server - ORACLE_BASE/ORACLE_HOME/Apache/Apache/images/themes/ext-2.0.1/
- embedded PL/SQL gateway - /i/themes/ext-2.0.1/

Note: FTP access when using the embedded PL/SQL gateway is enabled as follows:

Open SQL*Plus and connect as SYSTEM

&lt;div style="color: rgb(102, 102, 102);"&gt;
SQL&amp;gt; exec dbms_xdb.setftpport('21');

PL/SQL procedure successfully completed.

SQL&amp;gt; alter system register;

System altered.  
&lt;/div&gt;

If you have any issues do an internet search for "dbms_xdb.setftpport", there are numerous posts on the topic.

Once the files are uploaded you can verify using the following urls:
http://hostname:port/i/themes/ext-2.0.1/docs/index.html
http://hostname:port/i/themes/ext-2.0.1/examples/index.html

 
Using Ext with Oracle Apex
The first step to using Ext with Oracle Apex is to reference the javascript libraries and CSS stylesheets in
your page templates.

Start Apex Builder and navigate to a page template:

Home&amp;gt; Application Builder&amp;gt; Application 101&amp;gt; Shared Components&amp;gt; Templates&amp;gt; Edit Page Template

A minimal header definition would look like this:
&lt;div style="color: rgb(102, 102, 102);"&gt;
&amp;lt;html lang="&amp;BROWSER_LANGUAGE."&amp;gt;
&amp;lt;head&amp;gt;
  &amp;lt;title&amp;gt;#TITLE#&amp;lt;/title&amp;gt;

  #HEAD#
  &amp;lt;!-- standard stylesheets --&amp;gt;
  &amp;lt;link rel="stylesheet" type="text/css" href="/i/themes/ext-2.0.1/resources/css/ext-all.css" /&amp;gt;
&amp;lt;/head&amp;gt;
&amp;lt;body #ONLOAD#&amp;gt;
  &amp;lt;!-- Ext scripts --&amp;gt;
  &amp;lt;script type="text/javascript" src="/i/themes/ext-2.0.1/adapter/ext/ext-base.js"&amp;gt;&amp;lt;/script&amp;gt;
  &amp;lt;script type="text/javascript" src="/i/themes/ext-2.0.1/ext-all.js"&amp;gt;&amp;lt;/script&amp;gt;

  &amp;lt;!-- application configuration --&amp;gt;
  &amp;lt;!-- add your custom scripts references here --&amp;gt;
  
  #FORM_OPEN#
&lt;/div&gt;

This gives us access to the entire Ext library functionality. 
Depending on how much Ext functionality your web-site eventually uses you may want to consider only 
including a subset of the library. I’ll write more on this in a later article.

If your using a standard theme that comes with Oracle Apex, you will probably want to keep existing 
javascripts and CSS stylesheets in your definition initially.
 
Let’s build something
The first example I want to demonstrate is resizable text areas.
A demo is available at &lt;a href="http://apex.oracle.com/pls/otn/f?p=200801:2001:0"&gt;http://apex.oracle.com/pls/otn/f?p=200801:2001:0
&lt;/a&gt;
&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp3.blogger.com/_uLhotpDLaq0/R6hxuqr_5lI/AAAAAAAAABU/l1wmr7Fbi34/s1600-h/ScreenShot003.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;" src="http://bp3.blogger.com/_uLhotpDLaq0/R6hxuqr_5lI/AAAAAAAAABU/l1wmr7Fbi34/s400/ScreenShot003.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5163502019327026770" /&gt;&lt;/a&gt;
 

Add the following code into your page template, or directly into a page containing one or more text areas.

&lt;div style="color: rgb(102, 102, 102);"&gt;
&amp;lt;script type="text/javascript"&amp;gt;
// convert html textareas into resizable textareas
function makeResizable(){
  var els=Ext.select("textarea",true);
  els.each(function(el){
    var dwrapped = new Ext.Resizable(el, {
        wrap:true,
        pinned:true,
        //handles:'s',
        width:el.getWidth(),
        height:el.getHeight(),
        minWidth:el.getWidth(),
        minHeight: el.getHeight()
    });
  })
}
    
Ext.onReady(function() {
  makeResizable();
});
&amp;lt;/script&amp;gt;
&lt;/div&gt;

What this script does search the html document object model (dom) for html textarea elements. 
Html textarea elements are converted to an Ext resizable component, with grab handles pinned (visible). 
The minimum height and width are constrained to the original dimensions.

Uncomment the //handles:'s' line to vertically resize only.

You can read more about the api on your website if you used my instructions at 
http://hostname:port/i/themes/ext-2.0.1/docs/output/Ext.Resizable.html,
or on the Ext website at &lt;a href="http://extjs.com/deploy/dev/docs/index.html"&gt;http://extjs.com/deploy/dev/docs/index.html&lt;/a&gt;.
&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/869579236085438805-2159963485784120064?l=oracleinsights.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oracleinsights.blogspot.com/feeds/2159963485784120064/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=869579236085438805&amp;postID=2159963485784120064' title='12 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/869579236085438805/posts/default/2159963485784120064'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/869579236085438805/posts/default/2159963485784120064'/><link rel='alternate' type='text/html' href='http://oracleinsights.blogspot.com/2008/02/integrating-ext-javascript-library-into.html' title='Integrating Ext javascript library into Oracle Application Express'/><author><name>Mark Lancaster</name><uri>http://www.blogger.com/profile/06316329564169609358</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp3.blogger.com/_uLhotpDLaq0/R6hxuqr_5lI/AAAAAAAAABU/l1wmr7Fbi34/s72-c/ScreenShot003.png' height='72' width='72'/><thr:total>12</thr:total></entry><entry><id>tag:blogger.com,1999:blog-869579236085438805.post-8967321643699674791</id><published>2008-01-29T03:45:00.000-08:00</published><updated>2009-12-13T04:32:20.791-08:00</updated><title type='text'>Demo website: ExtJS with Oracle Apex</title><content type='html'>I like new year resolutions - it gives me an opportunity to set some personal targets for the year.&lt;br /&gt;
&lt;br /&gt;
This year I've decided to put together a website demoing ExtJS and Oracle Apex.&lt;br /&gt;
My initial goal was to have it up and running by the end of January.&lt;br /&gt;
&lt;br /&gt;
The downside of new years resolutions is trying to keep them, but for once I've managed.&lt;br /&gt;
My website is up for all to see at &lt;a href="http://apex.oracle.com/pls/otn/f?p=200801"&gt;&lt;span style="text-decoration: underline;"&gt;http://apex.oracle.com/pls/otn/f?p=200801&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
Admittedly it's not as complete as I'd hoped, but it's a good start.&lt;br /&gt;
Over the next few months I'll be blogging about how I've implemented features and anything else that strikes me as worth writing about.&lt;br /&gt;
&lt;br /&gt;
For now, here's a screenshot, and an invitation to poke around the website.&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://3.bp.blogspot.com/_uLhotpDLaq0/SyTevYgLXOI/AAAAAAAAAII/wdaHMkpsp5k/s1600-h/ScreenShot001.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/_uLhotpDLaq0/SyTevYgLXOI/AAAAAAAAAII/wdaHMkpsp5k/s640/ScreenShot001.png" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;
&lt;br /&gt;


Mark&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/869579236085438805-8967321643699674791?l=oracleinsights.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oracleinsights.blogspot.com/feeds/8967321643699674791/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=869579236085438805&amp;postID=8967321643699674791' title='11 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/869579236085438805/posts/default/8967321643699674791'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/869579236085438805/posts/default/8967321643699674791'/><link rel='alternate' type='text/html' href='http://oracleinsights.blogspot.com/2008/01/demo-website-extjs-with-oracle-apex.html' title='Demo website: ExtJS with Oracle Apex'/><author><name>Mark Lancaster</name><uri>http://www.blogger.com/profile/06316329564169609358</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_uLhotpDLaq0/SyTevYgLXOI/AAAAAAAAAII/wdaHMkpsp5k/s72-c/ScreenShot001.png' height='72' width='72'/><thr:total>11</thr:total></entry><entry><id>tag:blogger.com,1999:blog-869579236085438805.post-8394634866431039844</id><published>2007-12-11T16:51:00.000-08:00</published><updated>2009-12-13T04:34:30.129-08:00</updated><title type='text'>Apex Enhancement Request Included</title><content type='html'>Got a real buzz today when I saw my feedback on Apex 3.1 beta made it into the product as an enhancement.&lt;br /&gt;
&lt;img alt="" border="0" height="185" id="BLOGGER_PHOTO_ID_5142883872441276850" src="http://bp1.blogger.com/_uLhotpDLaq0/R18xokHymbI/AAAAAAAAAA0/Now45Px-95k/s320/ScreenShot001.png" style="display: block; margin: 0px auto 10px; text-align: center;" width="403" /&gt;&lt;br /&gt;
&lt;br /&gt;
Here's the original feedback:&lt;br /&gt;
&lt;pre&gt;&lt;span style="font-family: courier new;"&gt;Hi Guys

Got the following error:


ORA-20001: get_report error ORA-20001: get_dbms_sql_cursor error
ORA-01445: cannot select ROWID from, or sample, a join view without a key-preserved table
l_query=
select rowid as apxws_row_pk, TABLE_NAME, COLUMN_NAME , count(*) over () apxws_row_cnt

from ( select * from (select table_name, column_name from user_tab_columns) r ) r

where rownum &amp;lt;= to_number(:APXWS_MAX_ROW_CNT) order by rowid


Obviously it's currently looking for rowid, which seems an unnecessary restriction.

You may want rowid for full CRUD functionality, but often you only want read functionality.

And anyway couldn't you get the developer to nominate a single column as the primary key in the report attributes?

Why not replace your current query wrapper with something like this:

select apxws_row_pk, TABLE_NAME, COLUMN_NAME , count(*) over () apxws_row_cnt
from ( select rownum apxws_row_pk, r.* from (select table_name, column_name from user_tab_columns) r ) r
where rownum &amp;lt;= to_number(:APXWS_MAX_ROW_CNT) order by apxws_row_pk

Apart from that, all the additional functionality of interactive reports looks great.

I'll be upgrading and converting by reports as soon as possible.

Regards

Mark



&lt;b&gt;Response&lt;/b&gt;

Mark,

Your suggestion has been logged as an enhancement request.

Regards,

David
&lt;/span&gt;
&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/869579236085438805-8394634866431039844?l=oracleinsights.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oracleinsights.blogspot.com/feeds/8394634866431039844/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=869579236085438805&amp;postID=8394634866431039844' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/869579236085438805/posts/default/8394634866431039844'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/869579236085438805/posts/default/8394634866431039844'/><link rel='alternate' type='text/html' href='http://oracleinsights.blogspot.com/2007/12/apex-enhancement-request-included.html' title='Apex Enhancement Request Included'/><author><name>Mark Lancaster</name><uri>http://www.blogger.com/profile/06316329564169609358</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp1.blogger.com/_uLhotpDLaq0/R18xokHymbI/AAAAAAAAAA0/Now45Px-95k/s72-c/ScreenShot001.png' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-869579236085438805.post-7577086405086165939</id><published>2007-07-12T20:15:00.000-07:00</published><updated>2009-12-13T04:35:50.129-08:00</updated><title type='text'>Apex: Table and column name limits</title><content type='html'>I've been reviewing table and column name limits for Oracle Apex to come up with some internal standards.&lt;br /&gt;
&lt;br /&gt;
Oracle supports 30 characters for object names, be it table, column, constraint, trigger, ... whatever.&lt;br /&gt;
&lt;br /&gt;
Historically Oracle Designer used to add suffixes of 4 characters, and some of the built-in packages do also, e.g. for materialized view logs.&lt;br /&gt;
&lt;br /&gt;
So generally 26 characters or less for object names is a good idea.&lt;br /&gt;
&lt;br /&gt;
Oracle Apex prepends form items with a page reference e.g. P100_column_name.&lt;br /&gt;
Since it's easy to envisage an application having over a 100 pages,  a limit of 25 characters should be imposed.&lt;br /&gt;
&lt;br /&gt;
Importantly, you need to be aware that for PK columns, Apex imposes a limit of 22 characters for tabular forms.&lt;br /&gt;
See &lt;a href="http://iadvise.blogspot.com/2006/12/apex-caveat-pk-column-name-length-it.html"&gt;http://iadvise.blogspot.com/2006/12/apex-caveat-pk-column-name-length-it.html&lt;/a&gt; for details.&lt;br /&gt;
&lt;br /&gt;
So in summing up the limits:&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;table names 26 characters or less&lt;/li&gt;
&lt;li&gt;views, packages etc. can use 30 but try and stick to 26 characters or less&lt;/li&gt;
&lt;li&gt;column names generally 25 characters or less&lt;/li&gt;
&lt;li&gt;primary key column names 22 characters or less.&lt;/li&gt;
&lt;/ul&gt;
Naming conventions - well thats up to you!&lt;br /&gt;
&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/869579236085438805-7577086405086165939?l=oracleinsights.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oracleinsights.blogspot.com/feeds/7577086405086165939/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=869579236085438805&amp;postID=7577086405086165939' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/869579236085438805/posts/default/7577086405086165939'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/869579236085438805/posts/default/7577086405086165939'/><link rel='alternate' type='text/html' href='http://oracleinsights.blogspot.com/2007/07/apex-table-and-column-name-limits.html' title='Apex: Table and column name limits'/><author><name>Mark Lancaster</name><uri>http://www.blogger.com/profile/06316329564169609358</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-869579236085438805.post-1849583615826785193</id><published>2007-06-18T23:25:00.000-07:00</published><updated>2007-06-18T23:37:18.476-07:00</updated><title type='text'>Issue with APEX htmldbToolbar</title><content type='html'>&lt;div&gt;&lt;span style="font-size:85%;"&gt;I'd love the APEX team to wrap the htmldbToolbar in a DIV tag, this would be more convienient for repositioning it when in development mode.
Our application sizes its vertical height to 100%, which results in a scroll bar when we are developing. Also we have to create a DIV tag, rather than referencing the document.body.
It's a small change, and would be greatly appreciated.&lt;/span&gt;&lt;/div&gt;

&lt;div&gt;&lt;span style="font-size:85%;"&gt;&lt;/span&gt;&lt;/div&gt;

&lt;div&gt;&lt;span style="font-size:85%;"&gt;See the image below for an example of what I mean.&lt;/span&gt;&lt;/div&gt;

&lt;div&gt;&lt;a href="http://bp2.blogger.com/_uLhotpDLaq0/Rnd4wJo1e-I/AAAAAAAAAAM/qp8znapd2-I/s1600-h/screenshot.png"&gt;&lt;img id="BLOGGER_PHOTO_ID_5077659873499773922" style="CURSOR: hand" alt="" src="http://bp2.blogger.com/_uLhotpDLaq0/Rnd4wJo1e-I/AAAAAAAAAAM/qp8znapd2-I/s400/screenshot.png" border="0" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/869579236085438805-1849583615826785193?l=oracleinsights.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oracleinsights.blogspot.com/feeds/1849583615826785193/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=869579236085438805&amp;postID=1849583615826785193' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/869579236085438805/posts/default/1849583615826785193'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/869579236085438805/posts/default/1849583615826785193'/><link rel='alternate' type='text/html' href='http://oracleinsights.blogspot.com/2007/06/issue-with-apex-htmldbtoolbar.html' title='Issue with APEX htmldbToolbar'/><author><name>Mark Lancaster</name><uri>http://www.blogger.com/profile/06316329564169609358</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp2.blogger.com/_uLhotpDLaq0/Rnd4wJo1e-I/AAAAAAAAAAM/qp8znapd2-I/s72-c/screenshot.png' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-869579236085438805.post-2340495464702078393</id><published>2007-03-26T03:45:00.000-07:00</published><updated>2007-03-26T03:47:19.422-07:00</updated><title type='text'>PDF output from Apex</title><content type='html'>Carl Backstrom has a very interesting blog on &lt;a href="http://carlback.blogspot.com/2007/03/apex-cocoon-pdf-and-more.html"&gt;APEX + Cocoon = PDF&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/869579236085438805-2340495464702078393?l=oracleinsights.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oracleinsights.blogspot.com/feeds/2340495464702078393/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=869579236085438805&amp;postID=2340495464702078393' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/869579236085438805/posts/default/2340495464702078393'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/869579236085438805/posts/default/2340495464702078393'/><link rel='alternate' type='text/html' href='http://oracleinsights.blogspot.com/2007/03/pdf-output-from-apex.html' title='PDF output from Apex'/><author><name>Mark Lancaster</name><uri>http://www.blogger.com/profile/06316329564169609358</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-869579236085438805.post-963158837634968026</id><published>2007-03-23T19:40:00.000-07:00</published><updated>2007-05-01T04:46:07.595-07:00</updated><title type='text'>Upgrading Oracle XE to Apex 3.0</title><content type='html'>&lt;p&gt;Upgrading Oracle XE to Apex 3.0 has a couple of tricks to it, so here's how.&lt;/p&gt;&lt;ol&gt;&lt;li&gt;Download the &lt;a href="http://www.oracle.com/technology/products/database/application_express/download.html"&gt;software&lt;/a&gt;, and unzip it. &lt;/li&gt;&lt;li&gt;Edit the ..\apex\coreins.sql script&lt;/li&gt;&lt;li&gt;Run the installation/upgrade as usual&lt;/li&gt;&lt;li&gt;Upload the images using the correct version of apex_epg_config.sql.&lt;/li&gt;&lt;li&gt;Upgrade the owa packages in the ..\apex\owa directory.
&lt;/li&gt;
&lt;/ol&gt;
&lt;h3&gt;Edit the ..\apex\coreins.sql script&lt;/h3&gt;On line 573 you need to set the XE variable to 1 for XE installation:
&lt;code&gt;Rem
Rem Set XE variable to '1' for XE installation, '0' for non-XE installation
Rem
define XE = '1'
&lt;/code&gt;
&lt;h3&gt;Run the installation/upgrade as usual&lt;/h3&gt;For a local install:
e.g. sqlplus "sys/syspass as sysdba" @apexins password SYSAUX SYSAUX TEMP /i/

&lt;h3&gt;Upload the images&lt;/h3&gt;XE uses the embedded PL/SQL gateway so you need to run the &lt;b&gt;apex_epg_config.sql&lt;/b&gt; script to upload images into the XDB repository.

Note: documentation references apex_epg_config11.sql - this is for Oracle 11g only!!!

Login to sqlplus as sys, and run the script passing the path to the apex directory you unzipped
e.g. sql&gt; @apex_epg_config.sql c:\temp

&lt;h3&gt;Update the owa packages&lt;/h3&gt;&lt;p&gt;See the ..\apex\owa\readme.txt for details.
&lt;/p&gt;&lt;p&gt;That's all there is to it.
The most important thing to remember is don't just read the documentation, read and understand the scripts as well.
It's easy to forget to document something, not that I've ever done that ... ;)&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/869579236085438805-963158837634968026?l=oracleinsights.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oracleinsights.blogspot.com/feeds/963158837634968026/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=869579236085438805&amp;postID=963158837634968026' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/869579236085438805/posts/default/963158837634968026'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/869579236085438805/posts/default/963158837634968026'/><link rel='alternate' type='text/html' href='http://oracleinsights.blogspot.com/2007/03/upgrading-oracle-xe-to-apex-3.html' title='Upgrading Oracle XE to Apex 3.0'/><author><name>Mark Lancaster</name><uri>http://www.blogger.com/profile/06316329564169609358</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry></feed>
