The latest 2Gears news and interesting articles

Sprintf formatter for Sencha Touch and ExtJS

Posted · Add Comment

After programming in multiple languages I have come to depend on sprintf quite a lot. Almost every language I know of provides a fairly decent version of the sprintf formatter. Unfortunately JavaScript is not one of them. For a lot of projects we use ExtJS and Sencha Touch. While both frameworks offer quite some string [...]

Using Model Associations in Sencha Touch 2 and Ext JS 4

Posted · 44 Comments

The data package in Sencha Touch and ExtJS is awesome. Models let you easily and robustly configure your data structures and easily use them in all sorts of components. One of the model features that have a lot of potential but are used and understood relatively poorly are model associations. One of the most interesting [...]

Ludei interviews Appoint:solutions about CocoonJS

Posted · Add Comment

This week at the Game Developer Conference in San Francisco, Ludei announced their new flagship product CocoonJS. The free product will provide HTML5 game developers with an extremely easy to use native wrapper around the game. Besides giving the resulting app a performance and speed increase of up to 1000% it also provides access to [...]

MonsterMove: a HTML5 Multiplayer Mobile game

Posted · 1 Comment

Appoint Solutions has decided to break the conventional thoughts that HTML5 is not yet ready for fast moving realtime online multiplayer games by doing exactly that. The resulting game that was built for 2Gears is called MonsterMove. It was created completely with javascript and HTML5 and running on Ludei’s brand new CocoonJS platform. MonsterMove MonsterMove is an [...]

Sencha Touch TimePicker form field and Picker sheet

Posted · 32 Comments

Currently we are using Sencha Touch as the basis for our new app.The Sencha Touch 1.1 framework includes a very large number of readily available form fields including the DatePicker form field and DatePicker popup sheet itself. Strangely enough, a TimePicker is missing so we decided to build one ourselves. The TimePicker below is [...]

Mobile User-Experience: Sencha Touch LoadMask delayed

Posted · 20 Comments

The Sencha Touch HTML5 mobile web app framework is great for building cross-platform mobile applications. On current mobile browsers the performance can however be tricky. For our application we squeeze every bit of performance out of Sencha Touch. This post describes an easy way to make sure a LoadMask in Sencha Touch is shown [...]

100 Days for KiKa – Cycling for charity

Posted · Add Comment

Bicycling 14.000 kilometres around the entire continent of Australia in only 100 days. This grueling journey has just been started by the two dutch men, Reinier van Dieren and Mark van Rijmenam. The goal: to collect as much money as possible for the Dutch charity KiKa that supports research into and treatment of children’s cancer. [...]

ComboBox editor (remote) and renderer for ExtJS EditorGridPanel

Posted · 45 Comments

Adding a ComboBox editor to a ExtJS EditorGridPanel column can by tricky if your ComboBox uses a remote store. This post demonstrates using a custom grid column type and associated renderer to solve this problem. ExtJS EditorGridPanel The ExtJS EditorGrid Panel is excellent for editing records from within the grid. The component allows one to [...]

ExtJS RowExpander plugin overriding default getRowClass

Posted · 5 Comments

ExtJS (3) is great for OO style interface design but has a couple of strange behaviors. For instance when adding the ExtJS RowExpander plugin to a grid, the plugin overrides the gridView’s getRowClass function. That’s not really what you want. For instance, I want to mark certain records in a grid red when they are [...]

ExtJS Global eventmanager with destroy catcher

Posted · Add Comment

In my applications I like to have a global eventmanager that can be instructed to listen to certain events and call registered event handlers. Jonathan Julian proposed an elegant way of creating a global eventmanager by creating an instance of Observable. This works for the most part… if you don’t destroy any listeners runtime.   [...]