Blame view

js/app/views/SendToSampButtonUI.js 2.93 KB
16035364   Benjamin Renard   First commit
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
/**
 * 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 ()
    		{
2325998f   Benjamin Renard   Fix hub connectio...
44
45
46
47
    			me.testSAMPConnection(function () {
				if (me.onSendToSamp)
					 me.onSendToSamp.call(this,id,me.sendOpt);
			});
16035364   Benjamin Renard   First commit
48
49
50
51
52
    		},
    		icon     : icon
    	};
    },
    
2325998f   Benjamin Renard   Fix hub connectio...
53
    testSAMPConnection : function(onConnected)
16035364   Benjamin Renard   First commit
54
    {
2325998f   Benjamin Renard   Fix hub connectio...
55
56
57
58
	var me = this;
	myDesktopApp.getLoadedModule(myDesktopApp.dynamicModules.interop.id, true, function (module) {
		if (!module.sampConnected()) {
			module.switchSampConnect();
16035364   Benjamin Renard   First commit
59
		}
2325998f   Benjamin Renard   Fix hub connectio...
60
61
62
63
64
		else {
			if (onConnected)
				onConnected.call();
		}
	});
16035364   Benjamin Renard   First commit
65
66
67
68
69
70
71
72
    },
    
    updateMenu : function()
    {
    	var me = this;
    	
    	this.menu.removeAll();
    	
2325998f   Benjamin Renard   Fix hub connectio...
73
74
    	this.testSAMPConnection(function () {
    		var clients = [];
16035364   Benjamin Renard   First commit
75
    	
2325998f   Benjamin Renard   Fix hub connectio...
76
77
78
    		var interopModule = myDesktopApp.getLoadedModule(myDesktopApp.dynamicModules.interop.id);
    		if (!interopModule)
    			return false;
16035364   Benjamin Renard   First commit
79
    	
2325998f   Benjamin Renard   Fix hub connectio...
80
81
82
83
84
85
86
87
    		switch (me.type)
    		{
    		case 'fits' :
    			clients = interopModule.getFITSClients();
    			break;
    		default :
    			clients = interopModule.getVOTableClients();
    		}
16035364   Benjamin Renard   First commit
88
    	
2325998f   Benjamin Renard   Fix hub connectio...
89
    		Ext.each(clients,function(client)
16035364   Benjamin Renard   First commit
90
91
92
93
    			{
    				if (client['id'] != 'hub')
    					me.menu.add(me.getMenuItem(client['name'],client['id'],client['icon']));
    			});
2325998f   Benjamin Renard   Fix hub connectio...
94
95
96
97
98
99
    		if (clients.length > 0)
    		{
    			me.menu.add('-');
    			me.menu.add(me.getMenuItem('all clients','hub'));
    		}
	});
16035364   Benjamin Renard   First commit
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
    	
    	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);
    }
2325998f   Benjamin Renard   Fix hub connectio...
129
});