[jboss-cvs] JBossAS SVN: r77360 - in trunk/varia/src/resources/jmx/html: cluster and 1 other directories.

jboss-cvs-commits at lists.jboss.org jboss-cvs-commits at lists.jboss.org
Fri Aug 22 10:17:52 EDT 2008


Author: csaldanh
Date: 2008-08-22 10:17:51 -0400 (Fri, 22 Aug 2008)
New Revision: 77360

Added:
   trunk/varia/src/resources/jmx/html/filterView.jsp
Modified:
   trunk/varia/src/resources/jmx/html/cluster/bootstrap.html
   trunk/varia/src/resources/jmx/html/cluster/clusterView.jsp
   trunk/varia/src/resources/jmx/html/cluster/index.html
   trunk/varia/src/resources/jmx/html/displayMBeans.jsp
   trunk/varia/src/resources/jmx/html/displayOpResult.jsp
   trunk/varia/src/resources/jmx/html/images/logo.gif
   trunk/varia/src/resources/jmx/html/index.jsp
   trunk/varia/src/resources/jmx/html/inspectMBean.jsp
   trunk/varia/src/resources/jmx/html/style_master.css
Log:
JBAS-5862: New look for jmx-console


Modified: trunk/varia/src/resources/jmx/html/cluster/bootstrap.html
===================================================================
--- trunk/varia/src/resources/jmx/html/cluster/bootstrap.html	2008-08-22 13:40:15 UTC (rev 77359)
+++ trunk/varia/src/resources/jmx/html/cluster/bootstrap.html	2008-08-22 14:17:51 UTC (rev 77360)
@@ -4,12 +4,13 @@
    <link rel="stylesheet" href="../style_master.css" type="text/css">
 </head>
 
-<table>
-   <tr>
-      <td width="250" ><img src="../images/logo.gif" align="left" border="0" alt=""></td>
-      <td><h1>JBoss Cluster Bootstrap</h1></td>
-   </tr>
-</table>
+  <table width="100%" cellspacing="0" cellpadding="0" border="0">
+    <tr>
+      <td height="105" align="center"><h1>JBoss Cluster Bootstrap</h1></td>
+      <td height="105" align="center" width="300" nowrap><%= new java.util.Date() %></td>
+    </tr>
+  </table>
+
 <hr>
 <body>
 The cluster nodes to view need to be specified via some bootstrap mechanism.
@@ -21,25 +22,25 @@
 specifying the name in the PartitionName field.
 If not specified than the first partition to respond will be choosen.
 <form action="ClusteredConsole?action=bootstrap" method="post" target="ClusterIndex">
-	<input type="hidden" name="bootstrap" value="discovery">
-	<table cellspacing="2" cellpadding="2" border="0">
-	<tr>
-		<td>PartitionName:</td><td><input type="text" name="partition" size="40"></td>
-	</tr>
-	<tr>
-		<td>DiscoveryName:</td><td><input type="text" name="discoveryGroup" size="40" value="230.0.0.4"></td>
-	</tr>
-	<tr>
-		<td>DiscoveryPort:</td><td><input type="text" name="discoveryPort" size="40" value="1102"></td>
-	</tr>
-	<tr>
-		<td>DiscoveryTimeout:</td><td><input type="text" name="discoveryTimeout" size="40" value="5000"></td>
-	</tr>
-	<tr>
-		<td><input type="reset" name="reset" value="Clear"></td>
-		<td><input type="submit" name="submit" value="Bootstrap"></td>
-	</tr>
-	</table>
+        <input type="hidden" name="bootstrap" value="discovery">
+        <table cellspacing="2" cellpadding="2" border="0" align="center">
+        <tr>
+                <td>PartitionName:</td><td><input type="text" name="partition" size="40"></td>
+        </tr>
+        <tr>
+                <td>DiscoveryName:</td><td><input type="text" name="discoveryGroup" size="40" value="230.0.0.4"></td>
+        </tr>
+        <tr>
+                <td>DiscoveryPort:</td><td><input type="text" name="discoveryPort" size="40" value="1102"></td>
+        </tr>
+        <tr>
+                <td>DiscoveryTimeout:</td><td><input type="text" name="discoveryTimeout" size="40" value="5000"></td>
+        </tr>
+        <tr>
+                <td><input type="reset" name="reset" value="Clear"></td>
+                <td><input type="submit" name="submit" value="Bootstrap"></td>
+        </tr>
+        </table>
 </form>
 
 <h1>Bootstrap Using a Hostname</h1>
@@ -49,19 +50,19 @@
 determining the members of the cluster. To query the server hosting the
 jmx-console application use "locahost" for the hostname.
 <form action="ClusteredConsole" method="post" target="ClusterIndex">
-	<input type="hidden" name="bootstrap" value="byhost">
-	<table cellspacing="2" cellpadding="2" border="0">
-	<tr>
-		<td>Hostname:</td><td><input type="text" name="hostname" value="localhost" size="40"></td>
-	</tr>
-	<tr>
-		<td>Port:</td><td><input type="text" name="port" value="1099" size="40"></td>
-	</tr>
-	<tr>
-		<td><input type="reset" name="reset" value="Clear"></td>
-		<td><input type="submit" name="submit" value="Bootstrap"></td>
-	</tr>
-	</table>
+        <input type="hidden" name="bootstrap" value="byhost">
+        <table cellspacing="2" cellpadding="2" border="0" align="center">
+        <tr>
+                <td>Hostname:</td><td><input type="text" name="hostname" value="localhost" size="40"></td>
+        </tr>
+        <tr>
+                <td>Port:</td><td><input type="text" name="port" value="1099" size="40"></td>
+        </tr>
+        <tr>
+                <td><input type="reset" name="reset" value="Clear"></td>
+                <td><input type="submit" name="submit" value="Bootstrap"></td>
+        </tr>
+        </table>
 </form>
 
 </body>

Modified: trunk/varia/src/resources/jmx/html/cluster/clusterView.jsp
===================================================================
(Binary files differ)

Modified: trunk/varia/src/resources/jmx/html/cluster/index.html
===================================================================
--- trunk/varia/src/resources/jmx/html/cluster/index.html	2008-08-22 13:40:15 UTC (rev 77359)
+++ trunk/varia/src/resources/jmx/html/cluster/index.html	2008-08-22 14:17:51 UTC (rev 77360)
@@ -1,6 +1,6 @@
 <!-- frames -->
