<?xml version="1.0" encoding="UTF-8"?><!-- generator="wordpress.com" -->
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	>

<channel>
	<title>ext-js &amp;laquo; WordPress.com Tag Feed</title>
	<link>http://en.wordpress.com/tag/ext-js/</link>
	<description>Feed of posts on WordPress.com tagged "ext-js"</description>
	<pubDate>Sat, 05 Dec 2009 04:12:12 +0000</pubDate>

	<generator>http://en.wordpress.com/tags/</generator>
	<language>en</language>

<item>
<title><![CDATA[Using Ext JS Grid with ASP.NET MVC]]></title>
<link>http://nraykov.wordpress.com/2009/11/29/using-ext-js-grid-with-asp-net-mvc/</link>
<pubDate>Sun, 29 Nov 2009 13:51:14 +0000</pubDate>
<dc:creator>Nikolay Raykov</dc:creator>
<guid>http://nraykov.wordpress.com/2009/11/29/using-ext-js-grid-with-asp-net-mvc/</guid>
<description><![CDATA[ASP.NET MVC is the new cool kid on the block of Microsoft platforms. I have been using it for a litt]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p>ASP.NET MVC is the new cool kid on the block of Microsoft platforms. I have been using it for a little over half an year and I can say that I like it much more than ASP.NET. Why is that?</p>
<ol>
<li>No more viewstate which adds an additional overhead on your page</li>
<li>Clean separation of concerns through the MVC pattern</li>
<li>Going back to the basics (standard HTML controls) &#8211; most of the ASP.NET server controls do not work with ASP.NET MVC because there is no viewstate and the notion of postbacks</li>
</ol>
<p>This would be the first of a series of blog posts that I would write about ASP.NET MVC and some performance techniques that could get the most out of it. We will start by building a simple application that uses Ext JS Grid to display employees data that is fetched from the AdventureWorks database. Since jQuery is being shipped with Visual Studio for over a year now I will be using it as well &#8211; as an adapter to Ext JS (I am a big fan of jQuery).</p>
<p>I am going to create my app using Visual Stidio 2010 Beta 2 which ships with ASP.NET MVC 2 Beta. If you are using Visual Studio 2008 you have to download the <a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=4817cdb2-88ea-4af4-a455-f06b4c90fd2c&#38;displaylang=en" target="_blank">Beta</a> and install it on your machine. First we start by creating a new ASP.NET MVC Project.</p>
<p style="text-align:center;">
<div id="attachment_65" class="wp-caption aligncenter" style="width: 610px"><a href="http://nraykov.wordpress.com/files/2009/11/step_11.png"><img class="size-full wp-image-65" title="New ASP.NET MVC Project" src="http://nraykov.wordpress.com/files/2009/11/step_11.png" alt="New ASP.NET MVC Project" width="600" height="413" /></a><p class="wp-caption-text">New ASP.NET MVC Project</p></div>
<p>Next I am copying the necessary files that are needed for Ext JS &#8211; ext-all.debug.js and ext-jquery-adapter.js to an extjs folder I created under my Scripts folder which was created for me by the ASP.NET MVC project template. I will use the latest version of the library &#8211; <a href="http://www.extjs.com/" target="_blank">Ext JS 3.0.3</a>.</p>
<p>In the next step we need to include the css and js files &#8211; I will put them in the master page (located under Views/Shared folder):</p>
<pre style="overflow:auto;"><span style="color:#0000ff;">&#60;</span><span style="color:#800000;">link</span> <span style="color:#ff0000;">href</span><span style="color:#0000ff;">="../../Content/resources/css/ext-all.css"</span> <span style="color:#ff0000;">rel</span><span style="color:#0000ff;">="stylesheet"</span> <span style="color:#ff0000;">type</span><span style="color:#0000ff;">="text/css"</span> <span style="color:#0000ff;">/&#62;</span>
<span style="color:#0000ff;">&#60;</span><span style="color:#800000;">script</span> <span style="color:#ff0000;">type</span><span style="color:#0000ff;">="text/javascript"</span> <span style="color:#ff0000;">src</span><span style="color:#0000ff;">="../../Scripts/jquery-1.3.2.js"</span><span style="color:#0000ff;">&#62;&#60;/</span><span style="color:#800000;">script</span><span style="color:#0000ff;">&#62;</span>
<span style="color:#0000ff;">&#60;</span><span style="color:#800000;">script</span> <span style="color:#ff0000;">type</span><span style="color:#0000ff;">="text/javascript"</span> <span style="color:#ff0000;">src</span><span style="color:#0000ff;">="../../Scripts/extjs/ext-jquery-adapter.js"</span><span style="color:#0000ff;">&#62;&#60;/</span><span style="color:#800000;">script</span><span style="color:#0000ff;">&#62;</span>
<span style="color:#0000ff;">&#60;</span><span style="color:#800000;">script</span> <span style="color:#ff0000;">type</span><span style="color:#0000ff;">="text/javascript"</span> <span style="color:#ff0000;">src</span><span style="color:#0000ff;">="../../Scripts/extjs/ext-all-debug.js"</span><span style="color:#0000ff;">&#62;&#60;/</span><span style="color:#800000;">script</span><span style="color:#0000ff;">&#62;</span></pre>
<p>The order in which you include the JavaScript files is important.</p>
<p><em>Note: Please remember that it is essential to put all your css files in the head section of the page &#8211; this improves the loading of your page. All js files that are needed for the page rendering should also be put in the head, otherwise they should be put at the end of your page. I will talk more about this in a future blog post.</em></p>
<p>For the purpose of this sample application I will use the AdventureWorks database alongside with the Entity Framework for my data model. First we have to add the database into the App_Data folder and then create our data model in the Models folder. The Entity Framework will generate all the necessary entities and a context class and we are ready to write our data access code &#8211; I will write my LINQ queries against the database in the controller classes though you will not do this in a real world application. You would use for example the Repository pattern, put your data access logic in a separate assembly, maybe write your own services that will abstract away the business logic and inject them with some Dependency Injection framework, etc.</p>
<div id="attachment_63" class="wp-caption aligncenter" style="width: 610px"><a href="http://nraykov.wordpress.com/files/2009/11/ef_datamodel.png"><img class="size-full wp-image-63" title="Entity Framework Data Model" src="http://nraykov.wordpress.com/files/2009/11/ef_datamodel.png" alt="Entity Framework Data Model" width="600" height="414" /></a><p class="wp-caption-text">Entity Framework Data Model</p></div>
<p>Now that we have everything in place we can write an action method which would return a subset of employees:</p>
<pre style="overflow:auto;">[AcceptVerbs(HttpVerbs.Get)]
[ActionName(<span style="color:#006080;">"Employees"</span>)]
<span style="color:#0000ff;">public</span> JsonResult GetEmployees()
{
   <span style="color:#0000ff;">int</span> start = Convert.ToInt32(Request.QueryString[<span style="color:#006080;">"start"</span>]);
   <span style="color:#0000ff;">int</span> limit = Convert.ToInt32(Request.QueryString[<span style="color:#006080;">"limit"</span>]);

   <span style="color:#0000ff;">using</span> (AdventureWorksEntities dbContext = <span style="color:#0000ff;">new</span> AdventureWorksEntities())
   {
      var query = dbContext.Employees
                              .Include(<span style="color:#006080;">"Contact"</span>)
                              .OrderBy(emp =&#62; emp.EmployeeID);
      var result = (from emp <span style="color:#0000ff;">in</span> query
                                  .Skip(start).Take(limit).ToList()
                    select <span style="color:#0000ff;">new</span>
                    {
                       ID = emp.EmployeeID,
                       FirstName = emp.Contact.FirstName,
                       LastName = emp.Contact.LastName,
                       BirthDate = emp.BirthDate.ToShortDateString(),
                       HireDate = emp.HireDate.ToShortDateString(),
                       VacationHours = emp.VacationHours,
                       SickLeaveHours = emp.SickLeaveHours,
                       Email = emp.Contact.EmailAddress,
                       Phone = emp.Contact.Phone
                    }).ToList();

      <span style="color:#0000ff;">return</span> Json(<span style="color:#0000ff;">new</span> { data = result, totalCount = query.Count() }, JsonRequestBehavior.AllowGet);
   }
}</pre>
<p>Notice the <strong>AcceptVerbs </strong>attribute that the method is decorated with &#8211; it tells the framework that only GET requests are allowed to call the method through the <strong>HttpVerbs </strong>enumeration. This was the way to constrain the requests so far but in the new version of ASP.NET MVC there are some new handy attributes that you could use as well &#8211; <strong>HttpGet</strong>, <strong>HttpPost</strong>, <strong>HttpPut </strong>and <strong>HttpDelete </strong>which do the same thing. I am using the <strong>ActionName </strong>attribute to explicitly add a name for my action method so that I could have a nice URL schema for my actions and use the same name for different CRUD operations (I just need to use different verb for the requests).</p>
<p>In the method itself I create an instance of the database context and based on the parameters received from the grid I do paging with the LINQ extension methods Skip and Take. The interesting part is when the data is returned as a JSON &#8211; in ASP.NET MVC 1 the JSON method required a single parameter while now you have to pass an additional parameter of type JsonRequestBehavior. It is introduced for security reasons and you as a developer should explicitly decide whether or not to support GET requests. The problem is that if you return a response in the form of a JSON Array for a GET request it could be easily compromised, so it is suggested to wrap it inside a JSON object or do POSTs instead of that. You could read more about this in <a title="JSON Hijacking" href="http://haacked.com/archive/2009/06/25/json-hijacking.aspx" target="_blank">Phil Haack&#8217;s post</a>.</p>
<p>Next we need to write the JavaScript code that will instantiate our grid and fetch the data from the server:</p>
<pre style="font-size:small;color:black;font-family:Consolas,;overflow:auto;"><span style="color:#0000ff;">&#60;</span><span style="color:#800000;">script</span> <span style="color:#ff0000;">type</span><span style="color:#0000ff;">="text/javascript"</span><span style="color:#0000ff;">&#62;</span>
   $(document).ready(<span style="color:#0000ff;">function</span> () {
      <span style="color:#0000ff;">var</span> store = <span style="color:#0000ff;">new</span> Ext.data.Store({
         proxy: <span style="color:#0000ff;">new</span> Ext.data.HttpProxy({
            url: <span style="color:#006080;">'Home/Employees'</span>,
            dataType: <span style="color:#006080;">'json'</span>,
            method: <span style="color:#006080;">'GET'</span>
         }),
         reader: <span style="color:#0000ff;">new</span> Ext.data.JsonReader({
            root: <span style="color:#006080;">'data'</span>,
            totalProperty: <span style="color:#006080;">'totalCount'</span>
         }, Ext.data.Record.create([
            { name: <span style="color:#006080;">'ID'</span>, mapping: <span style="color:#006080;">'ID'</span> },
            { name: <span style="color:#006080;">'FirstName'</span>, mapping: <span style="color:#006080;">'FirstName'</span> },
            { name: <span style="color:#006080;">'LastName'</span>, mapping: <span style="color:#006080;">'LastName'</span> },
            { name: <span style="color:#006080;">'BirthDate'</span>, mapping: <span style="color:#006080;">'BirthDate'</span> },
            { name: <span style="color:#006080;">'HireDate'</span>, mapping: <span style="color:#006080;">'HireDate'</span> },
            { name: <span style="color:#006080;">'VacationHours'</span>, mapping: <span style="color:#006080;">'VacationHours'</span> },
            { name: <span style="color:#006080;">'SickLeaveHours'</span>, mapping: <span style="color:#006080;">'SickLeaveHours'</span> },
            { name: <span style="color:#006080;">'Email'</span>, mapping: <span style="color:#006080;">'Email'</span> },
            { name: <span style="color:#006080;">'Phone'</span>, mapping: <span style="color:#006080;">'Phone'</span> }
         ]))
      });

      <span style="color:#0000ff;">var</span> grid = <span style="color:#0000ff;">new</span> Ext.grid.GridPanel({
         store: store,
         columns: [
            { header: <span style="color:#006080;">'ID'</span>, dataIndex: <span style="color:#006080;">'ID'</span>, hidden: <span style="color:#0000ff;">true</span> },
            { header: <span style="color:#006080;">'First Name'</span>, dataIndex: <span style="color:#006080;">'FirstName'</span>, width: 100 },
            { header: <span style="color:#006080;">'Last Name'</span>, dataIndex: <span style="color:#006080;">'LastName'</span>, width: 100 },
            { header: <span style="color:#006080;">'Birth Date'</span>, dataIndex: <span style="color:#006080;">'BirthDate'</span>, width: 100 },
            { header: <span style="color:#006080;">'Hire Date'</span>, dataIndex: <span style="color:#006080;">'HireDate'</span>, width: 100 },
            { header: <span style="color:#006080;">'Vacation Hours'</span>, dataIndex: <span style="color:#006080;">'VacationHours'</span>, width: 100 },
            { header: <span style="color:#006080;">'Sick Leave Hours'</span>, dataIndex: <span style="color:#006080;">'SickLeaveHours'</span>, width: 100 },
            { header: <span style="color:#006080;">'Email'</span>, dataIndex: <span style="color:#006080;">'Email'</span>, width: 200 },
            { header: <span style="color:#006080;">'Phone'</span>, dataIndex: <span style="color:#006080;">'Phone'</span>, width: 200 }
         ],
         renderTo: <span style="color:#006080;">'grid'</span>,
         width: 1000,
         autoHeight: <span style="color:#0000ff;">true</span>,
         bbar: <span style="color:#0000ff;">new</span> Ext.PagingToolbar({
            store: store,
            pageSize: 25,
            displayInfo: <span style="color:#0000ff;">true</span>,
            displayMsg: <span style="color:#006080;">'Displaying employees {0} - {1} of {2}'</span>,
            emptyMsg: <span style="color:#006080;">"No employees to display"</span>
         }),
         pageSize: 20,
         title: <span style="color:#006080;">'Employees'</span>
      });

      grid.getStore().load({ <span style="color:#0000ff;">params</span>: {
         start: 0,
         limit: 25
      }
   });
});
<span style="color:#0000ff;">&#60;/</span><span style="color:#800000;">script</span><span style="color:#0000ff;">&#62;</span></pre>
<p>When the DOM is ready to be manipulated I create a Store which will make the request to the server and use a JsonReader object which has all the necessary mappings in place to parse the data. Then an instance of the Grid is created with the store that was created in the previous step and columns which are mapped to the parsed JSON result object. That&#8217;s all you need to do &#8211; create these objects passing some configurations and you are ready to get your data. All the tricky parts of making an XmlHttpRequest, parsing the JSON, creating the HTML for the grid is done for you. Here is how the grid looks like when the application is run:</p>
<div id="attachment_78" class="wp-caption aligncenter" style="width: 610px"><a href="http://nraykov.wordpress.com/files/2009/11/ext_js_grid.png"><img class="size-full wp-image-78" title="Ext Js Grid" src="http://nraykov.wordpress.com/files/2009/11/ext_js_grid.png" alt="Ext Js Grid" width="600" height="382" /></a><p class="wp-caption-text">Ext Js Grid</p></div>
<p>This is a simple application in which I wanted to show you how to use Ext JS Grid to present data in a nice tabular fashion using ASP.NET MVC and Entity Framework. Here you could <a href="http://www.box.net/shared/f20o4ol724">download</a> the code for this app (I have not included the AdventureWorks database in order to keep the file size small, but you could download it from <a href="http://www.codeplex.com/MSFTDBProdSamples" target="_blank">here</a>).</p>
<p>In my next blog post I will show you how to write ASP.NET MVC HTML extension methods to include CSS and JavaScript files in your pages and how to instantiate some jQuery UI plugin widgets.</p>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Top Sites in Kenya]]></title>
<link>http://phlexdev.wordpress.com/2009/11/24/top-sites-in-kenya/</link>
<pubDate>Tue, 24 Nov 2009 12:12:11 +0000</pubDate>
<dc:creator>phlexdev</dc:creator>
<guid>http://phlexdev.wordpress.com/2009/11/24/top-sites-in-kenya/</guid>
<description><![CDATA[The fiber optics connections to Asia(Seacom and TEAMS) finally arrived in Kenya. Question is, what t]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p><!-- 		@page { margin: 0.79in } 		P { margin-bottom: 0.08in } -->The fiber optics connections to Asia(Seacom and TEAMS) finally arrived in Kenya. Question is, what technologies are used by the websites that receive the highest hits? I decided to do some digging, and here is a quick snapshot of the results based on <a href="http://www.alexa.com/topsites/countries/KE">Alexa</a>:</p>
<table>
<tbody>
<tr>
<th>Site</th>
<th>Server Side Lang.</th>
<th>CMS</th>
<th>CSS</th>
<th>Javascript</th>
</tr>
<tr>
<td><a href="http://www.nation.co.ke/">Daily Nation</a></td>
<td>-</td>
<td>-</td>
<td>YAML framework</td>
<td>Mootools<br />
plugin_js</td>
</tr>
<tr>
<td><a href="http://home.co.ke/">@Home Portal Kenya</a></td>
<td>PHP</td>
<td>Joomla</td>
<td>-</td>
<td>Mootools</td>
</tr>
<tr>
<td><a href="http://standardmedia.co.ke/">Standard Media</a></td>
<td>PHP</td>
<td>-</td>
<td align="left">Dynamic Drive DHTML code library</td>
<td>-</td>
</tr>
<tr>
<td><a href="http://capitalfm.co.ke/">Capital FM</a></td>
<td>PHP</td>
<td>-</td>
<td>-</td>
<td align="left">Prototype<br />
Scriptaculous<br />
Mioplanet News Ticker<br />
Google Maps integration</td>
</tr>
<tr>
<td><a href="http://www.patauza.co.ke/">PataUza</a></td>
<td>PHP</td>
<td>-</td>
<td>-</td>
<td>-</td>
</tr>
<tr>
<td><a href="http://safaricom.co.ke/">Safaricom</a></td>
<td>PHP</td>
<td>-</td>
<td>-</td>
<td>-</td>
</tr>
<tr>
<td><a href="http://haiya.co.ke/">Haiya</a></td>
<td>PHP</td>
<td>Drupal</td>
<td>-</td>
<td>jQuery</td>
</tr>
</tbody>
</table>
<p>Clearly, PHP currently rules on the server side, possibly because of its cost implications and the availability of quality CMS with which it easily integrates. I expect to see more of ASP and Ruby based sites as the developer community grows.</p>
<p>Exploitation of available Javascript utilities is limited, with jQuery and Mootools being used to add a few effects for the menus. I would expect more sites to have AJAX to enrich the user experience using such libraries as Ext Js or even Prototype.js.</p>
<p>As far as the duel between Adobe Flex and Microsoft Silverlight is concerned, no front runners have emerged so far.</p>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[TreeNode Styling]]></title>
<link>http://techienote.wordpress.com/2009/11/12/treenode-styling/</link>
<pubDate>Thu, 12 Nov 2009 19:49:22 +0000</pubDate>
<dc:creator>mylblog</dc:creator>
<guid>http://techienote.wordpress.com/2009/11/12/treenode-styling/</guid>
<description><![CDATA[http://www.extjs.com/forum/showthread.php?t=79132]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p><a href="http://www.extjs.com/forum/showthread.php?t=79132" target="_blank">http://www.extjs.com/forum/showthread.php?t=79132</a></p>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Why GWT?]]></title>
<link>http://supplychaintechnology.wordpress.com/2009/11/11/why-gwt/</link>
<pubDate>Thu, 12 Nov 2009 05:08:29 +0000</pubDate>
<dc:creator>Jim</dc:creator>
<guid>http://supplychaintechnology.wordpress.com/2009/11/11/why-gwt/</guid>
<description><![CDATA[I&#8217;ve recently finished up a series of internal presentations focusing on learning GWT.  We hav]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p><img class="alignright size-thumbnail wp-image-405" title="mail-hosted" src="http://supplychaintechnology.wordpress.com/files/2009/11/mail-hosted.jpg?w=150" alt="mail-hosted" width="150" height="117" />I&#8217;ve recently finished up a series of internal presentations focusing on learning GWT.  We have selected GWT for our UI toolkit and are building our own framework on top of it, using as many mature third party libraries as we can.  We have also already deployed products which use the Google Web Toolkit.</p>
<p>During the presentations one of the most common questions &#8212; if not THE most common question &#8212; was &#8220;Why GWT?&#8221;.  I will assume for the moment that it wasn&#8217;t just our JavaScript gurus asking the question<!--more-->, although there was a fair amount of that as well.</p>
<p>The Google Web Toolkit provides a wealth of tools and support that will allow us to maintain our user interface code long into the future.  Being able to code our UI in Java &#8212; our primary development language &#8212; means that our developers don&#8217;t need to shift gears to understand complex (or even simple) JavaScript when working on the interface.</p>
<p>Complex user interactions are worth additional scrutiny here: we currently use Ext JS for some of our Ajax-enabled products.  When using Ext JS &#8212; and I&#8217;d argue this is true of any JS library &#8212; it takes some mental effort to shift from server-side Java controllers and models to their JavaScript representations.  While there are tools to aid this, there&#8217;s no substitute for sticking with Java code across all application layers, which GWT allows.</p>
<p>Moreover, non-standard javascript will be a non-issue, and we can use existing tools like FindBugs and PMD to check for issues in the GWT code.  Our IDEs have very mature Java support as well.</p>
<p>Years down the road, a new generation of developers here at GT Nexus should be able to pick up the GWT code and use whatever new tools are available to learn our UI code and patterns and make whatever changes need to be made.  It would take more effort and time to decipher and maintain JavaScript code which performs the same function.</p>
<p>There are other reasons to use GWT:  the optimizing compiler, for instance, or even having the weight of Google behind the toolkit.  For me the key to using GWT was the time savings we&#8217;ll get by staying with Java from our data access layer through to the user interface.</p>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Идеальная админка сайта!]]></title>
<link>http://paganez.wordpress.com/2009/11/07/%d0%b8%d0%b4%d0%b5%d0%b0%d0%bb%d1%8c%d0%bd%d0%b0%d1%8f-%d0%b0%d0%b4%d0%bc%d0%b8%d0%bd%d0%ba%d0%b0-%d1%81%d0%b0%d0%b9%d1%82%d0%b0/</link>
<pubDate>Sat, 07 Nov 2009 14:45:12 +0000</pubDate>
<dc:creator>paganez</dc:creator>
<guid>http://paganez.wordpress.com/2009/11/07/%d0%b8%d0%b4%d0%b5%d0%b0%d0%bb%d1%8c%d0%bd%d0%b0%d1%8f-%d0%b0%d0%b4%d0%bc%d0%b8%d0%bd%d0%ba%d0%b0-%d1%81%d0%b0%d0%b9%d1%82%d0%b0/</guid>
<description><![CDATA[IB.Pro CMS Ну вот и она&#8230; Идеальная на мой взгляд! Это была середина дня. 7 ноября. Я подбирал ]]></description>
<content:encoded><![CDATA[IB.Pro CMS Ну вот и она&#8230; Идеальная на мой взгляд! Это была середина дня. 7 ноября. Я подбирал ]]></content:encoded>
</item>
<item>
<title><![CDATA[Vezető fejlesztő (PHP, SQL)]]></title>
<link>http://spillerlaszlo.wordpress.com/2009/11/06/vezeto-fejleszto-php-sql/</link>
<pubDate>Fri, 06 Nov 2009 14:55:28 +0000</pubDate>
<dc:creator>Spiller László</dc:creator>
<guid>http://spillerlaszlo.wordpress.com/2009/11/06/vezeto-fejleszto-php-sql/</guid>
<description><![CDATA[Mit várunk? Ügyfélorientált, nyitott, dinamikus, rugalmas, jó kezdeményezőkészségű, önálló és csapat]]></description>
<content:encoded><![CDATA[Mit várunk? Ügyfélorientált, nyitott, dinamikus, rugalmas, jó kezdeményezőkészségű, önálló és csapat]]></content:encoded>
</item>
<item>
<title><![CDATA[Ext JS 3.0 vs CP2JavaWS &amp; Direct2CP]]></title>
<link>http://cjedaudio.wordpress.com/2009/09/20/ext-js-3-0-vs-cp2javaws-direct2cp/</link>
<pubDate>Sun, 20 Sep 2009 00:10:55 +0000</pubDate>
<dc:creator>Jerome Denanot</dc:creator>
<guid>http://cjedaudio.wordpress.com/2009/09/20/ext-js-3-0-vs-cp2javaws-direct2cp/</guid>
<description><![CDATA[The RC2 of Ext JS 3.0, unveiled last June, 3 (that was just one day after the 0.7 version of CP2Java]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p>The RC2 of Ext JS 3.0, <a href="http://www.extjs.com/blog/2009/06/03/ext-js-30-rc2-release-stable-robust-and-enhanced/">unveiled</a> last June, 3 (that was just one day after the 0.7 version of CP2JavaWS, that brought management for automatic asynchronous and buffered remote access for TableView) provides a CRUD mode that is close to CP2JavaWS&#8217;s Direct2CP one (presented last July, 14, and completed August, 2 &#8211; I wasn&#8217;t aware of Ext JS new features at that time).</p>
<p>Using Ext JS we create a Reader object (manages deserializing/JSON to fields mapping),  Writer (for serializing/fields to JSON mapping) and Store object (url of remote programs that manage read, create, update and delete). We can see examples <a href="http://www.extjs.com/deploy/dev/examples/writer/writer.html">here</a> and <a href="http://www.extjs.com/deploy/dev/examples/restful/restful.html">there</a> (RESTFull store), and simpler examples wihout server backend (<a href="http://www.extjs.com/deploy/dev/examples/form/form-grid.html">Dynamic Form</a> and <a href="http://www.extjs.com/deploy/dev/examples/grid/binding.html">binding from a local xml file</a>).  On the Proxy object we can also specify an index range (autoLoad), that allows buffered access (<a href="http://www.extjs.com/deploy/dev/examples/grid/buffer.html">Buffer Grid</a>).</p>
<p>The Ext JS architecture ensures a good separation and provides advanced customization of rendering and behaviours for master and detail views. However <a href="http://sourceforge.net/projects/cp2javaws/">CP2JavaWS</a> provides these specific features :</p>
<ul>
<li>only one line of code needed to create a fully working CRUD master/detail view (see <a href="http://www.extjs.com/deploy/dev/examples/restful/restful.js">here</a> the required code when using Ext JS), automatic asynchronous and buffered access, sorting, form (detail view) controls that depends from their property type (as with Ext JS&#8217;s Dynamic Form). We just have to specify the CP business class name. All of the Ext Js features are accessible from a unique component, that allows same level of customization : columns displayed in the table view, custom detail view if needed, custom remote service if needed (instead of the provided generic DAO service).</li>
</ul>
<ul>
<li>provides a generic DAO service that doesn&#8217;t require any coding or setting on the server side, works on the object level and manages full database access cycle (through Hibernate) &#8211;  Ext JS&#8217;s RESTful Store demo just simulates a database using session. Then CP2JavaWS&#8217;s Direct2CP is probably the most suited for a Java backend (instant work without any coding nor config).</li>
</ul>
<ul>
<li>allows to call directly an existing Java application/business services layer (based on Spring or another container) as it works at object level, and without additional configuration.</li>
</ul>
<ul>
<li>manages complex objects (objects graphs with nested, heterogeneous collections and references) both on client and server side : it then allows to display/edit any nested property, using paths, and the generic detail view creates an editing field for all of these nested objects attributes. Next version of CP2JavaWS will allow to specify (restrict) the editables properties in detail view (as we still can for the table view) &#8211; for now we can either edit all the object&#8217;s graph properties, or pass a custom detail view (has then to manage controls creation).</li>
</ul>
<ul>
<li>provides management for technical or business (and multiple) key(s), without additional configuration. Hidding of id field(s) depending on the mode and editing step is automatic, as new id affectation.</li>
</ul>
<ul>
<li>manages retreiving of value/label  pairs for combo lists and radio buttons groups (through a remote service or local data).</li>
</ul>
<ul>
<li>choose automatically proper control from combo lists and radio buttons.</li>
</ul>
<ul>
<li>completely free (a 329$ <a href="http://www.extjs.com/store/extjs/">license</a> per developper is required for Ext JS).</li>
</ul>
<p>Moreover CP2JavaWS provides full Digest authentication (Basic only with Ext JS), automatic switch to JSONP if required, and full jsession id tracking per endpoint.</p>
<p>Note : support for in-table editing (instead of using a detail view), still available in Ext JS, will be added soon into Cappuccino&#8217;s CPTableView. In fact it is an historical feature of Next/Cocoa&#8217;s  NSTableView (the proper delegate method is still listed &#8211; commented &#8211; in CPTableView). In the same way columns reordering is planned.</p>
<p>Ext GWT 2.0 (available since July, 9, and priced the same as Ext JS 3.0) includes the new buffered Grid View, Row Editor, and still allowed (thanks to its generation step) to easily add Java CRUD management on the server side. However we still have to write a lot of code (see the source code of <a href="http://www.extjs.com/examples/pages/binding/gridstorebinding.html">GXT Grid Store Data Binding</a> example &#8211; also not faster to load than a CP application) and we are then stick with GWT limitations compared with Cappuccino :</p>
<ul>
<li>requires a generations step (not elegant and less smooth development cycle), whose generator isn&#8217;t open source,</li>
<li>generated javascript very hard to deep debug,</li>
<li>based on the old Swing components model (very limited compared with Cocoa concepts),</li>
<li> does not allow integrating with Cappuccino (we then lack high level features like evolved graphics engine, undo/redo, drag&#38;drop, advanced and automatic layout management, delegation chain and powerful runtime, etc.).</li>
</ul>
<p>By using Ext JS 3.0 (pure javascript), integration with Cappuccino is more likely, however it is of very limited interest from the previous statements (and CP2JavaWS&#8217;s Direct2CP mode still is built on top of standard/expected Cocoa delegate methods).</p>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[EXT Js]]></title>
<link>http://picon65.wordpress.com/2009/09/15/ext-js/</link>
<pubDate>Tue, 15 Sep 2009 19:12:58 +0000</pubDate>
<dc:creator>picon65</dc:creator>
<guid>http://picon65.wordpress.com/2009/09/15/ext-js/</guid>
<description><![CDATA[EXT Js. About the people who run the scene behind EXT Js: Meet the Ext Management Team Abraham Elias]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p><a href="http://www.extjs.com/forum/member.php?u=88378">EXT Js</a>.</p>
<p>About the people who run the scene behind EXT Js:</p>
<p>Meet the Ext Management Team<br />
Abraham Elias<br />
President and CEO</p>
<p>Abraham Elias is responsible for overseeing Ext&#8217;s strategic direction and enabling its rapid growth as a global provider of enterprise-class software and services. Abraham most recently served as Chief Operating Officer at BH Capital Partners. Abraham&#8217;s results driven management and introduction of commercial open source solutions enabled BH Capital to become one of the fastest growing privately held companies in Florida. Abraham brings an entrepreneurial spirit and a proven track record of achieving revenue goals and profit growth to our young and rapidly growing company.</p>
<p>Jack Slocum<br />
Chief Software Architect and Founder</p>
<p>Jack Slocum began development on Ext JS in 2006 to provide feature rich open source extensions to a popular JavaScript library. With a strong foundation in software architecture, design patterns and development experience, Jack has guided the development of Ext JS to where it is today &#8211; an innovative, low-cost, high performance solution for client-side development.</p>
<p>Aaron Conran<br />
Senior Software Architect and Ext Services Team Leader</p>
<p>Aaron Conran has been involved with Ext JS since the beginning and has an in-depth understanding of Ext JS internals and architecture. He has demonstrated a mastery of the Ext JS library and client-side development practices. He currently leads the client development services team and provides on-site training for enterprise customers.</p>
<p>Tommy Maintz<br />
Senior Software Architect</p>
<p>Tommy Maintz leads the development of Ext Core &#8211; a base library for website development. With extensive knowledge of Ext, Tommy pushes the boundaries of what is possible within the web browser. Tommy brings a unique view point and an ambitious philosophy to creating engaging user interfaces. Tommy&#8217;s attention to detail drives his desire to make the perfect framework for developers to enjoy.</p>
<p>Darrell Meyer<br />
Senior Software Architect and Ext GWT Co-Founder</p>
<p>Before joining Ext, Darrell Meyer was the creator of the popular open source MyGWT Widget Library for Google Web Toolkit (GWT). Darrell brings his expert Java and GWT knowledge to Ext, where he leads the Ext GWT product team. With 10+ year&#8217;s experience building enterprise web applications, Darrell is equally well versed as both a software architect and user interface expert.</p>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Workarounds for IE 8 and Ext JS]]></title>
<link>http://vegdave.wordpress.com/2009/09/10/workarounds-for-ie-8-and-ext-js/</link>
<pubDate>Thu, 10 Sep 2009 21:17:23 +0000</pubDate>
<dc:creator>Dave</dc:creator>
<guid>http://vegdave.wordpress.com/2009/09/10/workarounds-for-ie-8-and-ext-js/</guid>
<description><![CDATA[For the last couple days I ran into JavaScript errors with toolbars for Ext JS. One of the issues is]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p>For the last couple days I ran into JavaScript errors with toolbars for Ext JS. One of the issues is clearly documented <a>here</a>. I just added <code>hideMode:'offsets'</code> to the toolbar definition and the error went away. The other one, I had to add <code>enableOverflow: false</code> option to the toolbar to avoid hitting <code>Object required</code> error in IE. </p>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Format of datefield changes after update]]></title>
<link>http://techienote.wordpress.com/2009/08/26/format-of-datefield-changes-after-update/</link>
<pubDate>Wed, 26 Aug 2009 22:59:56 +0000</pubDate>
<dc:creator>mylblog</dc:creator>
<guid>http://techienote.wordpress.com/2009/08/26/format-of-datefield-changes-after-update/</guid>
<description><![CDATA[http://www.extjs.com/forum/showthread.php?t=70327]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p><a href="http://www.extjs.com/forum/showthread.php?t=70327&#38;highlight=grid+datefield" target="_blank">http://www.extjs.com/forum/showthread.php?t=70327</a></p>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Refreshing browser window when there is a resize event]]></title>
<link>http://stephensoftware.wordpress.com/2009/08/07/refreshing-browser-window-when-there-is-a-resize-event/</link>
<pubDate>Fri, 07 Aug 2009 09:19:27 +0000</pubDate>
<dc:creator>sljm</dc:creator>
<guid>http://stephensoftware.wordpress.com/2009/08/07/refreshing-browser-window-when-there-is-a-resize-event/</guid>
<description><![CDATA[When I am using an ExtJS ViewPort, when I resize my window manually by dragging the window handles e]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p>When I am using an ExtJS ViewPort, when I resize my window manually by dragging the window handles everything goes out of size so I needed a way to detect the window resize then refreshed the window.</p>
<p>First we need to create a function to refresh the window. That can be done using window.location.reload function. In ExtJS you can look at the <a href="http://extjs.com/deploy/ext/docs/output/Ext.EventManager.html#onWindowResize" target="_blank">Ext.EventManager.onWindowResize</a> to add a listener to the onWindowResize event. Code is below.</p>
<pre class="brush: jscript;">

function resize(){
window.location.reload
}

Ext.EventManager.onWindowResize(resize);
</pre>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[JavaScript trick]]></title>
<link>http://vegdave.wordpress.com/2009/08/06/javascript-trick/</link>
<pubDate>Thu, 06 Aug 2009 22:23:08 +0000</pubDate>
<dc:creator>Dave</dc:creator>
<guid>http://vegdave.wordpress.com/2009/08/06/javascript-trick/</guid>
<description><![CDATA[This might be useful trick to upload and display an image.]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p><a href="http://blog.nextlogic.net/2009/07/ext-js-image-field.html">This</a> might be useful trick to upload and display an image. </p>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Palavras Reservadas no extJS]]></title>
<link>http://emdia.wordpress.com/2009/07/25/palavras-reservadas-no-extjs/</link>
<pubDate>Sat, 25 Jul 2009 17:57:26 +0000</pubDate>
<dc:creator>Vitor Hugo</dc:creator>
<guid>http://emdia.wordpress.com/2009/07/25/palavras-reservadas-no-extjs/</guid>
<description><![CDATA[Após um longo tempo sem escrever até que enfim saiu um novo post, embora bem curto mas que pode lhe ]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p>Após um longo tempo sem escrever até que enfim saiu um novo<br />
post, embora bem curto mas que pode lhe poupar um bom<br />
tempo de trabalho desnecessário.</p>
<p>Nesta semana quando eu o Mineiro Jakui (risos), estavamos<br />
construindo uma nova tela para uma funcionalidade que envolvia<br />
um Wizard louco com o CardLayout nos deparamos com um erro<br />
que nem tinhamos noção que poderia ocorrer.</p>
<p>Na funcionalidade que estavamos construindo definimos um id com<br />
com o nome de &#8216;card&#8217; que por coincidencia, e a forma como o componente<br />
CardLayout pode ser chamado pela configuração layout: &#8216;card&#8217;.</p>
<p>Quando definimos o id com este nome, não conseguiamos acessar<br />
o nosso componente através do comando Ext.getCmp(&#8216;id&#8217;).</p>
<p>Este comando possibilita recuperar um determinando componente<br />
da tela através do seu id.</p>
<p>Como estavamos colocando o nome resumido de um determinado<br />
componente, ele simplesmente nos retornava &#8216;undefined&#8217;, que a grosso<br />
modo significa que ainda não foi definido o determinado atributo.</p>
<p>Abaixo segue a lista de algumas palavras reservadas:</p>
<p>xtype            Class<br />
&#8212;&#8212;&#8212;&#8212;-    &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;<br />
box              Ext.BoxComponent<br />
button           Ext.Button<br />
colorpalette     Ext.ColorPalette<br />
component        Ext.Component<br />
container        Ext.Container<br />
cycle            Ext.CycleButton<br />
dataview         Ext.DataView<br />
datepicker       Ext.DatePicker<br />
editor           Ext.Editor<br />
editorgrid       Ext.grid.EditorGridPanel<br />
grid             Ext.grid.GridPanel<br />
paging           Ext.PagingToolbar<br />
panel            Ext.Panel<br />
progress         Ext.ProgressBar<br />
propertygrid     Ext.grid.PropertyGrid<br />
slider           Ext.Slider<br />
splitbutton      Ext.SplitButton<br />
statusbar        Ext.StatusBar<br />
tabpanel         Ext.TabPanel<br />
treepanel        Ext.tree.TreePanel<br />
viewport         Ext.Viewport<br />
window           Ext.Window</p>
<p>Toolbar components<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;<br />
toolbar          Ext.Toolbar<br />
tbbutton         Ext.Toolbar.Button<br />
tbfill           Ext.Toolbar.Fill<br />
tbitem           Ext.Toolbar.Item<br />
tbseparator      Ext.Toolbar.Separator<br />
tbspacer         Ext.Toolbar.Spacer<br />
tbsplit          Ext.Toolbar.SplitButton<br />
tbtext           Ext.Toolbar.TextItem</p>
<p>Form components<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;<br />
form             Ext.FormPanel<br />
checkbox         Ext.form.Checkbox<br />
combo            Ext.form.ComboBox<br />
datefield        Ext.form.DateField<br />
field            Ext.form.Field<br />
fieldset         Ext.form.FieldSet<br />
hidden           Ext.form.Hidden<br />
htmleditor       Ext.form.HtmlEditor<br />
label            Ext.form.Label<br />
numberfield      Ext.form.NumberField<br />
radio            Ext.form.Radio<br />
textarea         Ext.form.TextArea<br />
textfield        Ext.form.TextField<br />
timefield        Ext.form.TimeField<br />
trigger          Ext.form.TriggerField</p>
<p>Essas palavras foram encontradas na documentação extJS.</p>
<p>Abraços e até a próxima</p>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Configure tab sequencing on a modal window]]></title>
<link>http://vegdave.wordpress.com/2009/07/15/configure-tab-sequencing-on-a-modal-window/</link>
<pubDate>Wed, 15 Jul 2009 23:26:33 +0000</pubDate>
<dc:creator>Dave</dc:creator>
<guid>http://vegdave.wordpress.com/2009/07/15/configure-tab-sequencing-on-a-modal-window/</guid>
<description><![CDATA[mmusson&#8217;s code post in this thread works well for me.]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p>mmusson&#8217;s code post in this <a href="http://extjs.com/forum/showthread.php?t=29231&#38;page=2">thread</a> works well for me. </p>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[GeoExt BaseLayerContainer and OverlayLayerContainer together]]></title>
<link>http://thinkwhere.wordpress.com/2009/07/02/geoext-baselayercontainer-and-overlaylayercontainer-together/</link>
<pubDate>Thu, 02 Jul 2009 10:55:13 +0000</pubDate>
<dc:creator>tim</dc:creator>
<guid>http://thinkwhere.wordpress.com/2009/07/02/geoext-baselayercontainer-and-overlaylayercontainer-together/</guid>
<description><![CDATA[If you want to use  GeoExt widgets BaseLayerContainer and OverlayLayerContainer in the same tree, li]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p>If you want to use  <a href="http://www.geoext.org/">GeoExt</a> widgets <a href="http://www.geoext.org/lib/GeoExt/widgets/tree/BaseLayerContainer.html">BaseLayerContainer</a> and <a href="http://www.geoext.org/lib/GeoExt/widgets/tree/OverlayLayerContainer.html">OverlayLayerContainer</a> in the same tree, like this:</p>
<div id="attachment_349" class="wp-caption alignnone" style="width: 405px"><a href="http://thinkwhere.wordpress.com/files/2009/07/geoextlayer.png"><img class="size-full wp-image-349" title="geoext baselayer and overviewlayer containers" src="http://thinkwhere.wordpress.com/files/2009/07/geoextlayer.png" alt="geoext baselayer and overviewlayer containers" width="395" height="170" /></a><p class="wp-caption-text">GeoExt BaseLayerContainer and OverlayLayerContainer</p></div>
<p><code>var layerRoot = new Ext.tree.TreeNode({<br />
text: "All Layers",<br />
expanded: true<br />
});<br />
layerRoot.appendChild(new GeoExt.tree.BaseLayerContainer({<br />
text: "Base Layers",<br />
map: map,<br />
expanded: true<br />
}));<br />
layerRoot.appendChild(new GeoExt.tree.OverlayLayerContainer({<br />
text: "Overlays",<br />
map: map,<br />
expanded: true<br />
}));<br />
var layerTree = new Ext.tree.TreePanel({<br />
title: "Map Layers",<br />
root: layerRoot,<br />
enableDD: true,<br />
collapsible: true,<br />
height: 200,<br />
expanded: true<br />
});</code></p>
<p><a href="http://geoext.blogspot.com/2009/06/geoext-05-rc1-announcement.html">GeoExt is now at 0.5RC1</a> and it is rather good!</p>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[createDelegate in ExtJS]]></title>
<link>http://vegdave.wordpress.com/2009/05/26/createdelegate-in-extjs/</link>
<pubDate>Wed, 27 May 2009 01:11:27 +0000</pubDate>
<dc:creator>Dave</dc:creator>
<guid>http://vegdave.wordpress.com/2009/05/26/createdelegate-in-extjs/</guid>
<description><![CDATA[createDelegate is an interesting way to pass a function object with a scope object. This is very use]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p>createDelegate is an interesting way to pass a function object with a scope object. This is very useful for using callback functions. For more information, see this <a href="http://www.extjs.tv/index.php/2009/tdg-i-007-create-delegate-and-scope/">screencast</a>. </p>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Pengenalan Form]]></title>
<link>http://e12a.wordpress.com/2009/05/10/pengenalan-form/</link>
<pubDate>Sun, 10 May 2009 16:01:50 +0000</pubDate>
<dc:creator>e12x</dc:creator>
<guid>http://e12a.wordpress.com/2009/05/10/pengenalan-form/</guid>
<description><![CDATA[Pada artikel sebelumnya saya telah membahas hal-hal dasar tentang ExtJs. Untuk artikel kali ini saya]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p>Pada artikel sebelumnya saya telah membahas hal-hal dasar tentang ExtJs. Untuk artikel kali ini saya akan mencoba membahas tentang pengetahuan dasar Form, pembuatan form dan validasi form.</p>
<p>pada aplikasi web umumnya, Form digunakan untuk input data yang di dalamnya bisa berupa label, textbox, textarea, option button, radio, checkbox, tombol submit dan reset. Dalam extJs komponen-komponen tersebut juga telah disediakan hanya saja dengan nama yang sedikit berbeda dan tentunya tampilan yang lebih aduhai. Disamping itu juga ada komponen tambahan seperti komponen tanggalan misalnya. untuk lebih jelasnya silahkan download di sini &#62;&#62; <a href="http://www.ziddu.com/download/4692688/ExtJSTutorials2.doc.html">download pdf</a></p>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Grid FAQ]]></title>
<link>http://techienote.wordpress.com/2009/04/30/grid-faq/</link>
<pubDate>Thu, 30 Apr 2009 22:22:21 +0000</pubDate>
<dc:creator>mylblog</dc:creator>
<guid>http://techienote.wordpress.com/2009/04/30/grid-faq/</guid>
<description><![CDATA[http://extjs.com/learn/Ext_FAQ_Grid]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p><a href="http://extjs.com/learn/Ext_FAQ_Grid" target="_blank">http://extjs.com/learn/Ext_FAQ_Grid</a></p>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Berkenalan dengan Ext JS]]></title>
<link>http://e12a.wordpress.com/2009/04/28/kenalan-ma-ext-js-yuk/</link>
<pubDate>Wed, 29 Apr 2009 03:24:20 +0000</pubDate>
<dc:creator>e12x</dc:creator>
<guid>http://e12a.wordpress.com/2009/04/28/kenalan-ma-ext-js-yuk/</guid>
<description><![CDATA[Ext JS Siapa lagi tuh? Keren gak seh? Kalo penasaran ma dia. Coba simak, baca dan praktekan apa yang]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p>Ext JS <img src='http://s.wordpress.com/wp-includes/images/smilies/icon_confused.gif' alt=':-?' class='wp-smiley' />  Siapa lagi tuh? Keren gak seh? Kalo penasaran ma dia. Coba simak, baca dan praktekan apa yang ada dalam artikel ini. Here We Go..<br />
<strong>Ext JS</strong> adalah sebuah pustaka atau bisa dikatakan Framework <em>JavaScript</em> lintas browser untuk membangun aplikasi Web berbasis RIA(Rich Internet Aplication), yaitu aplikasi web berbasis GUI atau apliaksi Web layaknya aplikasi Desktop. Ext JS ini mempunyai beberapa fitur seperti:</p>
<ul>
<li>Mempunyai performa tinggi dan widget UI yang bisa dapat diatur</li>
<li>Mempunyai desain menarik, terdokumentasi</li>
<li>Tersedia versi komersial maupun yang open sourc</li>
</ul>
<p>Ext JS mendukung web browser berikut:</p>
<ul>
<li>Internet Exploler 6+</li>
<li>Firefox 1.5+(PC, Mac)</li>
<li>Safari 3+</li>
<li>Opera 9(PC, Mac)</li>
</ul>
<h3>Memulai Ext JS</h3>
<p>Sebelum memulai membuat aplikasi dengan Ext JS ini, ada beberapa hal yang perlu dilakukan.<!--more--></p>
<ol>
<li>download ext Js di situs resminya <a href="www.extjs.com/download">www.extjs.com/download</a>. Pada artikel ini penulis menggunakan extJs 2.2.0. anda bisa memilih paket yang dibutuhkan termasuk source code berisi contoh-contoh aplikasi jadi</li>
<li>ekstrak file ext Js yang sudah Anda download di sembarang komputer, misalkan di d:\belajar_extjs</li>
</ol>
<h3>Beberapa file yang dibutuhkan</h3>
<p>Jika kita ingin membuat aplikasi web menggunakan Ext JS, mau tidak mau kita harus memasukan 3 file berikut pada aplikasi kita:</p>
<ol>
<li>ext-all.css(extjs/resources/css/ext-all.css) adala file stylesheet/css yang mengontrol look and feel dari widget Ext. file ini harus diinkludkan tanpa ada sedikitpun  perubahan.</li>
<li>ext-base.js(extjs/adapter/ext/ext-base.js) adalah file yang menyediakan core function dari ext js. Dia diibaratkan sebagai mesin dari sebuah mobil. File ini juda dapat kita gunakan jika kita ingin memakai library lain, sperti jQuery atau library lainnya</li>
<li>ext-all-debug.js atau ext-all.js(extjs/ext-all-debug.js atau extjs/ext-all.js). semua widget berada dalam file ini</li>
</ol>
<h3>Apliksi pertamaku</h3>
<p>Setelah Anda mengetahui beberapa hal dasar, sekarang saatnya Anda mencoba mempraktekan atau tepatnya membuat suatu aplikasi sederhana. Dalam aplikasi pertama ini akan kita coba menampilkan pesan pada saat halaman web diload. Buat file dengan nama <strong>index.html</strong>. Saya asumsikan library ext js diekstrak di folder <em>extjs</em></p>
<p><img class="aligncenter size-full wp-image-220" title="index2" src="http://e12a.wordpress.com/files/2009/04/index2.jpg" alt="index2" width="510" height="168" /></p>
<p>Pada file index.html setelah kita tambahkan tiga file penting, kita juga menambahkan satu file <strong>message.js</strong>. File inilah yang nanti akan menampilkan pesan.  <strong></strong></p>
<p><strong>Message.js</strong></p>
<pre>
<pre class="brush: jscript;">

Ext.onReady(function(){
Ext.Msg.alert('Aplikasi Pertama', 'Belajar Ext JS, asyik boo...');
});
</pre>
</pre>
<p>Buka browser anda lalu buka file <strong>index.html</strong>. Hasilnya seperti gambar berikut ini:</p>
<p><img class="aligncenter size-medium wp-image-221" title="halo2" src="http://e12a.wordpress.com/files/2009/04/halo2.jpg?w=300" alt="halo2" width="300" height="262" /></p>
<p>Selamat Anda berhasil.<br />
<a href="http://www.ziddu.com/download/4691601/ExtJSTutorials.doc.html">download pdf</a><br />
Tutorial berikutnya &#62;&#62; Ext Js: Pengenalan Form</p>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Grid com Checkbox no Ext JS]]></title>
<link>http://emdia.wordpress.com/2009/04/24/grid-com-checkbox-no-ext-js/</link>
<pubDate>Fri, 24 Apr 2009 22:24:29 +0000</pubDate>
<dc:creator>Vitor Hugo</dc:creator>
<guid>http://emdia.wordpress.com/2009/04/24/grid-com-checkbox-no-ext-js/</guid>
<description><![CDATA[Resolvi escrever está dica de como inserir um Checkbox em um Grid, após passar algumas horas apanhan]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p>Resolvi escrever está dica de como inserir um Checkbox em um Grid,<br />
após passar algumas horas apanhando.</p>
<p>O caminho para obter o resultado esperado foi pesquisar, risos e<br />
bastante. Brincadeira crie os métodos abaixo</p>
<pre class="brush: jscript;">
function formatImagem(value, cell, rec, rowIndex, colIndex, ds) {
   return ['&lt;img ', 'class=&quot;checkbox&quot; ', 'src=&quot;./images/',
               value? 'checked.gif' : 'unchecked.gif', '&quot;/&gt;'].join(&quot;&quot;);
};

function formatBoolean(value, cell, rec, rowIndex, colIndex, ds) {
	  if(value == true)
		  return '&lt;input type=&quot;checkbox&quot; name=&quot;' + 1 + '&quot; checked disabled/&gt;';
	  else
		  return '&lt;input type=&quot;checkbox&quot; name=&quot;' + 1 + '&quot; disabled/&gt;';

};
</pre>
<p>Para a criação de uma Grid utilizei a classe Ext.grid.ColumnModel<br />
do Ext JS, você pode encontrar mais detalhes sobre o assunto <a href="http://extjs.com/deploy/dev/docs/" target="_blank">aqui</a>.</p>
<pre class="brush: jscript;">
var cm = new Ext.grid.ColumnModel([
   { header : 'Nome' , dataIndex : 'Nome', sortable : true} ,
   { header : 'Cargo' , dataIndex : 'Cargo', sortable : true } ,
   { header : 'Status' , dataIndex : 'Status 1' , renderer: formatBoolean } ,
   { header : 'Status' , dataIndex : 'Status 2' , renderer: formatImagem }
]);
</pre>
<p>O que faz a mágica e o atributo chamado <strong>renderer</strong> que renderiza<br />
um HTML dentro do Grid com isto é possível inserir uma imagem<br />
ou o tão esperado Checkbox.</p>
<p>Mas para futuras pesquisas pretendo descobrir como utilizar o<br />
atributo <strong>editor</strong> que insere o Checkbox dentro do Grid como um<br />
componente onde poderia facilitar bastante o seu uso.</p>
<p>Visualize o resultado deste tutorial:</p>
<div id="attachment_97" class="wp-caption alignnone" style="width: 417px"><img class="size-full wp-image-97" title="checkbox" src="http://emdia.wordpress.com/files/2009/04/checkbox.jpg" alt="Tela utilizando Grid com Checkbox" width="407" height="309" /><p class="wp-caption-text">Tela utilizando Grid com Checkbox</p></div>
<p>Mas este será um próximo estudo que terei que fazer, por hora<br />
ficaremos por aqui.</p>
<p>Espero que essa dica possa ser útil, pra alguém e se alguém quiser<br />
completar, seria bem legal.</p>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Optional fields with XTemplate in Ext JS]]></title>
<link>http://vegdave.wordpress.com/2009/04/23/optional-fields-with-xtemplate-in-ext-js/</link>
<pubDate>Thu, 23 Apr 2009 22:08:07 +0000</pubDate>
<dc:creator>Dave</dc:creator>
<guid>http://vegdave.wordpress.com/2009/04/23/optional-fields-with-xtemplate-in-ext-js/</guid>
<description><![CDATA[This thread helped me to use Ext JS XTemplate with optional fields. The only thing I had to figure o]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p><a href="http://extjs.com/forum/showthread.php?p=125279#post125279">This thread</a> helped me to use Ext JS XTemplate with optional fields. The only thing I had to figure out was defining my own check exists function, <code>this.exists()</code>. </p>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Historically Important: Sanjiv Jivan's Blog: Update on future direction of GWT-Ext (Licensing debacle)]]></title>
<link>http://richardwalker.wordpress.com/2009/03/25/historically-important-sanjiv-jivans-blog-update-on-future-direction-of-gwt-ext-licensing-debacle/</link>
<pubDate>Wed, 25 Mar 2009 20:11:57 +0000</pubDate>
<dc:creator>richardwalker</dc:creator>
<guid>http://richardwalker.wordpress.com/2009/03/25/historically-important-sanjiv-jivans-blog-update-on-future-direction-of-gwt-ext-licensing-debacle/</guid>
<description><![CDATA[NOTE: This is of &#8220;historical&#8221; importance because it was the cause of the &#8220;early de]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p><strong>NOTE: This is of &#8220;historical&#8221; importance because it was the cause of the &#8220;early death&#8221; of Gwt-Ext. It&#8217;s no doubt for the best, because SmartGwt has supplanted it.</strong></p>
<p><strong>So, there is no longer a call to use a thinly-wrapped Javascript library &#8211; both SmartGwt and Ext-Gwt (a.k.a. Gxt)  are written in Java and will take full advantage of improvements to the <a class="zem_slink" title="Google Web Toolkit" rel="homepage" href="http://code.google.com/webtoolkit">GWT</a> compiler.</strong></p>
<p><strong>In addition, it makes it easier for libraries like SmartGwt and Gxt to track future widget developments and changes such as the new event handling in Gwt 1.6</strong></p>
<p><a href="http://www.jroller.com/sjivan/entry/update_on_future_direction_of1">Sanjiv Jivan&#8217;s Blog</a>.</p>
<blockquote><p>In light of <a class="zem_slink" title="Ext (javascript library)" rel="homepage" href="http://extjs.com/">ExtJS</a> going <a class="zem_slink" title="GNU General Public License" rel="wikipedia" href="http://en.wikipedia.org/wiki/GNU_General_Public_License">GPL</a>, I&#8217;d like to provide an update to GWT-Ext users on the future direction of the project. While many users would like to see GWT-Ext continue to provide an <a class="zem_slink" title="GNU Lesser General Public License" rel="wikipedia" href="http://en.wikipedia.org/wiki/GNU_Lesser_General_Public_License">LGPL</a> stack with Ext 2.0.2, a few others felt that GWT-Ext should just go ahead and support the GPL versions of ExtJS.</p>
<p>One of the early adopters of GWT-Ext sent me an email yesterday voicing his concerns saying that since GWT-Ext fully depends on ExtJS, moving to support Ext GPL would be the right thing to do. He goes on to say that &#8220;..licensing is a big deal, but to most people who are using the ext product, GPL is not a bad change. The biggest hits will be the big companies that are using it, not the little people. GPL for these bigger companies is perfectly fine.&#8221;</p>
<p>I value his opinion and I&#8217;m sure some others feel the same way, but I have a different view on this matter. There are two aspects to ExtJS going GPL :</p>
<p>The first is the ethical aspect of a company choosing to change licenses on a dime and the questionable way they got to the point they have. There are several other excellent Javascript libraries like <a href="http://www.smartclient.com/" target="_blank">SmartClient</a> that haven&#8217;t gained the recognition they deserve and community support only because they were honest and consistent in their licensing model. While its no big deal to many to buy a (currently) reasonably priced commercial Ext license, supporting such a move from LGPL to GPL is an extremely bad precedent to set in the OSS community that has flourished on the basis of trust.</p></blockquote>
<div id="attachment_289" class="wp-caption alignnone" style="width: 460px"><a href="http://en.wikipedia.org/wiki/GNU_General_Public_License" target="_blank"><img class="size-full wp-image-289" style="border:1px solid black;" title="Quick Guide to gplv3 compatibility" src="http://richardwalker.wordpress.com/files/2009/03/519px-quick-guide-gplv3-compatibilitysvg.png" alt="Quick Guide to gplv3 compatibility" width="450" height="519" /></a><p class="wp-caption-text">Quick Guide to gplv3 compatibility</p></div>
<div class="zemanta-pixie"><em><img class="zemanta-pixie-img" src="http://img.zemanta.com/pixy.gif" alt="" /></em></div>
<div class="zemanta-pixie"><em>Note: messiness above is Adobe&#8217;s fault, caused by the &#8220;svg&#8221; standard (or lack thereof)</em></div>
<div class="zemanta-pixie"><em>Note: &#8220;svg&#8221; is a rare file type, &#8220;scalable vector graphics.&#8221;</em></div>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Ext grid with expandable rows - AJAX support]]></title>
<link>http://leszczynski.wordpress.com/2009/03/25/4/</link>
<pubDate>Wed, 25 Mar 2009 15:30:35 +0000</pubDate>
<dc:creator>leszek</dc:creator>
<guid>http://leszczynski.wordpress.com/2009/03/25/4/</guid>
<description><![CDATA[Ext homepage shows an example of a grid with expandable rows. However, the data in the expanded rows]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p>Ext homepage shows an <a href="http://extjs.com/deploy/dev/examples/grid/grid3.html" title="http://extjs.com/deploy/dev/examples/grid/grid3.html">example of a grid with expandable rows</a>. However, the data in the expanded rows is loaded together with all the data in the grid. I needed to change this behaviour so the data would be loaded with an AJAX request, only after the row is expanded. So here is what I did:</p>
<p>First, download the <a href="http://extjs.com/deploy/dev/examples/grid/RowExpander.js/" title="http://extjs.com/deploy/dev/examples/grid/RowExpander.js">RowExpander plugin</a>, which is used in the example. Next, replace the <strong>getBodyContent</strong> method with:</p>
<pre>
getBodyContent : function(record, index, body){
  if(!this.enableCaching){
    return this.tpl.apply(record.data);
  }

  var content = this.bodyContent[record.id];
  if(!content){
    var th = this;
    Ext.Ajax.request({
      url: this.url,
      method: "GET",
      params: { id: record.id },
      success: function(res) {
        var result = eval("("+res.responseText+")");
        var content = th.tpl.apply(result);
        th.bodyContent[record.id] = content;
        body.innerHTML = content;
      },
      failure: function(res) {
        content = "Error loading data";
        body.innerHTML = content;
      }
    });
    content = "Loading...";
    this.bodyContent[record.id] = content;
  }
return content;
}</pre>
<p>As you can see, the method signature has been changed, so you have to add <strong>body</strong> to the method invocation in <strong>beforeExpand</strong> method. Also, the <strong>url</strong> to the AJAX service has to be smuggled somehow &#8211; I just passed it in the <strong>RowExpander</strong> initialization parameters.</p>
<p>This probably is not the most elegant solution to this issue &#8211; but it has one great advantage: it works <img src='http://s.wordpress.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> .</p>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[TabPanel não renderiza Ext JS]]></title>
<link>http://emdia.wordpress.com/2009/03/18/tabpanel-nao-renderiza-ext-js/</link>
<pubDate>Wed, 18 Mar 2009 23:04:14 +0000</pubDate>
<dc:creator>Vitor Hugo</dc:creator>
<guid>http://emdia.wordpress.com/2009/03/18/tabpanel-nao-renderiza-ext-js/</guid>
<description><![CDATA[Neste post iremos demonstrar como solucionar um problema que passei quando estava utilizando o compo]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p>Neste post iremos demonstrar como solucionar um problema que passei quando estava utilizando o componente do Ext JS.</p>
<p>Segue a baixo o código que cria um TabPanel:</p>
<pre class="brush: jscript;">
var form = new Ext.form.FormPanel( {
	applyTo :Ext.getBody(),
	title :'TabPanel Simples',
	width :500,
	height :300,
	region :'center',

	items : [ {
		id :'tp',
		xtype :'tabpanel',
		activeTab :0,
		width :450,
		height :250,
		bufferResize :500,
		bodyBorder :false,
		items : [ {
			title :'Aba 1',
			// layout :'form',
			items : [ new Ext.form.TextField( {
				id :'tf1',
				name :'uname',
				inputType :'text',
				fieldLabel :'Name',
				width :150
			}) ]
		}, {
			title :'Aba 2',
			// layout :'form',
			items : [ new Ext.form.TextField( {
				id :'tf2',
				name :'uname',
				inputType :'text',
				fieldLabel :'Name',
				width :150
			}) ]
		} ]
	// Inserir Listener aqui
	} ]

});
</pre>
<p>Este trecho de código produz, uma tela parecida com está:</p>
<div id="attachment_87" class="wp-caption alignnone" style="width: 310px"><img class="size-medium wp-image-87" title="tab_panel_errada" src="http://emdia.wordpress.com/files/2009/03/tab_panel_errada.jpg?w=300" alt="TabPanel com o conteúdo incorreto" width="300" height="182" /><p class="wp-caption-text">TabPanel com o conteúdo incorreto</p></div>
<p>Após descomentar o seguinte trecho de código tudo volta ao normal:</p>
<pre class="brush: jscript;">
layout:'form',
</pre>
<p>A resposta para este problema, e que aparentemente o componente<br />
se perde e não consegue adicionar os outros componentes no local<br />
correto.</p>
<p>Após ter descomentado o código, a tela ficará da seguinte maneira:</p>
<dl class="wp-caption alignnone">
<dt class="wp-caption-dt"><img class="size-medium wp-image-89" title="tabpanel1" src="http://emdia.wordpress.com/files/2009/03/tabpanel1.jpg?w=300" alt="TabPanel correto, exibindo a informação do Painel interno." width="300" height="180" /></dt>
</dl>
<p>Outra maneira de resolver este mesmo problema é implementando<br />
um listener, que atualiza o layout em tempo de execução.</p>
<pre class="brush: jscript;">
, listeners: {
   tabchange: function(tabp,tab){
      tab.doLayout();
   }
}
</pre>
<p>Espero que está dica sirva pra você caso esteja passando pela<br />
mesma coisa.</p>
<p>Até a próxima.</p>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Membuat Form Sederhana Menggunakan Ext JS]]></title>
<link>http://r5131n.wordpress.com/2009/10/21/bikin-form-sederhana-pake-ext-js/</link>
<pubDate>Wed, 21 Oct 2009 17:16:02 +0000</pubDate>
<dc:creator>r5131n</dc:creator>
<guid>http://r5131n.wordpress.com/2009/10/21/bikin-form-sederhana-pake-ext-js/</guid>
<description><![CDATA[Berikut ini kita akan belajar membuat Form Sederhana menggunakan Ext JS. Sebelumnya kita harus menyi]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p>Berikut ini kita akan belajar membuat <em>Form</em> Sederhana menggunakan Ext JS. Sebelumnya kita harus menyiapkan <em>Framework</em> yang akan digunakan, Ext JS bisa di <em>download</em> di <a href="http://www.extjs.com" target="_blank">www.extjs.com</a>.</p>
<p>Jika sudah kita akan memulainya.</p>
<p>1. buat file .html untuk tampilannya, dibawah ini saya menggunakan nama formdasar.html. Berikut contoh scriptnya.</p>
<p><img class="aligncenter size-full wp-image-134" title="source 2" src="http://r5131n.wordpress.com/files/2009/10/source-21.jpg" alt="source 2" width="600" height="301" /></p>
<p><!--more-->Keterangan:</p>
<ol>
<li>Baris ke 5-7 adalah library yang harus disertakan untuk membuat aplikasi menggunakan Ext JS.</li>
<li>Baris 9 adalah script dari Ext Js itu sendiri sebagai script pembentuk <em>Form</em>.</li>
<li>Baris 14 adalah frame id dimana <em>Form</em> akan ditampilkan</li>
</ol>
<p>2.  Buat file .js, dimana file ini adalah file pembentuk <em>Form, </em>dibawah ini saya menggunakan file bernama formdasar1.js dan diletakan pada folder yang sama dengan file formdasar.html</p>
<p><img class="aligncenter size-full wp-image-135" title="source 1" src="http://r5131n.wordpress.com/files/2009/10/source-1.jpg" alt="source 1" width="411" height="597" /></p>
<p>Keterangan:</p>
<ol>
<li>Ext.form.Formpanel adalah class yang digunakan untuk membetuk <em>form </em>dengan bentuk panel. Pada bahasan lain kita akan membahas <em>form </em>dengan bentuk <em>fly window</em></li>
<li>Baris 32 &#8216;tesrender&#8217; adalah id <em>body </em>untuk tempat menampilkan <em>form </em>di <em>browser</em>, dalam hal ini di file formdasar.html baris 14</li>
<li>Baris 9 adalah <em>default </em>komponen yang akan dibuat sebagai <em>item</em>, jika kita tidak menuliskan properti <em>&#8220;xtype:&#8230;.&#8221;</em>, maka akan secara <em>default </em>membuat <em>textfield/textbox</em></li>
</ol>
<p>Hasil akhir jika kita menjalankan file formdasar.html maka akan muncul tampilan seperti berikut.</p>
<p><img class="aligncenter size-full wp-image-136" title="disp" src="http://r5131n.wordpress.com/files/2009/10/disp.jpg" alt="disp" width="477" height="416" /></p>
<p>Selamat mencoba.</p>
</div>]]></content:encoded>
</item>

</channel>
</rss>
