/** Used to choose an image @constructor */ hui.ui.ImageInput = function(options) { this.name = options.name; this.options = hui.override({width:48,height:48},options); this.element = hui.get(options.element); this.value = null; hui.ui.extend(this); this._attach(); }; hui.ui.ImageInput.prototype = { _attach : function() { hui.listen(this.element,'click',this._showPicker.bind(this)); hui.listen(hui.get.firstByTag(this.element,'a'),'click',this._clear.bind(this)); }, /** @Deprecated */ setObject : function(obj) { this.value = obj; this._updateUI(); }, /** @Deprecated */ getObject : function() { return this.value; }, getValue : function() { return this.value; }, setValue : function(obj) { this.setObject(obj); }, _clear : function(e) { hui.stop(e); this.reset(); this._fireChange(); }, reset : function() { this.value = null; this._updateUI(); }, _updateUI : function() { hui.cls.set(this.element,'hui_imageinput_full',this.value !== null); if (this.value === null) { this.element.style.backgroundImage = ''; } else { var url = hui.ui.resolveImageUrl(this,this.value,this.options.width,this.options.height); this.element.style.backgroundImage = 'url('+url+')'; } }, _showFinder : function() { if (!this.finder) { this.finder = hui.ui.Finder.create( this.options.finder ); this.finder.listen({ $select : function(object) { this.setObject(object); this._fireChange(); this.finder.hide(); }.bind(this) }); } this.finder.show(); }, _showPicker : function() { if (this.options.finder) { this._showFinder(); } }, /** @private */ $visibilityChanged : function() { if (this.finder && !hui.dom.isVisible(this.element)) { this.finder.hide(); } }, _fireChange : function() { this.fireValueChange(); } };