You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@qpid.apache.org by kp...@apache.org on 2013/10/22 00:05:07 UTC

svn commit: r1534394 [19/22] - in /qpid/branches/linearstore/qpid: ./ cpp/ cpp/bindings/qmf2/examples/python/ cpp/bindings/qmf2/python/ cpp/bindings/qpid/dotnet/ cpp/etc/ cpp/examples/ cpp/examples/messaging/ cpp/examples/qmf-agent/ cpp/include/qpid/ c...

Modified: qpid/branches/linearstore/qpid/java/broker-plugins/management-http/src/main/java/resources/common/TimeZoneSelector.html
URL: http://svn.apache.org/viewvc/qpid/branches/linearstore/qpid/java/broker-plugins/management-http/src/main/java/resources/common/TimeZoneSelector.html?rev=1534394&r1=1534393&r2=1534394&view=diff
==============================================================================
--- qpid/branches/linearstore/qpid/java/broker-plugins/management-http/src/main/java/resources/common/TimeZoneSelector.html (original)
+++ qpid/branches/linearstore/qpid/java/broker-plugins/management-http/src/main/java/resources/common/TimeZoneSelector.html Mon Oct 21 22:04:51 2013
@@ -20,36 +20,47 @@
  -->
 <table cellpadding="0" cellspacing="2">
     <tr>
-        <td>Region</td>
+        <td class="labelClass"><strong>Use UTC time:</strong></td>
         <td>
-          <select class='timezoneRegion' name="region" data-dojo-type="dijit/form/FilteringSelect" data-dojo-props="
-                placeholder: 'Select region',
-                required: true,
-                missingMessage: 'A region must be supplied',
-                title: 'Select region',
-                autoComplete: true,
-                value:'undefined'">
-            <option value="undefined">Undefined</option>
-            <option value="Africa">Africa</option>
-            <option value="America">America</option>
-            <option value="Antarctica">Antarctica</option>
-            <option value="Arctic">Arctic</option>
-            <option value="Asia">Asia</option>
-            <option value="Atlantic">Atlantic</option>
-            <option value="Australia">Australia</option>
-            <option value="Europe">Europe</option>
-            <option value="Indian">Indian</option>
-            <option value="Pacific">Pacific</option>
-          </select>
+            <input type="checkbox" class='utcSelector' name="utc" data-dojo-type="dijit/form/CheckBox" value="UTC"></input>
         </td>
-        <td>City</td>
+    </tr>
+    <tr>
+        <td class="labelClass"><strong>Time Zone:</strong></td>
         <td>
-          <select class='timezoneCity' name="city" data-dojo-type="dijit/form/FilteringSelect" data-dojo-props="
-                placeholder: 'Select city',
-                required: true,
-                missingMessage: 'A city must be supplied',
-                title: 'Select city'">
-          </select>
-        </td>
+          <table cellpadding="0" cellspacing="2">
+            <tr>
+              <td>Region</td>
+              <td><select class='timezoneRegion' name="region" data-dojo-type="dijit/form/FilteringSelect"
+                data-dojo-props="
+                    placeholder: 'Select region',
+                    required: true,
+                    missingMessage: 'A region must be supplied',
+                    title: 'Select region',
+                    autoComplete: true,
+                    value:'undefined'">
+                  <option value="undefined">Undefined</option>
+                  <option value="Africa">Africa</option>
+                  <option value="America">America</option>
+                  <option value="Antarctica">Antarctica</option>
+                  <option value="Arctic">Arctic</option>
+                  <option value="Asia">Asia</option>
+                  <option value="Atlantic">Atlantic</option>
+                  <option value="Australia">Australia</option>
+                  <option value="Europe">Europe</option>
+                  <option value="Indian">Indian</option>
+                  <option value="Pacific">Pacific</option>
+              </select></td>
+              <td>City</td>
+              <td><select class='timezoneCity' name="city" data-dojo-type="dijit/form/FilteringSelect"
+                data-dojo-props="
+                    placeholder: 'Select city',
+                    required: true,
+                    missingMessage: 'A city must be supplied',
+                    title: 'Select city'">
+              </select></td>
+            </tr>
+        </table>
+    </td>
     </tr>
 </table>
\ No newline at end of file

Modified: qpid/branches/linearstore/qpid/java/broker-plugins/management-http/src/main/java/resources/index.html
URL: http://svn.apache.org/viewvc/qpid/branches/linearstore/qpid/java/broker-plugins/management-http/src/main/java/resources/index.html?rev=1534394&r1=1534393&r2=1534394&view=diff
==============================================================================
--- qpid/branches/linearstore/qpid/java/broker-plugins/management-http/src/main/java/resources/index.html (original)
+++ qpid/branches/linearstore/qpid/java/broker-plugins/management-http/src/main/java/resources/index.html Mon Oct 21 22:04:51 2013
@@ -57,32 +57,24 @@
     </script>
 
     <script>
-        var qpidHelpLocation = "http://qpid.apache.org/releases/qpid-";
-        var qpidHelpURL = null;
-        var qpidPreferences = null;
+        var qpidManagementHelper = null;
         require([
-                    "dojo/_base/xhr",
                     "dojo/parser",
-                    "qpid/management/Preferences",
+                    "qpid/authorization/checkUser",
+                    "qpid/common/ConsoleHelper",
                     "dijit/layout/BorderContainer",
                     "dijit/layout/TabContainer",
                     "dijit/layout/ContentPane",
                     "dijit/TitlePane",
-                    "dojo/parser",
+                    "dijit/Menu",
+                    "dijit/MenuItem",
                     "qpid/management/treeView",
                     "qpid/management/controller",
-                    "qpid/common/footer",
-                    "qpid/authorization/checkUser"], function(xhr, parser, Preferences){
+                    "qpid/common/footer"
+                    ], function(parser, User, ConsoleHelper){
                         parser.parse();
-                        qpidPreferences = new Preferences();
-                         xhr.get({
-                                sync: true,
-                                url: "rest/helper?action=version",
-                                handleAs: "json"
-                         }).then(function(qpidVersion) {
-                            qpidHelpURL = qpidHelpLocation + qpidVersion + "/java-broker/book/index.html";
-                         });
-
+                        qpidManagementHelper = ConsoleHelper;
+                        User.getUserAndUpdateUI();
                     });
     </script>
 
@@ -93,25 +85,17 @@
     <div data-dojo-type="dijit.layout.ContentPane" data-dojo-props="region:'top'">
         <div id="header" class="header" style="float: left; width: 300px"></div>
         <div style="float: right;">
-          <div id="login" style="display:none"><strong>User: </strong> <span id="authenticatedUser"></span><a href="logout">[logout]</a></div>
-          <div id="preferencesButton" style="float: right; margin-top: 0px;" data-dojo-type="dijit.form.DropDownButton" data-dojo-props="iconClass: 'preferencesIcon', title: 'Preferences', showLabel:false">
+          <div id="login" style="display:none"><span id="authenticatedUser" style="display:none"></span>
+            <div id="authenticatedUserControls" data-dojo-type="dijit.form.DropDownButton" data-dojo-props="iconClass: 'preferencesIcon', style:{'max-width': '100px'}">
             <div data-dojo-type="dijit.Menu">
-                <div data-dojo-type="dijit.MenuItem" data-dojo-props="
-                        iconClass: 'dijitIconFunction',
-                        onClick: function(){ qpidPreferences.showDialog(); } ">
-                    Preferences
-                </div>
-                <!--
-                <div data-dojo-type="dijit.MenuItem" data-dojo-props="iconClass: 'dijitIconMail', onClick: function(){ console.log('TODO'); }">
-                    Contacts
-                </div>
-                 -->
-                <div data-dojo-type="dijit.MenuItem" data-dojo-props="iconClass: 'helpIcon', onClick: function(){
-                     var newWindow = window.open(qpidHelpURL,'QpidHelp','height=600,width=600,scrollbars=1,location=1,resizable=1,status=0,toolbar=0,titlebar=1,menubar=0',true); newWindow.focus(); } ">
-                    Help
-                </div>
+                <div data-dojo-type="dijit.MenuItem" data-dojo-props="onClick: function(){window.location='logout';}" >Log out</div>
+                <div data-dojo-type="dijit.MenuItem"
+                    data-dojo-props="iconClass:'dijitIconFunction',onClick: function(){qpidManagementHelper.showPreferencesDialog();}">Preferences</div>
+                <div data-dojo-type="dijit.MenuItem"
+                    data-dojo-props="iconClass: 'helpIcon', onClick: function(){qpidManagementHelper.showHelp();}">Help</div>
             </div>
-         </div>
+          </div>
+        </div>
        </div>
     </div>
     <div data-dojo-type="dijit.layout.ContentPane" data-dojo-props="region:'leading', splitter: true" style="width:20%">

Modified: qpid/branches/linearstore/qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/authorization/checkUser.js
URL: http://svn.apache.org/viewvc/qpid/branches/linearstore/qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/authorization/checkUser.js?rev=1534394&r1=1534393&r2=1534394&view=diff
==============================================================================
--- qpid/branches/linearstore/qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/authorization/checkUser.js (original)
+++ qpid/branches/linearstore/qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/authorization/checkUser.js Mon Oct 21 22:04:51 2013
@@ -19,19 +19,27 @@
  *
  */
 