-<frameset  cols="20%, *">
+<frameset  cols="255, *">
     <frame name="ClusterIndex" src="ClusteredConsole?action=index" marginwidth="10" marginheight="10" scrolling="auto" frameborder="0">
     <frame name="ClusterNodeView" src="bootstrap.html" marginwidth="10" marginheight="10" scrolling="auto" frameborder="0">
-	<noframes>A frames enabled browser is required for the cluster view</noframes>
+    <noframes>A frames enabled browser is required for the cluster view</noframes>
 </frameset>

Modified: trunk/varia/src/resources/jmx/html/displayMBeans.jsp
===================================================================
--- trunk/varia/src/resources/jmx/html/displayMBeans.jsp	2008-08-22 13:40:15 UTC (rev 77359)
+++ trunk/varia/src/resources/jmx/html/displayMBeans.jsp	2008-08-22 14:17:51 UTC (rev 77360)
@@ -1,79 +1,89 @@
 <?xml version="1.0"?>
-<%@page contentType="text/html"
-   import="java.net.*,java.util.*,org.jboss.jmx.adaptor.model.*,java.io.*"
+<%@page contentType="text/html" import="java.net.*,java.util.*,org.jboss.jmx.adaptor.model.*,java.io.*"%>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<%
+	 String bindAddress = "";
+         String serverName = "";
+         try
+         {
+            bindAddress = System.getProperty("jboss.bind.address", "");
+            serverName = System.getProperty("jboss.server.name", "");
+         }
+         catch (SecurityException se) {}
+
+         String hostname = "";
+         try
+         {
+            hostname = InetAddress.getLocalHost().getHostName();
+         }
+         catch(IOException e)  {}
+
+         String hostInfo = hostname;
+         if (!bindAddress.equals(""))
+         {
+            hostInfo = hostInfo + " (" + bindAddress + ")";
+         }
 %>
-<!DOCTYPE html 
-    PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
-    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 <html>
 <head>
-   <%
-      String bindAddress = "";
-      String serverName = "";
-      try
-      {
-         bindAddress = System.getProperty("jboss.bind.address", "");
-         serverName = System.getProperty("jboss.server.name", "");
-      }
-      catch (SecurityException se) {}
-
-      String hostname = "";
-      try
-      {
-         hostname = InetAddress.getLocalHost().getHostName();
-      }
-      catch(IOException e)  {}
-
-      String hostInfo = hostname;
-      if (!bindAddress.equals(""))
-      { 
-         hostInfo = hostInfo + " (" + bindAddress + ")";
-      }
-   %>
    <title>JBoss JMX Management Console - <%= hostInfo %></title>
-   <link rel="stylesheet" href="style_master.css" type="text/css" />
-   <meta http-equiv="cache-control" content="no-cache" />
+   <link rel="stylesheet" href="style_master.css" type="text/css"/>
+   <meta http-equiv="cache-control" content="no-cache"/>
 </head>
+
 <body>
-   <img src="images/logo.gif" align="right" border="0" alt="logo" />
-   <h1>JMX Agent View</h1>
-   <h3><%= hostInfo %> - <%= serverName %></h3>
 
-<form action="HtmlAdaptor?action=displayMBeans" method="post" name="applyFilter" id="applyFilter">
-ObjectName Filter (e.g. "jboss:*", "*:service=invoker,*"): <br />
-<input type="text" name="filter" size="40" value="<%= request.getAttribute("filter")%>" /> <%
- 	if (request.getAttribute("filterError") != null) {
-		out.println("<span class='error'>"+request.getAttribute("filterError")+"</span>");
- 	}
- %>
-  <br/>
-<input type="submit" name="apply" value="Apply Filter" />
-<input type="button" onClick="javascript:location='HtmlAdaptor?filter='" value="Clear Filter" />
-
+  <table width='100%' cellspacing="0" cellpadding="0" border="0">
+    <tr>
+      <td height="105" align="center"><h1>JMX Agent View</h1><h3><%= hostInfo%> - <%= serverName %></h3></td>
+      <td height="105" align="center" width="300" nowrap>
+        <form action="HtmlAdaptor?action=displayMBeans" method="post" name="applyFilter" id="applyFilter">
+          ObjectName Filter (e.g.: "jboss:*", "*:service=invoker,*"):<br/>
+          <input type="text" name="filter" size="20" value="<%= request.getAttribute("filter")%>" />
+          <input type="submit" name="apply" value="Apply Filter" />
+          <input type="button" onClick="javascript:location='HtmlAdaptor?filter='" value="Clear Filter" />
 <%
-	for (Iterator mbeans = (Iterator) request.getAttribute("mbeans"); mbeans
-			.hasNext();) {
-		DomainData domainData = (DomainData) mbeans.next();
+	if (request.getAttribute("filterError") != null) {
+                out.println("<br/><span class='error'>"+request.getAttribute("filterError")+"</span>");
+        }
 %>
-   <h2 class='DomainName'>
-   <a href="javascript:document.applyFilter.filter.value='<%= domainData.getDomainName() %>:*';document.applyFilter.submit()"><%=domainData.getDomainName()%></a>
-   </h2>
-   <ul class='MBeanList'>
+        </form>
+        <%= new java.util.Date() %>
+      </td>
+    </tr>
+  </table>
+
+  &nbsp;
+
 <%
-	MBeanData[] data = domainData.getData();
-		for (int d = 0; d < data.length; d++) {
-			String name = data[d].getObjectName().toString();
-			String properties = data[d].getNameProperties();
+   out.println("<table width='100%' cellspacing='1' cellpadding='1' border='1'>");
+   Iterator mbeans = (Iterator) request.getAttribute("mbeans");
+   int i=0;
+   while( mbeans.hasNext() )
+   {
+      DomainData domainData = (DomainData) mbeans.next();
+      out.println(" <tr>");
+      out.println("  <th style='text-align: left'>");
+      out.println("   <h2><a href=\"javascript:document.applyFilter.filter.value='"+domainData.getDomainName()+":*';document.applyFilter.submit()\">"+domainData.getDomainName()+"</a></h2>");
+      out.println("  </th>");
+      out.println(" </tr>");
+      out.println(" <tr>");
+      out.println("  <td bgcolor='#D0D0D0'>");
+      out.println("    <ul>");
+      MBeanData[] data = domainData.getData();
+      for(int d = 0; d < data.length; d ++)
+      {
+         String name = data[d].getObjectName().toString();
+         String properties = data[d].getNameProperties();
+         out.println("     <li><a href=\"HtmlAdaptor?action=inspectMBean&amp;name="+URLEncoder.encode(name,"UTF-8")+"\">"+URLDecoder.decode(properties,"UTF-8")+"</a></li>");
+      }
+      out.println("   </ul>");
+      out.println("  </td>");
+      out.println(" </tr>");
+   }
+   out.println("</table>");
 %>
-      <li><a href="HtmlAdaptor?action=inspectMBean&amp;name=<%= URLEncoder.encode(name) %>"><%=URLDecoder.decode(properties)%></a></li>
-<%
-	}
-%>
-   </ul>
-<%
-	}
-%>
 
