--- /dev/null
+/*!
+ * Ext JS Library 4.0
+ * Copyright(c) 2006-2011 Sencha Inc.
+ * licensing@sencha.com
+ * http://www.sencha.com/license
+ */
+
+/**
+ * @class Ext.ux.desktop.Wallpaper
+ * @extends Ext.Component
+ * <p>This component renders an image that stretches to fill the component.</p>
+ */
+Ext.define('Ext.ux.desktop.Wallpaper', {
+ extend: 'Ext.Component',
+
+ alias: 'widget.wallpaper',
+
+ cls: 'ux-wallpaper',
+ html: '<img src="'+Ext.BLANK_IMAGE_URL+'">',
+
+ stretch: false,
+ wallpaper: null,
+
+ afterRender: function () {
+ var me = this;
+ me.callParent();
+ me.setWallpaper(me.wallpaper, me.stretch);
+ },
+
+ applyState: function () {
+ var me = this, old = me.wallpaper;
+ me.callParent(arguments);
+ if (old != me.wallpaper) {
+ me.setWallpaper(me.wallpaper);
+ }
+ },
+
+ getState: function () {
+ return this.wallpaper && { wallpaper: this.wallpaper };
+ },
+
+ setWallpaper: function (wallpaper, stretch) {
+ var me = this, imgEl, bkgnd;
+
+ me.stretch = (stretch !== false);
+ me.wallpaper = wallpaper;
+
+ if (me.rendered) {
+ imgEl = me.el.dom.firstChild;
+
+ if (!wallpaper || wallpaper == Ext.BLANK_IMAGE_URL) {
+ Ext.fly(imgEl).hide();
+ } else if (me.stretch) {
+ imgEl.src = wallpaper;
+
+ me.el.removeCls('ux-wallpaper-tiled');
+ Ext.fly(imgEl).setStyle({
+ width: '100%',
+ height: '100%'
+ }).show();
+ } else {
+ Ext.fly(imgEl).hide();
+
+ bkgnd = 'url('+wallpaper+')';
+ me.el.addCls('ux-wallpaper-tiled');
+ }
+
+ me.el.setStyle({
+ backgroundImage: bkgnd || ''
+ });
+ }
+ return me;
+ }
+});