diff options
| author | Alex Rudyy <orudyy@apache.org> | 2013-11-10 12:56:23 +0000 |
|---|---|---|
| committer | Alex Rudyy <orudyy@apache.org> | 2013-11-10 12:56:23 +0000 |
| commit | b3af29da7a12c7a9eaa57f5d44a0e9205926c12b (patch) | |
| tree | 551211681b306aa802361bcf80328439ca36bbce /qpid/java | |
| parent | 50a39102289bedb60cec1f97ad3583733a08646c (diff) | |
| download | qpid-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')
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; |