-</form>
 </body>
 </html>

Modified: trunk/varia/src/resources/jmx/html/displayOpResult.jsp
===================================================================
--- trunk/varia/src/resources/jmx/html/displayOpResult.jsp	2008-08-22 13:40:15 UTC (rev 77359)
+++ trunk/varia/src/resources/jmx/html/displayOpResult.jsp	2008-08-22 14:17:51 UTC (rev 77360)
@@ -1,9 +1,18 @@
 <?xml version="1.0"?>
 <%@page contentType="text/html"
    import="java.net.*,
+           java.io.*,
    		   java.beans.PropertyEditor,
    		   org.jboss.util.propertyeditor.PropertyEditors"
 %>
+<%
+String hostname = "";
+try
+{
+  hostname = InetAddress.getLocalHost().getHostName();
+}
+catch(IOException e){}
+%>
 
 <!DOCTYPE html 
     PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
@@ -15,74 +24,71 @@
    <link rel="stylesheet" href="style_master.css" type="text/css" />
    <meta http-equiv="cache-control" content="no-cache" />
 </head>
-<body>
 
 <jsp:useBean id='opResultInfo' class='org.jboss.jmx.adaptor.control.OpResultInfo' type='org.jboss.jmx.adaptor.control.OpResultInfo' scope='request'/>
 <%
    if(opResultInfo.name == null)
    {
 %>
-	<jsp:forward page="/HtmlAdaptor?action=displayMBeans" />
+  	<jsp:forward page="/" />
+
 <%
    }
-%>
+%>    
+<body leftmargin="10" rightmargin="10" topmargin="10">
 
-         <img src="images/logo.gif" align="right" border="0" alt="logo" />
-         <h1>JMX MBean Operation Result</h1>
-         <h3><%= request.getParameter("name") %></h3>
-         <h3>Operation <code><%= opResultInfo.name%>()</code></h3>
+<table width="100%" cellspacing="0" cellpadding="0" border="0" align="center">
+ <tr>
+  <td height="105" align="center"><h1>JMX MBean Operation View</h1><%= hostname %></td>
+  <td height="105" align="center" width="300">
+    <p>
+      <input type="button" value="Back to Agent" onClick="javascript:location='HtmlAdaptor?action=displayMBeans'"/>
+      <input type="button" value="Back to MBean" onClick="javascript:location='HtmlAdaptor?action=inspectMBean&amp;name=<%= URLEncoder.encode(request.getParameter("name"),"UTF-8") %>'"/>
+    </p>
+    <p>
+    <%
+      out.print("<input type='button' onClick=\"location='HtmlAdaptor?action=invokeOpByName");
+      out.print("&amp;name=" + URLEncoder.encode(request.getParameter("name"),"UTF-8"));
+      out.print("&amp;methodName=" + opResultInfo.name );
+    
+      for (int i=0; i<opResultInfo.args.length; i++)
+      {
+        out.print("&amp;argType=" + opResultInfo.signature[i]);
+        out.print("&amp;arg" + i + "=" + opResultInfo.args[i]);
+      }
+    
+      out.println("'\" value='Reinvoke MBean Operation'/>");
+    %>
+    </p>
+  </td>
+ </tr>
+</table>
 
-<p>
-<a href='HtmlAdaptor?action=displayMBeans'>Back to Agent View</a>
-&emsp;
-<a href='HtmlAdaptor?action=inspectMBean&amp;name=<%= URLEncoder.encode(request.getParameter("name")) %>'>Back to MBean View</a>
-&emsp;
-<a href=
 <%
