geronimo-scm mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From rwo...@apache.org
Subject svn commit: r814960 [4/5] - in /geronimo/server/branches/2.2/plugins: ./ console/console-core/src/main/java/org/apache/geronimo/console/util/ debugviews/debugviews-console-jetty/ debugviews/debugviews-console-jetty/src/main/history/ debugviews/debugvie...
Date Tue, 15 Sep 2009 01:39:09 GMT
Modified: geronimo/server/branches/2.2/plugins/debugviews/debugviews-portlets/src/main/webapp/WEB-INF/view/jmxmanager/viewJMXServer.jsp
URL: http://svn.apache.org/viewvc/geronimo/server/branches/2.2/plugins/debugviews/debugviews-portlets/src/main/webapp/WEB-INF/view/jmxmanager/viewJMXServer.jsp?rev=814960&r1=814959&r2=814960&view=diff
==============================================================================
--- geronimo/server/branches/2.2/plugins/debugviews/debugviews-portlets/src/main/webapp/WEB-INF/view/jmxmanager/viewJMXServer.jsp (original)
+++ geronimo/server/branches/2.2/plugins/debugviews/debugviews-portlets/src/main/webapp/WEB-INF/view/jmxmanager/viewJMXServer.jsp Tue Sep 15 01:39:08 2009
@@ -23,1135 +23,665 @@
 <fmt:setBundle basename="debugviews"/>
 <portlet:defineObjects/>
 
-    <script type="text/javascript" src="/dojo/0.4/dojo.js"></script>
+<!----------------------->
+<!--     DWR Stuff     -->
+<!----------------------->
 
-    <script type="text/javascript">
-        dojo.require("dojo.lang.*");
-        dojo.require("dojo.widget.*");
-        // Pane includes
-        dojo.require("dojo.widget.ContentPane");
-        dojo.require("dojo.widget.LayoutContainer"); // Before: LayoutPane
-        dojo.require("dojo.widget.SplitContainer"); // Before: SplitPane
-        // Tree includes
-        dojo.require("dojo.widget.Tree");
-        dojo.require("dojo.widget.TreeBasicController");
-        dojo.require("dojo.widget.TreeContextMenu");
-        dojo.require("dojo.widget.TreeSelector");
-        // Tab includes
-        dojo.require("dojo.widget.TabContainer");
-        // Etc includes
-        dojo.require("dojo.widget.SortableTable");
-        dojo.require("dojo.widget.ComboBox");
-        dojo.require("dojo.widget.Tooltip");
-        dojo.require("dojo.widget.validate");
-        // Includes Dojo source for debugging
-        // dojo.hostenv.writeIncludes();
-    </script>
+<% String dwrForwarderServlet = "/console/dwr2"; %>
+<script type='text/javascript' src='<%= dwrForwarderServlet %>/interface/JMXManagerHelper.js'></script>
+<script type='text/javascript' src='<%= dwrForwarderServlet %>/engine.js'></script>
+<script type='text/javascript' src='<%= dwrForwarderServlet %>/util.js'></script>
 
 <!------------------------>
 <!--     DOJO Stuff     -->
 <!------------------------>
-
-<%
-    // JMX icon
-    String jmxIconURI = renderResponse.encodeURL(renderRequest.getContextPath() + "/ico_filetree_16x16.gif");
-%>
-
 <style type="text/css">
-<!-- Splitter styles -->
-body .dojoHtmlSplitterPanePanel {
-    background: white;
-    overflow: auto;
-}
-
-<!-- Sortable table styles -->
-table {
-    font-family:Lucida Grande, Verdana;
-    font-size:0.8em;
-    width:100%;
-    cursor:default;
-}
-
-* html div.tableContainer {    /* IE only hack */
-    width:95%;
-    border:1px solid #ccc;
-    height: 285px;
-    overflow-x:hidden;
-    overflow-y: auto;
-}
-
-table td, table th {
-    /* border-right:1px solid #999; */
-    /* padding:2px; */
-    font-weight: normal;
-}
-
-table thead td, table thead th { 
-    background: #2581C7; /* #94BEFF */
-    color: #FFFFFF;    /* added */
-}
-
-* html div.tableContainer table thead tr td,
-* html div.tableContainer table thead tr th {
-    /* IE Only hacks */
-    position:relative;
-    top:expression(dojo.html.getFirstAncestorByTag(this,'table').parentNode.scrollTop-2);
-}
-
-html>body tbody.scrollContent {
-    height: 100%; /* 262px */
-    overflow-x: hidden;
-    overflow-y: hidden; /* auto */
-}
-
-tbody.scrollContent td, tbody.scrollContent tr td {
-    background: #FFF;
-    padding: 2px;
-}
-
-tbody.scrollContent tr.alternateRow td {
-    background: #F2F2F2; /* #e3edfa */
-    padding: 2px;
-}
-
-tbody.scrollContent tr.selected td {
-    background: yellow;
-    padding: 2px;
-}
-
-tbody.scrollContent tr:hover td {
-    background: #a6c2e7;
-    padding: 2px;
-}
-
-tbody.scrollContent tr.selected:hover td {
-    background: #ff3;
-    padding: 2px;
-}
+    @import "/dojo/dojo/resources/dojo.css";
+    @import "/dojo/dijit/themes/soria/soria.css";
+    
+    table thead th { 
+        background: #2581C7; 
+        color: #FFFFFF;    
+        font-weight: bold;
+    }
 </style>
+<script type="text/javascript" src="/dojo/dojo/dojo.js" djConfig="parseOnLoad: true"></script>
 
-<script>
-    /**
-     * Global vars 
-     */
-    var _selectedNode = null;  // Selected tree node
-    var _attribValueID = null; // ID of the attribute to update in the Attributes table
-    var _attribValue = null;   // Value of the attribute to update in the Attributes tabl
+<script type="text/javascript">
+    // style class
+    document.body.className="soria";
+    
+    // dojo libs import
+    dojo.require("dojo.data.ItemFileWriteStore"); 
+    dojo.require("dijit.Tree");
+    dojo.require("dijit.layout.LayoutContainer");
+    dojo.require("dijit.layout.ContentPane");
+    dojo.require("dijit.layout.SplitContainer");
+    dojo.require("dijit.layout.TabContainer");
+    dojo.require("dijit.TitlePane");
+    dojo.require("dijit.form.ComboBox")
+    dojo.require("dijit.form.Button");
+    dojo.require("dijit.form.TextBox");
+</script>
+
+
+<!------------------------>
+<!--     Page Stuff     -->
+<!------------------------>
+<script type="text/javascript">
+    // set sync calls in dwr
+    dwr.engine.setAsync(false);
+
+    // globe var
+    var _selectItem;    // set when open a item
+    var _abstractName;  // set when click a item which type is "leaf"
 
