You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@qpid.apache.org by or...@apache.org on 2013/11/10 13:56:24 UTC

svn commit: r1540470 - in /qpid/trunk/qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/management: Broker.js Preferences.js UserPreferences.js VirtualHost.js controller.js groupprovider/FileGroupManager.js treeView.js

Author: orudyy
Date: Sun Nov 10 12:56:23 2013
New Revision: 1540470

URL: http://svn.apache.org/r1540470
Log:
QPID-5325: [Java Broker] Add ability to save web management console open tabs in user preferences

Modified:
    qpid/trunk/qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/management/Broker.js
    qpid/trunk/qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/management/Preferences.js
    qpid/trunk/qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/management/UserPreferences.js
    qpid/trunk/qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/management/VirtualHost.js
    qpid/trunk/qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/management/controller.js
    qpid/trunk/qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/management/groupprovider/FileGroupManager.js
    qpid/trunk/qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/management/treeView.js

Modified: qpid/trunk/qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/management/Broker.js
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/management/Broker.js?rev=1540470&r1=1540469&r2=1540470&view=diff
==============================================================================
--- qpid/trunk/qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/management/Broker.js (original)
+++ qpid/trunk/qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/management/Broker.js Sun Nov 10 12:56:23 2013
@@ -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);

Modified: qpid/trunk/qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/management/Preferences.js
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/management/Preferences.js?rev=1540470&r1=1540469&r2=1540470&view=diff
==============================================================================
--- qpid/trunk/qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/management/Preferences.js (original)
+++ qpid/trunk/qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/management/Preferences.js Sun Nov 10 12:56:23 2013
@@ -164,7 +164,7 @@ function (declare, xhr, event, connect, 
               }
               that._toggleSetButtons();
             },
-            function(error){alert("Error:" + error);}
+            UserPreferences.defaultErrorHandler
         );
       }
     },

Modified: qpid/trunk/qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/management/UserPreferences.js
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/management/UserPreferences.js?rev=1540470&r1=1540469&r2=1540470&view=diff
==============================================================================
--- qpid/trunk/qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/management/UserPreferences.js (original)
+++ qpid/trunk/qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/management/UserPreferences.js Sun Nov 10 12:56:23 2013
@@ -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,

Modified: qpid/trunk/qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/management/VirtualHost.js
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/management/VirtualHost.js?rev=1540470&r1=1540469&r2=1540470&view=diff
==============================================================================
--- qpid/trunk/qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/management/VirtualHost.js (original)
+++ qpid/trunk/qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/management/VirtualHost.js Sun Nov 10 12:56:23 2013
@@ -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);
                                                                               });
                                                              } );
 

Modified: qpid/trunk/qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/management/controller.js
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/management/controller.js?rev=1540470&r1=1540469&r2=1540470&view=diff
==============================================================================
--- qpid/trunk/qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/management/controller.js (original)
+++ qpid/trunk/qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/management/controller.js Sun Nov 10 12:56:23 2013
@@ -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;
        });

Modified: qpid/trunk/qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/management/groupprovider/FileGroupManager.js
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/management/groupprovider/FileGroupManager.js?rev=1540470&r1=1540469&r2=1540470&view=diff
==============================================================================
--- qpid/trunk/qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/management/groupprovider/FileGroupManager.js (original)
+++ qpid/trunk/qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/management/groupprovider/FileGroupManager.js Sun Nov 10 12:56:23 2013
@@ -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);
 

Modified: qpid/trunk/qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/management/treeView.js
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/management/treeView.js?rev=1540470&r1=1540469&r2=1540470&view=diff
==============================================================================
--- qpid/trunk/qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/management/treeView.js (original)
+++ qpid/trunk/qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/management/treeView.js Sun Nov 10 12:56:23 2013
@@ -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;



---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@qpid.apache.org
For additional commands, e-mail: commits-help@qpid.apache.org