-	out.print("'HtmlAdaptor?action=invokeOpByName");
-	out.print("&amp;name=" + URLEncoder.encode(request.getParameter("name")));
-	out.print("&amp;methodName=" + opResultInfo.name );
-
-	for (int i=0; i<opResultInfo.args.length; i++)
-    {
-		out.print("&amp;argType=" + opResultInfo.signature[i]);
-		out.print("&amp;arg" + i + "=" + opResultInfo.args[i]);
-	}
-
-	out.println("'>Reinvoke MBean Operation");
-%>
-</a>
-</p>
-
-<hr />
-   <span class='OpResult'>
-<%
    if( opResultInfo.result == null )
    {
-%>
-   Operation completed successfully without a return value.
-<%
+     out.println("Operation completed successfully without a return value!");
    }
    else
    {
       String opResultString = null;
-      
+
       PropertyEditor propertyEditor = PropertyEditors.findEditor(opResultInfo.result.getClass());
-      if(propertyEditor != null) {
+      if(propertyEditor != null)
+      {
          propertyEditor.setValue(opResultInfo.result);
          opResultString = propertyEditor.getAsText();
-      } else {
+      }
+      else
+      {
          opResultString = opResultInfo.result.toString();
       }
 
       boolean hasPreTag = opResultString.startsWith("<pre>");
-      if( hasPreTag == false )
-         out.println("<pre>");
+      if( hasPreTag == false ) out.println("<pre>");
       out.println(opResultString);
-      if( hasPreTag == false )
-         out.println("</pre>");
+      if( hasPreTag == false ) out.println("</pre>");
    }
 %>
-   </span>
 </body>
 </html>

Added: trunk/varia/src/resources/jmx/html/filterView.jsp
===================================================================
--- trunk/varia/src/resources/jmx/html/filterView.jsp	                        (rev 0)
+++ trunk/varia/src/resources/jmx/html/filterView.jsp	2008-08-22 14:17:51 UTC (rev 77360)
@@ -0,0 +1,38 @@
+<%@page contentType="text/html" import="java.util.*,org.jboss.jmx.adaptor.control.*,org.jboss.jmx.adaptor.model.*,java.io.*" %>
+<html>
+<head>
+    <title>JBoss Object Index</title>
+    <link rel="stylesheet" href="style_master.css" type="text/css">
+    <meta http-equiv="cache-control" content="no-cache"/>
+</head>
+
+<body leftmargin="10" rightmargin="10" topmargin="10">
+
+<table width="235" cellspacing="0" cellpadding="0" border="0">
+<tr>
+<td align="center" width="235" height="105"><img src="images/logo.gif" border="0" alt="JBoss"/></td>
+</tr>
+</table>
+
+&nbsp;
+
+<table width="235" cellspacing="0" cellpadding="0" border="0">
+<tr><td><h2>Object Name Filter</h2></td></tr>
+<tr><td><h3><a href="HtmlAdaptor?action=displayMBeans&filter=" target="ObjectNodeView">Remove Object Name Filter</a></h3></td></tr>
+<%
+   Iterator mbeans = (Iterator) Server.getDomainData("");
+   int i=0;
+   while( mbeans.hasNext() )
+   {
+      DomainData domainData = (DomainData) mbeans.next();
+      out.println(" <tr>");
+      out.println("  <td>");
+      out.println("   <li><a href=\"HtmlAdaptor?action=displayMBeans&filter="+domainData.getDomainName()+"\" target=\"ObjectNodeView\">"+domainData.getDomainName()+"</a></li>");
+      out.println("  </td>");
+      out.println(" </tr>");
+   }
+%>
+</table>
+
+</body>
+</html>

Modified: trunk/varia/src/resources/jmx/html/images/logo.gif
===================================================================
(Binary files differ)

Modified: trunk/varia/src/resources/jmx/html/index.jsp
===================================================================
--- trunk/varia/src/resources/jmx/html/index.jsp	2008-08-22 13:40:15 UTC (rev 77359)
+++ trunk/varia/src/resources/jmx/html/index.jsp	2008-08-22 14:17:51 UTC (rev 77360)
@@ -1,2 +1,41 @@
-<%@page contentType="text/html"%>
-<jsp:forward page="/HtmlAdaptor?action=displayMBeans" />
+<?xml version="1.0"?>
+<%@page contentType="text/html"
+   import="java.net.*,java.util.*,org.jboss.jmx.adaptor.model.*,java.io.*"
+%>
+<!DOCTYPE html 
+    PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<%
+      String bindAddress = "";
+      String serverName = "";
+      try
+      {
+         bindAddress = System.getProperty("jboss.bind.address", "");
+         serverName = System.getProperty("jboss.server.name", "");
+      }
+      catch (SecurityException se) {}
+
+      String hostname = "";
+      try
+      {
+         hostname = InetAddress.getLocalHost().getHostName();
+      }
+      catch(IOException e)  {}
+
+      String hostInfo = hostname;
+      if (!bindAddress.equals(""))
+      {
+         hostInfo = hostInfo + " (" + bindAddress + ")";
+      }
+   %>
+<html>
+<head>
+<title>JBoss JMX Management Console - <%= hostInfo %></title>
+</head>
+<!-- frames -->
+<frameset  cols="255,*">
+    <frame name="ObjectFilterView" src="filterView.jsp"                   marginwidth="10" marginheight="10" scrolling="auto" frameborder="0">
+    <frame name="ObjectNodeView"   src="HtmlAdaptor?action=displayMBeans" marginwidth="10"  marginheight="10" scrolling="auto" frameborder="0">
+    <noframes>A frames enabled browser is required for the main view</noframes>
+</frameset>
+</html>

Modified: trunk/varia/src/resources/jmx/html/inspectMBean.jsp
===================================================================
--- trunk/varia/src/resources/jmx/html/inspectMBean.jsp	2008-08-22 13:40:15 UTC (rev 77359)
+++ trunk/varia/src/resources/jmx/html/inspectMBean.jsp	2008-08-22 14:17:51 UTC (rev 77360)
@@ -1,15 +1,27 @@
 <?xml version="1.0"?>
 <%@page contentType="text/html"
-   import="java.net.*,java.util.*,javax.management.*,javax.management.modelmbean.*,
+   import="java.net.*,java.io.*,java.util.*,javax.management.*,javax.management.modelmbean.*,
    org.jboss.jmx.adaptor.control.Server,
    org.jboss.jmx.adaptor.control.AttrResultInfo,
    org.jboss.jmx.adaptor.model.*,
    org.dom4j.io.HTMLWriter,
    org.dom4j.tree.FlyweightCDATA,
    java.lang.reflect.Array,
-           java.io.StringWriter"
+   java.io.StringWriter,
+   java.beans.PropertyEditor,
+   org.jboss.util.propertyeditor.PropertyEditors"
 %>
-<%! 
+
+<%
+String hostname = "";
+try
+{
+  hostname = InetAddress.getLocalHost().getHostName();
+}
+catch(IOException e){}
+%>
+
+<%!
     private static final Comparator MBEAN_FEATURE_INFO_COMPARATOR = new Comparator()
     {
       public int compare(Object value1, Object value2)
@@ -29,7 +41,7 @@
       }
     };
 
-    String sep = System.getProperty("line.separator", "\n");
+    String sep = System.getProperty("line.separator","\n");
 
     public String fixDescription(String desc)
     {
@@ -40,31 +52,50 @@
       return desc;
     }
 
-   public String fixValue(Object value)
-   {
-      if (value == null)
-         return null;
+    public String fixValue(Object value)
+    {
+        if (value == null)
+            return null;
+        String s = String.valueOf(value);
+        StringWriter sw = new StringWriter();
+        HTMLWriter hw = new HTMLWriter(sw);
+        try
+        {
+           // hw.write(s); // strips whitespace
+           hw.write(new FlyweightCDATA(s));
+	   s = sw.toString();
+        }
+        catch(Exception e)
+        {
+        }
+        return s;
+    }
+
+    public String fixValueForAttribute(Object value)
+    {
+        if (value == null)
+            return null;
       String s = String.valueOf(value);
-      StringWriter sw = new StringWriter();
-      HTMLWriter hw = new HTMLWriter(sw);
-      try
-      {
-         // hw.write(s); // strips whitespace
-         hw.write(new FlyweightCDATA(s));
-         s = sw.toString();
-      }
-      catch(Exception e)
-      {
-      }
-      return s;
-   }
-   public String quoteName(String name)
-   {
-      String sname = name.replace("\"", "&quot;");
-      sname = name.replace("\'", "&apos;");
-      return sname;
-   }
+       StringWriter sw = new StringWriter();
+       HTMLWriter hw = new HTMLWriter(sw);
+       try
+       {
+          hw.write(s);
+          s = sw.toString();
+       }
+       catch(Exception e)
+       {
+       }
+       return s;
+    }
 
+    public String quoteName(String name)
+    {
+	String sname = name.replace("\"", "&quot;");
+	sname = name.replace("\'", "&apos;");
+	return sname;
+    }
+
 %>
 
 <!DOCTYPE html 
