diff options
Diffstat (limited to 'qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid')
16 files changed, 328 insertions, 100 deletions
diff --git a/qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/common/metadata.js b/qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/common/metadata.js new file mode 100644 index 0000000000..19ec53744f --- /dev/null +++ b/qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/common/metadata.js @@ -0,0 +1,57 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +define(["dojo/_base/xhr", + "dojox/lang/functional/object", + "qpid/common/properties", + "dojo/domReady!" + ], + function (xhr, fobject, properties) + { + var metadata = + { + _init: function () + { + var that = this; + xhr.get({sync: true, handleAs: "json", url: "service/metadata", load: function(metadata){that._onMetadata(metadata)}}); + }, + _onMetadata: function (metadata) + { + this.metadata = metadata; + }, + getMetaData: function (category, type) + { + return this.metadata[category][type]; + }, + getDefaultValueForAttribute: function (category, type, attributeName) + { + var metaDataForInstance = this.getMetaData(category, type); + var attributesForType = metaDataForInstance["attributes"]; + var attributesForName = attributesForType[attributeName]; + return attributesForName ? attributesForName["defaultValue"] : undefined; + }, + getTypesForCategory: function (category) + { + return fobject.keys(this.metadata[category]); + } + }; + + metadata._init(); + + return metadata; + }); diff --git a/qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/common/util.js b/qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/common/util.js index 1a89bfb374..9e433bbb34 100644 --- a/qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/common/util.js +++ b/qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/common/util.js @@ -19,15 +19,19 @@ * */ define(["dojo/_base/xhr", + "dojo/_base/array", "dojo/_base/event", - "dojo/json", "dojo/_base/lang", + "dojo/json", "dojo/dom-construct", "dojo/dom-geometry", "dojo/window", "dojo/query", "dojo/parser", + "dojo/store/Memory", "dojox/html/entities", + "qpid/common/metadata", + "qpid/common/widgetconfigurer", "dijit/registry", "dijit/TitlePane", "dijit/Dialog", @@ -35,13 +39,15 @@ define(["dojo/_base/xhr", "dijit/form/Button", "dijit/form/RadioButton", "dijit/form/CheckBox", + "dijit/form/FilteringSelect", + "dijit/form/ValidationTextBox", "dojox/layout/TableContainer", "dijit/layout/ContentPane", "dojox/validate/us", "dojox/validate/web", "dojo/domReady!" ], - function (xhr, event, json, lang, dom, geometry, win, query, parser, entities, registry) { + function (xhr, array, event, lang, json, dom, geometry, win, query, parser, Memory, entities, metadata, widgetconfigurer, registry) { var util = {}; if (Array.isArray) { util.isArray = function (object) { @@ -146,7 +152,7 @@ define(["dojo/_base/xhr", return (type === "PlainPasswordFile" || type === "Base64MD5PasswordFile" || type === "SCRAM-SHA-1" || type === "SCRAM-SHA-256"); }; - util.showSetAttributesDialog = function(attributeWidgetFactories, data, putURL, dialogTitle, appendNameToUrl) + util.showSetAttributesDialog = function(attributeWidgetFactories, data, putURL, dialogTitle, category, type, appendNameToUrl) { var layout = new dojox.layout.TableContainer({ cols: 1, @@ -200,7 +206,7 @@ define(["dojo/_base/xhr", { groupFieldContainer = new dojox.layout.TableContainer({ cols: 1, - "labelWidth": "290", + "labelWidth": "300", showLabels: true, orientation: "horiz", customClass: "formLabel" @@ -220,6 +226,8 @@ define(["dojo/_base/xhr", } } + this.applyMetadataToWidgets(dialogContent, category, type); + // add onchange handler to set required property for dependent widget for(var widgetName in requiredFor) { @@ -310,14 +318,17 @@ define(["dojo/_base/xhr", aproximateHeight += 30; } } - var viewport = win.getBox(); - var maxHeight = Math.max(Math.floor(viewport.h * 0.6), 100); dialogContentArea.style.overflow= "auto"; - dialogContentArea.style.height = Math.min(aproximateHeight, maxHeight ) + "px"; + dialogContentArea.style.height = "300"; setAttributesDialog.on("hide", function(e){setAttributesDialog.destroy();}); setAttributesDialog.show(); }; + util.findAllWidgets = function(root) + { + return query("[widgetid]", root).map(registry.byNode).filter(function(w){ return w;}); + }; + util.xhrErrorHandler = function(error) { if (error) @@ -540,6 +551,16 @@ define(["dojo/_base/xhr", } } + util.applyMetadataToWidgets = function(domRoot, category, type) + { + var widgets = util.findAllWidgets(domRoot); + array.forEach(widgets, + function (widget) + { + widgetconfigurer.config(widget, category, type); + }); + } + util.getFormWidgetValues = function (form, initialData) { var values = {}; @@ -636,6 +657,16 @@ define(["dojo/_base/xhr", } } + util.makeTypeStore = function (types) + { + var typeData = []; + for (var i = 0; i < types.length; i++) { + var type = types[i]; + typeData.push({id: type, name: type}); + } + return new Memory({ data: typeData }); + } + var singleContextVarRegexp = "(\\${[\\w\\.\\-]+})"; util.numericOrContextVarRegexp = function(constraints) diff --git a/qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/common/widgetconfigurer.js b/qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/common/widgetconfigurer.js new file mode 100644 index 0000000000..0b08dde615 --- /dev/null +++ b/qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/common/widgetconfigurer.js @@ -0,0 +1,97 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +define(["dojo/_base/xhr", + "dojo/string", + "dojo/query", + "dojo/dom", + "dojo/dom-construct", + "dojo/dom-attr", + "qpid/common/properties", + "qpid/common/metadata", + "dojo/text!strings.html", + "dojo/domReady!" + ], + function (xhr, string, query, dom, domConstruct, domAttr, properties, metadata, template) + { + var widgetconfigurer = + { + _init: function () + { + var stringsTemplate = domConstruct.create("div", {innerHTML: template}); + var promptTemplateWithDefaultNode = query("[id='promptTemplateWithDefault']", stringsTemplate)[0]; + + // The following will contain ${prompt} and ${default} formatted with html elements + this.promptTemplateWithDefault = promptTemplateWithDefaultNode.innerHTML; + + domConstruct.destroy(stringsTemplate); + }, + _processWidgetPrompt: function (widget, category, type) + { + var widgetName = widget.name; + if (widgetName && (widget instanceof dijit.form.ValidationTextBox || widget instanceof dijit.form.FilteringSelect)) + { + // If not done so already, save the prompt text specified on the widget. We do this so if we + // config the same widget again, we can apply the default again (which may be different if the user + // has selected a different type within the category). + if (typeof widget.get("qpid.originalPromptMessage") == "undefined") + { + widget.set("qpid.originalPromptMessage", widget.get("promptMessage")); + } + + var promptMessage = widget.get("qpid.originalPromptMessage"); + var defaultValue = metadata.getDefaultValueForAttribute(category, type, widgetName); + if (defaultValue) + { + var newPromptMessage = string.substitute(this.promptTemplateWithDefault, { 'default': defaultValue, 'prompt': promptMessage }); + + if (promptMessage != newPromptMessage) + { + widget.set("promptMessage", newPromptMessage); + } + } + } + }, + _processWidgetValue: function (widget, category, type) + { + var widgetName = widget.name; + + if (widgetName && (widget instanceof dijit.form.FilteringSelect || widget instanceof dojox.form.CheckedMultiSelect)) + { + if (!widget.get("value")) + { + var defaultValue = metadata.getDefaultValueForAttribute(category, type, widgetName); + if (defaultValue) + { + widget.set("value", defaultValue); + } + } + } + }, + config: function (widget, category, type) + { + this._processWidgetPrompt(widget, category, type); + this._processWidgetValue(widget, category, type); + } + }; + + widgetconfigurer._init(); + + return widgetconfigurer; + }); diff --git a/qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/management/Broker.js b/qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/management/Broker.js index 51a6c761f1..c52553c386 100644 --- a/qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/management/Broker.js +++ b/qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/management/Broker.js @@ -69,7 +69,8 @@ define(["dojo/_base/xhr", regExpGen: util.nameOrContextVarRegexp, value: brokerData.name, label: "Name*:", - name: "name"}) + name: "name", + promptMessage: "Identifies the broker instance."}) } }, { name: "defaultVirtualHost", @@ -89,7 +90,8 @@ define(["dojo/_base/xhr", required: true, store: hostsStore, value: brokerData.defaultVirtualHost, label: "Default Virtual Host*:", - name: "defaultVirtualHost"}) + name: "defaultVirtualHost", + promptMessage: "Default virtual host used for clients that don't specify one when connecting."}) } }, { name: "statisticsReportingPeriod", @@ -97,12 +99,12 @@ define(["dojo/_base/xhr", return new dijit.form.ValidationTextBox({ trim: "true", regExpGen: util.numericOrContextVarRegexp, - invalidMessage: "Invalid value", required: false, value: brokerData.statisticsReportingPeriod, placeholder: "Time in ms", label: "Statistics reporting period (ms):", - name: "statisticsReportingPeriod" + name: "statisticsReportingPeriod", + promptMessage: "Frequency with which statistics are reported to broker log." }); } }, { @@ -123,11 +125,12 @@ define(["dojo/_base/xhr", return new dijit.form.ValidationTextBox({ trim: "true", regExpGen: util.numericOrContextVarRegexp, - invalidMessage: "Invalid value", required: false, value: brokerData["connection.sessionCountLimit"], + placeholder: "Number of sessions", label: "Maximum number of sessions:", - name: "connection.sessionCountLimit" + name: "connection.sessionCountLimit", + promptMessage: "Maximum number of sessions per connection" }); } }, { @@ -141,7 +144,8 @@ define(["dojo/_base/xhr", value: brokerData["connection.heartBeatDelay"], placeholder: "Time in ms", label: "Heart beat delay (ms):", - name: "connection.heartBeatDelay" + name: "connection.heartBeatDelay", + promptMessage: "Interval between heart beat messages exchanged between broker and clients" }); } } ]; @@ -235,7 +239,7 @@ define(["dojo/_base/xhr", that.attributeWidgetFactories, brokerData, query, - "Set broker attributes"); + "Set broker attributes", "Broker", "broker"); }); } ); diff --git a/qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/management/KeyStore.js b/qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/management/KeyStore.js index 667c83c6ea..9f0ba9c16e 100644 --- a/qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/management/KeyStore.js +++ b/qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/management/KeyStore.js @@ -74,6 +74,7 @@ define(["dojo/dom", xhr.get({url: that.url, sync: properties.useSyncGet, handleAs: "json", content: { actuals: true }}) .then(function(data) { + // calls showKeystoreDialog that.dialog(data[0], that.url); }); }); diff --git a/qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/management/addAccessControlProvider.js b/qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/management/addAccessControlProvider.js index 49a99418bf..ac0493bfa5 100644 --- a/qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/management/addAccessControlProvider.js +++ b/qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/management/addAccessControlProvider.js @@ -56,6 +56,8 @@ define(["dojo/_base/lang", disabled: accessControlProvider.name ? true : false, label: "Name*:", regexp: "^[\x20-\x2e\x30-\x7F]{1,255}$", + promptMessage: "Name of access control provider.", + placeHolder: "name", name: "name"}); } }, { @@ -171,6 +173,8 @@ define(["dojo/_base/lang", accessControlProvider ? accessControlProvider : {}, "api/latest/accesscontrolprovider" + (name ? "/" + encodeURIComponent(name.name) : ""), accessControlProvider ? "Edit access control provider - " + accessControlProvider.name : "Add access control provider", + "AccessControlProvider", + accessControlProvider && accessControlProvider.type ? accessControlProvider.type : "AclFile", accessControlProvider ? false : true); }; return addAccessControlProvider; diff --git a/qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/management/addBinding.js b/qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/management/addBinding.js index 8e70b78446..ac4937da68 100644 --- a/qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/management/addBinding.js +++ b/qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/management/addBinding.js @@ -386,7 +386,9 @@ define(["dojo/_base/connect", that.queueChooser = new FilteringSelect({ id: "addBindingSelectQueue", name: "queue", store: queueStore, - searchAttr: "name"}, input); + searchAttr: "name", + promptMessage: "Name of the queue", + title: "Select the name of the queue"}, input); if(obj.queue) { @@ -414,7 +416,9 @@ define(["dojo/_base/connect", that.exchangeChooser = new FilteringSelect({ id: "addBindingSelectExchange", name: "exchange", store: exchangeStore, - searchAttr: "name"}, input); + searchAttr: "name", + promptMessage: "Name of the exchange", + title: "Select the name of the exchange"}, input); if(obj.exchange) { diff --git a/qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/management/addGroupProvider.js b/qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/management/addGroupProvider.js index 5f01b9769b..82281ad3d3 100644 --- a/qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/management/addGroupProvider.js +++ b/qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/management/addGroupProvider.js @@ -56,6 +56,8 @@ define(["dojo/_base/lang", disabled: groupProvider.name ? true : false, label: "Name*:", regexp: "^[\x20-\x2e\x30-\x7F]{1,255}$", + promptMessage: "Name of group provider.", + placeHolder: "name", name: "name"}); } }, { @@ -171,6 +173,8 @@ define(["dojo/_base/lang", groupProvider ? groupProvider : {}, "api/latest/groupprovider" + (name ? "/" + encodeURIComponent(name.name) : ""), groupProvider ? "Edit group provider - " + groupProvider.name : "Add group provider", + "Group", + groupProvider && groupProvider.type ? groupProvider.type : "Group", groupProvider ? false : true); }; return addGroupProvider; diff --git a/qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/management/addKeystore.js b/qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/management/addKeystore.js index 0ec8fb6c6c..e7e79e742d 100644 --- a/qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/management/addKeystore.js +++ b/qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/management/addKeystore.js @@ -57,6 +57,8 @@ define(["dojo/_base/lang", disabled: keystore.name ? true : false, label: "Name:", regExpGen: util.nameOrContextVarRegexp, + promptMessage: "Name of keystore. Used to refer to the keystore from other objects within the Broker.", + placeHolder: "name", name: "name"}); } }, { @@ -66,6 +68,8 @@ define(["dojo/_base/lang", required: true, value: keystore.path, label: "Path to keystore:", + promptMessage: "File system location to the keystore file", + placeHolder: "path/to/keystore", name: "path"}); } }, { @@ -75,7 +79,7 @@ define(["dojo/_base/lang", return new dijit.form.ValidationTextBox({ required: false, label: "Keystore password:", - invalidMessage: "Missed keystore password", + promptMessage: "Password used to open the keystore", name: "password", placeHolder: keystore["password"] ? keystore["password"] : "" }); @@ -96,10 +100,11 @@ define(["dojo/_base/lang", } fields.push({ name: "Options", + createWidget: function(keystore) { var optionalFieldContainer = new dojox.layout.TableContainer({ cols: 1, - "labelWidth": "290", + "labelWidth": "300", showLabels: true, orientation: "horiz", customClass: "formLabel" @@ -110,12 +115,16 @@ define(["dojo/_base/lang", required: false, value: keystore.certificateAlias, label: "Keystore certificate alias:", - name: "certificateAlias"})); + name: "certificateAlias", + placeHolder: "alias", + promptMessage: "Used to identify one certificate in a store that has many"})); + optionalFieldContainer.addChild( new dijit.form.ValidationTextBox({ required: false, value: keystore.keyManagerFactoryAlgorithm, label: "Key manager factory algorithm:", - placeHolder: "Use default", + placeHolder: "algorithm name", + promptMessage: "Name of the key manager algorithm known to Java", name: "keyManagerFactoryAlgorithm"})); } else @@ -124,16 +133,20 @@ define(["dojo/_base/lang", required: false, value: keystore.trustManagerFactoryAlgorithm, label: "Trust manager factory algorithm:", - placeHolder: "Use default", + placeHolder: "algorithm name", + promptMessage: "Name of the trust manager algorithm known to Java", name: "trustManagerFactoryAlgorithm"})); } optionalFieldContainer.addChild(new dijit.form.ValidationTextBox({ required: false, value: isKeystore ? keystore.keyStoreType : keystore.trustStoreType, label: "Key store type:", - placeHolder: "Use default", + placeHolder: "store type", + promptMessage: "Name of the store type known to Java", name: isKeystore ? "keyStoreType" : "trustStoreType"})); + var panel = new dijit.TitlePane({title: "Optional Attributes", content: optionalFieldContainer.domNode, open: false}); + return panel; } }); @@ -148,6 +161,8 @@ define(["dojo/_base/lang", keystore ? keystore : {}, keystore ? putURL : "api/latest/keystore", keystore ? "Edit keystore - " + keystore.name : "Add keystore", + "KeyStore", + keystore && keystore.type ? keystore.type : "FileKeyStore", // GET?actuals=true doesn't get type for objects of the default type for the category keystore ? false : true); }; @@ -158,6 +173,8 @@ define(["dojo/_base/lang", truststore ? truststore : {}, truststore ? putURL : "api/latest/truststore", truststore ? "Edit truststore - " + truststore.name : "Add truststore", + "TrustStore", + truststore && truststore.type ? truststore.type : "FileTrustStore", truststore ? false : true); }; return addKeystore; diff --git a/qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/management/addPort.js b/qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/management/addPort.js index 34e2d58afb..0c8a4660fd 100644 --- a/qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/management/addPort.js +++ b/qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/management/addPort.js @@ -72,7 +72,7 @@ define(["dojo/_base/xhr", } for(var propName in formValues) { - if(formValues.hasOwnProperty(propName)) + if(formValues.hasOwnProperty(propName) && formValues[propName]) { if (propName == "needClientAuth" || propName == "wantClientAuth") { @@ -81,6 +81,12 @@ define(["dojo/_base/xhr", else if (propName === "protocols") { var val = formValues[propName]; + + if(val === "" || (lang.isArray(val) && val.length == 0) ) + { + continue; + } + if (!lang.isArray(val)) { val = [ val ]; @@ -91,7 +97,7 @@ define(["dojo/_base/xhr", { var val = formValues[propName]; - if(val === "") + if(val === "" || (lang.isArray(val) && val.length == 0) ) { continue; } @@ -170,20 +176,20 @@ define(["dojo/_base/xhr", registry.byId("formAddPort.wantClientAuth").set("disabled", true); } - var transportSSLPanel = registry.byId("formAddPort:fieldsTransportSSL"); - var transportSSLPanelDisplay = transportSSLPanel.domNode.style.display; + var transportSSLPanelNode = dom.byId("formAddPort:fieldsTransportSSL"); + var transportSSLPanelDisplay = transportSSLPanelNode.style.display; if (transportType == "SSL" || (lang.isArray(transportType) && array.indexOf(transportType, "SSL")>=0)) { - transportSSLPanel.domNode.style.display = "block"; + transportSSLPanelNode.style.display = "block"; registry.byId("formAddPort.keyStore").set("disabled", false); } else { - transportSSLPanel.domNode.style.display = "none"; + transportSSLPanelNode.style.display = "none"; registry.byId("formAddPort.keyStore").set("disabled", true); } - if (transportSSLPanel.domNode.style.display != transportSSLPanelDisplay && transportSSLPanel.domNode.style.display=="block") + if (transportSSLPanelNode.style.display != transportSSLPanelDisplay && transportSSLPanelNode.style.display=="block") { registry.byId("formAddPort.trustStores").resize(); } @@ -216,7 +222,7 @@ define(["dojo/_base/xhr", var store = typeWidget.store; store.data.forEach(function(option){ registry.byId("formAddPort.protocols" + option.value).set("disabled", true); - registry.byId("formAddPort:fields" + option.value).domNode.style.display = "none"; + dom.byId("formAddPort:fields" + option.value).style.display = "none"; }); var isAMQP = ("AMQP" == newValue); @@ -226,7 +232,7 @@ define(["dojo/_base/xhr", registry.byId("formAddPort.needClientAuth").set("enabled", isAMQP || isHTTP); registry.byId("formAddPort.wantClientAuth").set("enabled", isAMQP || isHTTP); - registry.byId("formAddPort:fields" + newValue).domNode.style.display = "block"; + dom.byId("formAddPort:fields" + newValue).style.display = "block"; var defaultsAMQPProtocols = registry.byId("formAddPort.protocolsDefault"); defaultsAMQPProtocols.set("disabled", "AMQP" != newValue) var protocolsWidget = registry.byId("formAddPort.protocols" + newValue); @@ -267,9 +273,9 @@ define(["dojo/_base/xhr", } transportWidget.set("disabled", disableTransportWidget); registry.byId("formAddPort.authenticationProvider").set("disabled", isRMI); - registry.byId("formAddPort:fieldsAuthenticationProvider").domNode.style.display = isRMI? "none" : "block"; - registry.byId("formAddPort:fieldsBindingAddress").domNode.style.display = newValue == "JMX" ? "none" : "block"; - registry.byId("formAddPort:transport").domNode.style.display = isRMI ? "none" : "block"; + dom.byId("formAddPort:fieldsAuthenticationProvider").style.display = isRMI? "none" : "block"; + dom.byId("formAddPort:fieldsBindingAddress").style.display = newValue == "JMX" ? "none" : "block"; + dom.byId("formAddPort:transport").style.display = isRMI ? "none" : "block"; @@ -277,23 +283,6 @@ define(["dojo/_base/xhr", theForm = registry.byId("formAddPort"); - var containers = ["formAddPort:fields", "formAddPort:fieldsTransportSSL", "formAddPort:fieldsAMQP", - "formAddPort:fieldsJMX", "formAddPort:fieldsHTTP", "formAddPort:transport", - "formAddPort:fieldsClientAuthCheckboxes", "formAddPort:fieldsAuthenticationProvider", "formAddPort:fieldsBindingAddress"]; - var labelWidthValue = "200"; - for(var i = 0; i < containers.length; i++) - { - var containerId = containers[i]; - var fields = new dojox.layout.TableContainer( { - cols: 1, - labelWidth: labelWidthValue, - showLabels: true, - orientation: "horiz", - customClass: "formLabel" - }, dom.byId(containerId)); - fields.startup(); - } - registry.byId("formAddPort.protocolsJMX").on("change", function(newValue){ var isRMI = newValue == "RMI"; var transportWidget = registry.byId("formAddPort.transports"); @@ -302,8 +291,8 @@ define(["dojo/_base/xhr", transportWidget.set("value", "TCP"); } transportWidget.set("disabled", isRMI); - registry.byId("formAddPort:transport").domNode.style.display = isRMI ? "none" : "block"; - registry.byId("formAddPort:fieldsAuthenticationProvider").domNode.style.display = isRMI? "none" : "block"; + dom.byId("formAddPort:transport").style.display = isRMI ? "none" : "block"; + dom.byId("formAddPort:fieldsAuthenticationProvider").style.display = isRMI? "none" : "block"; registry.byId("formAddPort.authenticationProvider").set("disabled", isRMI); }); @@ -365,6 +354,7 @@ define(["dojo/_base/xhr", } var keystoreWidget = registry.byId("formAddPort.keyStore"); + if (keystores) { var data = []; @@ -408,7 +398,7 @@ define(["dojo/_base/xhr", var nameWidget = registry.byId("formAddPort.name"); nameWidget.set("value", port.name); nameWidget.set("disabled", true); - nameWidget.set("regExpGen", util.nameOrContextVarRegexp); + dom.byId("formAddPort.id").value=port.id; providerWidget.set("value", port.authenticationProvider ? port.authenticationProvider : ""); keystoreWidget.set("value", port.keyStore ? port.keyStore : ""); @@ -444,7 +434,7 @@ define(["dojo/_base/xhr", var store = typeWidget.store; store.data.forEach(function(option){ registry.byId("formAddPort.protocols" + option.value).set("disabled", true); - registry.byId("formAddPort:fields" + option.value).domNode.style.display = "none"; + dom.byId("formAddPort:fields" + option.value).style.display = "none"; }); // identify the type of port using first protocol specified in protocol field if provided @@ -487,7 +477,7 @@ define(["dojo/_base/xhr", var addressWidget = registry.byId("formAddPort.bindingAddress"); addressWidget.set("value", port.bindingAddress) } - registry.byId("formAddPort:fields" + typeWidget.value).domNode.style.display = "block"; + dom.byId("formAddPort:fields" + typeWidget.value).style.display = "block"; typeWidget.set("disabled", true); keystoreWidget.initialValue = port.keyStore; @@ -496,21 +486,33 @@ define(["dojo/_base/xhr", providerWidget.initialValue = providerWidget.value; registry.byId("addPort").show(); - }); + util.applyMetadataToWidgets(registry.byId("addPort").domNode, "Port", typeWidget.get("value")); + + }); } else { + // Creating new port var typeWidget = registry.byId("formAddPort.type"); if (typeWidget.get("disabled")) { typeWidget.set("disabled", false); } typeWidget.set("value", "AMQP"); - var name = registry.byId("formAddPort.name"); - name.set("disabled", false); + + var nameWidget = registry.byId("formAddPort.name"); + nameWidget.set("disabled", false); + nameWidget.set("regExpGen", util.nameOrContextVarRegexp); + + var portWidget = registry.byId("formAddPort.port"); + portWidget.set("regExpGen", util.numericOrContextVarRegexp); + editWarning.style.display = "none"; registry.byId("addPort").show(); + + util.applyMetadataToWidgets(registry.byId("addPort").domNode, "Port", "AMQP"); } + }; return addPort; diff --git a/qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/management/addQueue.js b/qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/management/addQueue.js index 5a1ea48b3e..c66b99ee4c 100644 --- a/qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/management/addQueue.js +++ b/qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/management/addQueue.js @@ -27,6 +27,7 @@ define(["dojo/_base/xhr", "dojo/_base/array", "dojo/_base/event", 'dojo/_base/json', + 'qpid/common/util', "dijit/form/NumberSpinner", // required by the form /* dojox/ validate resources */ "dojox/validate/us", "dojox/validate/web", @@ -41,7 +42,7 @@ define(["dojo/_base/xhr", /* basic dojox classes */ "dojox/form/BusyButton", "dojox/form/CheckedMultiSelect", "dojo/domReady!"], - function (xhr, dom, construct, win, registry, parser, array, event, json) { + function (xhr, dom, construct, win, registry, parser, array, event, json, util) { var addQueue = {}; @@ -147,6 +148,8 @@ define(["dojo/_base/xhr", { dijit.byId('formAddQueue.' + requiredFields[widgetValue]).required = isChecked; } + + util.applyMetadataToWidgets(obj.domNode, "Queue", widgetValue); } }) } @@ -192,9 +195,12 @@ define(["dojo/_base/xhr", addQueue.show = function(data) { addQueue.vhost = data.virtualhost; addQueue.vhostnode = data.virtualhostnode; - registry.byId("formAddQueue").reset(); + var form = registry.byId("formAddQueue"); + form.reset(); registry.byId("addQueue").show(); - }; + util.applyMetadataToWidgets(form.domNode, "Queue", "standard"); + + }; return addQueue; }); diff --git a/qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/management/addVirtualHostNodeAndVirtualHost.js b/qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/management/addVirtualHostNodeAndVirtualHost.js index 2eac2094e5..ede0c4bc48 100644 --- a/qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/management/addVirtualHostNodeAndVirtualHost.js +++ b/qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/management/addVirtualHostNodeAndVirtualHost.js @@ -34,6 +34,7 @@ define(["dojo/_base/xhr", "dijit/form/FilteringSelect", "qpid/common/properties", "qpid/common/util", + "qpid/common/metadata", "dojo/text!addVirtualHostNodeAndVirtualHost.html", "dijit/form/Form", "dijit/form/CheckBox", @@ -41,7 +42,7 @@ define(["dojo/_base/xhr", "dojox/validate/us", "dojox/validate/web", "dojo/domReady!"], - function (xhr, event, lang, array, dom, domConstruct, json, parser, Memory, fobject, registry, Dialog, Button, FilteringSelect, properties, util, template) + function (xhr, event, lang, array, dom, domConstruct, json, parser, Memory, fobject, registry, Dialog, Button, FilteringSelect, properties, util, metadata, template) { var addVirtualHostNodeAndVirtualHost = @@ -71,38 +72,26 @@ define(["dojo/_base/xhr", this.virtualHostType = registry.byId("addVirtualHost.type"); this.virtualHostType.set("disabled", true); - xhr.get({sync: properties.useSyncGet, handleAs: "json", url: "api/latest/broker?depth=0", load: function(data){that._onBrokerData(data[0]) }}); - }, - _makeTypeStore: function (types) { - var typeData = []; - for (var i = 0; i < types.length; i++) { - var type = types[i]; - typeData.push({id: type, name: type}); - } - return new Memory({ data: typeData }); - }, - _onBrokerData: function(brokerData) - { - var that=this; - this.supportedVirtualHostNodeTypes = brokerData.supportedVirtualHostNodeTypes; - this.supportedVirtualHostNodeTypes.sort(); - this.supportedVirtualHostTypes = brokerData.supportedVirtualHostTypes; - this.supportedVirtualHostTypes.sort(); + this.supportedVirtualHostNodeTypes = metadata.getTypesForCategory("VirtualHostNode"); + this.supportedVirtualHostNodeTypes.sort(); + this.supportedVirtualHostTypes = metadata.getTypesForCategory("VirtualHost"); + this.supportedVirtualHostTypes.sort(); - //VH Type BDB_HA_REPLICA is not user creatable. This is only needed until we have model meta data available. - this.supportedVirtualHostTypes = array.filter(this.supportedVirtualHostTypes, function(item){ - return item != "BDB_HA_REPLICA" && item != "BDB_HA"; - }); + //VH Type BDB_HA_REPLICA is not user creatable. This is only needed until we have model meta data available. + this.supportedVirtualHostTypes = array.filter(this.supportedVirtualHostTypes, function(item){ + return item != "BDB_HA_REPLICA" && item != "BDB_HA"; + }); - var virtualHostNodeTypeStore = this._makeTypeStore(this.supportedVirtualHostNodeTypes); - this.virtualHostNodeType.set("store", virtualHostNodeTypeStore); - this.virtualHostNodeType.set("disabled", false); - this.virtualHostNodeType.on("change", function(type){that._vhnTypeChanged(type, that.virtualHostNodeTypeFieldsContainer, "qpid/management/virtualhostnode/");}); + var virtualHostNodeTypeStore = util.makeTypeStore(this.supportedVirtualHostNodeTypes); + this.virtualHostNodeType.set("store", virtualHostNodeTypeStore); + this.virtualHostNodeType.set("disabled", false); + this.virtualHostNodeType.on("change", function(type){that._vhnTypeChanged(type, that.virtualHostNodeTypeFieldsContainer, "qpid/management/virtualhostnode/");}); + + this.virtualHostTypeStore = util.makeTypeStore(this.supportedVirtualHostTypes); + this.virtualHostType.set("store", this.virtualHostTypeStore); + this.virtualHostType.set("disabled", false); + this.virtualHostType.on("change", function(type){that._vhTypeChanged(type, that.virtualHostTypeFieldsContainer, "qpid/management/virtualhost/");}); - this.virtualHostTypeStore = this._makeTypeStore(this.supportedVirtualHostTypes); - this.virtualHostType.set("store", this.virtualHostTypeStore); - this.virtualHostType.set("disabled", false); - this.virtualHostType.on("change", function(type){that._vhTypeChanged(type, that.virtualHostTypeFieldsContainer, "qpid/management/virtualhost/");}); }, show: function() { @@ -132,13 +121,14 @@ define(["dojo/_base/xhr", { this._processDropDownsForBdbHa(type); this._processDropDownsForJson(type); - this._typeChanged(type, typeFieldsContainer, urlStem); + + this._typeChanged(type, typeFieldsContainer, urlStem, "VirtualHostNode"); }, _vhTypeChanged: function (type, typeFieldsContainer, urlStem) { - this._typeChanged(type, typeFieldsContainer, urlStem); + this._typeChanged(type, typeFieldsContainer, urlStem, "VirtualHost"); }, - _typeChanged: function (type, typeFieldsContainer, urlStem) + _typeChanged: function (type, typeFieldsContainer, urlStem, category) { var widgets = registry.findWidgets(typeFieldsContainer); array.forEach(widgets, function(item) { item.destroyRecursive();}); @@ -148,11 +138,13 @@ define(["dojo/_base/xhr", { var that = this; require([urlStem + type.toLowerCase() + "/add"], - function(TypeUI) + function(typeUI) { try { - TypeUI.show({containerNode:typeFieldsContainer, parent: that}); + typeUI.show({containerNode:typeFieldsContainer, parent: that}); + + util.applyMetadataToWidgets(typeFieldsContainer,category, type); } catch(e) { diff --git a/qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/management/editVirtualHost.js b/qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/management/editVirtualHost.js index 1a24e5e770..a959586655 100644 --- a/qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/management/editVirtualHost.js +++ b/qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/management/editVirtualHost.js @@ -56,6 +56,7 @@ define(["dojo/_base/xhr", var that=this; this.containerNode = domConstruct.create("div", {innerHTML: template}); parser.parse(this.containerNode); + this.allFieldsContainer = dom.byId("editVirtualHost.allFields"); this.typeFieldsContainer = dom.byId("editVirtualHost.typeFields"); this.dialog = registry.byId("editVirtualHostDialog"); this.saveButton = registry.byId("editVirtualHost.saveButton"); @@ -176,6 +177,8 @@ define(["dojo/_base/xhr", { TypeUI.show({containerNode:that.typeFieldsContainer, parent: that, data: virtualHostData}); that.form.connectChildren(); + + util.applyMetadataToWidgets(that.allFieldsContainer, "VirtualHost", virtualHostData.type); } catch(e) { diff --git a/qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/management/editVirtualHostNode.js b/qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/management/editVirtualHostNode.js index 704063ae16..3c78eaa29c 100644 --- a/qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/management/editVirtualHostNode.js +++ b/qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/management/editVirtualHostNode.js @@ -147,6 +147,8 @@ define(["dojo/_base/xhr", { TypeUI.show({containerNode:that.typeFieldsContainer, parent: that, data: nodeData}); that.form.connectChildren(); + + util.applyMetadataToWidgets(that.allFieldsContainer, "VirtualHostNode", nodeData.type); } catch(e) { diff --git a/qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/management/plugin/managementhttp.js b/qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/management/plugin/managementhttp.js index 07c5c25171..69f520bf42 100644 --- a/qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/management/plugin/managementhttp.js +++ b/qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/management/plugin/managementhttp.js @@ -139,7 +139,9 @@ define(["dojo/_base/xhr", widgetFactories, data, "api/latest/plugin/" + encodeURIComponent(data.name), - "Edit plugin - " + data.name); + "Edit plugin - " + data.name, + "Plugin", + "MANAGEMENT-HTTP"); }; function ManagementHttpUpdater(node, pluginObject, controller) diff --git a/qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/management/plugin/managementjmx.js b/qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/management/plugin/managementjmx.js index 78d06da51f..3579d258e9 100644 --- a/qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/management/plugin/managementjmx.js +++ b/qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/management/plugin/managementjmx.js @@ -86,7 +86,9 @@ define(["dojo/_base/xhr", widgetFactories, data, "api/latest/plugin/" + encodeURIComponent(data.name), - "Edit plugin - " + data.name); + "Edit plugin - " + data.name, + "Plugin", + "MANAGEMENT-JMX"); }; function ManagementJmxUpdater(node, pluginObject, controller) |