/** * 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 () { if (!me.testSAMPConnection()) return; if (me.onSendToSamp) me.onSendToSamp.call(this,id,me.sendOpt); }, icon : icon }; }, testSAMPConnection : function() { var interopModule = myDesktopApp.getLoadedModule(myDesktopApp.dynamicModules.interop.id); if (!interopModule) return false; if (!interopModule.sampConnected()) { interopModule.switchSampConnect(); return false; } return true; }, updateMenu : function() { var me = this; this.menu.removeAll(); if (!this.testSAMPConnection()) return false; var clients = []; var interopModule = myDesktopApp.getLoadedModule(myDesktopApp.dynamicModules.interop.id); if (!interopModule) return false; switch (this.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); } });