@@ -72,31 +103,30 @@
     "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 
 <html>
+
 <head>
    <title>MBean Inspector</title>
    <link rel="stylesheet" href="style_master.css" type="text/css" />
    <meta http-equiv="cache-control" content="no-cache" />
 </head>
-<body>
 
 <jsp:useBean id='mbeanData' class='org.jboss.jmx.adaptor.model.MBeanData' scope='request'/>
-
 <%
    if(mbeanData.getObjectName() == null)
    {
 %>
-<jsp:forward page="/HtmlAdaptor?action=displayMBeans" />
+<jsp:forward page="/" />
 <%
    }
    ObjectName objectName = mbeanData.getObjectName();
    String objectNameString = mbeanData.getName();
    String quotedObjectNameString = quoteName(mbeanData.getName());
    MBeanInfo mbeanInfo = mbeanData.getMetaData();
-
    MBeanAttributeInfo[] attributeInfo = mbeanInfo.getAttributes();
    MBeanOperationInfo[] operationInfo = mbeanInfo.getOperations();
 
-   Arrays.sort(attributeInfo, MBEAN_FEATURE_INFO_COMPARATOR);
+   //FIXME: Seems to create ArrayIndexOutofBoundsException when uncommented
+   /*Arrays.sort(attributeInfo, MBEAN_FEATURE_INFO_COMPARATOR);
 
    HashMap operationInfoIndexMap = new HashMap();
    for (int a = 0; a < operationInfo.length; a++)
@@ -106,306 +136,255 @@
    }
 
    Arrays.sort(operationInfo, MBEAN_FEATURE_INFO_COMPARATOR);
+   */
 %>
 
-<img src="images/logo.gif" align="right" border="0" alt="" />
+<body leftmargin="10" rightmargin="10" topmargin="10">
 
-<h1>JMX MBean View</h1>
+<table width="100%" cellspacing="0" cellpadding="0" border="0" align="center">
+ <tr>
+  <td height="105" align="center"><h1>JMX MBean View</h1><%= hostname %></td>
+  <td height="105" align="center" width="300" nowrap>
+    <p>
+      <input type="button" value="Back to Agent" onClick="javascript:location='HtmlAdaptor?action=displayMBeans'"/>
+      <input type="button" value="Refresh MBean View" onClick="javascript:location='HtmlAdaptor?action=inspectMBean&amp;name=<%= URLEncoder.encode(request.getParameter("name"),"UTF-8") %>'"/>
+    </p>
+    <%= new java.util.Date() %>
+  </td>
+ </tr>
+</table>
 
-<h3><%= objectNameString %></h3>
+&nbsp;
 
 <%
    Hashtable properties = objectName.getKeyPropertyList();
    int size = properties.keySet().size();
 %>
-   <table class="ObjectName" cellspacing="0" cellpadding="5">
-   <tr>
-      <td class="nameh" rowspan="<%= size + 1 %>">Name</td>
-      <td class='sep'>Domain</td>
-      <td class='sep'><%= objectName.getDomain() %></td>
-   </tr>
+
+<!-- 1 -->
+
+<table width="100%" cellspacing="1" cellpadding="1" border="1" align="center">
+ <tr><th rowspan="<%= size + 1 %>">Name</th><td><b>Domain</b></td><td><%= objectName.getDomain() %></td></tr>
 <%
    Iterator it = properties.keySet().iterator();
    while( it.hasNext() )
    {
-      String key = (String) it.next();
-      String value = (String) properties.get( key );
-%>
-   <tr>
-      <td class='sep'><%= key %></td>
-      <td class='sep'><%= value %></td>
-   </tr>
-<%
+     String key=(String)it.next();
+     String val=(String)properties.get(key);
+     out.println(" <tr><td><b>"+key+"</b></td><td>"+val+"</td></tr>");
    }
 %>
-   <tr>
-      <td class='nameh'>Java Class</td>
-      <td colspan="3"><jsp:getProperty name='mbeanData' property='className'/></td></tr>
-      <tr><td class='nameh'>Description</td>
-      <td colspan="3" class="adescription">
-         <%= fixDescription(mbeanInfo.getDescription())%>
-      </td>
-   </tr>
+ <tr><th>Java Class</th><td colspan="2"><jsp:getProperty name='mbeanData' property='className'/></td></tr>
+ <tr><th>Description</th><td colspan="2"><%= fixDescription(mbeanInfo.getDescription())%></td></tr>
 </table>
 
-<p>
-<a href='HtmlAdaptor?action=displayMBeans'>Back to Agent View</a>
-&emsp;
-<a href='HtmlAdaptor?action=inspectMBean&amp;name=<%= URLEncoder.encode(request.getParameter("name")) %>'>Refresh MBean View</a>
-</p>
-
+<!-- 2 -->
+<br/>
 <form method="post" action="HtmlAdaptor">
-   <input type="hidden" name="action" value="updateAttributes" />
-   <input type="hidden" name="name" value='<%= quotedObjectNameString %>'>
-   <table class="AttributesClass" cellspacing="0" cellpadding="5">
-      <tr class="AttributesHeader">
-      <th width="25%">
-         <span class='aname'>Attribute Name</span> <span class='aaccess'>(Access)</span><br/>
-         <span class='atype'>Type</span> <br/>
-         <span class='adescription'>Description</span> <br/>
-      </th>
-      <th width="75%" class='aname'>Attribute Value</th>
-      </tr>
+ <input type="hidden" name="action" value="updateAttributes" />
+ <input type="hidden" name="name" value="<%= quotedObjectNameString %>" />
+ <table width="100%" cellspacing="1" cellpadding="1" border="1" align="center">
+  <tr>
+   <th>Attribute Name</th>
+   <th>Access</th>
+   <th>Type</th>
+   <th>Description</th>
+   <th>Attribute Value</th>
+  </tr>
 <%
