Описываем абстрактный класс, куда выносим то, что у нас планируется использовать во всех компонентах такого типа, данный абстрактный класс пустой.
Ext.ns('App');
App.AbstractPanel = Ext.extend(Ext.Panel, {
initComponent: function() {
// create config object
var config = {};
// build config
this.buildConfig(config);
// apply config
Ext.apply(this, Ext.apply(this.initialConfig, config));
// call parent
App.AbstractPanel.superclass.initComponent.call(this);
}, // eo function initComponent
buildConfig: function(config) {
this.buildItems(config);
}, // eo function buildConfig
buildItems: function(config) {
config.items = undefined;
} // eo function buildItems
});
Пишем свой преднастроенный класс
Ext.ns('App.Catalog');
App.Catalog.Panel = Ext.extend(App.AbstractPanel, {
buildItems:function(config) {
config.items = [{
title : 'Левая панель',
region : 'west',
layout : 'fit',
width : 260,
split : true,
collapsible : true,
autoScroll : true,
margins : '5 0 5 5',
cmargins : '5 5 5 5'
},{
title : 'Правая панель',
region : 'center',
layout : 'fit',
margins : '5 5 5 0',
cmargins : '5 5 5 0'
}];
} // eo function buildItems
});
// Register xtype
Ext.reg('catalogpanel', App.Catalog.Panel);
Ну и далее уже где вам нужно вызывете catalogpanel через xtype, например в лайоуте, например:
var main_viewport = new Ext.Viewport({
layout:'border',
title:'Основное окно',
items:[{xtype: 'catalogpanel', layout: 'border', border: false}]
});