Based on ExtJS, use the basic Ext.ux.Desktop, extend it, refine it.