-   boolean hasWriteable = false;
-   for(int a = 0; a < attributeInfo.length; a ++)
-   {
-      MBeanAttributeInfo attrInfo = attributeInfo[a];
-      String attrName = attrInfo.getName();
-      String attrType = attrInfo.getType();
-      AttrResultInfo attrResult = Server.getMBeanAttributeResultInfo(objectNameString, attrInfo);
-      String attrValue = attrResult.getAsText();
-      String access = "";
-      if( attrInfo.isReadable() )
-         access += "R";
-      if( attrInfo.isWritable() )
+  boolean hasWriteableAttribute=false;
+  for(int a = 0; a < attributeInfo.length; a ++)
+  {
+    MBeanAttributeInfo attrInfo = attributeInfo[a];
+    String attrName = attrInfo.getName();
+    String attrType = attrInfo.getType();
+    AttrResultInfo attrResult = Server.getMBeanAttributeResultInfo(objectNameString, attrInfo);
+    String attrValue = attrResult.getAsText();
+    String access = "";
+    if( attrInfo.isReadable() ) access += "R";
+    if( attrInfo.isWritable() )
+    {
+      access += "W";
+      hasWriteableAttribute=true;
+    }
+    String attrDescription = fixDescription(attrInfo.getDescription());
+    out.println("  <tr>");
+    out.println("   <td class='param'>"+attrName+"</td>");
+    out.println("   <td align='center'>"+access+"</td>");
+    out.println("   <td>"+attrType+"</td>");
+    out.println("   <td>"+attrDescription+"</td>");
+    out.println("   <td>");
+    out.println("    <pre>");
+
+    if( attrInfo.isWritable() )
+    {
+      String readonly = attrResult.editor == null ? "class='readonly' readonly" : "class='writable'";
+      if( attrType.equals("boolean") || attrType.equals("java.lang.Boolean") )
       {
-         access += "W";
-         hasWriteable = true;
+        Boolean value = attrValue == null || "".equals( attrValue ) ? null : Boolean.valueOf(attrValue);
+        String trueChecked = (value == Boolean.TRUE ? "checked" : "");
+        String falseChecked = (value == Boolean.FALSE ? "checked" : "");
+	String naChecked = value == null ? "checked" : "";
+        out.print("<input type='radio' name='"+attrName+"' value='True' "+trueChecked+"/>True");
+        out.print("<input type='radio' name='"+attrName+"' value='False' "+falseChecked+"/>False");
+	// For wrappers, enable a 'null' selection
+	if ( attrType.equals( "java.lang.Boolean" ) && PropertyEditors.isNullHandlingEnabled() )
+        {
+		out.print("<input type='radio' name='"+attrName+"' value='' "+naChecked+"/>True");
+	}
+
       }
-      String attrDescription = fixDescription(attrInfo.getDescription());
-%>
-		<tr>
-		  <td class='sep'>
-           <span class='aname'><%= attrName %></span> <span class='aaccess'>(<%= access %>)</span> <br/>
-           <span class='atype'><%= attrType %></span> <br/>
-           <span class='adescription'><%= attrDescription %></span> <br/>
-        </td>
-        <td class='sep'>
-<%
-      if( attrInfo.isWritable() )
+      else if( attrInfo.isReadable() )
       {
-         String readonly = attrResult.editor == null ? "readonly='readonly'" : "";
-         if( attrType.equals("boolean") || attrType.equals("java.lang.Boolean") )
-         {
-            // Boolean true/false radio boxes
-            Boolean value = Boolean.valueOf(attrValue);
-            String trueChecked = (value == Boolean.TRUE ? "checked='checked'" : "");
-            String falseChecked = (value == Boolean.FALSE ? "checked='checked'" : "");
-%>
-            <input type="radio" name="<%= attrName %>" value="True" <%=trueChecked%>/>True
-            <input type="radio" name="<%= attrName %>" value="False" <%=falseChecked%>/>False
-<%
-         }
-         else if( attrInfo.isReadable() )
-         {  // Text fields for read-write string values
-            attrValue = fixValue(attrValue);
-            if (String.valueOf(attrValue).indexOf(sep) == -1)
-            {
-%>
-            <input class="iauto" type="text" name="<%= attrName %>" value="<%= attrValue %>" <%= readonly %>/>
-<%
-            }
-            else
-            {
-%>
-            <textarea cols="80" rows="10" nowrap='nowrap' type="text" name="<%= attrName %>" <%= readonly %>><%= attrValue %></textarea>
-<%
-            }
-         }
-         else
-         {  // Empty text fields for write-only
-%>
-		    <input class="iauto" type="text" name="<%= attrName %>" <%= readonly %>/>
-<%
-         }
+	attrValue = fixValueForAttribute(attrValue);
+        if (String.valueOf(attrValue).indexOf(sep) == -1)
+        {
+          out.print("<input type='text' size='80' name='"+attrName+"' value='"+attrValue+"' "+readonly+"/>");
+        }
+        else
+        {
+          out.print("<textarea cols='80' rows='10' type='text' name='"+attrName+"' "+readonly+">"+attrValue+"</textarea>");
+        }
       }
       else
       {
-         if( attrType.equals("[Ljavax.management.ObjectName;") )
-         {
-            // Array of Object Names
-            ObjectName[] names = (ObjectName[]) Server.getMBeanAttributeObject(objectNameString, attrName);
-            if( names != null )
-            {
-%>
-<%
-               for( int i = 0; i < names.length; i++ )
-               {
-%>
-                  <a href="HtmlAdaptor?action=inspectMBean&amp;name=<%= URLEncoder.encode(( names[ i ] + "" )) %>"><%= ( names[ i ] + "" ) %></a>
-                  <br />
-<%
-               }
-            }
-         }
-         // Array of some objects
-         else if( attrType.startsWith("["))
-         {
-            Object arrayObject = Server.getMBeanAttributeObject(objectNameString, attrName);
-            if (arrayObject != null) {
-               out.print("<pre>");
-               for (int i = 0; i < Array.getLength(arrayObject); ++i) {
-                  out.println(fixValue(Array.get(arrayObject,i)));
-               }
-               out.print("</pre>");
-            } 
-            
-         }
-         else
-         {
-            // Just the value string
-%>
-            <pre><%= fixValue(attrValue) %></pre>
-<%
-         }
+        out.print("<input type='text' name='"+attrName+"' "+readonly+"/>");
       }
-      if( attrType.equals("javax.management.ObjectName") )
+    }
+    else
+    {
+      if( attrType.equals("[Ljavax.management.ObjectName;") )
       {
-         // Add a link to the mbean
-         if( attrValue != null )
-         {
-%>
-            <br />
-            <a href="HtmlAdaptor?action=inspectMBean&amp;name=<%= URLEncoder.encode(attrValue) %>">View MBean</a>
-<%
-         }
+        ObjectName[] names = (ObjectName[]) Server.getMBeanAttributeObject(objectNameString, attrName);
+        if( names != null )
+        {
+          for( int i = 0; i < names.length; i++ )
+          {
+            out.print("<p align='center'><a href='HtmlAdaptor?action=inspectMBean&name="+URLEncoder.encode(names[i]+"","UTF-8")+">"+names[i]+"</a></p>");
+          }
+        }
       }
+      else if( attrType.startsWith("["))
+      {
+        Object arrayObject = Server.getMBeanAttributeObject(objectNameString, attrName);
+        if (arrayObject != null)
+        {
+          for (int i = 0; i < Array.getLength(arrayObject); ++i)
+          {
+            out.println(fixValue(Array.get(arrayObject,i)));
+          }
+        }
+      }
+      else
+      {
+        out.print(fixValue(attrValue));
+      }
+    }
+
+    if( attrType.equals("javax.management.ObjectName") )
+    {
+      if( attrValue != null )
+      {
+        out.print("<p align='center'><a href='HtmlAdaptor?action=inspectMBean&name="+URLEncoder.encode(attrValue,"UTF-8")+"'>View MBean</a></p>");
+      }
+    }
+    out.println("    </pre>");
+    out.println("   </td>");
+    out.println("  </tr>");
+  }
+
+  if(hasWriteableAttribute)
+  {
+    out.println(" <tr><td colspan='4'></td><td class='arg'><p align='center'><input type='submit' value='Apply Changes'/></p></td></tr>");
+  }
 %>
-         </td>
-		</tr>
-<%
-   }
-%>
-<% if( hasWriteable )
-   {
-%>
-   <tr>
-      <td colspan='2'>
-         <input class='applyb' type="submit" value="Apply Changes" />
-      </td>
-   </tr>
-<%
-   }
-%>
-   </table>
+ </table>
 </form>
 
