<?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:blogger='http://schemas.google.com/blogger/2008' 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-5215348251766414957</id><updated>2024-10-09T03:27:11.488-04:00</updated><category term="Mobile"/><category term="Blackberry"/><category term="HTML5"/><category term="Javascript"/><category term="Sencha Touch"/><category term="Adobe"/><category term="Forms"/><category term="Java"/><category term="LiveCycle"/><category term="PDF"/><category term="Refresh Browser"/><category term="grails metadata groovy"/><category term="iOS"/><category term="iPad"/><category term="iTunes"/><category term="ibm soap jaxws jax-ws websphere was java"/><title type='text'>Resilient Coder</title><subtitle type='html'>Resilient Coder is a blog that will contain tutorials, tips, tricks, and various tidbits that I discover in my coding (mis)fortunes. &#xa;&#xa;My primary focuses are Groovy, Grails, Google Web Toolkit (GWT), Javascript, and anything related.</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://resilientcoder.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5215348251766414957/posts/default?redirect=false'/><link rel='alternate' type='text/html' href='http://resilientcoder.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Stan B</name><uri>http://www.blogger.com/profile/11534458230420815599</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>7</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-5215348251766414957.post-1696614003088776505</id><published>2011-12-13T14:22:00.001-05:00</published><updated>2011-12-13T14:24:02.403-05:00</updated><title type='text'>Offtopic: Removed Ads</title><content type='html'>Just a note. I removed ads, if it bothered anyone before, sorry. I know some (maybe most) used an ad-blocker so it didn&#39;t really affect them.&lt;br /&gt;
&lt;br /&gt;
I have plans on migrating this blog to a nicer look soon, something more presentable. Details to come...&lt;br /&gt;
&lt;br /&gt;
On a second note: &lt;a href=&quot;http://www.sencha.com/products/touch/tour&quot;&gt;Sencha Touch Roadshow&lt;/a&gt; in NYC was great today. Great insight on some things and great to chat with some of the guys behind the framework.</content><link rel='replies' type='application/atom+xml' href='http://resilientcoder.blogspot.com/feeds/1696614003088776505/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://resilientcoder.blogspot.com/2011/12/offtopic-removed-ads.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5215348251766414957/posts/default/1696614003088776505'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5215348251766414957/posts/default/1696614003088776505'/><link rel='alternate' type='text/html' href='http://resilientcoder.blogspot.com/2011/12/offtopic-removed-ads.html' title='Offtopic: Removed Ads'/><author><name>Stan B</name><uri>http://www.blogger.com/profile/11534458230420815599</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5215348251766414957.post-6760003434958550168</id><published>2011-11-21T12:35:00.001-05:00</published><updated>2011-11-21T12:35:42.181-05:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="ibm soap jaxws jax-ws websphere was java"/><title type='text'>IBM JAX-WS JAXB Troubles and Work Around</title><content type='html'>So one of my recent projects involved sending some data to a SOAP service. Something I took to be trivial. It was until the requirement of MTOM bindings, SAML assertions and a huge schema came into play.&lt;br /&gt;
&lt;br /&gt;
IBM WebSphere 6.1 (WAS) doesn&#39;t support MTOM so we had to use WAS 8.&lt;br /&gt;
&lt;br /&gt;
Then I hit this wonderful error:&lt;br /&gt;
&lt;br /&gt;
Caused by: java.lang.ClassCastException:  oasis.names.tc.ebxml_regrep.xsd.rim._3.ExtrinsicObjectType incompatible with  javax.xml.bind.JAXBElement&lt;br /&gt;
&amp;nbsp;at  oasis.names.tc.ebxml_regrep.xsd.rim._3.RegistryObjectListType_JAXB_Serialization_Stub.write(oasis.names.tc.ebxml_regrep.xsd.rim._3.RegistryObjectListType_JAXB_Serialization_Stub.java)&lt;br /&gt;
&amp;nbsp;at  oasis.names.tc.ebxml_regrep.xsd.lcm._3.SubmitObjectsRequest_JAXB_Serialization_Stub.write(oasis.names.tc.ebxml_regrep.xsd.lcm._3.SubmitObjectsRequest_JAXB_Serialization_Stub.java)&lt;br /&gt;
&amp;nbsp;at  ihe.iti.xds_b._2007.ProvideAndRegisterDocumentSetRequestType_JAXB_Serialization_Stub.write(ihe.iti.xds_b._2007.ProvideAndRegisterDocumentSetRequestType_JAXB_Serialization_Stub.java)&lt;br /&gt;
&lt;br /&gt;
After a ticket with IBM I finally received the workaround after 3 weeks.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Set the following custom JVM property&lt;br /&gt;
com.ibm.xml.xlxp.jaxb.opti.level = 0&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
For those who do not know how to set custom properties:&lt;br /&gt;
&lt;a href=&quot;http://publib.boulder.ibm.com/infocenter/wasinfo/v8r0/index.jsp?topic=%2Fcom.ibm.websphere.nd.iseries.doc%2Finfo%2Fiseriesnd%2Fae%2Fxrun_jvm.html&quot; title=&quot;blocked::http://publib.boulder.ibm.com/infocenter/wasinfo/v8r0/index.jsp?topic=/com.ibm.websphere.nd.iseries.doc/info/iseriesnd/ae/xrun_jvm.html&quot;&gt;http://publib.boulder.ibm.com/infocenter/wasinfo/v8r0/index.jsp?topic=%2Fcom.ibm.websphere.nd.iseries.doc%2Finfo%2Fiseriesnd%2Fae%2Fxrun_jvm.html&lt;/a&gt;</content><link rel='replies' type='application/atom+xml' href='http://resilientcoder.blogspot.com/feeds/6760003434958550168/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://resilientcoder.blogspot.com/2011/11/ibm-jax-ws-jaxb-troubles-and-work.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5215348251766414957/posts/default/6760003434958550168'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5215348251766414957/posts/default/6760003434958550168'/><link rel='alternate' type='text/html' href='http://resilientcoder.blogspot.com/2011/11/ibm-jax-ws-jaxb-troubles-and-work.html' title='IBM JAX-WS JAXB Troubles and Work Around'/><author><name>Stan B</name><uri>http://www.blogger.com/profile/11534458230420815599</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5215348251766414957.post-5863917979608888160</id><published>2011-10-14T11:03:00.002-04:00</published><updated>2011-10-14T11:04:09.385-04:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="grails metadata groovy"/><title type='text'>Reading Metadata values in Grails scripts</title><content type='html'>After reading the useful post by Kevin Gill on adding build numbers to the grails build: &lt;a href=&quot;http://www.wthr.us/2010/07/08/adding-an-auto-incrementing-build-number-to-a-grails-application/&quot;&gt;Adding Auto Incrementing Build Number to a Grails Application&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
I began to wonder how to attach the build number to the project war file. Turns out the solution was simpler than I had thought.&lt;br /&gt;
&lt;br /&gt;
grails.project.war.file = &quot;target/${appName}-${appVersion}-${grails.util.Metadata.current.&#39;app.buildNumber&#39;.toInteger()+1}.war&quot;</content><link rel='replies' type='application/atom+xml' href='http://resilientcoder.blogspot.com/feeds/5863917979608888160/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://resilientcoder.blogspot.com/2011/10/reading-metadata-values-in-grails.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5215348251766414957/posts/default/5863917979608888160'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5215348251766414957/posts/default/5863917979608888160'/><link rel='alternate' type='text/html' href='http://resilientcoder.blogspot.com/2011/10/reading-metadata-values-in-grails.html' title='Reading Metadata values in Grails scripts'/><author><name>Stan B</name><uri>http://www.blogger.com/profile/11534458230420815599</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5215348251766414957.post-5652553966757630945</id><published>2011-10-03T14:16:00.002-04:00</published><updated>2011-10-03T14:17:41.810-04:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="iOS"/><category scheme="http://www.blogger.com/atom/ns#" term="iPad"/><category scheme="http://www.blogger.com/atom/ns#" term="iTunes"/><category scheme="http://www.blogger.com/atom/ns#" term="Mobile"/><category scheme="http://www.blogger.com/atom/ns#" term="Refresh Browser"/><title type='text'>Refresh Browser v1.1</title><content type='html'>Just a bit of self promotion...&lt;br /&gt;
&lt;br /&gt;
My iPad app that I built for the guys at Breakpoint IT, Refresh Browser, had its first maintenance release (v1.1)&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;http://itunes.apple.com/qa/app/refresh-browser/id442132171?mt=8&quot;&gt;http://itunes.apple.com/qa/app/refresh-browser/id442132171?mt=8&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;http://itunes.apple.com/qa/app/refresh-browser/id442132171?mt=8&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;http://a4.mzstatic.com/us/r1000/094/Purple/a1/af/f3/mzl.wzldthbm.175x175-75.jpg&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
So check it out and support!</content><link rel='replies' type='application/atom+xml' href='http://resilientcoder.blogspot.com/feeds/5652553966757630945/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://resilientcoder.blogspot.com/2011/10/refresh-browser-v11.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5215348251766414957/posts/default/5652553966757630945'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5215348251766414957/posts/default/5652553966757630945'/><link rel='alternate' type='text/html' href='http://resilientcoder.blogspot.com/2011/10/refresh-browser-v11.html' title='Refresh Browser v1.1'/><author><name>Stan B</name><uri>http://www.blogger.com/profile/11534458230420815599</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5215348251766414957.post-5098696799167306287</id><published>2011-04-20T21:27:00.002-04:00</published><updated>2011-04-20T21:29:53.107-04:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Adobe"/><category scheme="http://www.blogger.com/atom/ns#" term="Forms"/><category scheme="http://www.blogger.com/atom/ns#" term="Java"/><category scheme="http://www.blogger.com/atom/ns#" term="LiveCycle"/><category scheme="http://www.blogger.com/atom/ns#" term="PDF"/><title type='text'>Adobe LiveCycle ES2.5 Migration Woes</title><content type='html'>So recently I had to migrate LiveCycle ES to ES2 / ES2.5&lt;br /&gt;
&lt;br /&gt;
Surprisingly the install and deployment of the application went smooth. When I got Workbench installed and everything up and running it was time to migrate the old forms over to a new application and get everything working. All was well until I hit the Deploy button.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;          The resource [resourceUri] is exclusive-locked by user [userId].&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
When this used to happen in LiveCycle ES there was always an unlock option in the context menu, in ES2.5 it&#39;s nowhere to be found. Numerous calls to Adobe Support no help. Until today I stumbled upon &lt;a href=&quot;http://help.adobe.com/en_US/livecycle/9.0/programLC/help/index.htm?content=000326.html&quot;&gt;Locking a resource using the Java API&lt;/a&gt;. I&#39;m not sure where this was before but it contained some valuable information. So I quickly wrote up the source for my server running on WebSphere 6.1.&lt;br /&gt;
&lt;br /&gt;
&lt;pre &gt;import java.util.*;

import com.adobe.idp.dsc.clientsdk.ServiceClientFactory;
import com.adobe.idp.dsc.clientsdk.ServiceClientFactoryProperties;
import com.adobe.repository.bindings.dsc.client.ResourceRepositoryClient;
import com.adobe.repository.infomodel.bean.*;

public class UnlockFile {
 public static void main(String[] args) {
  try {
   Properties connectionProps = new Properties();
   connectionProps.setProperty(
     ServiceClientFactoryProperties.DSC_DEFAULT_EJB_ENDPOINT,
     &quot;iiop://myhost:2809&quot;);
   connectionProps.setProperty(
     ServiceClientFactoryProperties.DSC_TRANSPORT_PROTOCOL,
     ServiceClientFactoryProperties.DSC_EJB_PROTOCOL);
   connectionProps.setProperty(
     ServiceClientFactoryProperties.DSC_SERVER_TYPE,
     ServiceClientFactoryProperties.DSC_WEBSPHERE_SERVER_TYPE);
   connectionProps.setProperty(
     ServiceClientFactoryProperties.DSC_CREDENTIAL_USERNAME,
     &quot;login&quot;);
   connectionProps.setProperty(
     ServiceClientFactoryProperties.DSC_CREDENTIAL_PASSWORD,
     &quot;pass&quot;);

   ServiceClientFactory myFactory = ServiceClientFactory
     .createInstance(connectionProps);

   ResourceRepositoryClient repositoryClient = new ResourceRepositoryClient(
     myFactory);

   String resourceUri = &quot;/MyResourceDir/&quot;;

   for (Resource resource : (List&lt;resource&gt;) repositoryClient
     .listMembers(resourceUri)) {
    repositoryClient.unlockResource(resource.getPath());

   }
  } catch (Exception e) {
   e.printStackTrace();
  }
 }
}

&lt;/pre&gt;&lt;br /&gt;
What I did here to make my life easier instead of going through 50 forms 1 by 1 You can pass in their parent directory as a ResourceURI. &lt;br /&gt;
&lt;br /&gt;
Hope this helps. Thanks to the Adobe docs, wish they were much easier to find though. Seems they became better for crawlers recently because I haven&#39;t seen these links when I was searching for this a little while ago.</content><link rel='replies' type='application/atom+xml' href='http://resilientcoder.blogspot.com/feeds/5098696799167306287/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://resilientcoder.blogspot.com/2011/04/adobe-livecycle-es25-migration-woes.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5215348251766414957/posts/default/5098696799167306287'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5215348251766414957/posts/default/5098696799167306287'/><link rel='alternate' type='text/html' href='http://resilientcoder.blogspot.com/2011/04/adobe-livecycle-es25-migration-woes.html' title='Adobe LiveCycle ES2.5 Migration Woes'/><author><name>Stan B</name><uri>http://www.blogger.com/profile/11534458230420815599</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5215348251766414957.post-7409956122069107617</id><published>2011-04-07T18:56:00.002-04:00</published><updated>2011-04-07T19:06:58.951-04:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Blackberry"/><category scheme="http://www.blogger.com/atom/ns#" term="HTML5"/><category scheme="http://www.blogger.com/atom/ns#" term="Javascript"/><category scheme="http://www.blogger.com/atom/ns#" term="Mobile"/><category scheme="http://www.blogger.com/atom/ns#" term="Sencha Touch"/><title type='text'>Sencha Touch Scrolling a Non Touch Blackberry OS 6 Device</title><content type='html'>This is a follow up to my&amp;nbsp;&lt;a href=&quot;http://resilientcoder.blogspot.com/2011/03/getting-sencha-touch-to-work-on-non.html&quot;&gt;first post&lt;/a&gt; about getting clicking to work on Non-Touch Blackberry OS 6 devices with the Sencha Touch framework.&lt;br /&gt;
&lt;br /&gt;
I have come up with a way to get the components to scroll when you move your mouse to the edges. It is a bit rough around the edges and can use some polish but it&#39;s a working example and can be used.&lt;br /&gt;
&lt;br /&gt;
This does not require any hacking of the Sencha Touch library which is both good and bad. The good is that you don&#39;t have to mess with the library risking something to get broken the bad is that you have to add this for every panel.&lt;br /&gt;
&lt;br /&gt;
Without further ado here&#39;s an example Panel implementing a List:&lt;br /&gt;
&lt;br /&gt;
&lt;pre class=&quot;brush: javascript&quot;&gt;var scrollList;

app.views.scrollList = Ext.extend(Ext.Panel, {
    listeners: {
        mousemove: {
            element: &#39;el&#39;,
            fn: function (evt, div, el) {
                if (scrollList.scroller.offsetBoundary.top == 0) {
                    scrollList.scroller.updateBoundary();
                }
                var maxOffset = scrollList.scroller.offsetBoundary[1] - 400;
                if (evt.xy[1] &gt; 300 &amp;&amp; scrollList.scroller.offset.y &gt;= maxOffset) {
                    var offset = -1 * scrollList.scroller.offset.y + 10;
                    scrollList.scroller.scrollTo({
                        x: 0,
                        y: offset
                    });
                } else if (evt.xy[1] &lt; 60 &amp;&amp; scrollList.scroller.offset.y &lt;= 0) {
                    scrollList.scroller.scrollTo({
                        x: 0,
                        y: (-1 * scrollList.scroller.offset.y) - 10
                    });
                }
            }
        }
    },
    dockedItems: [{
        xtype: &#39;toolbar&#39;,
        title: &#39;Scroll List&#39;
    }],
    items: [{
        xtype: &#39;list&#39;,
        id: &#39;scrollList&#39;,
        height: 275,
        scroll: &#39;vertical&#39;,
        store: app.stores.scrollList,
        itemTpl: &#39;{a}, {b}&#39;,
        onItemDisclosure: function (record) {

        }

    }],
    initComponent: function () {
        app.stores.scrollList.load();
        app.views.scrollList.superclass.initComponent.apply(this, arguments);
        scrollList = Ext.getCmp(&#39;scrollList&#39;);
    }

});
&lt;/pre&gt;
What we do here is we attach a mousemove listener to the underlying panel and call the scrollTo() function on the list&#39;s Ext.util.Scroller instance. 

If anyone has any improvements/suggestions/their own implementation I would love to hear it. 
&lt;br&gt;
Here&#39;s a demo:
&lt;iframe title=&quot;YouTube video player&quot; width=&quot;480&quot; height=&quot;390&quot; src=&quot;http://www.youtube.com/embed/CRK5pI2W2K8&quot; frameborder=&quot;0&quot; allowfullscreen&gt;&lt;/iframe&gt;
&lt;br /&gt;
&lt;br /&gt;
Hope this helps those who have hit this problem and hopefully Sencha will implement this the &quot;right&quot; way.</content><link rel='replies' type='application/atom+xml' href='http://resilientcoder.blogspot.com/feeds/7409956122069107617/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://resilientcoder.blogspot.com/2011/04/sencha-touch-scrolling-non-touch.html#comment-form' title='10 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5215348251766414957/posts/default/7409956122069107617'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5215348251766414957/posts/default/7409956122069107617'/><link rel='alternate' type='text/html' href='http://resilientcoder.blogspot.com/2011/04/sencha-touch-scrolling-non-touch.html' title='Sencha Touch Scrolling a Non Touch Blackberry OS 6 Device'/><author><name>Stan B</name><uri>http://www.blogger.com/profile/11534458230420815599</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://img.youtube.com/vi/CRK5pI2W2K8/default.jpg" height="72" width="72"/><thr:total>10</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5215348251766414957.post-230841476472316701</id><published>2011-03-28T03:14:00.001-04:00</published><updated>2011-03-28T03:15:20.083-04:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Blackberry"/><category scheme="http://www.blogger.com/atom/ns#" term="HTML5"/><category scheme="http://www.blogger.com/atom/ns#" term="Javascript"/><category scheme="http://www.blogger.com/atom/ns#" term="Mobile"/><category scheme="http://www.blogger.com/atom/ns#" term="Sencha Touch"/><title type='text'>Getting Sencha Touch to work on Non Touch Blackberry 6 Devices</title><content type='html'>Recently I decided to begin researching the current batch of options for cross-platform mobile development with a primary target device being the Blackberry Bold.&lt;br /&gt;
The good news is the phone runs a WebKit browser, the bad news is that the phone still sucks. Nonetheless, without much digging a seemingly wonderful framework was brought to my attention from a company I&#39;m familiar with, Sencha, the company behind the &lt;a href=&quot;http://www.sencha.com/products/extgwt/&quot;&gt;Ext-GWT&lt;/a&gt; framework. &lt;br /&gt;
&lt;a href=&quot;http://www.sencha.com/products/touch/&quot;&gt;Sencha Touch&lt;/a&gt; is probably the most powerful HTML5 mobile frameworks out today. However with all its greatness it has one shortcoming: Though they state they have Blackberry 6 support,&amp;nbsp; they really only support one Blackberry 6 device, the Torch. &lt;br /&gt;
&lt;br /&gt;
So what happens when you try to access an app built using Sencha Touch on a non-touch Blackberry? It renders well but you can&#39;t click anything, making the app just eye candy.&lt;br /&gt;
&lt;br /&gt;
Alas, there is a quick and dirty solution to it.&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;b&gt;NOTE: &lt;/b&gt;There are two versions of Sencha Touch, the open source (GPLv3) and the paid commercial license. This solution involves modifying the Sencha Touch source. I only show it as a demonstration, use it as-is.&amp;nbsp;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;Sencha Touch provides a wrapper for mouse &amp;amp; touch events to support gestures, dragging and touching. This modification involves making Sencha think of the Blackberry as if it were a standalone browser in terms of input. This may not be the best/only/right solution but it&#39;s a start.&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;I looked at the sencha-touch-debug.js file since its detailed and I could understand what was going on.&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;The three changes that need to be made are:&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;blockquote&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;Line 4763:&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
Touch: (&#39;ontouchstart&#39; in window) &amp;amp;&amp;amp; (!Ext.is.Desktop &amp;amp;&amp;amp; !Ext.is.Blackberry),&lt;br /&gt;
&lt;br /&gt;
Line 13964:&lt;br /&gt;
if (!Ext.desktop &amp;amp;&amp;amp; !Ext.Blackberry) {...}&lt;br /&gt;
&lt;br /&gt;
Line 18217:&lt;br /&gt;
if (Ext.is.Desktop || Ext.is.Blackberry) {...}&lt;/blockquote&gt;&lt;br /&gt;
There you have it.&lt;br /&gt;
&lt;br /&gt;
Hopefully future versions of Sencha Touch will implement support for non-touch Blackberry 6 devices through a much better way than my hack.</content><link rel='replies' type='application/atom+xml' href='http://resilientcoder.blogspot.com/feeds/230841476472316701/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://resilientcoder.blogspot.com/2011/03/getting-sencha-touch-to-work-on-non.html#comment-form' title='15 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5215348251766414957/posts/default/230841476472316701'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5215348251766414957/posts/default/230841476472316701'/><link rel='alternate' type='text/html' href='http://resilientcoder.blogspot.com/2011/03/getting-sencha-touch-to-work-on-non.html' title='Getting Sencha Touch to work on Non Touch Blackberry 6 Devices'/><author><name>Stan B</name><uri>http://www.blogger.com/profile/11534458230420815599</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>15</thr:total></entry></feed>