summaryrefslogtreecommitdiff
path: root/qpid/java
diff options
context:
space:
mode:
authorAlex Rudyy <orudyy@apache.org>2013-11-10 12:56:23 +0000
committerAlex Rudyy <orudyy@apache.org>2013-11-10 12:56:23 +0000
commitb3af29da7a12c7a9eaa57f5d44a0e9205926c12b (patch)
tree551211681b306aa802361bcf80328439ca36bbce /qpid/java
parent50a39102289bedb60cec1f97ad3583733a08646c (diff)
downloadqpid-python-b3af29da7a12c7a9eaa57f5d44a0e9205926c12b.tar.gz
QPID-5325: [Java Broker] Add ability to save web management console open tabs in user preferences
git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk@1540470 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'qpid/java')
-rw-r--r--qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/management/Broker.js16
-rw-r--r--qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/management/Preferences.js2
-rw-r--r--qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/management/UserPreferences.js67
-rw-r--r--qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/management/VirtualHost.js6
-rw-r--r--qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/management/controller.js42
-rw-r--r--qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/management/groupprovider/FileGroupManager.js2
-rw-r--r--qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/management/treeView.js64
7 files changed, 159 insertions, 40 deletions
diff --git a/qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/management/Broker.js b/qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/management/Broker.js
index 1bb0ca0afa..aebaa39564 100644
--- a/qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/management/Broker.js
+++ b/qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/management/Broker.js
@@ -354,7 +354,7 @@ define(["dojo/_base/xhr",
var logViewerButton = query(".logViewer", contentPane.containerNode)[0];
registry.byNode(logViewerButton).on("click", function(evt){
- that.controller.show("logViewer", null, null);
+ that.controller.show("logViewer", "");
});
@@ -553,7 +553,7 @@ define(["dojo/_base/xhr",
var idx = evt.rowIndex,
theItem = this.getItem(idx);
var name = obj.dataStore.getValue(theItem,"name");
- that.controller.show("virtualhost", name, brokerObj);
+ that.controller.show("virtualhost", name, brokerObj, theItem.id);
});
}, gridProperties, EnhancedGrid);
@@ -572,7 +572,7 @@ define(["dojo/_base/xhr",
var idx = evt.rowIndex,
theItem = this.getItem(idx);
var name = obj.dataStore.getValue(theItem,"name");
- that.controller.show("port", name, brokerObj);
+ that.controller.show("port", name, brokerObj, theItem.id);
});
}, gridProperties, EnhancedGrid);
@@ -598,7 +598,7 @@ define(["dojo/_base/xhr",
var idx = evt.rowIndex,
theItem = this.getItem(idx);
var name = obj.dataStore.getValue(theItem,"name");
- that.controller.show("authenticationprovider", name, brokerObj);
+ that.controller.show("authenticationprovider", name, brokerObj, theItem.id);
});
}, gridProperties, EnhancedGrid);
@@ -615,7 +615,7 @@ define(["dojo/_base/xhr",
var idx = evt.rowIndex,
theItem = this.getItem(idx);
var name = obj.dataStore.getValue(theItem,"name");
- that.controller.show("keystore", name, brokerObj);
+ that.controller.show("keystore", name, brokerObj, theItem.id);
});
}, gridProperties, EnhancedGrid);
@@ -636,7 +636,7 @@ define(["dojo/_base/xhr",
var idx = evt.rowIndex,
theItem = this.getItem(idx);
var name = obj.dataStore.getValue(theItem,"name");
- that.controller.show("truststore", name, brokerObj);
+ that.controller.show("truststore", name, brokerObj, theItem.id);
});
}, gridProperties, EnhancedGrid);
that.groupProvidersGrid =
@@ -650,7 +650,7 @@ define(["dojo/_base/xhr",
var idx = evt.rowIndex,
theItem = this.getItem(idx);
var name = obj.dataStore.getValue(theItem,"name");
- that.controller.show("groupprovider", name, brokerObj);
+ that.controller.show("groupprovider", name, brokerObj, theItem.id);
});
}, gridProperties, EnhancedGrid);
var aclData = that.brokerData.accesscontrolproviders ? that.brokerData.accesscontrolproviders :[];
@@ -665,7 +665,7 @@ define(["dojo/_base/xhr",
var idx = evt.rowIndex,
theItem = this.getItem(idx);
var name = obj.dataStore.getValue(theItem,"name");
- that.controller.show("accesscontrolprovider", name, brokerObj);
+ that.controller.show("accesscontrolprovider", name, brokerObj, theItem.id);
});
}, gridProperties, EnhancedGrid);
that.displayACLWarnMessage(aclData);
diff --git a/qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/management/Preferences.js b/qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/management/Preferences.js
index 64299d62f6..5db2cecf0c 100644
--- a/qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/management/Preferences.js
+++ b/qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/management/Preferences.js
@@ -164,7 +164,7 @@ function (declare, xhr, event, connect, dom, domConstruct, parser, json, Memory,
}
that._toggleSetButtons();
},
- function(error){alert("Error:" + error);}
+ UserPreferences.defaultErrorHandler
);
}
},
diff --git a/qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/management/UserPreferences.js b/qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/management/UserPreferences.js
index 89a22a9e6e..44dee22007 100644
--- a/qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/management/UserPreferences.js
+++ b/qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/management/UserPreferences.js
@@ -31,6 +31,7 @@ define(["dojo/_base/xhr",
/* set time zone to 'UTC' by default*/
timeZone: "UTC",
+ tabs: [],
loadPreferences : function(callbackSuccessFunction, callbackErrorFunction)
{
@@ -60,12 +61,12 @@ define(["dojo/_base/xhr",
});
},
- setPreferences : function(preferences, callbackSuccessFunction, callbackErrorFunction)
+ setPreferences : function(preferences, callbackSuccessFunction, callbackErrorFunction, noSync)
{
var that = this;
xhr.post({
url: "rest/preferences",
- sync: true,
+ sync: !noSync,
handleAs: "json",
headers: { "Content-Type": "application/json"},
postData: json.stringify(preferences),
@@ -237,8 +238,68 @@ define(["dojo/_base/xhr",
result += " (" + this.getTimeZoneDescription(tzi) + ")";
}
return result;
- }
+ },
+
+ defaultErrorHandler: function(error)
+ {
+ if (error.status == 404)
+ {
+ alert("Cannot perform preferences operation: authentication provider is not configured");
+ }
+ else
+ {
+ alert("Cannot perform preferences operation:" + error);
+ }
+ },
+
+ appendTab: function(tab)
+ {
+ if (!this.tabs)
+ {
+ this.tabs = [];
+ }
+ if (!this.isTabStored(tab))
+ {
+ this.tabs.push(tab);
+ this.setPreferences({tabs: this.tabs}, null, this.defaultErrorHandler, true);
+ }
+ },
+ removeTab: function(tab)
+ {
+ if (this.tabs)
+ {
+ var index = this._getTabIndex(tab);
+ if (index != -1)
+ {
+ this.tabs.splice(index, 1);
+ this.setPreferences({tabs: this.tabs}, null, this.defaultErrorHandler, true);
+ }
+ }
+ },
+
+ isTabStored: function(tab)
+ {
+ return this._getTabIndex(tab) != -1;
+ },
+
+ _getTabIndex: function(tab)
+ {
+ var index = -1;
+ if (this.tabs)
+ {
+ for(var i = 0 ; i < this.tabs.length ; i++)
+ {
+ var t = this.tabs[i];
+ if ( t.objectId == tab.objectId && t.objectType == tab.objectType )
+ {
+ index = i;
+ break;
+ }
+ }
+ }
+ return index;
+ }
};
UserPreferences.loadPreferences(null,
diff --git a/qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/management/VirtualHost.js b/qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/management/VirtualHost.js
index 06c73eec4f..e92fb4492e 100644
--- a/qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/management/VirtualHost.js
+++ b/qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/management/VirtualHost.js
@@ -184,7 +184,7 @@ define(["dojo/_base/xhr",
var idx = evt.rowIndex,
theItem = this.getItem(idx);
var queueName = obj.dataStore.getValue(theItem,"name");
- controller.show("queue", queueName, vhost);
+ controller.show("queue", queueName, vhost, theItem.id);
});
} , gridProperties, EnhancedGrid);
@@ -201,7 +201,7 @@ define(["dojo/_base/xhr",
var idx = evt.rowIndex,
theItem = this.getItem(idx);
var exchangeName = obj.dataStore.getValue(theItem,"name");
- controller.show("exchange", exchangeName, vhost);
+ controller.show("exchange", exchangeName, vhost, theItem.id);
});
} , gridProperties, EnhancedGrid);
@@ -229,7 +229,7 @@ define(["dojo/_base/xhr",
var idx = evt.rowIndex,
theItem = this.getItem(idx);
var connectionName = obj.dataStore.getValue(theItem,"name");
- controller.show("connection", connectionName, vhost);
+ controller.show("connection", connectionName, vhost, theItem.id);
});
} );
diff --git a/qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/management/controller.js b/qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/management/controller.js
index e8d7bdd9cf..b81552249e 100644
--- a/qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/management/controller.js
+++ b/qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/management/controller.js
@@ -21,6 +21,8 @@
define(["dojo/dom",
"dijit/registry",
"dijit/layout/ContentPane",
+ "dijit/form/CheckBox",
+ "qpid/management/UserPreferences",
"dojox/html/entities",
"qpid/management/Broker",
"qpid/management/VirtualHost",
@@ -39,7 +41,7 @@ define(["dojo/dom",
"qpid/management/PreferencesProvider",
"dojo/ready",
"dojo/domReady!"],
- function (dom, registry, ContentPane, entities, Broker, VirtualHost, Exchange, Queue, Connection, AuthProvider,
+ function (dom, registry, ContentPane, CheckBox, UserPreferences, entities, Broker, VirtualHost, Exchange, Queue, Connection, AuthProvider,
GroupProvider, Group, KeyStore, TrustStore, AccessControlProvider, Port, Plugin, LogViewer, PreferencesProvider, ready) {
var controller = {};
@@ -59,7 +61,7 @@ define(["dojo/dom",
controller.viewedObjects = {};
- controller.show = function(objType, name, parent) {
+ controller.show = function(objType, name, parent, objectId) {
function generateName(obj)
{
@@ -76,16 +78,23 @@ define(["dojo/dom",
}
return name + parent.type +":" + parent.name + "/"
}
+ return "";
}
var that = this;
var objId = generateName(parent) + objType+":"+name;
- if( this.viewedObjects[ objId ] ) {
- this.tabContainer.selectChild(this.viewedObjects[ objId ].contentPane);
+
+ var obj = this.viewedObjects[ objId ];
+ if(obj) {
+ this.tabContainer.selectChild(obj.contentPane);
} else {
var Constructor = constructors[ objType ];
if(Constructor) {
- var obj = new Constructor(name, parent, this);
+ obj = new Constructor(name, parent, this);
+ obj.tabData = {
+ objectId: objectId,
+ objectType: objType
+ };
this.viewedObjects[ objId ] = obj;
var contentPane = new ContentPane({ region: "center" ,
@@ -98,6 +107,25 @@ define(["dojo/dom",
}
});
this.tabContainer.addChild( contentPane );
+ if (objType != "broker")
+ {
+ var preferencesCheckBox = new dijit.form.CheckBox({
+ checked: UserPreferences.isTabStored(obj.tabData),
+ title: "If checked the tab is saved in user preferences and restored on console start-up"
+ });
+ var tabs = this.tabContainer.tablist.getChildren();
+ preferencesCheckBox.placeAt(tabs[tabs.length-1].titleNode, "first");
+ preferencesCheckBox.on("change", function(value){
+ if (value)
+ {
+ UserPreferences.appendTab(obj.tabData);
+ }
+ else
+ {
+ UserPreferences.removeTab(obj.tabData);
+ }
+ });
+ }
obj.open(contentPane);
contentPane.startup();
if(obj.startup) {
@@ -110,10 +138,6 @@ define(["dojo/dom",
};
- ready(function() {
- controller.show("broker","");
- });
-
return controller;
});
diff --git a/qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/management/groupprovider/FileGroupManager.js b/qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/management/groupprovider/FileGroupManager.js
index f3c5c81d94..670a0a893a 100644
--- a/qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/management/groupprovider/FileGroupManager.js
+++ b/qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/management/groupprovider/FileGroupManager.js
@@ -117,7 +117,7 @@ define(["dojo/_base/xhr",
var idx = evt.rowIndex,
theItem = this.getItem(idx);
var name = obj.dataStore.getValue(theItem,"name");
- that.controller.show("group", name, groupProviderObj);
+ that.controller.show("group", name, groupProviderObj, theItem.id);
});
}, gridProperties, EnhancedGrid);
diff --git a/qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/management/treeView.js b/qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/management/treeView.js
index 8770509c27..5511b176a3 100644
--- a/qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/management/treeView.js
+++ b/qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/management/treeView.js
@@ -25,8 +25,10 @@ define(["dojo/_base/xhr",
"qpid/common/util",
"qpid/common/updater",
"qpid/management/controller",
+ "qpid/management/UserPreferences",
+ "dojo/ready",
"dojo/domReady!"],
- function (xhr, query, ioQuery, Tree, util, updater, controller) {
+ function (xhr, query, ioQuery, Tree, util, updater, controller, UserPreferences, ready) {
function TreeViewModel(queryString) {
this.query = queryString;
@@ -259,33 +261,33 @@ define(["dojo/_base/xhr",
findItemDetails(theItem, details, "broker", this.model);
if (details.type == "broker") {
- controller.show("broker", "");
+ controller.show("broker", "", null, theItem.id);
} else if (details.type == "virtualhost") {
- controller.show("virtualhost", details.virtualhost, {type:"broker", name:""});
+ controller.show("virtualhost", details.virtualhost, {type:"broker", name:""}, theItem.id);
} else if (details.type == "exchange") {
- controller.show("exchange", details.exchange, { type: "virtualhost", name: details.virtualhost, parent: {broker: {type:"broker", name:""}}});
+ controller.show("exchange", details.exchange, { type: "virtualhost", name: details.virtualhost, parent: {type:"broker", name:""}}, theItem.id);
} else if (details.type == "queue") {
- controller.show("queue", details.queue, { type: "virtualhost", name: details.virtualhost, parent: {broker: {type:"broker", name:""}}});
+ controller.show("queue", details.queue, { type: "virtualhost", name: details.virtualhost, parent: {type:"broker", name:""}}, theItem.id);
} else if (details.type == "connection") {
- controller.show("connection", details.connection, { type: "virtualhost", name: details.virtualhost, parent: {broker: {type:"broker", name:""}}});
+ controller.show("connection", details.connection, { type: "virtualhost", name: details.virtualhost, parent: {type:"broker", name:""}}, theItem.id);
} else if (details.type == 'port') {
- controller.show("port", details.port, { type: "virtualhost", name: details.virtualhost, parent: {broker: {type:"broker", name:""}}});
+ controller.show("port", details.port, { type: "virtualhost", name: details.virtualhost, parent: {type:"broker", name:""}}, theItem.id);
} else if (details.type == 'authenticationprovider') {
- controller.show("authenticationprovider", details.authenticationprovider, {broker: {type:"broker", name:""}});
+ controller.show("authenticationprovider", details.authenticationprovider, {type:"broker", name:""}, theItem.id);
} else if (details.type == 'groupprovider') {
- controller.show("groupprovider", details.groupprovider, {broker: {type:"broker", name:""}});
+ controller.show("groupprovider", details.groupprovider, {type:"broker", name:""}, theItem.id);
} else if (details.type == 'group') {
- controller.show("group", details.group, { type: "groupprovider", name: details.groupprovider, parent: {broker: {type:"broker", name:""}}});
+ controller.show("group", details.group, { type: "groupprovider", name: details.groupprovider, parent: {type:"broker", name:""}}, theItem.id);
} else if (details.type == 'keystore') {
- controller.show("keystore", details.keystore, {broker: {type:"broker", name:""}});
+ controller.show("keystore", details.keystore, {type:"broker", name:""}, theItem.id);
} else if (details.type == 'truststore') {
- controller.show("truststore", details.truststore, {broker: {type:"broker", name:""}});
+ controller.show("truststore", details.truststore, {type:"broker", name:""}, theItem.id);
} else if (details.type == 'accesscontrolprovider') {
- controller.show("accesscontrolprovider", details.accesscontrolprovider, {broker: {type:"broker", name:""}});
+ controller.show("accesscontrolprovider", details.accesscontrolprovider, {type:"broker", name:""}, theItem.id);
} else if (details.type == 'plugin') {
- controller.show("plugin", details.plugin, {broker: {type:"broker", name:""}});
+ controller.show("plugin", details.plugin, {type:"broker", name:""}, theItem.id);
} else if (details.type == "preferencesprovider") {
- controller.show("preferencesprovider", details.preferencesprovider, { type: "authenticationprovider", name: details.authenticationprovider, parent: {broker: {type:"broker", name:""}}});
+ controller.show("preferencesprovider", details.preferencesprovider, { type: "authenticationprovider", name: details.authenticationprovider, parent: {type:"broker", name:""}}, theItem.id);
}
};
@@ -317,6 +319,38 @@ define(["dojo/_base/xhr",
}, true);
tree.startup();
updater.add( treeModel );
+
+ ready(function() {
+ controller.show("broker","");
+
+ var tabs = UserPreferences.tabs;
+ if (tabs)
+ {
+ for(var i in tabs)
+ {
+ var tab = tabs[i], modelObject;
+ if (tab.objectType != "broker")
+ {
+ if (tab.objectId)
+ {
+ modelObject = treeModel.fetchItemByIdentity(tab.objectId);
+ if (modelObject)
+ {
+ treeModel.relocate(modelObject);
+ }
+ else
+ {
+ UserPreferences.removeTab(tab);
+ }
+ }
+ else
+ {
+ controller.show(tab.objectType, "");
+ }
+ }
+ }
+ }
+ });
});
return TreeViewModel;