-<p>
-</p>
-
-<% if (operationInfo.length > 0) { %>
-<table class="AttributesClass" cellspacing="0" cellpadding="5">
-   <tr class="AttributesHeader">
-   <th width="25%">
-      <span class='aname'>Operation Name</span><br/>
-      <span class='atype'>Return Type</span> <br/>
-      <span class='adescription'>Description</span> <br/>
-   </th>
-   <th width="75%">
-      <span class='aname'>Parameters</span>
-   </th>
-   </tr>
+<!-- 3 -->
+<br/>
 <%
-   for(int a = 0; a < operationInfo.length; a ++)
-   {
-      MBeanOperationInfo opInfo = operationInfo[a];
-      boolean accept = true;
-      if (opInfo instanceof ModelMBeanOperationInfo)
+if (operationInfo.length > 0)
+{
+  out.println(" <table width='100%' cellspacing='1' cellpadding='1' border='1' align='center'>");
+  out.println("  <tr>");
+  out.println("   <th>Operation</th>");
+  out.println("   <th>Return Type</th>");
+  out.println("   <th>Description</th>");
+  out.println("   <th>Parameters</th>");
+  out.println("  </tr>");
+
+  for(int a = 0; a < operationInfo.length; a ++)
+  {
+    MBeanOperationInfo opInfo = operationInfo[a];
+    boolean accept = true;
+    if (opInfo instanceof ModelMBeanOperationInfo)
+    {
+      Descriptor desc = ((ModelMBeanOperationInfo)opInfo).getDescriptor();
+      String role = (String)desc.getFieldValue("role");
+      if ("getter".equals(role) || "setter".equals(role))
       {
-         Descriptor desc = ((ModelMBeanOperationInfo)opInfo).getDescriptor();
-         String role = (String)desc.getFieldValue("role");
-         if ("getter".equals(role) || "setter".equals(role))
-         {
-            accept = false;
-         }
+        accept = false;
       }
-      if (accept)
+    }
+    if (accept)
+    {
+      MBeanParameterInfo[] sig = opInfo.getSignature();
+      out.println("  <tr>");
+      out.println("   <td class='param'>"+opInfo.getName()+"</td>");
+      out.println("   <td>"+opInfo.getReturnType()+"</td>");
+      out.println("   <td>"+fixDescription(opInfo.getDescription())+"</td>");
+      out.println("   <td align='center'>");
+      out.println("    <form method='post' action='HtmlAdaptor'>");
+      out.println("     <input type='hidden' name='action' value='invokeOp'/>");
+      out.println("     <input type='hidden' name='name' value='"+quotedObjectNameString+"'/>");
+      out.println("     <input type='hidden' name='methodIndex' value='"+a+"'/>");
+
+      if( sig.length > 0 )
       {
-         MBeanParameterInfo[] sig = opInfo.getSignature();
-         String methodIndex = (String) operationInfoIndexMap.get(opInfo);
+        out.println("     <table width='100%' cellspacing='1' cellpadding='1' border='0'>");
+        for(int p = 0; p < sig.length; p ++)
+        {
+          MBeanParameterInfo paramInfo = sig[p];
+          String pname = paramInfo.getName();
+          String ptype = paramInfo.getType();
+          if( pname == null || pname.length() == 0 || pname.equals(ptype) )
+          {
+            pname = "arg"+p;
+          }
+          String pdesc = fixDescription(paramInfo.getDescription());
+          out.println("      <tr>");
+          out.println("       <td class='arg'>"+pname+"</td>");
+          out.println("       <td class='arg'>"+ptype+"</td>");
+          out.println("       <td class='arg'>"+pdesc+"</td>");
+          out.print("       <td class='arg' width='50'>");
+          if(ptype.equals("boolean")||ptype.equals("java.lang.Boolean"))
+          {
+            out.print("<input type='radio' name='arg"+p+"' value='True' checked/>True");
+            out.print("<input type='radio' name='arg"+p+"' value='False'/>False");
+          }
+          else
+          {
+            out.print("<input type='text' class='writable' name='arg"+p+"'/>");
+          }
+          out.println("</td>");
+          out.println("      </tr>");
+        }
+        out.println("     </table>");
+      }
+      else
+      {
+        out.println("     [no parameters]<BR>");
+      }
+      out.println("     <input type='submit' value='Invoke'/>");
+      out.println("    </form>");
+      out.println("  </td>");
+      out.println(" </tr>");
+    }
+  }
+  out.println(" </table>");
+}
 %>
-   <tr>
-		<td class='sep'>
-         <span class='aname'><%= opInfo.getName() %></span><br/>
-         <span class='atype'><%= opInfo.getReturnType() %></span> <br/>
-         <span class='adescription'><%= fixDescription(opInfo.getDescription())%></span> <br/>
-      </td>
-      <td class='sep'>
-         <form method="post" action="HtmlAdaptor">
-            <input type="hidden" name="action" value="invokeOp" />
-            <input type="hidden" name="name" value='<%= quotedObjectNameString %>'>
-            <input type="hidden" name="methodIndex" value="<%= methodIndex %>" />
-<%
-         if( sig.length > 0 )
-         {
-%>
-	<table>
-<%
-            for(int p = 0; p < sig.length; p ++)
-            {
-               MBeanParameterInfo paramInfo = sig[p];
-               String pname = paramInfo.getName();
-               String ptype = paramInfo.getType();
-               if( pname == null || pname.length() == 0 || pname.equals(ptype) )
-               {
-                  pname = "arg"+p;
-               }
-               String pdesc = fixDescription(paramInfo.getDescription());
-%>
-		<tr>
-         <td>
-         <span class='aname'><%= pname %></span><br/>
-         <span class='atype'><%= ptype %></span> <br/>
-         <span class='adescription'><%= pdesc %></span> <br/>
-<%
-                if( ptype.equals("boolean") || ptype.equals("java.lang.Boolean") )
-                {
-                   // Boolean true/false radio boxes
-%>
-            <input type="radio" name="arg<%= p%>" value="True" checked='checked'>True
-            <input type="radio" name="arg<%= p%>" value="False" />False
-<%
-                 }
-                 else
-                 {
-%>
-            <input type="text" class="iauto" name="arg<%= p%>" />
-<%
-                  }
-%>
-         </td>
-		</tr>
-<%
-               } // parameter list
-%>
-      </table>
-<%
-         } // has parameter list
-%>
-      <input type="submit" value="Invoke" />
-      </form>
 
-</td></tr>
-<%
-      } // mbean operation
-   } // all mbean operations
-%>
-</table>
-<%
-} // has mbean operation
-%>
-
 </body>
 </html>