-require(["dojo/dom",
+define(["dojo/dom",
          "qpid/authorization/sasl",
+         "dijit/registry",
          "dojox/html/entities",
-         "dojo/domReady!"], function(dom, sasl, entities){
+         "dojo/domReady!"], function(dom, sasl, registry, entities){
 
 var updateUI = function updateUI(data)
 {
     if(data.user)
     {
-        dom.byId("authenticatedUser").innerHTML = entities.encode(String(data.user));
-        dom.byId("login").style.display = "inline";
+      var userName = entities.encode(String(data.user));
+      var controlButton = registry.byId("authenticatedUserControls");
+      if (controlButton)
+      {
+        controlButton.set("label", userName);
+      }
+      dom.byId("authenticatedUser").innerHTML = userName;
+      dom.byId("login").style.display = "inline";
     }
 };
 
-sasl.getUser(updateUI);
+return {getUserAndUpdateUI: function(){sasl.getUser(updateUI);}}
+
 });

Modified: qpid/branches/linearstore/qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/authorization/sasl.js
URL: http://svn.apache.org/viewvc/qpid/branches/linearstore/qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/authorization/sasl.js?rev=1534394&r1=1534393&r2=1534394&view=diff
==============================================================================
--- qpid/branches/linearstore/qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/authorization/sasl.js (original)
+++ qpid/branches/linearstore/qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/authorization/sasl.js Mon Oct 21 22:04:51 2013
@@ -18,7 +18,8 @@
  * under the License.
  *
  */
-define(["dojo/_base/xhr", "dojox/encoding/base64", "dojox/encoding/digests/_base", "dojox/encoding/digests/MD5"], function () {
+define(["dojo/_base/xhr", "dojox/encoding/base64", "dojox/encoding/digests/_base", "dojox/encoding/digests/MD5"],
+    function (xhr, base64, digestsBase, MD5) {
 
 var encodeUTF8 = function encodeUTF8(str) {
     var byteArray = [];
@@ -65,7 +66,7 @@ var errorHandler = function errorHandler
 var saslPlain = function saslPlain(user, password, callbackFunction)
 {
     var responseArray = [ 0 ].concat(encodeUTF8( user )).concat( [ 0 ] ).concat( encodeUTF8( password ) );
-    var plainResponse = dojox.encoding.base64.encode(responseArray);
+    var plainResponse = base64.encode(responseArray);
 
     // Using dojo.xhrGet, as very little information is being sent
     dojo.xhrPost({
@@ -95,19 +96,19 @@ var saslCramMD5 = function saslCramMD5(u
     }).then(function(data)
             {
 
-                var challengeBytes = dojox.encoding.base64.decode(data.challenge);
+                var challengeBytes = base64.decode(data.challenge);
                 var wa=[];
                 var bitLength = challengeBytes.length*8;
                 for(var i=0; i<bitLength; i+=8)
                 {
                     wa[i>>5] |= (challengeBytes[i/8] & 0xFF)<<(i%32);
                 }
-                var challengeStr = dojox.encoding.digests.wordToString(wa).substring(0,challengeBytes.length);
+                var challengeStr = digestsBase.wordToString(wa).substring(0,challengeBytes.length);
 
-                var digest =  user + " " + dojox.encoding.digests.MD5._hmac(challengeStr, password, dojox.encoding.digests.outputTypes.Hex);
+                var digest =  user + " " + MD5._hmac(challengeStr, password, digestsBase.outputTypes.Hex);
                 var id = data.id;
 
-                var response = dojox.encoding.base64.encode(encodeUTF8( digest ));
+                var response = base64.encode(encodeUTF8( digest ));
 
                 dojo.xhrPost({
                         // The URL of the request
@@ -162,7 +163,7 @@ SaslClient.authenticate = function(usern
                }
                else if (containsMechanism(mechMap, "CRAM-MD5-HEX"))
                {
-                   var hashedPassword = dojox.encoding.digests.MD5(password, dojox.encoding.digests.outputTypes.Hex);
+                   var hashedPassword = MD5(password, digestsBase.outputTypes.Hex);
                    saslCramMD5(username, hashedPassword, "CRAM-MD5-HEX", callbackFunction);
                }
                else if (containsMechanism(mechMap, "PLAIN"))

Modified: qpid/branches/linearstore/qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/common/TimeZoneSelector.js
URL: http://svn.apache.org/viewvc/qpid/branches/linearstore/qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/common/TimeZoneSelector.js?rev=1534394&r1=1534393&r2=1534394&view=diff
==============================================================================
--- qpid/branches/linearstore/qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/common/TimeZoneSelector.js (original)
+++ qpid/branches/linearstore/qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/common/TimeZoneSelector.js Mon Oct 21 22:04:51 2013
@@ -24,43 +24,22 @@ define([
         "dojo/dom-construct",
         "dojo/parser",
         "dojo/query",
+        "dojo/dom-style",
         "dojo/store/Memory",
         "dijit/_WidgetBase",
         "dijit/registry",
         "dojo/text!common/TimeZoneSelector.html",
+        "qpid/common/timezone",
         "dijit/form/ComboBox",
         "dijit/form/FilteringSelect",
-        "dojox/date/timezone",
+        "dijit/form/CheckBox",
         "dojox/validate/us",
         "dojox/validate/web",
         "dojo/domReady!"],
-function (declare, array, domConstruct, parser, query, Memory, _WidgetBase, registry, template) {
+function (declare, array, domConstruct, parser, query, domStyle, Memory, _WidgetBase, registry, template, timezone) {
 
   var preferencesRegions = ["Africa","America","Antarctica","Arctic","Asia","Atlantic","Australia","Europe","Indian","Pacific"];
 
-  function initSupportedTimeZones()
-  {
-    var supportedTimeZones = [];
-    var allTimeZones = dojox.date.timezone.getAllZones();
-    for(var i = 0; i < allTimeZones.length; i++)
-    {
-      var timeZone = allTimeZones[i];
-      var elements = timeZone.split("/");
-      if (elements.length > 1)
-      {
-        for(var j = 0; j<preferencesRegions.length; j++)
-        {
-          if (elements[0] == preferencesRegions[j])
-          {
-            supportedTimeZones.push({id: timeZone, region: elements[0], city: elements.slice(1).join("/").replace("_", " ") })
-            break;
-          }
-        }
-      }
-    }
-    return supportedTimeZones;
-  }
-
   function initSupportedRegions()
   {
     var supportedRegions = [{"id": "undefined", "name": "Undefined"}];
@@ -77,6 +56,7 @@ function (declare, array, domConstruct, 
     domNode: null,
     _regionSelector: null,
     _citySelector: null,
+    _utcSelector: null,
 
     constructor: function(args)
     {
@@ -91,8 +71,17 @@ function (declare, array, domConstruct, 
     postCreate: function(){
       this.inherited(arguments);
 
-      var supportedTimeZones = initSupportedTimeZones();
+      var self = this;
+      if (this._args.labelStyle)
+      {
+        var nl = query(".labelClass", this.domNode);
+        array.forEach(nl, function(entry, i){
+          domStyle.set(entry, self._args.labelStyle)
+        });
+      }
+      var supportedTimeZones = timezone.getAllTimeZones();
 
+      this._utcSelector = registry.byNode(query(".utcSelector", this.domNode)[0]);
       this._citySelector = registry.byNode(query(".timezoneCity", this.domNode)[0]);
       this._citySelector.set("searchAttr", "city");
       this._citySelector.set("query", {region: /.*/});
@@ -105,8 +94,28 @@ function (declare, array, domConstruct, 
       this._regionSelector = registry.byNode(query(".timezoneRegion", this.domNode)[0]);
       var supportedRegions = initSupportedRegions();
       this._regionSelector.set("store", new Memory({ data: supportedRegions }));
-      var self = this;
 
+      this._utcSelector.on("change", function(value){
+        var checked = this.get("checked");
+        if (checked)
+        {
+          self.value ="UTC";
+        }
+        else
+        {
+          if (self._citySelector.value && self._regionSelector.value)
+          {
+            self.value = self._citySelector.value;
+          }
+          else
+          {
+            self.value = null;
+          }
+        }
+        self._citySelector.set("disabled", checked);
+        self._regionSelector.set("disabled", checked);
+        self._handleOnChange(self.value);
+      });
       this._regionSelector.on("change", function(value){
         if (value=="undefined")
         {
@@ -114,6 +123,7 @@ function (declare, array, domConstruct, 
           self._citySelector.query.region = /.*/;
           self.value = null;
           self._citySelector.set("value", null);
+          self._handleOnChange(self.value);
         }
         else
         {
@@ -133,6 +143,7 @@ function (declare, array, domConstruct, 
 
       this._citySelector.on("change", function(value){
         self.value = value;
+        self._handleOnChange(value);
       });
 
       this._setValueAttr(this._args.value);
@@ -142,23 +153,33 @@ function (declare, array, domConstruct, 
     {
       if (value)
       {
-        var elements = value.split("/");
-        if (elements.length > 1)
+        if (value == "UTC")
         {
-          this._regionSelector.timeZone = value;
-          this._regionSelector.set("value", elements[0]);
-          this._citySelector.set("value", value);
+          this._utcSelector.set("checked", true);
         }
         else
         {
-          this._regionSelector.set("value", "undefined");
+          this._utcSelector.set("checked", false);
+          var elements = value.split("/");
+          if (elements.length > 1)
+          {
+            this._regionSelector.timeZone = value;
+            this._regionSelector.set("value", elements[0]);
+            this._citySelector.set("value", value);
+          }
+          else
+          {
+            this._regionSelector.set("value", "undefined");
+          }
         }
       }
       else
       {
+        this._utcSelector.set("checked", false);
         this._regionSelector.set("value", "undefined");
       }
       this.value = value;
+      this._handleOnChange(value);
     },
 
     destroy: function()
@@ -170,6 +191,26 @@ function (declare, array, domConstruct, 
       }
       _regionSelector: null;
       _citySelector: null;
+      _utcSelector: null;
+    },
+
+    onChange: function(newValue){},
+
+    _handleOnChange: function(newValue)
+    {
+      if (this._lastValueReported != newValue)
+      {
+        this._lastValueReported = newValue;
+        if(this._onChangeHandle)
+        {
+          this._onChangeHandle.remove();
+        }
+        this._onChangeHandle = this.defer(function()
+        {
+            this._onChangeHandle = null;
+            this.onChange(newValue);
+        });
+      }
     }
 
   });

Modified: qpid/branches/linearstore/qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/common/grid/EnhancedFilter.js
URL: http://svn.apache.org/viewvc/qpid/branches/linearstore/qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/common/grid/EnhancedFilter.js?rev=1534394&r1=1534393&r2=1534394&view=diff
==============================================================================
--- qpid/branches/linearstore/qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/common/grid/EnhancedFilter.js (original)
+++ qpid/branches/linearstore/qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/common/grid/EnhancedFilter.js Mon Oct 21 22:04:51 2013
@@ -89,16 +89,14 @@ define([
       if(typeof args.ruleCount != 'number' || args.ruleCount < 0){
         args.ruleCount = 0;
       }
-      var rc = this.ruleCountToConfirmClearFilter = args.ruleCountToConfirmClearFilter;
-      if(rc === undefined){
-        this.ruleCountToConfirmClearFilter = 5;
-      }
+      this.ruleCountToConfirmClearFilter = args.ruleCountToConfirmClearFilter || 5;
 
       if (args.filterHidden){
           this.filterHidden = args.filterHidden;
       }
       this.defaulGridRowLimit = args.defaulGridRowLimit;
       this.disableFiltering = args.disableFiltering;
+      this.displayLastUpdateTime = args.displayLastUpdateTime;
 
       //Install UI components
       var obj = { "plugin": this };
@@ -117,6 +115,7 @@ define([
           });
 
           this.filterDefDialog = new FilterDefDialog(obj);
+          this.filterDefDialog.filterDefPane._clearFilterBtn.set("label", "Clear Filter");
 
           nls["statusTipTitleNoFilter"] = "Filter is not set";
           nls["statusTipMsg"] = "Click on 'Set Filter' button to specify filtering conditions";
@@ -149,7 +148,9 @@ define([
           filterDefDialog: this.filterDefDialog,
           defaulGridRowLimit: this.defaulGridRowLimit,
           disableFiltering: this.disableFiltering,
-          nls: nls
+          displayLastUpdateTime: this.displayLastUpdateTime,
+          nls: nls,
+          ruleCountToConfirmClearFilter: this.ruleCountToConfirmClearFilter
         });
 
       this.filterBar.placeAt(this.grid.viewsHeaderNode, "before");

Modified: qpid/branches/linearstore/qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/common/grid/EnhancedFilterTools.js
URL: http://svn.apache.org/viewvc/qpid/branches/linearstore/qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/common/grid/EnhancedFilterTools.js?rev=1534394&r1=1534393&r2=1534394&view=diff
==============================================================================
--- qpid/branches/linearstore/qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/common/grid/EnhancedFilterTools.js (original)
+++ qpid/branches/linearstore/qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/common/grid/EnhancedFilterTools.js Mon Oct 21 22:04:51 2013
@@ -22,12 +22,15 @@
 define([
   "dojo/_base/declare",
   "dojo/_base/event",
+  "dojo/dom-construct",
+  "dojo/date/locale",
   "dijit/form/Button",
   "dijit/form/ToggleButton",
   "qpid/common/grid/RowNumberLimitDialog",
   "qpid/common/grid/ColumnDefDialog",
-  "qpid/common/grid/FilterSummary"
-], function(declare, event, Button, ToggleButton, RowNumberLimitDialog, ColumnDefDialog, FilterSummary){
+  "qpid/common/grid/FilterSummary",
+  "qpid/management/UserPreferences"
+], function(declare, event, domConstruct, locale, Button, ToggleButton, RowNumberLimitDialog, ColumnDefDialog, FilterSummary, UserPreferences){
 
   var _stopEvent = function (evt){
     try{
@@ -64,6 +67,8 @@ define([
       this.filterStatusTip= params.filterStatusTip;
       this.clearFilterDialog = params.clearFilterDialog;
       this.filterDefDialog = params.filterDefDialog;
+      this.ruleCountToConfirmClearFilter = params.ruleCountToConfirmClearFilter;
+      this.displayLastUpdateTime = params.hasOwnProperty("displayLastUpdateTime")?params.displayLastUpdateTime:true;
 
       this._addRefreshButtons();
       this._addRowLimitButton(params.defaulGridRowLimit);
@@ -167,6 +172,38 @@ define([
 
       this.filterBar.addChild(this.autoRefreshButton);
       this.filterBar.addChild(this.refreshButton);
+
+      if (this.displayLastUpdateTime)
+      {
+        var updateStatusPanel = domConstruct.create("div");
+        var updateTimeLabel = domConstruct.create("span", {innerHTML: "Update time: ", "class": "formLabel-labelCell", "style": "padding-right: 5px;padding-left: 5px"}, updateStatusPanel);
+        var updateTimeLabelPreferredTZ = domConstruct.create("span", {innerHTML: "Preferred timezone:", "style": "padding-right: 5px"}, updateStatusPanel);
+        var updateTimePreferredTZ = domConstruct.create("span", {"style": "padding-right: 5px"}, updateStatusPanel);
+        var updateTimeLabelBrowserTZ = domConstruct.create("span", {innerHTML: "Browser timezone:", "style": "padding-right: 5px"}, updateStatusPanel);
+        var updateTimeBrowserTZ = domConstruct.create("span", {"style": "padding-right: 5px"}, updateStatusPanel);
+
+        var lastUpdateTimeUpdater = function(data)
+        {
+          var userTimeZone = UserPreferences.timeZone;
+          var displayStyle = userTimeZone? "inline" : "none";
+          updateTimeLabelPreferredTZ.style.display = displayStyle;
+          updateTimePreferredTZ.style.display = displayStyle;
+          var formatOptions = {selector: "time", timePattern: "HH:mm:ss.SSS", appendTimeZone: true, addOffset: true};
+          var updateTime = new Date();
+          updateTimePreferredTZ.innerHTML = UserPreferences.formatDateTime(updateTime.getTime(), formatOptions);
+          updateTimeBrowserTZ.innerHTML = locale.format(updateTime, formatOptions);
+        };
+
+        if (self.grid.updater.store)
+        {
+          // data have been already provided/or fetched
+          // set last update time to current time
+          lastUpdateTimeUpdater();
+        }
+
+        self.grid.updater.addOnUpdate(lastUpdateTimeUpdater);
+        domConstruct.place(updateStatusPanel, this.grid.viewsHeaderNode, "before");
+      }
     },
 
     _addRowLimitButton: function(defaulGridRowLimit)
@@ -240,6 +277,9 @@ define([
 
       this.filterDefButton.on("click", function(e){
         _stopEvent(e);
+
+        // a bit of a hack to force dialog to rebuild the criteria controls in order to get rid from empty rule controls
+        self.filterDefDialog._criteriasChanged = true;
         self.filterDefDialog.showDialog();
       });
 

Modified: qpid/branches/linearstore/qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/common/grid/GridUpdater.js
URL: http://svn.apache.org/viewvc/qpid/branches/linearstore/qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/common/grid/GridUpdater.js?rev=1534394&r1=1534393&r2=1534394&view=diff
==============================================================================
--- qpid/branches/linearstore/qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/common/grid/GridUpdater.js (original)
+++ qpid/branches/linearstore/qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/common/grid/GridUpdater.js Mon Oct 21 22:04:51 2013
@@ -39,7 +39,12 @@ define(["dojo/_base/xhr",
              this.updatable = args.hasOwnProperty("updatable") ? args.updatable : true ;
              this.serviceUrl = args.serviceUrl;
 
-             this.onUpdate = args.onUpdate;
+             this.onUpdate = [];
+             if (args.onUpdate)
+             {
+               this.onUpdate.push(args.onUpdate);
+             }
+             this.dataTransformer = args.dataTransformer;
 
              this.appendData = args.append;
              this.appendLimit = args.appendLimit;
@@ -122,6 +127,10 @@ define(["dojo/_base/xhr",
 
              function processData(data)
              {
+                 if (self.dataTransformer)
+                 {
+                   data = self.dataTransformer(data);
+                 }
                  var dataSet = false;
                  if (!store)
                  {
@@ -141,17 +150,10 @@ define(["dojo/_base/xhr",
 
                  if (data)
                  {
-                     try
-                     {
-                         if ((dataSet || self.updateOrAppend(data)) && self.onUpdate)
-                         {
-                             self.onUpdate(data);
-                         }
-                     }
-                     catch(e)
-                     {
-                         console.error(e);
-                     }
+                   if ((dataSet || self.updateOrAppend(data)) && self.onUpdate.length > 0)
+                   {
+                     self.fireUpdate(data);
+                   }
                  }
              };
 
@@ -186,6 +188,7 @@ define(["dojo/_base/xhr",
              this.store = null;
              this.memoryStore = null;
              this.grid = null;
+             this.onUpdate = null;
            };
 
            GridUpdater.prototype.updateOrAppend = function(data)
@@ -197,6 +200,10 @@ define(["dojo/_base/xhr",
 
            GridUpdater.prototype.refresh = function(data)
            {
+               if (this.dataTransformer && data)
+               {
+                 data = this.dataTransformer(data);
+               }
                this.updating = true;
                try
                {
@@ -223,10 +230,7 @@ define(["dojo/_base/xhr",
                finally
                {
                    this.updating = false;
-                   if (this.onUpdate)
-                   {
-                     this.onUpdate(data);
-                   }
+                   this.fireUpdate(data);
                }
            }
 
@@ -254,5 +258,40 @@ define(["dojo/_base/xhr",
                }
            };
 
+           GridUpdater.prototype.fireUpdate=function(data)
+           {
+             if (this.onUpdate.length > 0)
+             {
+               for(var i=0; i<this.onUpdate.length;i++)
+               {
+                 var onUpdate= this.onUpdate[i];
+                 try
+                 {
+                   onUpdate(data);
+                 }
+                 catch(e)
+                 {
+                   if (console && console.error)
+                   {
+                     console.error(e);
+                   }
+                 }
+               }
+             }
+           };
+
+           GridUpdater.prototype.addOnUpdate = function(obj) {
+             this.onUpdate.push(obj);
+           };
+
+           GridUpdater.prototype.removeOnUpdate = function(obj) {
+             for(var i = 0; i < this.onUpdate.length; i++) {
+                 if(this.onUpdate[i] === obj) {
+                   this.onUpdate.splice(i,1);
+                   return;
+                 }
+             }
+           };
+
            return GridUpdater;
        });

Modified: qpid/branches/linearstore/qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/common/updater.js
URL: http://svn.apache.org/viewvc/qpid/branches/linearstore/qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/common/updater.js?rev=1534394&r1=1534393&r2=1534394&view=diff
==============================================================================
--- qpid/branches/linearstore/qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/common/updater.js (original)
+++ qpid/branches/linearstore/qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/common/updater.js Mon Oct 21 22:04:51 2013
@@ -18,15 +18,35 @@
  * under the License.
  *
  */
-define(function () {
+define(["qpid/management/UserPreferences"], function (UserPreferences) {
     var updateList = new Array();
 
-    setInterval(function() {
-            for(var i = 0; i < updateList.length; i++) {
-              var obj = updateList[i];
-              obj.update();
-            }
-        }, 5000); // TODO: Should make this configurable
+    function invokeUpdates()
+    {
+      for(var i = 0; i < updateList.length; i++)
+      {
+        var obj = updateList[i];
+        obj.update();
+      }
+    }
+
+    var updatePeriod = UserPreferences.updatePeriod ? UserPreferences.updatePeriod: 5;
+
+    var timer = setInterval(invokeUpdates, updatePeriod * 1000);
+
+    var updateIntervalListener = {
+        onPreferencesChange: function(preferences)
+        {
+          if (preferences.updatePeriod && preferences.updatePeriod != updatePeriod)
+          {
+            updatePeriod = preferences.updatePeriod;
+            clearInterval(timer);
+            timer = setInterval(invokeUpdates, updatePeriod * 1000);
+          }
+        }
+    };
+
+    UserPreferences.addListener(updateIntervalListener);
 
     return {
             add: function(obj) {

Modified: qpid/branches/linearstore/qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/management/AuthenticationProvider.js
URL: http://svn.apache.org/viewvc/qpid/branches/linearstore/qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/management/AuthenticationProvider.js?rev=1534394&r1=1534393&r2=1534394&view=diff
==============================================================================
--- qpid/branches/linearstore/qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/management/AuthenticationProvider.js (original)
+++ qpid/branches/linearstore/qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/management/AuthenticationProvider.js Mon Oct 21 22:04:51 2013
@@ -237,18 +237,15 @@ define(["dojo/_base/xhr",
                        }
                      }
                      var preferencesProviderData = that.authProviderData.preferencesproviders? that.authProviderData.preferencesproviders[0]: null;
-                     if (preferencesProviderData)
+                     try
                      {
-                       try
-                       {
-                         that.updatePreferencesProvider(preferencesProviderData);
-                       }
-                       catch(e)
+                       that.updatePreferencesProvider(preferencesProviderData);
+                     }
+                     catch(e)
+                     {
+                       if (console)
                        {
-                         if (console)
-                           {
-                             console.error(e);
-                           }
+                         console.error(e);
                        }
                      }
                  });

Modified: qpid/branches/linearstore/qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/management/Preferences.js
URL: http://svn.apache.org/viewvc/qpid/branches/linearstore/qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/management/Preferences.js?rev=1534394&r1=1534393&r2=1534394&view=diff
==============================================================================
--- qpid/branches/linearstore/qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/management/Preferences.js (original)
+++ qpid/branches/linearstore/qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/management/Preferences.js Mon Oct 21 22:04:51 2013
@@ -34,6 +34,7 @@ define([
         "qpid/common/TimeZoneSelector",
         "dojo/text!../../showPreferences.html",
         "qpid/common/util",
+        "qpid/management/UserPreferences",
         "dijit/Dialog",
         "dijit/form/NumberSpinner",
         "dijit/form/CheckBox",
@@ -43,26 +44,26 @@ define([
         "dijit/form/DropDownButton",
         "dijit/form/Button",
         "dijit/form/Form",
+        "dijit/layout/BorderContainer",
         "dijit/layout/TabContainer",
         "dijit/layout/ContentPane",
         "dojox/grid/EnhancedGrid",
         "dojox/validate/us",
         "dojox/validate/web",
         "dojo/domReady!"],
-function (declare, xhr, event, connect, dom, domConstruct, parser, json, Memory, ObjectStore, entities, registry, TimeZoneSelector, markup, util) {
+function (declare, xhr, event, connect, dom, domConstruct, parser, json, Memory, ObjectStore, entities, registry, TimeZoneSelector, markup, util, UserPreferences) {
 
-  var preferenceNames = ["timeZone", "updatePeriod", "saveTabs"];
+  var preferenceNames = ["timeZone", "updatePeriod"];
 
   return declare("qpid.management.Preferences", null, {
 
     preferencesDialog: null,
-    saveButton: null,
-    cancelButton: null,
 
     constructor: function()
     {
       var that = this;
 
+      this.userPreferences = {};
       this.domNode = domConstruct.create("div", {innerHTML: markup});
       this.preferencesDialog = parser.parse(this.domNode)[0];
 
@@ -70,84 +71,41 @@ function (declare, xhr, event, connect, 
       {
         var name = preferenceNames[i];
         this[name] = registry.byId("preferences." + name);
+        this[name].on("change", function(val){that._toggleSetButtons();});
       }
 
-      this.saveButton = registry.byId("preferences.saveButton");
-      this.cancelButton = registry.byId("preferences.cancelButton");
+      this.setButton = registry.byId("preferences.setButton");
+      this.setAndCloseButton = registry.byId("preferences.setAndCloseButton");
+      this.setButton.on("click", function(e){that._savePreferences(e, false);});
+      this.setAndCloseButton.on("click", function(e){that._savePreferences(e, true);});
       this.theForm = registry.byId("preferences.preferencesForm");
-      this.users = registry.byId("preferences.users");
-      this.users.set("structure", [ { name: "User", field: "name", width: "50%"},
+      this.usersGrid = registry.byId("preferences.users");
+      this.usersGrid.set("structure", [ { name: "User", field: "name", width: "50%"},
                                  { name: "Authentication Provider", field: "authenticationProvider", width: "50%"}]);
-      this.cancelButton.on("click", function(){that.preferencesDialog.hide();});
-      this.deletePreferencesButton = registry.byId("preferences.deletePreeferencesButton");
-      this.deletePreferencesButton.on("click", function(){
-         if (util.deleteGridSelections(
-            null,
-            that.users,
-            "rest/userpreferences",
-            "Are you sure you want to delete preferences for user",
-            "user"))
-          {
-             that._updateUsersWithPreferences();
-          }
-      });
+      this.deleteButton = registry.byId("preferences.deleteButton");
+      this.deleteAndCloseButton = registry.byId("preferences.deleteAndCloseButton");
+      this.deleteButton.on("click", function(e){that._deletePreferences(false);});
+      this.deleteAndCloseButton.on("click", function(e){that._deletePreferences(true);});
+
       var deletePreferencesButtonToggler = function(rowIndex){
-        var data = that.users.selection.getSelected();
-        that.deletePreferencesButton.set("disabled",!data.length );
+        var data = that.usersGrid.selection.getSelected();
+        that.deleteButton.set("disabled",!data.length );
+        that.deleteAndCloseButton.set("disabled",!data.length );
       };
-      connect.connect(this.users.selection, 'onSelected',  deletePreferencesButtonToggler);
-      connect.connect(this.users.selection, 'onDeselected',  deletePreferencesButtonToggler);
-      this.theForm.on("submit", function(e){
-        event.stop(e);
-        if(that.theForm.validate()){
-          var preferences = {};
-          for(var i=0; i<preferenceNames.length; i++)
-          {
-            var name = preferenceNames[i];
-            var preferenceWidget = that[name];
-            if (preferenceWidget)
-            {
-              preferences[name] = preferenceWidget.get("value");
-            }
-          }
-          xhr.post({
-                url: "rest/preferences",
-                sync: true,
-                handleAs: "json",
-                headers: { "Content-Type": "application/json"},
-                postData: json.stringify(preferences),
-                load: function(x) {that.success = true; },
-                error: function(error) {that.success = false; that.failureReason = error;}
-          });
-          if(that.success === true)
-          {
-            that.preferencesDialog.hide();
-          }
-          else
-          {
-            alert("Error:" + that.failureReason);
-          }
-        }
-        return false;
-      });
+      connect.connect(this.usersGrid.selection, 'onSelected',  deletePreferencesButtonToggler);
+      connect.connect(this.usersGrid.selection, 'onDeselected',  deletePreferencesButtonToggler);
+      this.theForm.on("submit", function(e){event.stop(e); return false;});
+
+      this._setValues();
+
+      deletePreferencesButtonToggler();
       this.preferencesDialog.startup();
     },
 
     showDialog: function(){
-      var that = this;
-      xhr.get({
-        url: "rest/preferences",
-        sync: true,
-        handleAs: "json",
-        load: function(data) {
-          that._updatePreferencesWidgets(data);
-          that._updateUsersWithPreferences();
-          that.preferencesDialog.show();
-       },
-       error: function(error){
-         alert("Cannot load user preferences : " + error);
-       }
-      });
+      this._setValues();
+      this._loadUserPreferences();
+      this.preferencesDialog.show();
     },
 
     destroy: function()
@@ -159,24 +117,114 @@ function (declare, xhr, event, connect, 
       }
     },
 
-    _updatePreferencesWidgets: function(data)
+    _savePreferences: function(e, hideDialog)
     {
-      for(var i=0; i<preferenceNames.length; i++)
+      var that =this;
+      event.stop(e);
+      if(this.theForm.validate()){
+        var preferences = {};
+        for(var i=0; i<preferenceNames.length; i++)
+        {
+          var name = preferenceNames[i];
+          var preferenceWidget = this[name];
+          if (preferenceWidget)
+          {
+            preferences[name] = preferenceWidget.hasOwnProperty("checked") ? preferenceWidget.checked : preferenceWidget.get("value");
+          }
+        }
+
+        UserPreferences.setPreferences(
+            preferences,
+            function(preferences)
+            {
+              success = true;
+              if (hideDialog)
+              {
+                that.preferencesDialog.hide();
+              }
+              else
+              {
+                var reloadUsers = true;
+                if (that.users)
+                {
+                  var authenticatedUser = dom.byId("authenticatedUser").innerHTML;
+                  for(var i=0; i<that.users.length; i++)
+                  {
+                    if (that.users[i].name == authenticatedUser)
+                    {
+                      reloadUsers = false;
+                      break;
+                    }
+                  }
+                }
+                if (reloadUsers)
+                {
+                  that._loadUserPreferences();
+                }
+              }
+              that._toggleSetButtons();
+            },
+            function(error){alert("Error:" + error);}
+        );
+      }
+    },
+
+    _deletePreferences: function(hideDialog){
+      var data = this.usersGrid.selection.getSelected();
+      if (util.deleteGridSelections(
+         null,
+         this.usersGrid,
+         "rest/userpreferences",
+         "Are you sure you want to delete preferences for user",
+         "user"))
+       {
+        this._loadUserPreferences();
+        var authenticatedUser = dom.byId("authenticatedUser").innerHTML;
+        for(i = 0; i<data.length; i++)
+        {
+          if (data[i].name == authenticatedUser)
+          {
+            UserPreferences.resetPreferences();
+            this._setValues();
+            break;
+          }
+        }
+        if (hideDialog)
+        {
+          this.preferencesDialog.hide();
+        }
+       }
+    },
+
+    _setValues: function()
+    {
+      for(var i = 0; i < preferenceNames.length; i++)
       {
-        var preference = preferenceNames[i];
-        if (this.hasOwnProperty(preference))
+        var name = preferenceNames[i];
+        var preferenceWidget = this[name];
+        if (preferenceWidget)
         {
-          var value = data ? data[preference] : null;
+          var value = UserPreferences[name]
           if (typeof value == "string")
           {
             value = entities.encode(String(value))
           }
-          this[preference].set("value", value);
+          if (!value && name == "updatePeriod")
+          {
+            // set to default
+            value = 5;
+          }
+          preferenceWidget.set("value", value);
+          if (preferenceWidget.hasOwnProperty("checked"))
+          {
+            preferenceWidget.set("checked", UserPreferences[name] ? true : false);
+          }
         }
       }
+      this._toggleSetButtons();
     },
 
-    _updateUsersWithPreferences: function()
+    _loadUserPreferences : function()
     {
       var that = this;
       xhr.get({
@@ -189,15 +237,37 @@ function (declare, xhr, event, connect, 
              {
                users[i].id = users[i].authenticationProvider + "/" + users[i].name;
              }
+             that.users = users;
              var usersStore = new Memory({data: users, idProperty: "id"});
              var usersDataStore = new ObjectStore({objectStore: usersStore});
-             if (that.users.store)
+             if (that.usersGrid.store)
              {
-               that.users.store.close();
+               that.usersGrid.store.close();
              }
-             that.users.set("store", usersDataStore);
-             that.users._refresh();
+             that.usersGrid.set("store", usersDataStore);
+             that.usersGrid._refresh();
       });
+    },
+
+    _toggleSetButtons: function()
+    {
+      var changed = false;
+      for(var i=0; i<preferenceNames.length; i++)
+      {
+        var name = preferenceNames[i];
+        var preferenceWidget = this[name];
+        if (preferenceWidget)
+        {
+          var value = preferenceWidget.hasOwnProperty("checked") ? preferenceWidget.checked : preferenceWidget.get("value");
+          if (value != UserPreferences[name])
+          {
+            changed = true;
+            break;
+          }
+        }
+      }
+      this.setButton.set("disabled", !changed);
+      this.setAndCloseButton.set("disabled", !changed);
     }
 
   });

Modified: qpid/branches/linearstore/qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/management/Queue.js
URL: http://svn.apache.org/viewvc/qpid/branches/linearstore/qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/management/Queue.js?rev=1534394&r1=1534393&r2=1534394&view=diff
==============================================================================
--- qpid/branches/linearstore/qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/management/Queue.js (original)
+++ qpid/branches/linearstore/qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/management/Queue.js Mon Oct 21 22:04:51 2013
@@ -33,6 +33,7 @@ define(["dojo/_base/xhr",
         "qpid/management/addBinding",
         "qpid/management/moveCopyMessages",
         "qpid/management/showMessage",
+        "qpid/management/UserPreferences",
         "dojo/store/JsonRest",
         "dojox/grid/EnhancedGrid",
         "dojo/data/ObjectStore",
@@ -41,7 +42,7 @@ define(["dojo/_base/xhr",
         "dojox/grid/enhanced/plugins/IndirectSelection",
         "dojo/domReady!"],
        function (xhr, parser, query, registry, connect, event, json, properties, updater, util, formatter,
-                 UpdatableStore, addBinding, moveMessages, showMessage, JsonRest, EnhancedGrid, ObjectStore, entities) {
+                 UpdatableStore, addBinding, moveMessages, showMessage, UserPreferences, JsonRest, EnhancedGrid, ObjectStore, entities) {
 
            function Queue(name, parent, controller) {
                this.name = name;
@@ -98,10 +99,7 @@ define(["dojo/_base/xhr",
 
                                     {name:"Arrival", field:"arrivalTime", width: "100%",
                                         formatter: function(val) {
-                                            var d = new Date(0);
-                                            d.setUTCSeconds(val/1000);
-
-                                            return d.toLocaleString();
+                                            return UserPreferences.formatDateTime(val, {addOffset: true, appendTimeZone: true});
                                         } }
                                 ],
                                 plugins: {
@@ -164,6 +162,7 @@ define(["dojo/_base/xhr",
                                         event.stop(evt);
                                         that.deleteQueue();
                                     });
+                            UserPreferences.addListener(that);
                         }});
 
 
@@ -237,6 +236,12 @@ define(["dojo/_base/xhr",
 
            Queue.prototype.close = function() {
                updater.remove( this.queueUpdater );
+               UserPreferences.removeListener(this);
+           };
+
+           Queue.prototype.onPreferencesChange = function(data)
+           {
+             this.grid._refresh();
            };
 
            var queueTypeKeys = {
@@ -385,10 +390,12 @@ define(["dojo/_base/xhr",
                        var bindings = thisObj.queueData[ "bindings" ];
                        var consumers = thisObj.queueData[ "consumers" ];
 
-                       for(i=0; i < bindings.length; i++) {
+                       if (bindings)
+                       {
+                         for(i=0; i < bindings.length; i++) {
                            bindings[i].argumentString = json.stringify(bindings[i].arguments);
+                         }
                        }
-
                        thisObj.updateHeader();
 
 

Modified: qpid/branches/linearstore/qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/management/addAuthenticationProvider.js
URL: http://svn.apache.org/viewvc/qpid/branches/linearstore/qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/management/addAuthenticationProvider.js?rev=1534394&r1=1534393&r2=1534394&view=diff
==============================================================================
--- qpid/branches/linearstore/qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/management/addAuthenticationProvider.js (original)
+++ qpid/branches/linearstore/qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/management/addAuthenticationProvider.js Mon Oct 21 22:04:51 2013
@@ -31,7 +31,7 @@ define(["dojo/_base/xhr",
         "dijit/form/FilteringSelect",
         "dojo/_base/connect",
         "dojo/dom-style",
-        "qpid/management/addPreferencesProvider",
+        "qpid/management/PreferencesProviderFields",
         /* dojox/ validate resources */
         "dojox/validate/us", "dojox/validate/web",
         /* basic dijit classes */
@@ -45,7 +45,7 @@ define(["dojo/_base/xhr",
         "dojox/form/BusyButton", "dojox/form/CheckedMultiSelect",
         "dojox/layout/TableContainer",
         "dojo/domReady!"],
-    function (xhr, dom, construct, win, registry, parser, array, event, json, Memory, FilteringSelect, connect, domStyle, addPreferencesProvider) {
+    function (xhr, dom, construct, win, registry, parser, array, event, json, Memory, FilteringSelect, connect, domStyle, PreferencesProviderFields) {
 
         var addAuthenticationProvider = {};
 
@@ -66,6 +66,10 @@ define(["dojo/_base/xhr",
             {
                 if(formValues.hasOwnProperty(propName))
                 {
+                    if (propName.indexOf("preferencesProvider") == 0)
+                    {
+                      continue;
+                    }
                     if(formValues[ propName ] !== "") {
                         newProvider[ propName ] = formValues[propName];
                     }
@@ -101,6 +105,21 @@ define(["dojo/_base/xhr",
             return "ap_" + providerType + "Field" + attribute;
         }
 
+        var showPreferencesProviderFields = function showPreferencesProviderFields(provider)
+        {
+          var preferencesProviderDiv = dojo.byId("addAuthenticationProvider.preferencesProvider");
+          var preferencesProviderPanel = dijit.byId("addAuthenticationProvider.preferencesProviderPanel");
+          if (provider && provider.type == "Anonymous")
+          {
+            preferencesProviderPanel.domNode.style.display = 'none';
+          }
+          else
+          {
+            preferencesProviderPanel.domNode.style.display = 'block';
+            PreferencesProviderFields.show(preferencesProviderDiv, provider && provider.preferencesproviders ? provider.preferencesproviders[0] : null);
+          }
+        }
+
         var loadProviderAndDisplayForm = function loadProviderAndDisplayForm(providerName, dialog)
         {
             if (providerName)
@@ -129,11 +148,13 @@ define(["dojo/_base/xhr",
                                }
                            }
                        }
+                       showPreferencesProviderFields(provider);
                        registry.byId("addAuthenticationProvider").show();
                });
             }
             else
             {
+                showPreferencesProviderFields();
                 registry.byId("addAuthenticationProvider").show();
             }
         }
@@ -163,15 +184,14 @@ define(["dojo/_base/xhr",
 
                                     if(this.success === true)
                                     {
+                                      if (PreferencesProviderFields.save(newAuthenticationManager.name))
+                                      {
                                         registry.byId("addAuthenticationProvider").hide();
-                                        if (newAuthenticationManager.type != "Anonymous" && dojo.byId("formAddAuthenticationProvider.id").value == "")
-                                        {
-                                          addPreferencesProvider.show(newAuthenticationManager.name);
-                                        }
+                                      }
                                     }
                                     else
                                     {
-                                        alert("Error:" + this.failureReason);
+                                        alert("Authentication Provider Error:" + this.failureReason);
                                     }
                                     return false;
                                 }else{
@@ -251,9 +271,10 @@ define(["dojo/_base/xhr",
                                                                  name: "type",
                                                                  store: providersStore,
                                                                  searchAttr: "name"}, input);
-                       connect.connect(that.providerChooser, "onChange",
-                           function(event)
+                       that.providerChooser.on("change",
+                           function(value)
                            {
+                               dijit.byId("addAuthenticationProvider.preferencesProviderPanel").domNode.style.display = (value == "Anonymous" ? "none" : "block");
                                showFieldSets(that.providerChooser.value, that.providerFieldSets);
                            }
                        );

Modified: qpid/branches/linearstore/qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/management/addPreferencesProvider.js
URL: http://svn.apache.org/viewvc/qpid/branches/linearstore/qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/management/addPreferencesProvider.js?rev=1534394&r1=1534393&r2=1534394&view=diff
==============================================================================
--- qpid/branches/linearstore/qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/management/addPreferencesProvider.js (original)
+++ qpid/branches/linearstore/qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/management/addPreferencesProvider.js Mon Oct 21 22:04:51 2013
@@ -34,6 +34,7 @@ define(["dojo/_base/xhr",
         "dojo/dom-style",
         "dojo/string",
         "dojox/html/entities",
+        "qpid/management/PreferencesProviderFields",
         "dojox/validate/us",
         "dojox/validate/web",
         "dijit/Dialog",
@@ -47,47 +48,12 @@ define(["dojo/_base/xhr",
         "dojox/form/CheckedMultiSelect",
         "dojox/layout/TableContainer",
         "dojo/domReady!"],
-    function (xhr, dom, construct, query, win, registry, parser, array, event, json, Memory, FilteringSelect, connect, domStyle, string, entities) {
+    function (xhr, dom, construct, query, win, registry, parser, array, event, json, Memory, FilteringSelect, connect, domStyle, string, entities, PreferencesProviderFields) {
 
         var addPreferencesProvider = {};
 
         var node = construct.create("div", null, win.body(), "last");
 
-        var convertToPreferencesProvider = function convertToPreferencesProvider(formValues)
-        {
-            var newProvider = {};
-
-            newProvider.name = dijit.byId("preferencesProvider.name").value;
-            newProvider.type = dijit.byId("preferencesProvider.type").value;
-            var id = dojo.byId("preferencesProvider.id").value;
-            if (id)
-            {
-                newProvider.id = id;
-            }
-            for(var propName in formValues)
-            {
-                if(formValues.hasOwnProperty(propName))
-                {
-                    if(formValues[ propName ] !== "") {
-                        newProvider[ propName ] = formValues[propName];
-                    }
-
-                }
-            }
-            return newProvider;
-        }
-
-        var selectPreferencesProviderType = function(type) {
-            if(type && string.trim(type) != "")
-            {
-                require(["qpid/management/authenticationprovider/preferences/" + type.toLowerCase() + "/add"],
-                function(addType)
-                {
-                  addType.show(dom.byId("preferencesProvider.fieldsContainer"), addPreferencesProvider.data)
-                });
-            }
-        }
-
         xhr.get({url: "addPreferencesProvider.html",
                  sync: true,
                  load:  function(data) {
@@ -104,94 +70,24 @@ define(["dojo/_base/xhr",
 
                                 event.stop(e);
                                 if(theForm.validate()){
-                                    var newProvider = convertToPreferencesProvider(theForm.getValues());
-                                    var that = this;
-                                    var nameWidget = registry.byId("preferencesProvider.name")
-                                    xhr.put({url: "rest/preferencesprovider/" +encodeURIComponent(addPreferencesProvider.authenticationProviderName) + "/" + encodeURIComponent(nameWidget.value),
-                                             sync: true, handleAs: "json",
-                                             headers: { "Content-Type": "application/json"},
-                                             putData: json.toJson(newProvider),
-                                             load: function(x) {that.success = true; },
-                                             error: function(error) {that.success = false; that.failureReason = error;}});
-                                    if(this.success === true)
+                                    if(PreferencesProviderFields.save(addPreferencesProvider.authenticationProviderName))
                                     {
                                         registry.byId("addPreferencesProvider").hide();
                                     }
-                                    else
-                                    {
-                                        alert("Error:" + this.failureReason);
-                                    }
                                     return false;
                                 }else{
                                     alert('Form contains invalid data.  Please correct first');
                                     return false;
                                 }
                             });
-                            xhr.get({
-                                sync: true,
-                                url: "rest/helper?action=ListPreferencesProvidersTypes",
-                                handleAs: "json"
-                            }).then(
-                                function(data) {
-                                    var preferencesProvidersTypes =  data;
-                                    var storeData = [];
-                                    for (var i =0 ; i < preferencesProvidersTypes.length; i++)
-                                    {
-                                        storeData[i]= {id: preferencesProvidersTypes[i], name: preferencesProvidersTypes[i]};
-                                    }
-                                    var store = new Memory({ data: storeData });
-                                    var preferencesProviderTypesDiv = dom.byId("addPreferencesProvider.selectPreferencesProviderDiv");
-                                    var input = construct.create("input", {id: "preferencesProviderType", required: true}, preferencesProviderTypesDiv);
-                                    addPreferencesProvider.preferencesProviderTypeChooser = new FilteringSelect({ id: "preferencesProvider.type",
-                                                                              name: "type",
-                                                                              store: store,
-                                                                              searchAttr: "name",
-                                                                              required: true,
-                                                                              onChange: selectPreferencesProviderType }, input);
-                                    addPreferencesProvider.preferencesProviderTypeChooser.startup();
-                            });
                         }});
 
         addPreferencesProvider.show = function(authenticationProviderName, providerName) {
             this.authenticationProviderName = authenticationProviderName;
-            this.data = null;
-            var that = this;
-            var theForm = registry.byId("formAddPreferencesProvider");
-            theForm.reset();
-            dojo.byId("preferencesProvider.id").value="";
-            var nameWidget = registry.byId("preferencesProvider.name");
-            nameWidget.set("disabled", false);
-            registry.byId("preferencesProvider.type").set("disabled", false);
-            if (this.preferencesProviderTypeChooser)
-            {
-                this.preferencesProviderTypeChooser.set("disabled", false);
-                this.preferencesProviderTypeChooser.set("value", null);
-            }
+            PreferencesProviderFields.show(dom.byId("addPreferencesProvider.preferencesProvider"), providerName, authenticationProviderName)
             var dialog = registry.byId("addPreferencesProvider");
-            dialog.set("title", (providerName ? "Edit preference provider '" + entities.encode(String(providerName)) + "' " : "Add preferences provider ") + " for authentication provider '" + entities.encode(String(authenticationProviderName)) + "' ")
-            if (providerName)
-            {
-                xhr.get({
-                    url: "rest/preferencesprovider/"  +encodeURIComponent(authenticationProviderName) + "/" + encodeURIComponent(providerName),
-                    sync: false,
-                    handleAs: "json"
-                }).then(
-                   function(data) {
-                       var provider = data[0];
-                       var providerType = provider.type;
-                       that.data = provider;
-                       nameWidget.set("value",  entities.encode(String(provider.name)));
-                       nameWidget.set("disabled", true);
-                       that.preferencesProviderTypeChooser.set("value", providerType);
-                       that.preferencesProviderTypeChooser.set("disabled", true);
-                       dojo.byId("preferencesProvider.id").value=provider.id;
-                       dialog.show();
-               });
-            }
-            else
-            {
-              dialog.show();
-            }
+            dialog.set("title", (providerName ? "Edit preferences provider '" + entities.encode(String(providerName)) + "' " : "Add preferences provider ") + " for '" + entities.encode(String(authenticationProviderName)) + "' ")
+            dialog.show();
         }
 
         return addPreferencesProvider;

Modified: qpid/branches/linearstore/qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/management/authenticationprovider/preferences/filesystempreferences/add.js
URL: http://svn.apache.org/viewvc/qpid/branches/linearstore/qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/management/authenticationprovider/preferences/filesystempreferences/add.js?rev=1534394&r1=1534393&r2=1534394&view=diff
==============================================================================
--- qpid/branches/linearstore/qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/management/authenticationprovider/preferences/filesystempreferences/add.js (original)
+++ qpid/branches/linearstore/qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/management/authenticationprovider/preferences/filesystempreferences/add.js Mon Oct 21 22:04:51 2013
@@ -33,10 +33,10 @@ define(["dojo/_base/xhr",
         "dojo/domReady!"],
     function (xhr, dom, domConstruct, win, registry, parser, array, event, json, string, entities, template) {
         return {
-            show: function(node, data) {
-                dojo.forEach(dijit.findWidgets(node), function(w) {
-                    w.destroyRecursive();
-                });
+            show: function(node, data)
+            {
+                this.destroy();
+                this.node = node;
                 node.innerHTML = template;
                 parser.parse(node);
                 var pathWidget = registry.byId("preferencesProvider.path")
@@ -44,6 +44,23 @@ define(["dojo/_base/xhr",
                 {
                   pathWidget.set("value", entities.encode(String(data["path"])));
                 }
+            },
+            destroy: function()
+            {
+              if (this.node)
+              {
+                dojo.forEach(dijit.findWidgets(this.node), function(w) {w.destroyRecursive();});
+                this.node = null;
+              }
+            },
+            disable: function(val)
+            {
+                var pathWidget = registry.byId("preferencesProvider.path");
+                pathWidget.set("disabled", val);
+            },
+            getValues: function()
+            {
+              return {path: registry.byId("preferencesProvider.path").value};
             }
         };
     });

Modified: qpid/branches/linearstore/qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/management/logs/LogFileDownloadDialog.js
URL: http://svn.apache.org/viewvc/qpid/branches/linearstore/qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/management/logs/LogFileDownloadDialog.js?rev=1534394&r1=1534393&r2=1534394&view=diff
==============================================================================
--- qpid/branches/linearstore/qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/management/logs/LogFileDownloadDialog.js (original)
+++ qpid/branches/linearstore/qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/management/logs/LogFileDownloadDialog.js Mon Oct 21 22:04:51 2013
@@ -28,7 +28,7 @@ define([
   "dojo/parser",
   "dojo/store/Memory",
   "dojo/data/ObjectStore",
-  "dojo/date/locale",
+  "qpid/management/UserPreferences",
   "dojo/number",
   "dijit/registry",
   "dijit/Dialog",
@@ -36,7 +36,7 @@ define([
   "dojox/grid/EnhancedGrid",
   "dojo/text!../../../logs/showLogFileDownloadDialog.html",
   "dojo/domReady!"
-], function(declare, event, xhr, connect, domConstruct, query, parser, Memory, ObjectStore, locale, number,
+], function(declare, event, xhr, connect, domConstruct, query, parser, Memory, ObjectStore, UserPreferences, number,
     registry, Dialog, Button, EnhancedGrid, template){
 
 
@@ -79,8 +79,7 @@ return declare("qpid.management.logs.Log
           },
           { name: "Last Modified", field: "lastModified", width: "250px",
               formatter: function(val) {
-                var d = new Date(val);
-                return locale.format(d, {selector:"date", datePattern: "EEE, MMM d yy, HH:mm:ss z (ZZZZ)"});
+                return UserPreferences.formatDateTime(val, {addOffset: true, appendTimeZone: true});
               }
           }
         ];
@@ -152,7 +151,7 @@ return declare("qpid.management.logs.Log
 
     showDialog: function(){
         var self = this;
-        var requestArguments = {url: "rest/logfiles", sync: true, handleAs: "json"};
+        var requestArguments = {url: "rest/logfilenames", sync: true, handleAs: "json"};
         xhr.get(requestArguments).then(function(data){
           try
           {

Modified: qpid/branches/linearstore/qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/management/logs/LogViewer.js
URL: http://svn.apache.org/viewvc/qpid/branches/linearstore/qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/management/logs/LogViewer.js?rev=1534394&r1=1534393&r2=1534394&view=diff
==============================================================================
--- qpid/branches/linearstore/qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/management/logs/LogViewer.js (original)
+++ qpid/branches/linearstore/qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/management/logs/LogViewer.js Mon Oct 21 22:04:51 2013
@@ -23,14 +23,25 @@ define(["dojo/_base/xhr",
         "dojo/query",
         "dojo/date/locale",
         "dijit/registry",
+        "qpid/management/UserPreferences",
         "qpid/common/grid/GridUpdater",
         "qpid/common/grid/UpdatableGrid",
         "qpid/management/logs/LogFileDownloadDialog",
         "dojo/text!../../../logs/showLogViewer.html",
         "dojo/domReady!"],
-       function (xhr, parser, query, locale, registry, GridUpdater, UpdatableGrid, LogFileDownloadDialog, markup) {
+       function (xhr, parser, query, locale, registry, UserPreferences, GridUpdater, UpdatableGrid, LogFileDownloadDialog, markup) {
 
            var defaulGridRowLimit = 4096;
+           var currentTimeZone;
+
+           function dataTransformer(data)
+           {
+             for(var i=0; i < data.length; i++)
+             {
+               data[i].time = UserPreferences.addTimeZoneOffsetToUTC(data[i].timestamp);
+             }
+             return data;
+           }
 
            function LogViewer(name, parent, controller) {
                var self = this;
@@ -64,10 +75,11 @@ define(["dojo/_base/xhr",
 
            LogViewer.prototype._buildGrid = function() {
                var self = this;
+               currentTimeZone = UserPreferences.getTimeZoneDescription();
 
                var gridStructure = [
                     {
-                      hidden: true,
+                      hidden: false,
                       name: "ID",
                       field: "id",
                       width: "50px",
@@ -75,28 +87,27 @@ define(["dojo/_base/xhr",
                       filterable: true
                     },
                     {
-                      name: "Date", field: "timestamp", width: "100px", datatype: "date",
+                      name: "Date", field: "time", width: "100px", datatype: "date",
                         formatter: function(val) {
-                        var d = new Date(0);
-                        d.setUTCSeconds(val/1000);
-                        return locale.format(d, {selector:"date", datePattern: "EEE, MMM d yy"});
-                      },
-                      dataTypeArgs: {
-                        selector: "date",
-                        datePattern: "EEE MMMM d yyy"
+                        return UserPreferences.formatDateTime(val, {selector:"date"});
                       }
                     },
-                    { name: "Time", field: "timestamp", width: "150px", datatype: "time",
+                    { name: "Time ", field: "time", width: "100px", datatype: "time",
                      formatter: function(val) {
-                       var d = new Date(0);
-                       d.setUTCSeconds(val/1000);
-                       return locale.format(d, {selector:"time", timePattern: "HH:mm:ss z (ZZZZ)"});
-                     },
-                     dataTypeArgs: {
-                       selector: "time",
-                       timePattern: "HH:mm:ss ZZZZ"
+                       return UserPreferences.formatDateTime(val, {selector:"time"});
                      }
                    },
+                   {
+                     name: "Time zone",
+                     field: "time",
+                     width: "80px",
+                     datatype: "string",
+                     hidden: true,
+                     filterable: false,
+                     formatter: function(val) {
+                       return currentTimeZone;
+                     },
+                   },
                    { name: "Level", field: "level", width: "50px", datatype: "string", autoComplete: true, hidden: true},
                    { name: "Logger", field: "logger", width: "150px", datatype: "string", autoComplete: false, hidden: true},
                    { name: "Thread", field: "thread", width: "100px", datatype: "string", hidden: true},
@@ -132,18 +143,20 @@ define(["dojo/_base/xhr",
                        }
                      },
                      append: true,
-                     appendLimit: defaulGridRowLimit
+                     appendLimit: defaulGridRowLimit,
+                     dataTransformer: dataTransformer
                  });
                  this.grid = new UpdatableGrid(updater.buildUpdatableGridArguments({
                      structure: gridStructure,
                      selectable: true,
                      selectionMode: "none",
                      sortInfo: -1,
-                     sortFields: [{attribute: 'timestamp', descending: true}],
+                     sortFields: [{attribute: 'id', descending: true}],
                      plugins:{
                        nestedSorting:true,
-                       enhancedFilter:{defaulGridRowLimit: defaulGridRowLimit},
-                       indirectSelection: false
+                       enhancedFilter:{defaulGridRowLimit: defaulGridRowLimit,displayLastUpdateTime:true},
+                       indirectSelection: false,
+                       pagination: {defaultPageSize: 10}
                      }
                   }), gridNode);
                  var onStyleRow = function(row)
@@ -170,14 +183,19 @@ define(["dojo/_base/xhr",
                  };
                  this.grid.on("styleRow", onStyleRow);
                  this.grid.startup();
+                 UserPreferences.addListener(this);
                }
                catch(err)
                {
-                 console.error(err);
+                 if (console && console.error)
+                 {
+                   console.error(err);
+                 }
                }
            };
 
            LogViewer.prototype.close = function() {
+             UserPreferences.removeListener(this);
              if (this.grid)
              {
                  this.grid.destroy();
@@ -195,5 +213,12 @@ define(["dojo/_base/xhr",
              }
            };
 
+           LogViewer.prototype.onPreferencesChange = function(data)
+           {
+             currentTimeZone = UserPreferences.getTimeZoneDescription();
+             dataTransformer(this.grid.updater.memoryStore.data);
+             this.grid._refresh();
+           };
+
            return LogViewer;
        });

Modified: qpid/branches/linearstore/qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/management/showMessage.js
URL: http://svn.apache.org/viewvc/qpid/branches/linearstore/qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/management/showMessage.js?rev=1534394&r1=1534393&r2=1534394&view=diff
==============================================================================
--- qpid/branches/linearstore/qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/management/showMessage.js (original)
+++ qpid/branches/linearstore/qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/management/showMessage.js Mon Oct 21 22:04:51 2013
@@ -29,8 +29,9 @@ define(["dojo/_base/xhr",
         "dojo/_base/connect",
         "qpid/common/properties",
         "dojox/html/entities",
+        "qpid/management/UserPreferences",
         "dojo/domReady!"],
-    function (xhr, dom, construct, domClass, win, registry, parser, array, event, json, query, connect, properties, entities) {
+    function (xhr, dom, construct, domClass, win, registry, parser, array, event, json, query, connect, properties, entities, UserPreferences) {
 
 
         function encode(val){
@@ -88,9 +89,7 @@ define(["dojo/_base/xhr",
                                 }
                                 tableStr += "</table>";
                             } else if(domClass.contains(field,"datetime")) {
-                                var d = new Date(0);
-                                d.setUTCSeconds(val/1000);
-                                field.innerHTML = d.toLocaleString();
+                                field.innerHTML = UserPreferences.formatDateTime(val, {addOffset: true, appendTimeZone: true});
                             } else {
                                 field.innerHTML = encode(val);
                             }

Modified: qpid/branches/linearstore/qpid/java/broker-plugins/management-http/src/main/java/resources/logs/showLogViewer.html
URL: http://svn.apache.org/viewvc/qpid/branches/linearstore/qpid/java/broker-plugins/management-http/src/main/java/resources/logs/showLogViewer.html?rev=1534394&r1=1534393&r2=1534394&view=diff
==============================================================================
--- qpid/branches/linearstore/qpid/java/broker-plugins/management-http/src/main/java/resources/logs/showLogViewer.html (original)
+++ qpid/branches/linearstore/qpid/java/broker-plugins/management-http/src/main/java/resources/logs/showLogViewer.html Mon Oct 21 22:04:51 2013
@@ -23,7 +23,7 @@
     <div id="broker-logfile"></div>
     <br/>
     <button data-dojo-type="dijit.form.Button" class="downloadLogs"
-                data-dojo-props="iconClass: 'downloadLogsIcon', title:'Download Log Files', name: 'downloadLogs'">Download</button>
+                data-dojo-props="iconClass: 'downloadLogsIcon', title:'Download Log Files', name: 'downloadLogs'">Download Log Files</button>
     <br/>
 </div>
 

Modified: qpid/branches/linearstore/qpid/java/broker-plugins/management-http/src/main/java/resources/showExchange.html
URL: http://svn.apache.org/viewvc/qpid/branches/linearstore/qpid/java/broker-plugins/management-http/src/main/java/resources/showExchange.html?rev=1534394&r1=1534393&r2=1534394&view=diff
==============================================================================
--- qpid/branches/linearstore/qpid/java/broker-plugins/management-http/src/main/java/resources/showExchange.html (original)
+++ qpid/branches/linearstore/qpid/java/broker-plugins/management-http/src/main/java/resources/showExchange.html Mon Oct 21 22:04:51 2013
@@ -19,24 +19,43 @@
  -
  -->
 <div class="exchange">
-    <span style="">Name:</span><span class="name" style="position:absolute; left:6em"></span>
-    <br/>
-    <span style="">State:</span><span class="state" style="position:absolute; left:6em"></span>
-    <br/>
-    <span style="">Durable:</span><span class="durable" style="position:absolute; left:6em"></span>
-    <span style="position:absolute; left:26em">Inbound:</span>
-    <span class="msgInRate" style="position:absolute; right:9.5em"></span>
-    <span style="position:absolute; right: 5em; width: 4em"> msg/s</span>
-    <span class="bytesInRate" style="position:absolute; right: 3.3em"></span>
-    <span class="bytesInRateUnits" style="position:absolute; right: 0em; width: 3em"></span>
-    <br/>
-    <span style="">Lifespan:</span><span style="position:absolute; left:6em" class="lifetimePolicy"></span>
-    <span style="position:absolute; left:26em">Dropped:</span>
-    <span class="msgDropRate" style="position:absolute; right:9.5em"></span>
-    <span style="position:absolute; right: 5em; width: 4em"> msg/s</span>
-    <span class="bytesDropRate" style="position:absolute; right: 3.3em"></span>
-    <span class="bytesDropRateUnits" style="position:absolute; right: 0em; width: 3em"></span>
-    <br/>
+    <div data-dojo-type="dijit.TitlePane" data-dojo-props="title: 'Exchange Attributes',  open: true">
+        <div style="clear:both">
+            <div class="formLabel-labelCell" style="float:left; width: 100px;">Name:</div>
+            <div class="name" style="float:left;"></div>
+        </div>
+        <div style="clear:both">
+            <div class="formLabel-labelCell" style="float:left; width: 100px;">State:</div>
+            <div class="state" style="float:left;"></div>
+        </div>
+        <div style="clear:both">
+            <div class="formLabel-labelCell" style="float:left; width: 100px;">Durable:</div>
+            <div class="durable" style="float:left;"></div>
+        </div>
+        <div style="clear:both">
+            <div class="formLabel-labelCell" style="float:left; width: 100px;">Lifespan:</div>
+            <div class="lifetimePolicy" style="float:left;"></div>
+        </div>
+        <div style="clear:both">
+            <div class="formLabel-labelCell" style="float:left; width: 100px;">Inbound:</div>
+            <div style="float:left;">
+                <span class="msgInRate"></span>
+                <span> msg/s</span>
+                <span class="bytesInRate">(</span>
+                <span class="bytesInRateUnits">)</span>
+            </div>
+        </div>
+        <div style="clear:both">
+            <div class="formLabel-labelCell" style="float:left; width: 100px;">Dropped:</div>
+            <div style="float:left;">
+                <span class="msgDropRate"></span>
+                <span> msg/s</span>
+                <span class="bytesDropRate">(</span>
+                <span class="bytesDropRateUnits">)</span>
+            </div>
+        </div>
+        <div style="clear:both"></div>
+    </div>
     <br/>
     <div data-dojo-type="dijit.TitlePane" data-dojo-props="title: 'Bindings'">
         <div class="bindings"></div>

Modified: qpid/branches/linearstore/qpid/java/broker-plugins/management-http/src/main/java/resources/showPreferences.html
URL: http://svn.apache.org/viewvc/qpid/branches/linearstore/qpid/java/broker-plugins/management-http/src/main/java/resources/showPreferences.html?rev=1534394&r1=1534393&r2=1534394&view=diff
==============================================================================
--- qpid/branches/linearstore/qpid/java/broker-plugins/management-http/src/main/java/resources/showPreferences.html (original)
+++ qpid/branches/linearstore/qpid/java/broker-plugins/management-http/src/main/java/resources/showPreferences.html Mon Oct 21 22:04:51 2013
@@ -22,15 +22,13 @@
   <div data-dojo-type="dijit/layout/TabContainer" style="width: 600px; height: 400px">
     <div data-dojo-type="dijit/layout/ContentPane" title="Own Preferences" data-dojo-props="selected:true" id="preferences.preferencesTab">
       <form method="post" data-dojo-type="dijit/form/Form" id="preferences.preferencesForm">
-        <table cellpadding="0" cellspacing="2" style="overflow: auto; height: 300px;">
+        <div style="height:300px">
+        <table cellpadding="0" cellspacing="2">
             <tr>
-                <td><strong>Time zone: </strong></td>
-                <td>
-                    <span id="preferences.timeZone" data-dojo-type="qpid/common/TimeZoneSelector" data-dojo-props="name: 'timeZone'"></span>
-                </td>
+                <td colspan="2"><span id="preferences.timeZone" data-dojo-type="qpid/common/TimeZoneSelector" data-dojo-props="name: 'timeZone', labelStyle: {width: '105px'}"></span></td>
             </tr>
             <tr>
-                <td><strong>Update period:</strong></td>
+                <td style="width: 105px"><strong>Update period:</strong></td>
                 <td><input id="preferences.updatePeriod" name="updatePeriod" data-dojo-type="dijit/form/NumberSpinner" data-dojo-props="
                                   invalidMessage: 'Invalid value',
                                   required: false,
@@ -40,14 +38,11 @@
                               "/>
                 </td>
             </tr>
-            <tr>
-                <td><strong>Save tabs:</strong></td>
-                <td><input id="preferences.saveTabs" type="checkbox" data-dojo-type="dijit/form/CheckBox" name="saveTabs"/></td>
-            </tr>
         </table>
+        </div>
         <div class="dijitDialogPaneActionBar">
-          <input type="submit" value="Save Preferences" data-dojo-type="dijit/form/Button" data-dojo-props="label: 'Save Preferences'" id="preferences.saveButton"/>
-          <button value="Cancel" data-dojo-type="dijit/form/Button" data-dojo-props="label: 'Cancel'" id="preferences.cancelButton"></button>
+          <button data-dojo-type="dijit/form/Button" data-dojo-props="label: 'Set'" id="preferences.setButton">Set</button>
+          <button data-dojo-type="dijit/form/Button" data-dojo-props="label: 'Set and Close'" id="preferences.setAndCloseButton">Set and Close</button>
         </div>
       </form>
     </div>
@@ -76,7 +71,8 @@
         </thead>
       </table>
       <div class="dijitDialogPaneActionBar">
-        <button id="preferences.deletePreeferencesButton" data-dojo-type="dijit/form/Button" data-dojo-props="label:'Delete Preferences', title:'Delete preferences for selected users'">Delete Preferences</button>
+        <button id="preferences.deleteButton" data-dojo-type="dijit/form/Button" data-dojo-props="label:'Delete', title:'Delete preferences for selected users'">Delete</button>
+        <button id="preferences.deleteAndCloseButton" data-dojo-type="dijit/form/Button" data-dojo-props="label: 'Delete and Close', title:'Delete preferences for selected users and close the dialog'">Delete and Close</button>
       </div>
     </div>
   </div>



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