Author: damoxc
Revision: 5769
Log:
disable the remove button and the stop daemon button when no host is
selected
Diff:
Modified: trunk/deluge/ui/web/js/Deluge.ConnectionManager.js
===================================================================
--- trunk/deluge/ui/web/js/Deluge.ConnectionManager.js 2009-09-23 18:16:08 UTC
(rev 5768)
+++ trunk/deluge/ui/web/js/Deluge.ConnectionManager.js 2009-09-23 19:10:44 UTC
(rev 5769)
@@ -1,6 +1,6 @@
/*
Script: deluge-connections.js
- Contains all objects and functions related to the connection manager.
+ Contains all objects and functions related to the connection manager.
Copyright:
(C) Damien Churchill 2009 <[email protected]>
@@ -20,15 +20,15 @@
51 Franklin Street, Fifth Floor
Boston, MA 02110-1301, USA.
- In addition, as a special exception, the copyright holders give
- permission to link the code of portions of this program with the OpenSSL
- library.
- You must obey the GNU General Public License in all respects for all of
- the code used other than OpenSSL. If you modify file(s) with this
- exception, you may extend this exception to your version of the file(s),
- but you are not obligated to do so. If you do not wish to do so, delete
- this exception statement from your version. If you delete this exception
- statement from all source files in the program, then also delete it here.
+ In addition, as a special exception, the copyright holders give
+ permission to link the code of portions of this program with the OpenSSL
+ library.
+ You must obey the GNU General Public License in all respects for all of
+ the code used other than OpenSSL. If you modify file(s) with this
+ exception, you may extend this exception to your version of the file(s),
+ but you are not obligated to do so. If you do not wish to do so, delete
+ this exception statement from your version. If you delete this exception
+ statement from all source files in the program, then also delete it
here.
*/
@@ -36,9 +36,9 @@
var hostRenderer = function(value, p, r) {
return value + ':' + r.data['port']
}
-
+
Ext.deluge.AddConnectionWindow = Ext.extend(Ext.Window, {
-
+
constructor: function(config) {
config = Ext.apply({
layout: 'fit',
@@ -54,17 +54,17 @@
}, config);
Ext.deluge.AddConnectionWindow.superclass.constructor.call(this, config);
},
-
+
initComponent: function() {
Ext.deluge.AddConnectionWindow.superclass.initComponent.call(this);
-
+
this.addEvents('hostadded');
-
+
this.addButton(_('Close'), this.hide, this);
this.addButton(_('Add'), this.onAdd, this);
-
+
this.on('hide', this.onHide, this);
-
+
this.form = this.add({
xtype: 'form',
defaultType: 'textfield',
@@ -72,7 +72,7 @@
baseCls: 'x-plain',
labelWidth: 55
});
-
+
this.hostField = this.form.add({
fieldLabel: _('Host'),
id: 'host',
@@ -80,7 +80,7 @@
anchor: '100%',
value: ''
});
-
+
this.portField = this.form.add({
fieldLabel: _('Port'),
id: 'port',
@@ -91,7 +91,7 @@
value: '58846',
anchor: '50%'
});
-
+
this.usernameField = this.form.add({
fieldLabel: _('Username'),
id: 'username',
@@ -99,7 +99,7 @@
anchor: '100%',
value: ''
});
-
+
this.passwordField = this.form.add({
fieldLabel: _('Password'),
anchor: '100%',
@@ -109,13 +109,13 @@
value: ''
});
},
-
+
onAdd: function() {
var host = this.hostField.getValue();
var port = this.portField.getValue();
var username = this.usernameField.getValue();
var password = this.passwordField.getValue();
-
+
Deluge.Client.web.add_host(host, port, username,
password, {
success: function(result) {
if (!result[0]) {
@@ -135,14 +135,14 @@
scope: this
});
},
-
+
onHide: function() {
this.form.getForm().reset();
}
});
Ext.deluge.ConnectionManager = Ext.extend(Ext.Window, {
-
+
layout: 'fit',
width: 300,
height: 220,
@@ -153,7 +153,7 @@
plain: true,
title: _('Connection Manager'),
iconCls: 'x-deluge-connect-window-icon',
-
+
initComponent: function() {
Ext.deluge.ConnectionManager.superclass.initComponent.call(this);
this.on({
@@ -162,10 +162,10 @@
});
Deluge.Events.on('login', this.onLogin, this);
Deluge.Events.on('logout', this.onLogout, this);
-
+
this.addButton(_('Close'), this.onClose, this);
this.addButton(_('Connect'), this.onConnect, this);
-
+
this.grid = this.add({
xtype: 'grid',
store: new Ext.data.SimpleStore({
@@ -201,7 +201,8 @@
selModel: new Ext.grid.RowSelectionModel({
singleSelect: true,
listeners: {
- 'rowselect': {fn:
this.onSelect, scope: this}
+ 'rowselect': {fn:
this.onSelect, scope: this},
+ 'selectionchange': {fn:
this.onSelectionChanged, scope: this}
}
}),
autoExpandColumn: 'host',
@@ -209,45 +210,47 @@
autoScroll:true,
margins: '0 0 0 0',
bbar: new Ext.Toolbar({
- items: [
+ buttons: [
{
- id: 'add',
+ id: 'cm-add',
cls: 'x-btn-text-icon',
text: _('Add'),
icon: '/icons/add.png',
handler: this.onAdd,
scope: this
}, {
- id: 'remove',
+ id: 'cm-remove',
cls: 'x-btn-text-icon',
text: _('Remove'),
icon:
'/icons/remove.png',
handler: this.onRemove,
+ disabled: true,
scope: this
}, '->', {
- id: 'stop',
+ id: 'cm-stop',
cls: 'x-btn-text-icon',
text: _('Stop Daemon'),
icon:
'/icons/error.png',
handler: this.onStop,
+ disabled: true,
scope: this
}
]
})
});
},
-
+
disconnect: function() {
Deluge.Events.fire('disconnect');
},
-
+
loadHosts: function() {
Deluge.Client.web.get_hosts({
success: this.onGetHosts,
scope: this
});
},
-
+
update: function(self) {
self.grid.getStore().each(function(r) {
Deluge.Client.web.get_host_status(r.id, {
@@ -256,7 +259,7 @@
});
}, this);
},
-
+
onAdd: function(button, e) {
if (!this.addWindow) {
this.addWindow = new
Ext.deluge.AddConnectionWindow();
@@ -264,20 +267,20 @@
}
this.addWindow.show();
},
-
+
onHostAdded: function() {
this.update(this);
},
-
+
onClose: function(e) {
if (this.running) window.clearInterval(this.running);
this.hide();
},
-
+
onConnect: function(e) {
var selected =
this.grid.getSelectionModel().getSelected();
if (!selected) return;
-
+
if (selected.get('status') == _('Connected')) {
Deluge.Client.web.disconnect({
success: function(result) {
@@ -300,7 +303,7 @@
this.hide();
}
},
-
+
onGetHosts: function(hosts) {
this.grid.getStore().loadData(hosts);
Ext.each(hosts, function(host) {
@@ -310,14 +313,14 @@
});
}, this);
},
-
+
onGetHostStatus: function(host) {
var record = this.grid.getStore().getById(host[0]);
record.set('status', host[3])
record.set('version', host[4])
record.commit();
},
-
+
onLogin: function() {
Deluge.Client.web.connected({
success: function(connected) {
@@ -330,16 +333,18 @@
scope: this
});
},
-
+
onLogout: function() {
this.disconnect();
if (!this.hidden && this.rendered) {
this.hide();
}
},
-
+
onRemove: function(button) {
var connection =
this.grid.getSelectionModel().getSelected();
+ if (!connection) return;
+
Deluge.Client.web.remove_host(connection.id, {
success: function(result) {
if (!result) {
@@ -358,7 +363,7 @@
scope: this
});
},
-
+
onSelect: function(selModel, rowIndex, record) {
this.selectedRow = rowIndex;
var button = this.buttons[1];
@@ -368,14 +373,32 @@
button.setText(_('Connect'));
}
},
-
+
+ onSelectionChanged: function(selModel) {
+ if (!this.addHostButton) {
+ var bbar = this.grid.getBottomToolbar();
+ this.addHostButton = bbar.items.get('cm-add');
+ this.removeHostButton =
bbar.items.get('cm-remove');
+ this.stopHostButton = bbar.items.get('cm-stop');
+ }
+ if (selModel.hasSelection()) {
+ this.removeHostButton.enable();
+ this.stopHostButton.enable();
+ } else {
+ this.removeHostButton.disable();
+ this.stopHostButton.disable();
+ }
+ },
+
onShow: function() {
this.loadHosts();
this.running = window.setInterval(this.update, 2000,
this);
},
-
+
onStop: function(button, e) {
var connection =
this.grid.getSelectionModel().getSelected();
+ if (!connection) return;
+
Deluge.Client.web.stop_daemon(connection.id, {
success: function(result) {
if (!result[0]) {
@@ -392,5 +415,5 @@
});
}
});
- Deluge.ConnectionManager = new Ext.deluge.ConnectionManager();
+Deluge.ConnectionManager = new Ext.deluge.ConnectionManager();
})();
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups
"deluge-commit" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/deluge-commit?hl=en
-~----------~----~----~----~------~----~------~--~---