-

Modified: trunk/varia/src/resources/jmx/html/style_master.css
===================================================================
--- trunk/varia/src/resources/jmx/html/style_master.css	2008-08-22 13:40:15 UTC (rev 77359)
+++ trunk/varia/src/resources/jmx/html/style_master.css	2008-08-22 14:17:51 UTC (rev 77360)
@@ -1,90 +1,83 @@
-/* From http://www.jboss.com/themes/jbosstheme/style/common.css */
-
-body { font: 11px Helvetica, Arial, sans-serif; }
-
-h1 { color: #000000; line-height: 22px; font: 20px Helvetica, Arial, sans-serif; }
-h2 { color: #000000; line-height: 18px; font: bold 16px Helvetica, Arial, sans-serif; margin-top: 16px; }
-h3 { color: #000000; line-height: 16px; font: bold 14px Helvetica, Arial, sans-serif; margin-top: 8px; }
-h4 { color: #000000; line-height: 16px; font: 14px Helvetica, Arial, sans-serif; margin-top: 8px; }
-h5 { color: #000000; line-height: 14px; font: 12px Helvetica, Arial, sans-serif; margin-top: 8px; }
-
-th {
-	 font-weight: bold;
-   text-align: left;
-   vertical-align: top;
-   background-color : #EEEEFF;
-   border: 1px solid black;
+A{
+text-decoration:underline
 }
-table.ObjectName {
-   margin-bottom: 1em;
-   border: 1px solid black;
+A:LINK{
+color:#000099
 }
-table.AttributesClass {
-   width: 100%;
-   margin-bottom: 1em;
-   border: 1px solid black;
+A:VISITED{
+color:#880088
 }
-td.nameh {
-	background-color : #EEEEFF;
-   border: 1px solid #444444;
+A:HOVER{
+color:#FF6600
 }
-td.sep {
-  vertical-align: top;
-  border-width: thin;
-  border: 1px solid #DDDDDD;
-  margin-right: 0px;
-  margin-left: 0px;
+A:ACTIVE{
+color:#FF0000
 }
-*.applyb {
-  font-size: larger;
-  text-align: center;
+BODY{
+background-color:#FFFFFF;
+font-family:Tahoma,Verdana,sans-serif;
+font-size:8pt
 }
-input.iauto {
-   width: 80%;
-	font-size: 12px;
+H1{
+color:#000099;
+font-size:16pt;
+font-weight:bold
 }
-
-*.aname {
-	font-size: large;
-}.aaccess {
-	font-size: small;
-	font-weight: normal;
-	color: gray;
+H2{
+margin:2px;
+padding:2px;
+font-size:12pt;
+font-weight:bold
 }
-*.atype {
-	font-size: small;
-	color: gray;
+H3{
+margin:2px;
+padding:2px;
+font-size:10pt;
+font-weight:normal
 }
-*.adescription {
-	font-size: small;
-	color: navy;
-   font-style: oblique;
+IMG{
+border:0
 }
-* .error {
-	color: red;
+INPUT{
+font-family:Tahoma,Verdana,sans-serif;
+font-size:8pt
 }
-
-A:ACTIVE {
-	color:Red;
-	background-color: #DEB887;
-	text-decoration : underline;
+INPUT.readonly{
+border:1px solid #999999;
+background-color:#C0C0C0
 }
-
-A:HOVER {
-	color:Red;
-	text-decoration : underline;
+INPUT.writable{
+border:1px solid #999999;
+background-color:#FFFFFF
 }
-
-A:LINK {
-	color:#000099;
-	text-decoration : underline;
+TD{
+background-color:#E0E0E0;
+font-family:Tahoma,Verdana,sans-serif;
+font-size:8pt
 }
-
-A:VISITED {
-	color:Purple;
-	text-decoration : underline;
+TD.arg{
+background-color:#BBBBBB;
+font-family:Tahoma,Verdana,sans-serif;
+font-size:8pt
 }
-
+TD.param{
+color:#880000;
+font-size:8pt;
+font-weight:bold;
+font-family:Tahoma,Verdana,sans-serif
+}
+TH{
+cellspacing:2px;
+padding-bottom:1px;
+padding-left:4px;
+padding-right:4px;
+padding-top:1px;
+background-color:#999999;
+color:#000000;
+font-family:Tahoma,Verdana,sans-serif;
+font-size:8pt;
+font-weight:bold
+}
 pre {
   white-space: pre-wrap;       /* css-3 */
   white-space: -moz-pre-wrap;  /* Mozilla, since 1999 */
@@ -92,6 +85,8 @@
   white-space: -o-pre-wrap;    /* Opera 7 */
   word-wrap: break-word;       /* Internet Explorer 5.5+ */
 }
-
-
-
+* .error {
+  font-size: 8pt;
+  color: red;
+}
+         




More information about the jboss-cvs-commits mailing list