/** * This class acts as a factory for environment-specific viewport implementations. * * Please refer to the {@link Ext.Viewport} documentation about using the global instance. * @private */Ext.define('Ext.viewport.Viewport', { requires: [ 'Ext.viewport.Ios', 'Ext.viewport.Android', 'Ext.viewport.WindowsPhone' ], singleton: true, setup: function (config) { var osName = Ext.os.name, viewportName, viewport; switch (osName) { case 'Android': viewportName = (Ext.browser.name === 'ChromeMobile') ? 'Default' : 'Android'; break; case 'iOS': viewportName = 'Ios'; break; case 'Windows': viewportName = (Ext.browser.name === 'IE') ? 'WindowsPhone' : 'Default'; break; case 'WindowsPhone': viewportName = 'WindowsPhone'; break; default: viewportName = 'Default'; break; } return Ext.Viewport = viewport = Ext.create('Ext.viewport.' + viewportName, config); }}); // Docs for the singleton instance created by above factory: /** * @class Ext.Viewport * @extends Ext.viewport.Default * @singleton * * Ext.Viewport is an instance created when you use {@link Ext#setup}. Because {@link Ext.Viewport} extends from * {@link Ext.Container}, it has a {@link #layout} that defaults to {@link Ext.layout.Card}. This means you * can add items to it at any time, from anywhere in your code. The {@link Ext.Viewport} {@link #cfg-fullscreen} * configuration is `true` by default, so it will take up your whole screen. * * @example raw * Ext.application({ * name: 'MyApp', * * launch: function() { * Ext.Viewport.add({ * xtype: 'panel', * title: 'New Panel', * html: 'My new panel!' * }); * } * }); * * If you want to customize anything about this {@link Ext.Viewport} instance, you can do so by adding a property * called `viewport` into your {@link Ext#application} object: * * @example raw * Ext.application({ * name: 'MyApp', * * viewport: { * layout: 'vbox' * }, * * launch: function() { * Ext.Viewport.add([{ * xtype: 'panel', * flex: 1, * title: 'Top Panel', * html: 'The top panel' * }, { * xtype: 'panel', * flex: 1, * title: 'Bottom Panel', * html: 'The bottom panel' * }]); * } * }); * * **Note** if you use {@link Ext#onReady}, this instance of {@link Ext.Viewport} will **not** be created. Though, in most cases, * you should **not** use {@link Ext#onReady}. */