-    /**
-     * Get selected node 
-     */
-    function getSelectedNode() {
-        var tree = dojo.widget.byId('jmxTree');
-        var selectedNode = tree.selector.selectedNode;
 
-        return selectedNode;
+    // tree var
+    var treeStore;
+    var treeData;
+    
+    JMXManagerHelper.getJMXInformation({callback:createTreeStore});    
+           
+    function createTreeStore(treeObj){    
+        treeData = {data:""};
+        treeData.data = treeObj;                    
+        treeStore = new dojo.data.ItemFileWriteStore(treeData);       
     }
 
-    /**
-    * Set the mouse pointer (NOT USED)
-    */
-    function setPointer(cursor) {
-       if (document.all) {
-            // Solution 1
-            // for (var i = 0; i < document.all.length; i++) {
-            //     document.all(i).style.cursor = cursor;
-            // }
-        
-            // Solution 2
-            // document.all('mainLayout').style.cursor = cursor;
-            // document.getElementById('mainLayout').style.cursor = cursor;
-
-            // $('mainLayout').style.cursor = cursor;
-            // $('rootfragment').style.cursor = cursor;
-            dojo.byId("mainLayout").style.cursor = cursor;
-            dojo.byId("rootfragment").style.cursor = cursor;
+
+    /*
+     * Call back: Update JMXTree
+     */
+    function updateJMXTree(entries) {
+        for (var i = 0; i < entries.length; i++) {
+            // each entry is a string pair [abstractName, objectName]
+            var entry = entries[i];
+            // for the leaf node, name is the objectName - entry[1], and valuse[0] is the abstractName - entry[0].
+            treeStore.newItem({name:entry[1], type:"leaf", values:[entry[0]]},{parent:_selectItem, attribute:"children"});
         }
     }
 
-    /**
-     * Dojo init stuff 
+    /*
+     * utility method
+     * when there are more than one child, del the placeholder child
      */
-    dojo.addOnLoad (function() {
-        var treeController = dojo.widget.byId('treeController');
-
-        /**
-         * Tree click event handler (expand & contract nodes)
-         */
-        dojo.event.connect(
-            'before',
-            treeController,
-            'onTreeClick',
-            {
-                beforeTreeClick: function(evt) {
-                    var selectedNode = evt.source;
-
-                    if ((selectedNode.state == 'UNCHECKED') && (selectedNode.isExpanded == false)) {
-                        _selectedNode = selectedNode;
-
-                        // Check if it's 'searchMBeans'
-                        if ((selectedNode.widgetId == 'searchMBeans') && (selectedNode.children.length == 0)) {
-                            // skip DWR call
-                            selectedNode.state = 'LOADED';
-
-                            return;
-                        } else {
-                            var id = selectedNode.widgetId;
-
-                            if (id.indexOf('<PATTERN>') != -1) {
-                                // Remove pattern marker
-                                var pattern = id.substring(id.indexOf('<PATTERN>') + '<PATTERN>'.length);  
-                                JMXManagerHelper.listByPattern(pattern, <portlet:namespace/>updateJMXTree);
-                            } else if (selectedNode.widgetId.indexOf('<J2EETYPE>') != -1) {
-                                // Remove j2ee type marker
-                                var j2eeType = id.substring(id.indexOf('<J2EETYPE>') + '<J2EETYPE>'.length);  
-                                JMXManagerHelper.listByJ2EEType(j2eeType, <portlet:namespace/>updateJMXTree);
-                            } else if (selectedNode.widgetId.indexOf('<SVCMODULE>') != -1) {
-                                // Remove service module marker
-                                var svcModule = id.substring(id.indexOf('<SVCMODULE>') + '<SVCMODULE>'.length);  
-                                JMXManagerHelper.listBySubstring(svcModule, <portlet:namespace/>updateJMXTree);
-                            } else if (selectedNode.widgetId == 'statisticsProviderMBeans') {
-                                // Get statistics provider MBeans
-                                JMXManagerHelper.getStatsProvidersMBeans(<portlet:namespace/>updateJMXTree);
-                            } else {
-                                // Marker not recognized
-                            }
-                        }
-                    }
-                }
-            },
-            'beforeTreeClick'
-        );
-
-        /**
-         * Tree node title click event handler 
-         */
-        var tree = dojo.widget.byId('jmxTree');
-
-        dojo.event.topic.subscribe(
-            tree.eventNames.titleClick,
-            function(message) {
-                window.aName = message.source.widgetId;
-
-                if (window.aName.indexOf('::') == -1) {
-                    // No marker means not an abstract name, clear tables
-                    dwr.util.removeAllRows('basicInfoTableBody');
-                    dwr.util.removeAllRows('attributesTableBody');
-                    dwr.util.removeAllRows('operationsTableBody');
-                } else {
-                    // Remove marker to get abstract name
-                    window.aName = window.aName.substring(window.aName.indexOf('::') + 2);
-                    JMXManagerHelper.getMBeanInfo(window.aName, <portlet:namespace/>updateBasicInfoTable);
-                    JMXManagerHelper.getAttributes(window.aName, <portlet:namespace/>updateAttributesTable);
-                    JMXManagerHelper.getOperations(window.aName, <portlet:namespace/>updateOperationsTable);
-                    JMXManagerHelper.getMBeanStats(window.aName, <portlet:namespace/>updateStatsTable);
-                }
-            }
-        );
-
-        /**
-         * Tree context menu event handler: 'Refresh' (NOT USED)
-         */
-        dojo.event.topic.subscribe(
-            'treeContextMenuRefresh/engage',
-            function (menuItem) {
-                var selectedNode = getSelectedNode();
-
-                if (selectedNode == null) {
-                    alert('Please select a tree node.');
-                    return;
-                }
-
-                if ((selectedNode.state == 'UNCHECKED') && (selectedNode.isExpanded == false)) {
-                    // Unchecked tree node, do nothing
-                } else {
-                    // Remove children
-                    var treeController = dojo.widget.byId('treeController');
-                    var children = selectedNode.children;
-                    while (children.length > 0) {
-                        var node = children[0];
-                        treeController.removeNode(node);
-                        node.destroy();
-                    }
-
-                    // Add children
-                    _selectedNode = selectedNode;
-                    // TODO: Insert add tree node children code here
+    function dealPlaceholderChild(/*dojo.data.Item*/item){
+        var kids = item.children;
+        if (kids.length > 1){   //no need to do anything when kids.length == 1
+            for (var i in kids) {
+                var type = treeStore.getValue(kids[i],"type");
+                if (type == "placeholder") {
+                    treeStore.deleteItem(kids[i]);
+                    break;
                 }
             }
-        );
-
-        /**
-         * Tree context menu event handler: 'Search...' 
-         */
-        dojo.event.topic.subscribe(
-            'treeContextMenuSearch/engage',
-            function (menuItem) {
-                var selectedNode = getSelectedNode();
-
-                if (selectedNode == null) {
-                    alert('Please select a tree node.');
-                    return;
-                }
-
-                var mainTabContainer = dojo.widget.byId('mainTabContainer');
-                var searchTab = dojo.widget.byId('searchTab');
-
-                mainTabContainer.selectTab(searchTab);
-            }
-        );
-
-        /**
-         * Tree context menu event handler: 'View Attributes'
-         */
-        dojo.event.topic.subscribe(
-            'treeContextMenuViewAttribs/engage',
-            function (menuItem) {
-                var selectedNode = getSelectedNode();
-
-                if (selectedNode == null) {
-                    alert('Please select a tree node.');
-                    return;
-                }
-
-                var mainTabContainer = dojo.widget.byId('mainTabContainer');
-                var attributesTab = dojo.widget.byId('attributesTab');
-
-                mainTabContainer.selectTab(attributesTab);
-            }
-        );
-
-        /**
-         * Tree context menu event handler: 'View Operations' 
-         */
-        dojo.event.topic.subscribe(
-            'treeContextMenuViewOps/engage',
-            function (menuItem) {
-                var selectedNode = getSelectedNode();
-
-                if (selectedNode == null) {
-                    alert('Please select a tree node.');
-                    return;
-                }
-
-                var mainTabContainer = dojo.widget.byId('mainTabContainer');
-                var operationsTab = dojo.widget.byId('operationsTab');
-
-                mainTabContainer.selectTab(operationsTab);
+        }
+    }
+    
+    /*
+     * utility method
+     */
+    function checkPlaceholderChild(/*dojo.data.Item*/item){
+        var kids = item.children;
+        for (var i in kids) {
+            var type = treeStore.getValue(kids[i],"type");
+            if (type == "placeholder") {
+                return true;
             }
-        );
-
-        /**
-         * Tree context menu event handler: 'View Info' 
-         */
-        dojo.event.topic.subscribe(
-            'treeContextMenuViewInfo/engage',
-            function (menuItem) {
-                var selectedNode = getSelectedNode();
-
-                if (selectedNode == null) {
-                    alert('Please select a tree node.');
-                    return;
+        }
+        return false;
+    }
+   
+    /**
+     * DWR table render option
+     */     
+    var tableOption = {
+        rowCreator: function(options) {
+            var row = document.createElement('tr');
+            return row;
+        },
+        cellCreator: function(options) {
+            var td = document.createElement('td');
+            if ((options.rowIndex % 2) == 0) {
+                td.style.backgroundColor = '#FFFFFF';
+            } else {
+                td.style.backgroundColor = '#F2F2F2';
+            }
+            return td;
+        },
+        escapeHtml: false       /*let the table display html*/
+    }
+    
+    /**
+     * Call back: Update MBean basic info table
+     */
+    function updateInfoTable(info) {
+        dwr.util.removeAllRows('infoTableBody');
+        dwr.util.addRows(
+            'infoTableBody', 
+            info,
+            [
+                function(theinfo) { /* BasicInfoName Column */
+                    var name = "<div align='right'>" + theinfo[0] + ":&nbsp;</div>";
+                    return name;
+                },
+                function(theinfo) { /* BasicInfoValue Column */
+                    var value = theinfo[1] + "<input type='hidden' id='" + theinfo[0] + "' value='" + theinfo[1] + "'>";
+                    return value;
                 }
-
-                var mainTabContainer = dojo.widget.byId('mainTabContainer');
-                var infoTab = dojo.widget.byId('infoTab');
-
-                mainTabContainer.selectTab(infoTab);
-            }
+            ],
+            tableOption
         );
+    }
 
-        /**
-         * Tree context menu event handler: 'View Stats' 
-         */
-        dojo.event.topic.subscribe(
-            'treeContextMenuViewStats/engage',
-            function (menuItem) {
-                var selectedNode = getSelectedNode();
-
-                if (selectedNode == null) {
-                    alert('Please select a tree node.');
-                    return;
+    
+    /**
+     * Call back: Update MBean operations table 
+     */
+    function updateOperationsTable(operations) {
+        dwr.util.removeAllRows('operationsTableBody');
+        dwr.util.addRows(
+            'operationsTableBody', 
+            operations,
+            [
+                function(operation) { /* OperName  Column */
+                    var abstractName = _abstractName;
+                    var opName = operation['name'];
+                    var params = operation['parameterList'];
+                    var paramSize = params.length;
+                    var oper = 
+                        "<div align='right'>" +
+                        "<input type='button' value='" + opName + "' " + 
+                        "onclick='invokeOperFN(\"" + abstractName + "\", \"" + opName + "\", " + paramSize + ")' " +
+                        "/>&nbsp;" + 
+                        "</div>";
+                    return oper;
+                },
+                function(operation) { /* OperParameterList Column */
+                    // TODO: Fix name collision problem for overloaded operations with same number of parameters
+                    var opName = operation['name'];
+                    var params = operation['parameterList'];
+                    var paramList = "";
+                    if (params.length == 0) {
+                        paramList = "<b>()</b>";
+                    } else {
+                        paramList = "<b>(&nbsp;</b>";
+                        for (var i = 0; i < params.length; i++) {
+                            var opParamValueID = opName + '_paramValue' + (i+1) + '.' + params.length;
+                            var opParamTypeID = opName + '_paramType' + (i+1) + '.' + params.length;
+                            paramList += "<span id='" + opParamTypeID + "'>" + params[i] + "</span>&nbsp;<input type='text' id='" + opParamValueID + "' style='width: 100px;'/>";
+                            if ((i+1) < params.length) {
+                                paramList += "<b>&nbsp;,&nbsp;</b>";
+                            }
+                        }
+                        paramList += "<b>&nbsp;)</b>";
+                    }
+                    return paramList; 
                 }
-
-                var mainTabContainer = dojo.widget.byId('mainTabContainer');
-                var statsTab = dojo.widget.byId('statsTab');
-
-                mainTabContainer.selectTab(statsTab);
-            }
+            ],
+            tableOption
         );
     }
-);
-
-/**
- * Search button clicked event handler 
- */
-function searchBtnClicked() {
-    var jmxQuery = dojo.widget.byId('jmxQuery').getValue();
-    JMXManagerHelper.listByPattern(jmxQuery, <portlet:namespace/>updateSearchMBeansTreeNode);
-}
 
     /**
-     * Refresh managed object stats button clicked event handler 
+     * Call: Invoke Operation Function 
      */
-    function refreshStatsBtnClicked() {
-        var abstractName = window.aName;
-
-        JMXManagerHelper.getMBeanStats(abstractName, <portlet:namespace/>updateStatsTable);
-    }
-</script>
-
-<!----------------------->
-<!--     DWR Stuff     -->
-<!----------------------->
-
-<% String dwrForwarderServlet = "/console/dwr2"; %>
-<script type='text/javascript' src='<%= dwrForwarderServlet %>/interface/JMXManagerHelper.js'></script>
-<script type='text/javascript' src='<%= dwrForwarderServlet %>/engine.js'></script>
-<script type='text/javascript' src='<%= dwrForwarderServlet %>/util.js'></script>
-
-<script>
-/**
- * Sync calls 
- */
-dwr.engine.setAsync(false);
-
-/**
- * Generic error handler 
- */
-dwr.engine.setErrorHandler(
-    function (errorString) {
-        alert('Error: ' + errorString);
-    }
-);
-
-/**
- * DWR table render option
- */
-var tableOption = {
-    rowCreator: function(options) {
-        var row = document.createElement('tr');
-        return row;
-    },
-    cellCreator: function(options) {
-        var td = document.createElement('td');
-        if ((options.rowIndex % 2) == 0) {
-            td.style.backgroundColor = '#FFFFFF';
+    function invokeOperFN(abstractName, opName, paramSize) {
+        if (paramSize == 0) {
+            // Operation without parameters
+            // Invoke operator with no args        
+            JMXManagerHelper.invokeOperNoArgs(
+                abstractName, opName, /* Arguments */
+                function(result) { /* invokeOperNoArgs Callback */
+                    alert(result[0] + ' returned: ' + result[1]);
+                }
+            );
         } else {
-            td.style.backgroundColor = '#F2F2F2';
+            // Operation with parameters
+            var paramValues = new Array(paramSize);
+            var paramTypes = new Array(paramSize);
+            for (var i = 0; i < paramSize; i++) {
+                var opParamValueID = opName + '_paramValue' + (i+1) + '.' + paramSize;
+                var opParamTypeID = opName + '_paramType' + (i+1) + '.' + paramSize;
+                paramValues[i] = dwr.util.getValue(opParamValueID);
+                paramTypes[i] = dwr.util.getValue(opParamTypeID);
+            }
+            // Invoke operator with args
+            JMXManagerHelper.invokeOperWithArgs(
+                abstractName, opName, paramValues, paramTypes,
+                function(result) { /* invokeOperWithArgs Callback */
+                    alert(result[0] + ' returned: ' + result[1]);
+                }
+            );
         }
-        return td;
     }
-}
 
-/**
- * Update MBean attributes table 
- */
-function <portlet:namespace/>updateAttributesTable(attributes) {
-    dwr.util.removeAllRows('attributesTableBody');
-    dwr.util.addRows(
-        'attributesTableBody', 
-        attributes,
-        [ 
-            function(attribute) { /* AttribName Column */
-                // TODO color code the Name for magical and nogetters atttribute 
-                // var hasGetter = attribute['getterName'];
-                // var hasValue = attribute['value'];
-                // !hasGetter && hasValue implies magical attribute 
-                return attribute['name']; 
-            },
-            function(attribute) { /* AttribValue  Column */
-                var attribName = attribute['name'];
-                var attribValue = attribute['value'];
-                var attribType = attribute['type'];
-                var hasGetter = attribute['getterName'];
-                var isWritable = attribute['writable'];
-                var attribSetterName = attribute['setterName'];
-                var attribValueID = attribSetterName + '_value';
-                // Special case for deployment descriptor
-                if (attribName == 'deploymentDescriptor') {
-                    return '<textarea cols="60" rows="15" wrap="OFF" readonly>' + attribValue + '</textarea>';
-                }
-                if (isWritable == 'true') {
-                    // OPTION: attribValue = "<input type='text' id='" + attribValueID + "' value='" + attribValue + "' style='width: 300px;' disabled/>";
-                    attribValue = "<div id='" + attribValueID + "'>" + attribValue + "</div>";       
+    /**
+     * Call Back: Update MBean attributes table 
+     */
+    function updateAttributesTable(attributes) {
+        dwr.util.removeAllRows('attributesTableBody');
+        dwr.util.addRows(
+            'attributesTableBody', 
+            attributes,
+            [ 
+                function(attribute) { /* AttribName Column */
+                    // TODO color code the Name for magical and nogetters atttribute 
+                    // var hasGetter = attribute['getterName'];
+                    // var hasValue = attribute['value'];
+                    // !hasGetter && hasValue implies magical attribute 
+                    return attribute['name']; 
+                },
+                function(attribute) { /* AttribValue  Column */
+                    var attribName = attribute['name'];
+                    var attribValue = attribute['value'];
+                    var attribType = attribute['type'];
+                    var hasGetter = attribute['getterName'];
+                    var isWritable = attribute['writable'];
+                    var attribSetterName = attribute['setterName'];
+                    var attribValueID = attribSetterName + '_value';
+                    // Special case for deployment descriptor
+                    if (attribName == 'deploymentDescriptor') {
+                        return '<textarea cols="60" rows="15" wrap="OFF" readonly>' + attribValue + '</textarea>';
+                    }
+                    if (isWritable == 'true') {
+                        // OPTION: attribValue = "<input type='text' id='" + attribValueID + "' value='" + attribValue + "' style='width: 300px;' disabled/>";
+                        attribValue = "<div id='" + attribValueID + "'>" + attribValue + "</div>";       
+                        return attribValue;
+                    }
                     return attribValue;
+                },
+                function(attribute) { /* AttribType Column */
+                    return attribute['type'];
+                },
+                function(attribute) { /* AttribGetterName Column */
+                    return attribute['getterName'];
+                },
+                function(attribute) { /* AttribSetterName Column */
+                    var attribSetterName = attribute['setterName']; 
+                    var abstractName = window.aName;
+                    var attribName = attribute['name'];
+                    var attribType = attribute['type'];
+                    var attribValueID = attribSetterName + '_value';
+                    var isWritable = attribute['writable'];
+                    if (isWritable == 'true') {
+                        attribSetterName = 
+                            "<div align='center'>" +
+                            "<input type='button' value='" + attribSetterName + "' " + 
+                            "onclick='setAttribFN(\"" + abstractName + "\", \"" + attribName + "\", dwr.util.getValue(\"" + attribValueID + "\"), \"" + attribValueID + "\", \"" + attribType + "\")' " +
+                            "/>&nbsp;" + 
+                            "</div>";
+                        return attribSetterName;
+                    }
+                    return attribSetterName; 
+                },
+                function(attribute) { /* AttribManageable Column */
+                    var isManageable = attribute['manageable'];
+                    if (isManageable == 'true') {
+                        return 'Yes';   
+                    }
+                    return 'No';
+                     
+                },
+                function(attribute) { /* AttribPersistent Column */
+                    var isPersistent = attribute['persistent']; 
+                    if (isPersistent == 'true') {
+                        return 'Yes'; 
+                    }
+                    return 'No';
                 }
-                return attribValue;
-            },
-            function(attribute) { /* AttribType Column */
-                return attribute['type'];
-            },
-            function(attribute) { /* AttribGetterName Column */
-                return attribute['getterName'];
-            },
-            function(attribute) { /* AttribSetterName Column */
-                var attribSetterName = attribute['setterName']; 
-                var abstractName = window.aName;
-                var attribName = attribute['name'];
-                var attribType = attribute['type'];
-                var attribValueID = attribSetterName + '_value';
-                var isWritable = attribute['writable'];
-                if (isWritable == 'true') {
-                    attribSetterName = 
-                        "<div align='center'>" +
-                        "<input type='button' value='" + attribSetterName + "' " + 
-                        "onclick='setAttribFN(\"" + abstractName + "\", \"" + attribName + "\", dwr.util.getValue(\"" + attribValueID + "\"), \"" + attribValueID + "\", \"" + attribType + "\")' " +
-                        "/>&nbsp;" + 
-                        "</div>";
-                    return attribSetterName;
-                }
-                return attribSetterName; 
-            },
-            function(attribute) { /* AttribManageable Column */
-                var isManageable = attribute['manageable'];
-                if (isManageable == 'true') {
-                    return 'Yes';   
-                }
-                return 'No';
-                 
-            },
-            function(attribute) { /* AttribPersistent Column */
-                var isPersistent = attribute['persistent']; 
-                if (isPersistent == 'true') {
-                    return 'Yes'; 
+                /*
+                function(attribute) { AttribReadable Column
+                    return attribute['readable']; 
+                },
+                function(attribute) { AttribWritable Column
+                    return attribute['writable'];
+                },
+                */
+            ],
+            tableOption
+        );
+    }
+    
+    /**
+     * Call: Set Attribute Function 
+     */
+    function setAttribFN(abstractName, attribName, attribValue, attribValueID, attribType) {
+        var _attribValueID = attribValueID;
+        var newValue = prompt("Enter new value for attribute '" + attribName + "':", attribValue);
+        if (newValue == null) {
+            // Do nothing.
+        } else {
+            // Check boolean case
+            if ((attribType == 'boolean') || (attribType == 'java.lang.Boolean')) {
+                if (newValue != 'true') {
+                    newValue = 'false';
+                }
+            }
+            var _attribValue = newValue;
+            // Set attribute
+            JMXManagerHelper.setAttribute(
+                abstractName, attribName, newValue, attribType, /* Arguments */
+                function(result) { /* setAttribFN Callback */
+                    if (result[1] == '<SUCCESS>') {
+                        alert("Attribute '" + result[0] + "' successfully set."); 
+                        dwr.util.setValue(_attribValueID, _attribValue); // update table cell
+                    } else {
+                        alert("Failed to set attribute '" + result[0] + "': " + result[1]);
+                    }
                 }
-                return 'No';
-            }
-            /*
-            function(attribute) { AttribReadable Column
-                return attribute['readable']; 
-            },
-            function(attribute) { AttribWritable Column
-                return attribute['writable'];
-            },
-            */
-        ],
-        tableOption
-    );
-
-    // Render sortable table
-    var tbl = dojo.widget.byId("attribsTable");
-    if (tbl) {
-        tbl.render(false);
+            );
+        }
     }
-}
 
-/**
- * Update MBean operations table 
- */
-function <portlet:namespace/>updateOperationsTable(operations) {
-    dwr.util.removeAllRows('operationsTableBody');
-    dwr.util.addRows(
-        'operationsTableBody', 
-        operations,
-        [
-            function(operation) { /* OperName  Column */
-                var abstractName = window.aName;
-                var opName = operation['name'];
-                var params = operation['parameterList'];
-                var paramSize = params.length;
-                var oper = 
-                    "<div align='right'>" +
-                    "<input type='button' value='" + opName + "' " + 
-                    "onclick='invokeOperFN(\"" + abstractName + "\", \"" + opName + "\", " + paramSize + ")' " +
-                    "/>&nbsp;" + 
-                    "</div>";
-                return oper;
-            },
-            function(operation) { /* OperParameterList Column */
-                // TODO: Fix name collision problem for overloaded operations with same number of parameters
-                var opName = operation['name'];
-                var params = operation['parameterList'];
-                var paramList = "";
-                if (params.length == 0) {
-                    paramList = "<b>()</b>";
-                } else {
-                    paramList = "<b>(&nbsp;</b>";
-                    for (var i = 0; i < params.length; i++) {
-                        var opParamValueID = opName + '_paramValue' + (i+1) + '.' + params.length;
-                        var opParamTypeID = opName + '_paramType' + (i+1) + '.' + params.length;
-                        paramList += "<span id='" + opParamTypeID + "'>" + params[i] + "</span>&nbsp;<input type='text' id='" + opParamValueID + "' style='width: 100px;'/>";
-                        if ((i+1) < params.length) {
-                            paramList += "<b>&nbsp;,&nbsp;</b>";
-                        }
+    /**
+     * Call back: Update MBean stats table
+     */
+    function updateStatsTable(stats) {
+        dwr.util.removeAllRows('statsTableBody');
+        dwr.util.addRows(
+            'statsTableBody', 
+            stats,
+            [
+                function(stat) { /* StatisticName Column */
+                    var name = "<div align='right'>" + stat[0][1] + ":&nbsp;</div>";
+                    return name;
+                },
+                function(stat) { /* StatisticValue Column */
+                    var value = '';
+                    for (var i = 1; i < stat.length; i++) {
+                        value += '<b>' + stat[i][0] + ':</b> ' + stat[i][1] + '<br>';
                     }
-                    paramList += "<b>&nbsp;)</b>";
-                }
-                return paramList; 
-            }
-        ],
-        tableOption
-    );
-}
-
-/**
- * Update MBean basic info table
- */
-function <portlet:namespace/>updateBasicInfoTable(basicInfo) {
-    dwr.util.removeAllRows('basicInfoTableBody');
-    dwr.util.addRows(
-        'basicInfoTableBody', 
-        basicInfo,
-        [
-            function(info) { /* BasicInfoName Column */
-                var name = "<div align='right'>" + info[0] + ":&nbsp;</div>";
-                return name;
-            },
-            function(info) { /* BasicInfoValue Column */
-                var value = info[1] + "<input type='hidden' id='" + info[0] + "' value='" + info[1] + "'>";
-                return value;
-            }
-        ],
-        tableOption
-    );
-}
-
-/**
- * Update MBean stats table
- */
-function <portlet:namespace/>updateStatsTable(stats) {
-    dwr.util.removeAllRows('statsTableBody');
-    dwr.util.addRows(
-        'statsTableBody', 
-        stats,
-        [
-            function(stat) { /* StatisticName Column */
-                var name = "<div align='right'>" + stat[0][1] + ":&nbsp;</div>";
-                return name;
-            },
-            function(stat) { /* StatisticValue Column */
-                var value = '';
-                for (var i = 1; i < stat.length; i++) {
-                    value += '<b>' + stat[i][0] + ':</b> ' + stat[i][1] + '<br>';
+                    return value;
                 }
-                return value;
-            }
-        ],
-        tableOption
-    );
-    
-    // Render sortable table
-    var tbl = dojo.widget.byId("statsTable");
-    if (tbl) {
-        tbl.render(false);
+            ],
+            tableOption
+        );   
     }
-}
 
-/**
- * Update 'Search MBeans' tree node 
- */
-function <portlet:namespace/>updateSearchMBeansTreeNode(searchResult) {
-    // Remove nodes
-    var searchMBeansNode = dojo.widget.byId('searchMBeans');
-    var treeController = dojo.widget.byId('treeController');
-    var children = searchMBeansNode.children;
-
-    while (children.length > 0) {
-        var node = children[0];
-        treeController.removeNode(node);
-        node.destroy();
-    }
-    treeController.removeNode(searchMBeansNode); // This fixed the layout problem
-    searchMBeansNode.destroy();
-    
-    // Add nodes
-    nodeTitle = 'Search MBeans (' + searchResult.length + ' matches)';
-    searchMBeansNode = dojo.widget.createWidget(
-        'TreeNode', 
-        {title: nodeTitle, widgetId: 'searchMBeans', isFolder: true, childIconSrc:'<%= jmxIconURI %>', actionsDisabled: ['view']}
-    );
-    var tree = dojo.widget.byId('jmxTree');
-    tree.addChild(searchMBeansNode); 
-    for (i = 0; i < searchResult.length; i++) {
-        var entry = searchResult[i];
-        var id = searchMBeansNode.widgetId + '::' + entry[0]; // make it unique
-        var newNode = dojo.widget.createWidget(
-            'TreeNode', 
-            {title: entry[1], widgetId: id, label: entry, isFolder: false, childIconSrc:'<%= jmxIconURI %>'}
-        );
-        searchMBeansNode.addChild(newNode);        
-    }
-    searchMBeansNode.state = 'LOADED';
 
-    // Exapand node
-    if (searchMBeansNode.isExpanded == false) {
-        treeController.expandToLevel(searchMBeansNode, 1);
-    }
-    
-    // Select node
-    var treeSelector = dojo.widget.byId("treeSelector");
-    if (getSelectedNode() != null) {
-        treeSelector.deselect();
-    }
-    treeSelector.doSelect(searchMBeansNode);
-}
+</script>
 
-/**
- * Update JMX tree
- */
-function <portlet:namespace/>updateJMXTree(entries) {
-    for (var i = 0; i < entries.length; i++) {
-        var entry = entries[i];
-        var id = _selectedNode.widgetId + '::' + entry[0]; // make it unique
-        var newNode = dojo.widget.createWidget(
-            'TreeNode', 
-            {title: entry[1], widgetId: id, label: entry[1], isFolder: false, childIconSrc:'<%= jmxIconURI %>'}
-        );
-        _selectedNode.addChild(newNode);
-    }
-    _selectedNode.state = 'LOADED';
-}
+<!-- Model for tree -->
+<div dojoType="dijit.tree.ForestStoreModel" jsId="treeModel" store="treeStore" childrenAttrs="children" />
 
-/**
- * Set Attribute Function 
- */
-function setAttribFN(abstractName, attribName, attribValue, attribValueID, attribType) {
-    _attribValueID = attribValueID;
-    var newValue = prompt("Enter new value for attribute '" + attribName + "':", attribValue);
-    if (newValue == null) {
-        // Do nothing.
-    } else {
-        // Check boolean case
-        if ((attribType == 'boolean') || (attribType == 'java.lang.Boolean')) {
-            if (newValue != 'true') {
-                newValue = 'false';
-            }
-        }
-        _attribValue = newValue;
-        // Set attribute
-        JMXManagerHelper.setAttribute(
-            abstractName, attribName, newValue, attribType, /* Arguments */
-            function(result) { /* setAttribFN Callback */
-                if (result[1] == '<SUCCESS>') {
-                    alert("Attribute '" + result[0] + "' successfully set."); 
-                    dwr.util.setValue(_attribValueID, _attribValue); // update table cell
-                } else {
-                    alert("Failed to set attribute '" + result[0] + "': " + result[1]);
-                }
-            }
-        );
-    }
-}
+<!-- Search table -->
+<div dojoType="dijit.TitlePane" title="Search">
+       <fmt:message key="jmxmanager.help.objectNamePattern"/>:
+       <select dojoType="dijit.form.ComboBox" id="srchPattern" jsId="srchPattern" style="width:300px">
+           <!-- Domains -->
+            <option>*:*</option>
+            <option>geronimo:*</option>
+            <option>geronimo.config:*</option>
+            <!-- J2EE MBeans -->
+            <option>*:j2eeType=AppClientModule,*</option>
+            <option>*:j2eeType=EJBModule,*</option>
+            <option>*:j2eeType=EntityBean,*</option>
+            <option>*:j2eeType=J2EEApplication,*</option>
+            <option>*:j2eeType=J2EEDomain,*</option>
+            <option>*:j2eeType=J2EEServer,*</option>
+            <option>*:j2eeType=JavaMailResource,*</option>
+            <option>*:j2eeType=JCAConnectionFactory,*</option>
+            <option>*:j2eeType=JCAManagedConnectionFactory,*</option>
+            <option>*:j2eeType=JCAResource,*</option>
+            <option>*:j2eeType=JDBCDataSource,*</option>
+            <option>*:j2eeType=JDBCDriver,*</option>
+            <option>*:j2eeType=JDBCResource,*</option>
+            <option>*:j2eeType=JMSResource,*</option>
+            <option>*:j2eeType=JNDIResource,*</option>
+            <option>*:j2eeType=JTAResource,*</option>
+            <option>*:j2eeType=JVM,*</option>
+            <option>*:j2eeType=MessageDrivenBean,*</option>
+            <option>*:j2eeType=ResourceAdapter,*</option>
+            <option>*:j2eeType=ResourceAdapterModule,*</option>
+            <option>*:j2eeType=RMI_IIOPResource,*</option>
+            <option>*:j2eeType=Servlet,*</option>
+            <option>*:j2eeType=StatefulSessionBean,*</option>
+            <option>*:j2eeType=StatelessSessionBean,*</option>
+            <option>*:j2eeType=URLResource,*</option>
+            <option>*:j2eeType=WebModule,*</option>
+            <!-- Geronimo MBeans -->
+            <option>*:j2eeType=AppClient,*</option>
+            <option>*:j2eeType=ArtifactManager,*</option>
+            <option>*:j2eeType=ArtifactResolver,*</option>
+            <option>*:j2eeType=AttributeStore,*</option>
+            <option>*:j2eeType=ConfigBuilder,*</option>
+            <option>*:j2eeType=ConfigurationEntry,*</option>
+            <option>*:j2eeType=ConfigurationManager,*</option>
+            <option>*:j2eeType=ConfigurationStore,*</option>
+            <option>*:j2eeType=CORBABean,*</option>
+            <option>*:j2eeType=CORBACSS,*</option>
+            <option>*:j2eeType=CORBATSS,*</option>
+            <option>*:j2eeType=Deployer,*</option>
+            <option>*:j2eeType=DeploymentConfigurer,*</option>
+            <option>*:j2eeType=GBean,*</option>
+            <option>*:j2eeType=Host,*</option>
+            <option>*:j2eeType=JaasLoginService,*</option>
+            <option>*:j2eeType=JACCManager,*</option>
+            <option>*:j2eeType=JAXRConnectionFactory,*</option>
+            <option>*:j2eeType=JCAActivationSpec,*</option>
+            <option>*:j2eeType=JCAAdminObject,*</option>
+            <option>*:j2eeType=JCAConnectionManager,*</option>
+            <option>*:j2eeType=JCAConnectionTracker,*</option>
+            <option>*:j2eeType=JCAResourceAdapter,*</option>
+            <option>*:j2eeType=JCAWorkManager,*</option>
+            <option>*:j2eeType=JMSConnector,*</option>
+            <option>*:j2eeType=JMSPersistence,*</option>
+            <option>*:j2eeType=JMSServer,*</option>
+            <option>*:j2eeType=KeyGenerator,*</option>
+            <option>*:j2eeType=Keystore,*</option>
+            <option>*:j2eeType=LoginModule,*</option>
+            <option>*:j2eeType=LoginModuleUse,*</option>
+            <option>*:j2eeType=MEJB,*</option>
+            <option>*:j2eeType=ModuleBuilder,*</option>
+            <option>*:j2eeType=PersistentConfigurationList,*</option>
+            <option>*:j2eeType=RealmBridge,*</option>
+            <option>*:j2eeType=Repository,*</option>
+            <option>*:j2eeType=RoleMapper,*</option>
+            <option>*:j2eeType=SecurityRealm,*</option>
+            <option>*:j2eeType=ServiceModule,*</option>
+            <option>*:j2eeType=ServletTemplate,*</option>
+            <option>*:j2eeType=ServletWebFilterMapping,*</option>
+            <option>*:j2eeType=ServletWebServiceTemplate,*</option>
+            <option>*:j2eeType=SystemLog,*</option>
+            <option>*:j2eeType=TomcatValve,*</option>
+            <option>*:j2eeType=TransactionContextManager,*</option>
+            <option>*:j2eeType=TransactionLog,*</option>
+            <option>*:j2eeType=TransactionManager,*</option>
+            <option>*:j2eeType=URLPattern,*</option>
+            <option>*:j2eeType=URLWebFilterMapping,*</option>
+            <option>*:j2eeType=WebFilter,*</option>
+            <option>*:j2eeType=WSLink,*</option>
+            <option>*:j2eeType=XIDFactory,*</option>
+            <option>*:j2eeType=XIDImporter,*</option>
+            <option>*:j2eeType=XmlAttributeBuilder,*</option>
+            <option>*:j2eeType=XmlReferenceBuilder,*</option>
+        </select>
+        <button dojoType="dijit.form.Button"><fmt:message key="jmxmanager.help.search" />
+            <script type="dojo/method" event="onClick" args="btn">
+                document.body.style.cursor = "wait";
+                
+                var searchNode;
+                var rootkids = treeModel.root.children;
+                for (var i in rootkids) {
+                        var type = treeStore.getValue(rootkids[i],"type");
+
+                        if (type == "SearchNode") {
+
+                            //get the search node
+                            searchNode = rootkids[i];
+
+                            //del the old results
+                            var oldkids = treeStore.getValues(searchNode, "children");
+                            for (var j in oldkids) {
+                                treeStore.deleteItem(oldkids[j]);
+                            }
 
-/**
- * Invoke Operation Function 
- */
-function invokeOperFN(abstractName, opName, paramSize) {
-    if (paramSize == 0) {
-        // Operation without parameters
-        // Invoke operator with no args        
-        JMXManagerHelper.invokeOperNoArgs(
-            abstractName, opName, /* Arguments */
-            function(result) { /* invokeOperNoArgs Callback */
-                alert(result[0] + ' returned: ' + result[1]);
-            }
-        );
-    } else {
-        // Operation with parameters
-        var paramValues = new Array(paramSize);
-        var paramTypes = new Array(paramSize);
-        for (var i = 0; i < paramSize; i++) {
-            var opParamValueID = opName + '_paramValue' + (i+1) + '.' + paramSize;
-            var opParamTypeID = opName + '_paramType' + (i+1) + '.' + paramSize;
-            paramValues[i] = dwr.util.getValue(opParamValueID);
-            paramTypes[i] = dwr.util.getValue(opParamTypeID);
-        }
-        // Invoke operator with args
-        JMXManagerHelper.invokeOperWithArgs(
-            abstractName, opName, paramValues, paramTypes,
-            function(result) { /* invokeOperWithArgs Callback */
-                alert(result[0] + ' returned: ' + result[1]);
-            }
-        );
-    }
-}
+                            //add a placeholder
+                            treeStore.newItem({name:"null", type:"placeholder"},{parent:searchNode, attribute:"children"});
 
-/**
- * Prints 'LOADING' message while waiting for DWR method calls 
- */
-function init() {
-    // dwr.util.useLoadingMessage();
-    dwr.util.setEscapeHtml(false);
-}
-
-/**
- * Call on DWR load
- */
-function callOnLoad(load) {
-    if (window.addEventListener) {
-        window.addEventListener('load', load, false);
-    } else if (window.attachEvent) {
-        window.attachEvent('onload', load);
-    } else {
-        window.onload = load;
-    }
-}
+                            break;
+                        }
+                        
+                }
 
-/**
- * Call init function
- */
-callOnLoad(init);
-</script>
+                var jmxQuery = srchPattern.value;
+                _selectItem = searchNode;
+                JMXManagerHelper.listByPattern(jmxQuery, updateJMXTree);
 
-<div dojoType="TreeContextMenu" toggle="explode" contextMenuForWindow="false" widgetId="treeContextMenu">
-    <!-- <div dojoType="TreeMenuItem" treeActions="refreshNode" widgetId="treeContextMenuRefresh" caption="Refresh"></div> -->
-    <div dojoType="TreeMenuItem" treeActions="searchNode" widgetId="treeContextMenuSearch" caption="<fmt:message key="jmxmanager.help.search"/>..."></div>
-    <div dojoType="TreeMenuItem" treeActions="view" widgetId="treeContextMenuViewAttribs" caption="<fmt:message key="jmxmanager.help.viewAttributes"/>"></div>
-    <div dojoType="TreeMenuItem" treeActions="view" widgetId="treeContextMenuViewOps" caption="<fmt:message key="jmxmanager.help.viewOperations"/>"></div>
-    <div dojoType="TreeMenuItem" treeActions="view" widgetId="treeContextMenuViewInfo" caption="<fmt:message key="jmxmanager.help.viewInfo"/>"></div>
-    <div dojoType="TreeMenuItem" treeActions="view" widgetId="treeContextMenuViewStats" caption="<fmt:message key="jmxmanager.help.viewStats"/>"></div>
-</div>
+                dealPlaceholderChild(searchNode);
 
-<div dojoType="TreeSelector" widgetId="treeSelector"></div>
-<div dojoType="TreeBasicController" widgetId="treeController"></div>
+                document.body.style.cursor = "";
 
-<!-- Main layout container -->
-<div dojoType="LayoutContainer"
-    layoutChildPriority='left-right'
-    id="mainLayout"
-    style="height: 700px;">
-
-    <!-- Horizontal split container -->
-    <div dojoType="SplitContainer"
-        orientation="horizontal"
-        sizerWidth="5"
-        activeSizing="1"
-        layoutAlign="client">
-
-        <!-- JMX tree -->
-        <div dojoType="Tree"
-            toggle="fade"
-            layoutAlign="flood"
-            sizeMin="60"
-            sizeShare="40"
-            widgetId="jmxTree"
-            selector="treeSelector"
-            controller="treeController"
-            expandLevel="0"
-            menu="treeContextMenu"
-            strictFolders="false">
-
-            <!-- All MBeans -->
-            <div dojoType="TreeNode" title="All MBeans" widgetId="allMBeans" isFolder="true" childIconSrc="<%= jmxIconURI %>" actionsDisabled="view">
-                 <div dojoType="TreeNode" title="geronimo" widgetId="<PATTERN>geronimo:*" isFolder="true" childIconSrc="<%= jmxIconURI %>" actionsDisabled="view"></div>
-                 <div dojoType="TreeNode" title="geronimo.config" widgetId="<PATTERN>geronimo.config:*" isFolder="true" childIconSrc="<%= jmxIconURI %>" actionsDisabled="view"></div>
-            </div>
+            </script>
+        </button>
+</div>
+<br/>
 
-            <!-- J2EE MBeans -->
-             <div dojoType="TreeNode" title="J2EE Managed Objects" widgetId="j2eeMBeans" childIconSrc="<%= jmxIconURI %>" actionsDisabled="view">
-                 <div dojoType="TreeNode" title="AppClientModule" widgetId="<J2EETYPE>AppClientModule" isFolder="true" childIconSrc="<%= jmxIconURI %>" actionsDisabled="view"></div>
-                 <div dojoType="TreeNode" title="EJBModule" widgetId="<J2EETYPE>EJBModule" isFolder="true" childIconSrc="<%= jmxIconURI %>" actionsDisabled="view"></div>
-                 <div dojoType="TreeNode" title="EntityBean" widgetId="<J2EETYPE>EntityBean" isFolder="true" childIconSrc="<%= jmxIconURI %>" actionsDisabled="view"></div>
-                 <div dojoType="TreeNode" title="J2EEApplication" widgetId="<J2EETYPE>J2EEApplication" isFolder="true" childIconSrc="<%= jmxIconURI %>" actionsDisabled="view"></div>
-                 <div dojoType="TreeNode" title="J2EEDomain" widgetId="<J2EETYPE>J2EEDomain" isFolder="true" childIconSrc="<%= jmxIconURI %>" actionsDisabled="view"></div>
-                 <div dojoType="TreeNode" title="J2EEServer" widgetId="<J2EETYPE>J2EEServer" isFolder="true" childIconSrc="<%= jmxIconURI %>" actionsDisabled="view"></div>
-                 <div dojoType="TreeNode" title="JavaMailResource" widgetId="<J2EETYPE>JavaMailResource" isFolder="true" childIconSrc="<%= jmxIconURI %>" actionsDisabled="view"></div>
-                 <div dojoType="TreeNode" title="JCAConnectionFactory" widgetId="<J2EETYPE>JCAConnectionFactory" isFolder="true" childIconSrc="<%= jmxIconURI %>" actionsDisabled="view"></div>
-                 <div dojoType="TreeNode" title="JCAManagedConnectionFactory" widgetId="<J2EETYPE>JCAManagedConnectionFactory" isFolder="true" childIconSrc="<%= jmxIconURI %>" actionsDisabled="view"></div>
-                 <div dojoType="TreeNode" title="JCAResource" widgetId="<J2EETYPE>JCAResource" isFolder="true" childIconSrc="<%= jmxIconURI %>" actionsDisabled="view"></div>
-                 <div dojoType="TreeNode" title="JDBCDataSource" widgetId="<J2EETYPE>JDBCDataSource" isFolder="true" childIconSrc="<%= jmxIconURI %>" actionsDisabled="view"></div>
-                 <div dojoType="TreeNode" title="JDBCDriver" widgetId="<J2EETYPE>JDBCDriver" isFolder="true" childIconSrc="<%= jmxIconURI %>" actionsDisabled="view"></div>
-                 <div dojoType="TreeNode" title="JDBCResource" widgetId="<J2EETYPE>JDBCResource" isFolder="true" childIconSrc="<%= jmxIconURI %>" actionsDisabled="view"></div>
-                 <div dojoType="TreeNode" title="JMSResource" widgetId="<J2EETYPE>JMSResource" isFolder="true" childIconSrc="<%= jmxIconURI %>" actionsDisabled="view"></div>
-                 <div dojoType="TreeNode" title="JNDIResource" widgetId="<J2EETYPE>JNDIResource" isFolder="true" childIconSrc="<%= jmxIconURI %>" actionsDisabled="view"></div>
-                 <div dojoType="TreeNode" title="JTAResource" widgetId="<J2EETYPE>JTAResource" isFolder="true" childIconSrc="<%= jmxIconURI %>" actionsDisabled="view"></div>
-                 <div dojoType="TreeNode" title="JVM" widgetId="<J2EETYPE>JVM" isFolder="true" childIconSrc="<%= jmxIconURI %>" actionsDisabled="view"></div>
-                 <div dojoType="TreeNode" title="MessageDrivenBean" widgetId="<J2EETYPE>MessageDrivenBean" isFolder="true" childIconSrc="<%= jmxIconURI %>" actionsDisabled="view"></div>
-              <div dojoType="TreeNode" title="PersistenceUnit" widgetId="<J2EETYPE>PersistenceUnit" isFolder="true" childIconSrc="<%= jmxIconURI %>" actionsDisabled="view"></div>
-                 <div dojoType="TreeNode" title="ResourceAdapter" widgetId="<J2EETYPE>ResourceAdapter" isFolder="true" childIconSrc="<%= jmxIconURI %>" actionsDisabled="view"></div>
-                 <div dojoType="TreeNode" title="ResourceAdapterModule" widgetId="<J2EETYPE>ResourceAdapterModule" isFolder="true" childIconSrc="<%= jmxIconURI %>" actionsDisabled="view"></div>
-                 <div dojoType="TreeNode" title="RMI_IIOPResource" widgetId="<J2EETYPE>RMI_IIOPResource" isFolder="true" childIconSrc="<%= jmxIconURI %>" actionsDisabled="view"></div>
-                 <div dojoType="TreeNode" title="Servlet" widgetId="<J2EETYPE>Servlet" isFolder="true" childIconSrc="<%= jmxIconURI %>" actionsDisabled="view"></div>
-                 <div dojoType="TreeNode" title="StatefulSessionBean" widgetId="<J2EETYPE>StatefulSessionBean" isFolder="true" childIconSrc="<%= jmxIconURI %>" actionsDisabled="view"></div>
-                 <div dojoType="TreeNode" title="StatelessSessionBean" widgetId="<J2EETYPE>StatelessSessionBean" isFolder="true" childIconSrc="<%= jmxIconURI %>" actionsDisabled="view"></div>
-                 <div dojoType="TreeNode" title="URLResource" widgetId="<J2EETYPE>URLResource" isFolder="true" childIconSrc="<%= jmxIconURI %>" actionsDisabled="view"></div>
-                 <div dojoType="TreeNode" title="WebModule" widgetId="<J2EETYPE>WebModule" isFolder="true" childIconSrc="<%= jmxIconURI %>" actionsDisabled="view"></div>
-             </div>
-             
-             <!-- Geronimo MBeans -->
-             <div dojoType="TreeNode" title="Geronimo MBeans" widgetId="geronimoMBeans" childIconSrc="<%= jmxIconURI %>" actionsDisabled="view">
-                 <div dojoType="TreeNode" title="AppClient" widgetId="<J2EETYPE>AppClient" isFolder="true" childIconSrc="<%= jmxIconURI %>" actionsDisabled="view"></div>
-                 <div dojoType="TreeNode" title="ArtifactManager" widgetId="<J2EETYPE>ArtifactManager" isFolder="true" childIconSrc="<%= jmxIconURI %>" actionsDisabled="view"></div>
-                 <div dojoType="TreeNode" title="ArtifactResolver" widgetId="<J2EETYPE>ArtifactResolver" isFolder="true" childIconSrc="<%= jmxIconURI %>" actionsDisabled="view"></div>
-                 <div dojoType="TreeNode" title="AttributeStore" widgetId="<J2EETYPE>AttributeStore" isFolder="true" childIconSrc="<%= jmxIconURI %>" actionsDisabled="view"></div>
-                 <div dojoType="TreeNode" title="ConfigBuilder" widgetId="<J2EETYPE>ConfigBuilder" isFolder="true" childIconSrc="<%= jmxIconURI %>" actionsDisabled="view"></div>
-                 <div dojoType="TreeNode" title="ConfigurationEntry" widgetId="<J2EETYPE>ConfigurationEntry" isFolder="true" childIconSrc="<%= jmxIconURI %>" actionsDisabled="view"></div>
-                 <div dojoType="TreeNode" title="ConfigurationManager" widgetId="<J2EETYPE>ConfigurationManager" isFolder="true" childIconSrc="<%= jmxIconURI %>" actionsDisabled="view"></div>
-                 <div dojoType="TreeNode" title="ConfigurationStore" widgetId="<J2EETYPE>ConfigurationStore" isFolder="true" childIconSrc="<%= jmxIconURI %>" actionsDisabled="view"></div>
-                 <div dojoType="TreeNode" title="CORBABean" widgetId="<J2EETYPE>CORBABean" isFolder="true" childIconSrc="<%= jmxIconURI %>" actionsDisabled="view"></div>
-                 <div dojoType="TreeNode" title="CORBACSS" widgetId="<J2EETYPE>CORBACSS" isFolder="true" childIconSrc="<%= jmxIconURI %>" actionsDisabled="view"></div>
-                 <div dojoType="TreeNode" title="CORBATSS" widgetId="<J2EETYPE>CORBATSS" isFolder="true" childIconSrc="<%= jmxIconURI %>" actionsDisabled="view"></div>
-                 <div dojoType="TreeNode" title="Deployer" widgetId="<J2EETYPE>Deployer" isFolder="true" childIconSrc="<%= jmxIconURI %>" actionsDisabled="view"></div>
-                 <div dojoType="TreeNode" title="DeploymentConfigurer" widgetId="<J2EETYPE>DeploymentConfigurer" isFolder="true" childIconSrc="<%= jmxIconURI %>" actionsDisabled="view"></div>
-                 <div dojoType="TreeNode" title="GBean" widgetId="<J2EETYPE>GBean" isFolder="true" childIconSrc="<%= jmxIconURI %>" actionsDisabled="view"></div>
-                 <div dojoType="TreeNode" title="Host" widgetId="<J2EETYPE>Host" isFolder="true" childIconSrc="<%= jmxIconURI %>" actionsDisabled="view"></div>
-                 <div dojoType="TreeNode" title="JaasLoginService" widgetId="<J2EETYPE>JaasLoginService" isFolder="true" childIconSrc="<%= jmxIconURI %>" actionsDisabled="view"></div>
-                 <div dojoType="TreeNode" title="JACCManager" widgetId="<J2EETYPE>JACCManager" isFolder="true" childIconSrc="<%= jmxIconURI %>" actionsDisabled="view"></div>
-                 <div dojoType="TreeNode" title="JAXRConnectionFactory" widgetId="<J2EETYPE>JAXRConnectionFactory" isFolder="true" childIconSrc="<%= jmxIconURI %>" actionsDisabled="view"></div>
-                 <div dojoType="TreeNode" title="JCAActivationSpec" widgetId="<J2EETYPE>JCAActivationSpec" isFolder="true" childIconSrc="<%= jmxIconURI %>" actionsDisabled="view"></div>
-                 <div dojoType="TreeNode" title="JCAAdminObject" widgetId="<J2EETYPE>JCAAdminObject" isFolder="true" childIconSrc="<%= jmxIconURI %>" actionsDisabled="view"></div>
-                 <div dojoType="TreeNode" title="JCAConnectionManager" widgetId="<J2EETYPE>JCAConnectionManager" isFolder="true" childIconSrc="<%= jmxIconURI %>" actionsDisabled="view"></div>
-                 <div dojoType="TreeNode" title="JCAConnectionTracker" widgetId="<J2EETYPE>JCAConnectionTracker" isFolder="true" childIconSrc="<%= jmxIconURI %>" actionsDisabled="view"></div>
-                 <div dojoType="TreeNode" title="JCAResourceAdapter" widgetId="<J2EETYPE>JCAResourceAdapter" isFolder="true" childIconSrc="<%= jmxIconURI %>" actionsDisabled="view"></div>
-                 <div dojoType="TreeNode" title="JCAWorkManager" widgetId="<J2EETYPE>JCAWorkManager" isFolder="true" childIconSrc="<%= jmxIconURI %>" actionsDisabled="view"></div>
-                 <div dojoType="TreeNode" title="JMSConnector" widgetId="<J2EETYPE>JMSConnector" isFolder="true" childIconSrc="<%= jmxIconURI %>" actionsDisabled="view"></div>
-                 <div dojoType="TreeNode" title="JMSPersistence" widgetId="<J2EETYPE>JMSPersistence" isFolder="true" childIconSrc="<%= jmxIconURI %>" actionsDisabled="view"></div>
-                 <div dojoType="TreeNode" title="JMSServer" widgetId="<J2EETYPE>JMSServer" isFolder="true" childIconSrc="<%= jmxIconURI %>" actionsDisabled="view"></div>
-                 <div dojoType="TreeNode" title="KeyGenerator" widgetId="<J2EETYPE>KeyGenerator" isFolder="true" childIconSrc="<%= jmxIconURI %>" actionsDisabled="view"></div>
-                 <div dojoType="TreeNode" title="Keystore" widgetId="<J2EETYPE>Keystore" isFolder="true" childIconSrc="<%= jmxIconURI %>" actionsDisabled="view"></div>
-                 <div dojoType="TreeNode" title="LoginModule" widgetId="<J2EETYPE>LoginModule" isFolder="true" childIconSrc="<%= jmxIconURI %>" actionsDisabled="view"></div>
-                 <div dojoType="TreeNode" title="LoginModuleUse" widgetId="<J2EETYPE>LoginModuleUse" isFolder="true" childIconSrc="<%= jmxIconURI %>" actionsDisabled="view"></div>
-                 <div dojoType="TreeNode" title="MEJB" widgetId="<J2EETYPE>MEJB" isFolder="true" childIconSrc="<%= jmxIconURI %>" actionsDisabled="view"></div>
-                 <div dojoType="TreeNode" title="ModuleBuilder" widgetId="<J2EETYPE>ModuleBuilder" isFolder="true" childIconSrc="<%= jmxIconURI %>" actionsDisabled="view"></div>
-                 <div dojoType="TreeNode" title="PersistentConfigurationList" widgetId="<J2EETYPE>PersistentConfigurationList" isFolder="true" childIconSrc="<%= jmxIconURI %>" actionsDisabled="view"></div>
-                 <div dojoType="TreeNode" title="RealmBridge" widgetId="<J2EETYPE>RealmBridge" isFolder="true" childIconSrc="<%= jmxIconURI %>" actionsDisabled="view"></div>
-                 <div dojoType="TreeNode" title="Repository" widgetId="<J2EETYPE>Repository" isFolder="true" childIconSrc="<%= jmxIconURI %>" actionsDisabled="view"></div>
-                 <div dojoType="TreeNode" title="RoleMapper" widgetId="<J2EETYPE>RoleMapper" isFolder="true" childIconSrc="<%= jmxIconURI %>" actionsDisabled="view"></div>
-                 <div dojoType="TreeNode" title="SecurityRealm" widgetId="<J2EETYPE>SecurityRealm" isFolder="true" childIconSrc="<%= jmxIconURI %>" actionsDisabled="view"></div>
-                 <div dojoType="TreeNode" title="ServiceModule" widgetId="<J2EETYPE>ServiceModule" isFolder="true" childIconSrc="<%= jmxIconURI %>" actionsDisabled="view"></div>
-                 <div dojoType="TreeNode" title="ServletTemplate" widgetId="<J2EETYPE>ServletTemplate" isFolder="true" childIconSrc="<%= jmxIconURI %>" actionsDisabled="view"></div>
-                 <div dojoType="TreeNode" title="ServletWebFilterMapping" widgetId="<J2EETYPE>ServletWebFilterMapping" isFolder="true" childIconSrc="<%= jmxIconURI %>" actionsDisabled="view"></div>
-                 <div dojoType="TreeNode" title="ServletWebServiceTemplate" widgetId="<J2EETYPE>ServletWebServiceTemplate" isFolder="true" childIconSrc="<%= jmxIconURI %>" actionsDisabled="view"></div>
-                 <div dojoType="TreeNode" title="SystemLog" widgetId="<J2EETYPE>SystemLog" isFolder="true" childIconSrc="<%= jmxIconURI %>" actionsDisabled="view"></div>
-                 <div dojoType="TreeNode" title="TomcatValve" widgetId="<J2EETYPE>TomcatValve" isFolder="true" childIconSrc="<%= jmxIconURI %>" actionsDisabled="view"></div>
-                 <div dojoType="TreeNode" title="TransactionContextManager" widgetId="<J2EETYPE>TransactionContextManager" isFolder="true" childIconSrc="<%= jmxIconURI %>" actionsDisabled="view"></div>
-                 <div dojoType="TreeNode" title="TransactionLog" widgetId="<J2EETYPE>TransactionLog" isFolder="true" childIconSrc="<%= jmxIconURI %>" actionsDisabled="view"></div>
-                 <div dojoType="TreeNode" title="TransactionManager" widgetId="<J2EETYPE>TransactionManager" isFolder="true" childIconSrc="<%= jmxIconURI %>" actionsDisabled="view"></div>
-                 <div dojoType="TreeNode" title="URLPattern" widgetId="<J2EETYPE>URLPattern" isFolder="true" childIconSrc="<%= jmxIconURI %>" actionsDisabled="view"></div>
-                 <div dojoType="TreeNode" title="URLWebFilterMapping" widgetId="<J2EETYPE>URLWebFilterMapping" isFolder="true" childIconSrc="<%= jmxIconURI %>" actionsDisabled="view"></div>
-                 <div dojoType="TreeNode" title="WebFilter" widgetId="<J2EETYPE>WebFilter" isFolder="true" childIconSrc="<%= jmxIconURI %>" actionsDisabled="view"></div>
-                 <div dojoType="TreeNode" title="WSLink" widgetId="<J2EETYPE>WSLink" isFolder="true" childIconSrc="<%= jmxIconURI %>" actionsDisabled="view"></div>
-                 <div dojoType="TreeNode" title="XIDFactory" widgetId="<J2EETYPE>XIDFactory" isFolder="true" childIconSrc="<%= jmxIconURI %>" actionsDisabled="view"></div>
-                 <div dojoType="TreeNode" title="XIDImporter" widgetId="<J2EETYPE>XIDImporter" isFolder="true" childIconSrc="<%= jmxIconURI %>" actionsDisabled="view"></div>
-                 <div dojoType="TreeNode" title="XmlAttributeBuilder" widgetId="<J2EETYPE>XmlAttributeBuilder" isFolder="true" childIconSrc="<%= jmxIconURI %>" actionsDisabled="view"></div>
-                 <div dojoType="TreeNode" title="XmlReferenceBuilder" widgetId="<J2EETYPE>XmlReferenceBuilder" isFolder="true" childIconSrc="<%= jmxIconURI %>" actionsDisabled="view"></div>
-            </div>
+<!-- Main layout container START -->
+<div dojoType="dijit.layout.LayoutContainer"  id="mainLayout" style="width: 100%; height: 700px;">
 
-             <!-- ServiceModule MBeans -->
-             <div dojoType="TreeNode" title="ServiceModule MBeans" widgetId="serviceModuleMBeans" isFolder="true" childIconSrc="<%= jmxIconURI %>" actionsDisabled="view">
-                <% pageContext.setAttribute("serviceModules", new JMXManagerHelper().getServiceModules()); %>
-                <c:forEach var="serviceModule" items="${serviceModules}">
-                 <div dojoType="TreeNode" title="${serviceModule}" widgetId="<SVCMODULE>ServiceModule=${serviceModule}" isFolder="true" childIconSrc="<%= jmxIconURI %>" actionsDisabled="view"></div>
-                 </c:forEach>
-            </div>
+    <!-- Horizontal split container START -->
+    <div dojoType="dijit.layout.SplitContainer" orientation="horizontal" sizerWidth="1" activeSizing="true" layoutAlign="client" style="width: 100%; height: 100%;" >
+       
+        <!-- left pane START -->
+        <div dojoType="dijit.layout.ContentPane" sizeShare="40" layoutAlign="left" style="background-color:white; overflow: auto;">       
+            
+            <!-- JMX tree START -->
+            <div dojoType="dijit.Tree" model="treeModel" showRoot="false" openOnClick="false">
+                <script type="dojo/method" event="onOpen" args="item">
+                        document.body.style.cursor = "wait";
+                        _selectItem = item;
+                        
+                        // if the node has place holder, we will try get its children by type
+                        if (checkPlaceholderChild(item)){
+                            var type = treeStore.getValue(item,"type");
+                            if (type == "JavaEE" || type == "Geronimo") {        //how to use static final java var?
+                                JMXManagerHelper.listByJ2EEType(treeStore.getValue(item,"name"), {callback:updateJMXTree});
+                            }
+                            if (type == "GeronimoService") {
+                                JMXManagerHelper.listBySubstring("ServiceModule="+treeStore.getValue(item,"name"), {callback:updateJMXTree});
+                            }
+                            if (type == "All") {
+                                // not worked
+                                JMXManagerHelper.listByPattern(treeStore.getValue(item,"name")+":*", {callback:updateJMXTree});
+                            }
+                            if (type == "StatsProvider") {
+                                // Get statistics provider MBeans
+                                JMXManagerHelper.getStatsProviderMBeans({callback:updateJMXTree});
+                            }
+                        } 
+                        
+                        // if item has children, del the place holder. Otherwise keep the place holder
+                        dealPlaceholderChild(item);
+
+                        document.body.style.cursor = "";
+                </script> 
+                <script type="dojo/method" event="onClick" args="item">
+                        document.body.style.cursor = "wait";
+                        _selectItem = item;
+                        
+                        var type = treeStore.getValue(item, "type");
+                        if (type == "leaf") {
+                            // set abstract name
+                            var values = treeStore.getValues(item,"values");
+                            _abstractName = values[0];
+                            JMXManagerHelper.getAttributes(_abstractName, updateAttributesTable);
+                            JMXManagerHelper.getOperations(_abstractName, updateOperationsTable);
+                            JMXManagerHelper.getMBeanInfo(_abstractName, updateInfoTable);
+                            JMXManagerHelper.getMBeanStats(_abstractName, updateStatsTable);
+                        } else {
+                            // No marker means not an abstract name, clear tables
+                            dwr.util.removeAllRows('attributesTableBody');
+                            dwr.util.removeAllRows('operationsTableBody');
+                            dwr.util.removeAllRows('infoTableBody');
+                            dwr.util.removeAllRows('statsTableBody');
+                        }
 
-             <!-- Statistics Provider MBeans -->
-             <div dojoType="TreeNode" title="Statistics Provider MBeans" widgetId="statisticsProviderMBeans" isFolder="true" childIconSrc="<%= jmxIconURI %>" actionsDisabled="view">
+                        document.body.style.cursor = "";
+                </script>
             </div>
-
-            <!-- Search MBeans -->
-             <div dojoType="TreeNode" title="Search MBeans" widgetId="searchMBeans" isFolder="true" childIconSrc="<%= jmxIconURI %>" actionsDisabled="view">
-             </div>
-        </div> <!-- JMX tree -->
-
-        <!-- Main tab container -->
-        <div id="mainTabContainer" 
-            dojoType="TabContainer" 
-            selectedTab="attributesTab" 
-            style="overflow: hidden" 
-            sizeShare="60">
+            <!-- JMX tree END -->
             
-            <!-- Attributes tab -->
-            <div id="attributesTab" dojoType="ContentPane" title="MBean Attributes" label="<fmt:message key="jmxmanager.help.attributes"/>" style="overflow: auto">
-                <br>
-                <table dojoType="SortableTable" 
-                    widgetId="attribsTable" 
-                    tbodyClass="scrollContent" 
-                    enableMultipleSelect="true" 
-                    enableAlternateRows="true" 
-                    rowAlternateClass="alternateRow" 
-                    cellpadding="0" 
-                    cellspacing="2" 
-                    border="0"
-                    width="100%">
-                    <thead>
-                        <tr>
-                            <th field="Name" dataType="String" width="10%">&nbsp;<fmt:message key="jmxmanager.help.name"/>&nbsp;</th>
-                            <th dataType="html" width="20%">&nbsp;<fmt:message key="jmxmanager.help.value"/>&nbsp;</th>
-                            <th field="Type" dataType="String" width="10%">&nbsp;<fmt:message key="jmxmanager.help.type"/>&nbsp;</th>
-                            <th field="Getter" dataType="String" width="10%">&nbsp;<fmt:message key="jmxmanager.help.getter"/>&nbsp;</th>
-                            <th dataType="html" width="10%">&nbsp;<fmt:message key="jmxmanager.help.setter"/>&nbsp;</th>
-                            <th field="Manageable" dataType="String" width="10%" align="center">&nbsp;<fmt:message key="jmxmanager.help.manageable"/>&nbsp;</th>
-                            <th field="Persistent" dataType="String" width="10%" align="center">&nbsp;<fmt:message key="jmxmanager.help.persistent"/>&nbsp;</th>
-                            <!--
-                            <th field="Readable" dataType="String" width="10%">&nbsp;Readable&nbsp;</th>
-                            <th field="Writable" dataType="String" width="10%">&nbsp;Writable&nbsp;</th>
-                            -->
-                        </tr>
-                    </thead>
-                    <tbody id="attributesTableBody">
-                    </tbody>
-                </table>
-            </div> <!-- Attributes tab -->
-
-            <!-- Operations tab -->
-            <div id="operationsTab" dojoType="ContentPane" title="MBean Operations" label="<fmt:message key="jmxmanager.help.operations"/>" style="overflow: auto">
-                <br>
-                <table width="100%">
-                    <tr>
-                        <!--
-                        <td class="DarkBackground" align="center" width="30%">Name</td>
-                        <td class="DarkBackground" align="center" width="70%">Paremeter List</td>
-                        -->
-                        <th style="background: #2581C7; color: #FFFFFF; font-weight: bold;" align="center" width="30%"><fmt:message key="jmxmanager.help.name"/></td>
-                        <th style="background: #2581C7; color: #FFFFFF; font-weight: bold;" align="center" width="70%"><fmt:message key="jmxmanager.help.paramList"/></td>
-                    </tr>
-                    <tbody id="operationsTableBody">
-                    </tbody>
-                </table>
-            </div> <!-- Operations tab -->
-
-            <!-- Info tab -->
-            <div id="infoTab" dojoType="ContentPane" title="MBean Info" label="<fmt:message key="jmxmanager.help.info"/>" style="overflow: auto">
-                <br>
-                <table width="100%">
-                    <tr>
-                        <!--
-                        <td class="DarkBackground" align="center" width="30%">Name</td>
-                        <td class="DarkBackground" align="center" width="70%">Value</td>
-                        -->
-                        <th style="background: #2581C7; color: #FFFFFF; font-weight: bold;" align="center" width="30%"><fmt:message key="jmxmanager.help.name"/></td>
-                        <th style="background: #2581C7; color: #FFFFFF; font-weight: bold;" align="center" width="70%"><fmt:message key="jmxmanager.help.value"/></td>
-                    </tr>
-                    <tbody id="basicInfoTableBody">
-                    </tbody>
-                </table>
-            </div> <!-- Info tab -->
-
-            <!-- Stats tab -->
-            <div id="statsTab" dojoType="ContentPane" title="MBean Stats" label="<fmt:message key="jmxmanager.help.stats"/>" style="overflow: auto">
-                <br>
-                <table dojoType="SortableTable" 
-                    widgetId="statsTable" 
-                    tbodyClass="scrollContent" 
-                    enableMultipleSelect="true" 
-                    enableAlternateRows="true" 
-                    rowAlternateClass="alternateRow" 
-                    cellpadding="0" 
-                    cellspacing="2" 
-                    border="0"
-                    width="100%">
-                    <thead>
-                        <tr>
-                            <th field="Name" dataType="String" width="30%">&nbsp;<fmt:message key="jmxmanager.help.name"/>&nbsp;</th>
-                            <th dataType="html" width="70%">&nbsp;<fmt:message key="jmxmanager.help.value"/>&nbsp;</th>
-                        </tr>
-                    </thead>
-                    <tbody id="statsTableBody">
-                    </tbody>
-                </table>
-                <br>
-                &nbsp;<input type='button' value='<fmt:message key="jmxmanager.help.refreshStats"/>' onclick='refreshStatsBtnClicked()' /> 
-            </div> <!-- Stats tab -->
-
-            <!-- Search tab -->
-            <div id="searchTab" dojoType="ContentPane" title="Search" label="<fmt:message key="jmxmanager.help.search"/>" style="overflow: auto">
-                <!-- JMXSearch Form -->
-                <form name="JMXSearchForm" onsubmit="return false;" method="POST">
-                    <br>
-                    <table>
-                        <tr>
-                            <td width="15%"><label for="jmxQuery"><fmt:message key="jmxmanager.help.objectNamePattern"/></label>:</td>
-                            <td width="70%">
-                                <select dojoType="combobox" id="jmxQuery" searchType="SUBSTRING" style="width: 100%;">
-                                    <!-- Domains -->
-                                    <option>*:*</option>
-                                    <option>geronimo:*</option>
-                                    <option>geronimo.config:*</option>
-                                    <!-- J2EE MBeans -->
-                                    <option>*:j2eeType=AppClientModule,*</option>
-                                    <option>*:j2eeType=EJBModule,*</option>
-                                    <option>*:j2eeType=EntityBean,*</option>
-                                    <option>*:j2eeType=J2EEApplication,*</option>
-                                    <option>*:j2eeType=J2EEDomain,*</option>
-                                    <option>*:j2eeType=J2EEServer,*</option>
-                                    <option>*:j2eeType=JavaMailResource,*</option>
-                                    <option>*:j2eeType=JCAConnectionFactory,*</option>
-                                    <option>*:j2eeType=JCAManagedConnectionFactory,*</option>
-                                    <option>*:j2eeType=JCAResource,*</option>
-                                    <option>*:j2eeType=JDBCDataSource,*</option>
-                                    <option>*:j2eeType=JDBCDriver,*</option>
-                                    <option>*:j2eeType=JDBCResource,*</option>
-                                    <option>*:j2eeType=JMSResource,*</option>
-                                    <option>*:j2eeType=JNDIResource,*</option>
-                                    <option>*:j2eeType=JTAResource,*</option>
-                                    <option>*:j2eeType=JVM,*</option>
-                                    <option>*:j2eeType=MessageDrivenBean,*</option>
-                                    <option>*:j2eeType=ResourceAdapter,*</option>
-                                    <option>*:j2eeType=ResourceAdapterModule,*</option>
-                                    <option>*:j2eeType=RMI_IIOPResource,*</option>
-                                    <option>*:j2eeType=Servlet,*</option>
-                                    <option>*:j2eeType=StatefulSessionBean,*</option>
-                                    <option>*:j2eeType=StatelessSessionBean,*</option>
-                                    <option>*:j2eeType=URLResource,*</option>
-                                    <option>*:j2eeType=WebModule,*</option>
-                                    <!-- Geronimo MBeans -->
-                                    <option>*:j2eeType=AppClient,*</option>
-                                    <option>*:j2eeType=ArtifactManager,*</option>
-                                    <option>*:j2eeType=ArtifactResolver,*</option>
-                                    <option>*:j2eeType=AttributeStore,*</option>
-                                    <option>*:j2eeType=ConfigBuilder,*</option>
-                                    <option>*:j2eeType=ConfigurationEntry,*</option>
-                                    <option>*:j2eeType=ConfigurationManager,*</option>
-                                    <option>*:j2eeType=ConfigurationStore,*</option>
-                                    <option>*:j2eeType=CORBABean,*</option>
-                                    <option>*:j2eeType=CORBACSS,*</option>
-                                    <option>*:j2eeType=CORBATSS,*</option>
-                                    <option>*:j2eeType=Deployer,*</option>
-                                    <option>*:j2eeType=DeploymentConfigurer,*</option>
-                                    <option>*:j2eeType=GBean,*</option>
-                                    <option>*:j2eeType=Host,*</option>
-                                    <option>*:j2eeType=JaasLoginService,*</option>
-                                    <option>*:j2eeType=JACCManager,*</option>
-                                    <option>*:j2eeType=JAXRConnectionFactory,*</option>
-                                    <option>*:j2eeType=JCAActivationSpec,*</option>
-                                    <option>*:j2eeType=JCAAdminObject,*</option>
-                                    <option>*:j2eeType=JCAConnectionManager,*</option>
-                                    <option>*:j2eeType=JCAConnectionTracker,*</option>
-                                    <option>*:j2eeType=JCAResourceAdapter,*</option>
-                                    <option>*:j2eeType=JCAWorkManager,*</option>
-                                    <option>*:j2eeType=JMSConnector,*</option>
-                                    <option>*:j2eeType=JMSPersistence,*</option>
-                                    <option>*:j2eeType=JMSServer,*</option>
-                                    <option>*:j2eeType=KeyGenerator,*</option>
-                                    <option>*:j2eeType=Keystore,*</option>
-                                    <option>*:j2eeType=LoginModule,*</option>
-                                    <option>*:j2eeType=LoginModuleUse,*</option>
-                                    <option>*:j2eeType=MEJB,*</option>
-                                    <option>*:j2eeType=ModuleBuilder,*</option>
-                                    <option>*:j2eeType=PersistentConfigurationList,*</option>
-                                    <option>*:j2eeType=RealmBridge,*</option>
-                                    <option>*:j2eeType=Repository,*</option>
-                                    <option>*:j2eeType=RoleMapper,*</option>
-                                    <option>*:j2eeType=SecurityRealm,*</option>
-                                    <option>*:j2eeType=ServiceModule,*</option>
-                                    <option>*:j2eeType=ServletTemplate,*</option>
-                                    <option>*:j2eeType=ServletWebFilterMapping,*</option>
-                                    <option>*:j2eeType=ServletWebServiceTemplate,*</option>
-                                    <option>*:j2eeType=SystemLog,*</option>
-                                    <option>*:j2eeType=TomcatValve,*</option>
-                                    <option>*:j2eeType=TransactionContextManager,*</option>
-                                    <option>*:j2eeType=TransactionLog,*</option>
-                                    <option>*:j2eeType=TransactionManager,*</option>
-                                    <option>*:j2eeType=URLPattern,*</option>
-                                    <option>*:j2eeType=URLWebFilterMapping,*</option>
-                                    <option>*:j2eeType=WebFilter,*</option>
-                                    <option>*:j2eeType=WSLink,*</option>
-                                    <option>*:j2eeType=XIDFactory,*</option>
-                                    <option>*:j2eeType=XIDImporter,*</option>
-                                    <option>*:j2eeType=XmlAttributeBuilder,*</option>
-                                    <option>*:j2eeType=XmlReferenceBuilder,*</option>
-                                </select>                            
-                            </td>
-                            <td width="15%"><input type="button" value="<fmt:message key="jmxmanager.help.search"/>" id="jmxSearch" onClick="searchBtnClicked()" style="width: 100%;" /></td>
-                        </tr>
+        </div> 
+        <!-- left pane END -->
+        
+        <!-- right pane START -->
+        <div dojoType="dijit.layout.ContentPane" sizeShare="60" layoutAlign="right" style="background-color:white; overflow: auto;"> 
+            
+            <!-- Main tab container START -->
+            <div dojoType="dijit.layout.TabContainer" style="width: 100%; height: 100px;">
+                <div dojoType="dijit.layout.ContentPane" title="<fmt:message key="jmxmanager.help.attributes"/>" selected="true">
+                    <table width="100%">
+                        <thead>
+                            <tr>
+                                <th width="10%"><fmt:message key="jmxmanager.help.name"/></th>
+                                <th width="20%"><fmt:message key="jmxmanager.help.value"/></th>
+                                <th width="10%"><fmt:message key="jmxmanager.help.type"/></th>
+                                <th width="10%"><fmt:message key="jmxmanager.help.getter"/></th>
+                                <th width="10%"><fmt:message key="jmxmanager.help.setter"/></th>
+                                <th width="10%"><fmt:message key="jmxmanager.help.manageable"/></th>
+                                <th width="10%"><fmt:message key="jmxmanager.help.persistent"/></th>
+                                <!--
+                                <th field="Readable" dataType="String" width="10%">&nbsp;Readable&nbsp;</th>
+                                <th field="Writable" dataType="String" width="10%">&nbsp;Writable&nbsp;</th>
+                                -->
+                            </tr>
+                        </thead>
+                        <tbody id="attributesTableBody"></tbody>
+                    </table>
+                </div>
+                <div dojoType="dijit.layout.ContentPane" title="<fmt:message key="jmxmanager.help.operations"/>">
+                    <table width="100%">
+                        <thead>
+                            <tr>
+                                <th width="30%"><fmt:message key="jmxmanager.help.name"/></th>
+                                <th width="70%"><fmt:message key="jmxmanager.help.paramList"/></th>
+                            </tr>
+                        </thead>
+                        <tbody id="operationsTableBody"></tbody>
                     </table>
-                </form> <!-- JMXSearch Form -->
-            </div> <!-- Search tab -->
+                </div>
+                <div dojoType="dijit.layout.ContentPane" title="<fmt:message key="jmxmanager.help.info"/>">
+                    <table width="100%">
+                        <thead>
+                            <tr>
+                                <th width="30%"><fmt:message key="jmxmanager.help.name"/></th>
+                                <th width="70%"><fmt:message key="jmxmanager.help.value"/></th>
+                            </tr>
+                        </thead>
+                        <tbody id="infoTableBody"></tbody>
+                    </table>
+                </div>
+                <div dojoType="dijit.layout.ContentPane" title="<fmt:message key="jmxmanager.help.stats"/>">
+                    <table width="100%">
+                        <thead>
+                            <tr>
+                                <th width="30%"><fmt:message key="jmxmanager.help.name"/></th>
+                                <th width="70%"><fmt:message key="jmxmanager.help.value"/></th>
+                            </tr>
+                        </thead>
+                        <tbody id="statsTableBody">
+                        </tbody>
+                    </table>
+                    <br/>
+                    <button dojoType="dijit.form.Button"><fmt:message key="jmxmanager.help.refreshStats" />
+                        <script type="dojo/method" event="onClick" args="btn">
+                            if (_abstractName!=null){
+                                JMXManagerHelper.getMBeanStats(_abstractName, updateStatsTable);
+                            }

[... 18 lines stripped ...]


Mime
View raw message