Ext.define('Ext.overrides.app.Application', {
override: 'Ext.app.Application',
uses: [
'Ext.tip.QuickTipManager'
],
autoCreateViewport: false,
config: {
enableQuickTips: null
},
quickTips: true,
updateEnableQuickTips: function(enableQuickTips) {
this.setQuickTips(enableQuickTips);
},
applyMainView: function(mainView) {
var view, proto, config, protoPlugins, configPlugins;
if (typeof mainView === 'string') {
view = this.getView(mainView);
config = {};
} else {
config = mainView;
view = Ext.ClassManager.getByConfig(mainView);
}
proto = view.prototype;
if (!proto.isViewport) {
protoPlugins = Ext.Array.from(proto.plugins);
configPlugins = Ext.Array.from(config.plugins);
config = Ext.apply({}, config);
config.plugins = ['viewport'].concat(protoPlugins, configPlugins);
}
return view.create(config);
},
getDependencies: function(cls, data, requires) {
var Controller = Ext.app.Controller,
proto = cls.prototype,
namespace = data.$namespace,
viewportClass = data.autoCreateViewport;
if (viewportClass) {
if (!namespace) {
Ext.raise("[Ext.app.Application] Can't resolve namespace for " +
data.$className + ", did you forget to specify 'name' property?");
}
if (viewportClass === true) {
viewportClass = 'Viewport';
} else {
requires.push('Ext.plugin.Viewport');
}
Controller.processDependencies(proto, requires, namespace, 'view', viewportClass);
}
},
onBeforeLaunch: function() {
var me = this,
autoCreateViewport = me.autoCreateViewport;
if (me.getQuickTips()) {
me.initQuickTips();
}
if(autoCreateViewport) {
me.initViewport();
}
this.callParent(arguments);
},
getViewportName: function () {
var name = null,
autoCreate = this.autoCreateViewport;
if (autoCreate) {
name = (autoCreate === true) ? 'Viewport' : autoCreate;
}
return name;
},
initViewport: function() {
this.setMainView(this.getViewportName());
},
initQuickTips: function() {
Ext.tip.QuickTipManager.init();
}
});