/** * Project  : AMDA-NG * Name : SendToSampButtonUI.js * @class amdaUI.SendToSampButtonUI * @extends Ext.Button * @brief Button use to send VOTable or FITS images via SAMP protocole (View) * @author Benjamin RENARD * @version $Id: SendToSampButtonUI.js 1459 2013-04-22 13:19:43Z benjamin $ ******************************************************************************** * FT Id : Date : Name - Description ******************************************************************************* * */ Ext.define('amdaUI.SendToSampButtonUI', { extend: 'Ext.Button', alias: 'widget.sendToSampButton', folderId : '', voTableId : '', type : 'votable', sendOpt : {}, onSendToSamp : null, constructor: function(config) { this.initConfig(config); this.callParent(); }, getMenuItem : function(name,id,icon) { var me = this; return { text : name+' ('+id+')', clientId : id, handler : function () { me.testSAMPConnection(function () { if (me.onSendToSamp) me.onSendToSamp.call(this,id,me.sendOpt); }); }, icon : icon }; }, testSAMPConnection : function(onConnected) { var me = this; myDesktopApp.getLoadedModule(myDesktopApp.dynamicModules.interop.id, true, function (module) { if (!module.sampConnected()) { module.switchSampConnect(); } else { if (onConnected) onConnected.call(); } }); }, updateMenu : function() { var me = this; this.menu.removeAll(); this.testSAMPConnection(function () { var clients = []; var interopModule = myDesktopApp.getLoadedModule(myDesktopApp.dynamicModules.interop.id); if (!interopModule) return false; switch (me.type) { case 'fits' : clients = interopModule.getFITSClients(); break; default : clients = interopModule.getVOTableClients(); } Ext.each(clients,function(client) { if (client['id'] != 'hub') me.menu.add(me.getMenuItem(client['name'],client['id'],client['icon'])); }); if (clients.length > 0) { me.menu.add('-'); me.menu.add(me.getMenuItem('all clients','hub')); } }); return true; }, maybeShowMenu: function() //overrided function { var me = this; if (me.updateMenu() && me.menu && !me.hasVisibleMenu() && !me.ignoreNextClick) { me.showMenu(); } }, initConfig: function(config) { this.onSendToSamp = config.onSendToSamp; this.sendOpt = config.sendOpt; if (config.type) this.type = config.type; var newConfig = { text: 'Send (via SAMP) to ...', menu : [], scope : this }; Ext.apply(this, newConfig); } });