Index: main/plugin-core/i18n/messages_en.xml
===================================================================
--- main/plugin-core/i18n/messages_en.xml	(revision 31811)
+++ main/plugin-core/i18n/messages_en.xml	(working copy)
@@ -88,10 +88,21 @@
     <message key="PLUGINS_CORE_ADMINISTRATOR_CONFIG_PARAM_CHECKER_LABEL_PREFIX">Verify</message>
     
 
-
 	<!-- ADMINISTRATOR JVMSTATUS -->
-	<message key="PLUGINS_CORE_ADMINISTRATOR_STATUS_LABEL">System status</message>
-	<message key="PLUGINS_CORE_ADMINISTRATOR_STATUS_DESCRIPTION">Analyze system and JVM status</message>
+    <message key="PLUGINS_CORE_ADMINISTRATOR_TOOL_JVMSTATUS_LABEL">System status</message>
+    <message key="PLUGINS_CORE_ADMINISTRATOR_TOOL_JVMSTATUS_DESC">Analyze system and JVM status.</message>
+    <message key="PLUGINS_CORE_ADMINISTRATOR_TOOL_JVMSTATUS_SERVER_ERROR">An error has occurred while retrieving the JVM's status.</message>
+    
+    <message key="PLUGINS_CORE_ADMINISTRATOR_TOOL_SYSTEMPROPERTIES_LABEL">Properties</message>
+    <message key="PLUGINS_CORE_ADMINISTRATOR_TOOL_SYSTEMPROPERTIES_DESC">Display a list of system properties.</message>
+    <message key="PLUGINS_CORE_ADMINISTRATOR_TOOL_SYSTEMPROPERTIES_FACTORY_LABEL">System properties</message>
+    <message key="PLUGINS_CORE_ADMINISTRATOR_TOOL_SYSTEMPROPERTIES_COL_NAME">Name</message>
+    <message key="PLUGINS_CORE_ADMINISTRATOR_TOOL_SYSTEMPROPERTIES_COL_VALUE">Value</message>
+    
+    <message key="PLUGINS_CORE_ADMINISTRATOR_TOOL_MONITORING_LABEL">Monitoring</message>
+    <message key="PLUGINS_CORE_ADMINISTRATOR_TOOL_MONITORING_DESC">See monitoring data.</message>
+    <message key="PLUGINS_CORE_ADMINISTRATOR_TOOL_MONITORING_SERVER_ERROR">An error has occured while retrieving monitoring data.</message>
+    
 	<message key="PLUGINS_CORE_ADMINISTRATOR_STATUS_TITLE">System status</message>
 	<message key="PLUGINS_CORE_ADMINISTRATOR_STATUS_HANDLE">Management</message>
 	<message key="PLUGINS_CORE_ADMINISTRATOR_STATUS_HANDLE_QUIT">Quit</message> 	
 </catalogue>
Index: main/plugin-core/i18n/messages_fr.xml
===================================================================
--- main/plugin-core/i18n/messages_fr.xml	(revision 31811)
+++ main/plugin-core/i18n/messages_fr.xml	(working copy)
@@ -87,9 +87,23 @@
     <message key="PLUGINS_CORE_ADMINISTRATOR_CONFIG_WARNING_TEXT_END">' a échoué. Vérifiez la valeur de ce paramètre.</message>
     <message key="PLUGINS_CORE_ADMINISTRATOR_CONFIG_PARAM_CHECKER_LABEL_PREFIX">Vérifier</message>
     
-    <!-- ADMINISTRATOR JVMSTATUS -->
-    <message key="PLUGINS_CORE_ADMINISTRATOR_STATUS_LABEL">Etat du système</message>
-    <message key="PLUGINS_CORE_ADMINISTRATOR_STATUS_DESCRIPTION">Analyser l'état du système et de la JVM</message>
+    <!-- JVMSTATUS -->
+    <message key="PLUGINS_CORE_ADMINISTRATOR_TOOL_JVMSTATUS_LABEL">Général</message>
+    <message key="PLUGINS_CORE_ADMINISTRATOR_TOOL_JVMSTATUS_DESC">Analyser l'état général du système et de la JVM</message>
+    <message key="PLUGINS_CORE_ADMINISTRATOR_TOOL_JVMSTATUS_SERVER_ERROR">Une erreur est survenue lors de la récupération des propriétés de la JVM.</message>
+    
+    <message key="PLUGINS_CORE_ADMINISTRATOR_TOOL_SYSTEMPROPERTIES_LABEL">Propriétés</message>
+    <message key="PLUGINS_CORE_ADMINISTRATOR_TOOL_SYSTEMPROPERTIES_DESC">Voir une liste de propriétés du système.</message>
+    <message key="PLUGINS_CORE_ADMINISTRATOR_TOOL_SYSTEMPROPERTIES_FACTORY_LABEL">Propriétés du système</message>
+    <message key="PLUGINS_CORE_ADMINISTRATOR_TOOL_SYSTEMPROPERTIES_COL_NAME">Nom</message>
+    <message key="PLUGINS_CORE_ADMINISTRATOR_TOOL_SYSTEMPROPERTIES_COL_VALUE">Valeur</message>
+
+    <message key="PLUGINS_CORE_ADMINISTRATOR_TOOL_MONITORING_LABEL">Monitoring</message>
+    <message key="PLUGINS_CORE_ADMINISTRATOR_TOOL_MONITORING_DESC">Voir les données de monitoring.</message>
+    <message key="PLUGINS_CORE_ADMINISTRATOR_TOOL_MONITORING_SERVER_ERROR">Une erreur est survenue lors de la récupération des données de monitoring.</message>
+    
+    
+    
     <message key="PLUGINS_CORE_ADMINISTRATOR_STATUS_TITLE">Etat du système</message>
     <message key="PLUGINS_CORE_ADMINISTRATOR_STATUS_HANDLE">Gestion</message>
     <message key="PLUGINS_CORE_ADMINISTRATOR_STATUS_HANDLE_QUIT">Quitter</message>

 </catalogue>
Index: main/plugin-core/pages/administrator/jvmstatus/jvmstatus.xsl
===================================================================
--- main/plugin-core/pages/administrator/jvmstatus/jvmstatus.xsl	(revision 0)
+++ main/plugin-core/pages/administrator/jvmstatus/jvmstatus.xsl	(revision 0)
@@ -0,0 +1,135 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+   Copyright 2015 Anyware Services
+
+   Licensed under the Apache License, Version 2.0 (the "License");
+   you may not use this file except in compliance with the License.
+   You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+   -->
+<xsl:stylesheet version="1.0" 
+                xmlns:i18n="http://apache.org/cocoon/i18n/2.1" 
+                xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
+    
+    <xsl:param name="contextPath"/>
+    <xsl:param name="pluginName"/>
+    <xsl:param name="workspaceName"/>
+    <xsl:param name="workspaceURI"/>
+    
+    <xsl:variable name="workspaceContext"><xsl:value-of select="$contextPath"/><xsl:value-of select="$workspaceURI"/></xsl:variable>
+    <xsl:variable name="resourcesPath"><xsl:value-of select="$contextPath"/>/plugins/<xsl:value-of select="$pluginName"/>/resources</xsl:variable>
+                    
+    <xsl:template match="/characteristics">
+	     <div>
+	         <div id="system">
+	              <div>
+		              <span class="label">
+		                   <i18n:text i18n:key="PLUGINS_CORE_ADMINISTRATOR_STATUS_TAB_GENERAL_SYS_OS"/>
+	                  </span>
+		              <span>
+			              <xsl:value-of select="osName"/>
+			              <xsl:text> </xsl:text>
+			              (<xsl:value-of select="osVersion"/>)
+			              <xsl:text> </xsl:text>
+			              <xsl:value-of select="osPatch"/>
+		              </span>
+	              </div>
+	              <div>
+		              <span class="label"><i18n:text i18n:key="PLUGINS_CORE_ADMINISTRATOR_STATUS_TAB_GENERAL_SYS_PROC"/></span>
+		              <span>
+			              <xsl:value-of select="availableProc"/>
+			              <xsl:text> </xsl:text>
+			              <i18n:text i18n:key="PLUGINS_CORE_ADMINISTRATOR_STATUS_TAB_GENERAL_SYS_PROC_UNIT"/>
+			              <xsl:text> </xsl:text>
+			              <xsl:value-of select="architecture"/>
+		              </span>
+	              </div>
+	              <div>
+		              <span class="label"><i18n:text i18n:key="PLUGINS_CORE_ADMINISTRATOR_STATUS_TAB_GENERAL_SYS_TIME"/></span>
+		              <span id="osTime"><i18n:date pattern="long" src-pattern="yyyy-MM-dd'T'HH:mm" value="{osTime}"/>&#160;<i18n:time pattern="short" src-pattern="yyyy-MM-dd'T'HH:mm" value="{osTime}"/></span>
+	              </div>
+	         </div>
+	         
+	         <div id="java">
+	             <div class="label"><i18n:text i18n:key="PLUGINS_CORE_ADMINISTRATOR_STATUS_TAB_GENERAL_JVM_VERSION"/></div>
+	             <xsl:value-of select="javaVersion"/>
+	             <br/>
+	             <div class="label"><i18n:text i18n:key="PLUGINS_CORE_ADMINISTRATOR_STATUS_TAB_GENERAL_JVM_VENDOR"/></div>
+	             <xsl:value-of select="javaVendor"/>
+	             <br/>
+	             <div class="label"><i18n:text i18n:key="PLUGINS_CORE_ADMINISTRATOR_STATUS_TAB_GENERAL_JVM_NAME"/></div>
+	             <xsl:value-of select="jvmName"/>
+	             <br/>
+	             <div>
+	               <span class="label"><i18n:text i18n:key="PLUGINS_CORE_ADMINISTRATOR_STATUS_TAB_GENERAL_JVM_TIME"/></span>
+	               <span id="startTime"><i18n:date pattern="long" src-pattern="yyyy-MM-dd'T'HH:mm" value="{startTime}"/>&#160;<i18n:time pattern="short" src-pattern="yyyy-MM-dd'T'HH:mm" value="{startTime}"/></span>
+	             </div>
+	         </div>
+	           
+	         <div id="memory">
+	             <div class="label"><i18n:text i18n:key="PLUGINS_CORE_ADMINISTRATOR_STATUS_TAB_GENERAL_MEM_HEAP"/></div>
+	             <img class="help" id="mem-heap-help-img" src="{$resourcesPath}/img/administrator/jvmstatus/help.gif"/>
+	             <img src="{$resourcesPath}/img/administrator/jvmstatus/bar-mem-left.png" width="14px" height="34px"/>
+	             <img id="totalMemImg" style="background: url({$resourcesPath}/img/administrator/jvmstatus/bar-mem-used.png) repeat-x 0px 0px" src="{$resourcesPath}/img/administrator/jvmstatus/s.gif" width="0px" height="34px"/>
+	             <img id="freeMemImg" style="background: url({$resourcesPath}/img/administrator/jvmstatus/bar-mem-free.png) top left repeat-x;" src="{$resourcesPath}/img/administrator/jvmstatus/s.gif" width="0px" height="34px"/>
+	             <img id="maxMemImg" style="background: url({$resourcesPath}/img/administrator/jvmstatus/bar-mem-available.png) top left repeat-x;" src="{$resourcesPath}/img/administrator/jvmstatus/s.gif" width="280px" height="34px"/>
+	             <img src="{$resourcesPath}/img/administrator/jvmstatus/bar-mem-right.png" width="14px" height="34px"/>
+	             
+	             <button onclick="Ametys.plugins.core.administration.tool.JVMStatusTool.prototype._refreshData(true);" title="PLUGINS_CORE_ADMINISTRATOR_STATUS_TAB_GENERAL_MEM_FREENOW" i18n:attr="title" onmouseover="this.style.borderColor = 'threedshadow'; this.style.borderStyle = 'outset';" onmouseout="this.style.borderColor = '#f1efe2'; this.style.borderStyle = 'solid';" style="border: 1px solid #FFF; background-color: #FFF; width: 40px; height: 32px;">
+	                 <img src="{$resourcesPath}/img/administrator/jvmstatus/recycle.png"/>
+	             </button>
+	             
+	             <br/>
+	             
+	             <div style="float: left; text-align: right; width: 184px">0&#160;<i18n:text i18n:key="PLUGINS_CORE_ADMINISTRATOR_STATUS_TAB_GENERAL_MEM_UNIT"/></div>
+	             <div style="float: left; text-align: right; width: 136px"><span id="middleMem"></span>&#160;<i18n:text i18n:key="PLUGINS_CORE_ADMINISTRATOR_STATUS_TAB_GENERAL_MEM_UNIT"/></div>
+	             <div style="float: left; text-align: right; width: 124px"><span id="maxiMem"></span>&#160;&#160;<i18n:text i18n:key="PLUGINS_CORE_ADMINISTRATOR_STATUS_TAB_GENERAL_MEM_UNIT"/></div>
+	             
+	             <br/><br/>
+	             
+	             <div class="label"><i18n:text i18n:key="PLUGINS_CORE_ADMINISTRATOR_STATUS_TAB_GENERAL_MEM_NHEAP"/></div>
+	             <img class="help" id="mem-nheap-help-img" src="{$resourcesPath}/img/administrator/jvmstatus/help.gif"/>
+	             <img src="{$resourcesPath}/img/administrator/jvmstatus/bar-left.png" width="14px" height="28px"/>
+	             <img id="totalMem2Img" style="background: url({$resourcesPath}/img/administrator/jvmstatus/bar-used.png) repeat-x 0px 0px" src="{$resourcesPath}/img/administrator/jvmstatus/s.gif" width="0px" height="28px"/>
+	             <img id="freeMem2Img" style="background: url({$resourcesPath}/img/administrator/jvmstatus/bar-free.png) repeat-x 0px 0px" src="{$resourcesPath}/img/administrator/jvmstatus/s.gif" width="0px" height="28px"/>
+	             <img id="maxMem2Img" style="background: url({$resourcesPath}/img/administrator/jvmstatus/bar-available.png) repeat-x 0px 0px" src="{$resourcesPath}/img/administrator/jvmstatus/s.gif" width="280px" height="28px"/>
+	             <img src="{$resourcesPath}/img/administrator/jvmstatus/bar-right.png" width="14px" height="28px"/>
+	             <br/>    
+	             <div style="float: left; text-align: right; width: 184px">0&#160;<i18n:text i18n:key="PLUGINS_CORE_ADMINISTRATOR_STATUS_TAB_GENERAL_MEM_UNIT"/></div>
+	             <div style="float: left; text-align: right; width: 136px"><span id="middleMem2"></span>&#160;<i18n:text i18n:key="PLUGINS_CORE_ADMINISTRATOR_STATUS_TAB_GENERAL_MEM_UNIT"/></div>
+	             <div style="float: left; text-align: right; width: 124px"><span id="maxiMem2"></span>&#160;&#160;<i18n:text i18n:key="PLUGINS_CORE_ADMINISTRATOR_STATUS_TAB_GENERAL_MEM_UNIT"/></div>
+	             
+	             <br/><br/>
+	             <div class="legend">
+	                 <img src="{$resourcesPath}/img/administrator/jvmstatus/legend-used.gif"/><i18n:text i18n:key="PLUGINS_CORE_ADMINISTRATOR_STATUS_TAB_GENERAL_MEM_USED_SUFFIX"/>
+	                 <img src="{$resourcesPath}/img/administrator/jvmstatus/legend-free.gif"/><i18n:text i18n:key="PLUGINS_CORE_ADMINISTRATOR_STATUS_TAB_GENERAL_MEM_FREE_SUFFIX"/>
+	                 <img src="{$resourcesPath}/img/administrator/jvmstatus/legend-available.gif"/><i18n:text i18n:key="PLUGINS_CORE_ADMINISTRATOR_STATUS_TAB_GENERAL_MEM_AVAILABLE_SUFFIX"/>
+	             </div>
+	         </div>
+	         
+	         <div id="server">
+	             <div class="label"><i18n:text i18n:key="PLUGINS_CORE_ADMINISTRATOR_STATUS_TAB_GENERAL_HANDLE_SESSION"/></div>
+	             <img id="handle-session-help-img" src="{$resourcesPath}/img/administrator/jvmstatus/help.gif" class="help" />                                       
+	             <span id="activeSession">-</span>  
+	             <br/>
+	             
+	             <div class="label"><i18n:text i18n:key="PLUGINS_CORE_ADMINISTRATOR_STATUS_TAB_GENERAL_HANDLE_REQUEST"/></div>
+	             <img id="handle-request-help-img" src="{$resourcesPath}/img/administrator/jvmstatus/help.gif" class="help" />
+	             <span id="activeRequest">-</span>
+	             <br/>
+	             
+	             <div class="label"><i18n:text i18n:key="PLUGINS_CORE_ADMINISTRATOR_STATUS_TAB_GENERAL_HANDLE_THREAD"/></div>
+	             <img id="handle-thread-help-img" src="{$resourcesPath}/img/administrator/jvmstatus/help.gif" class="help" />
+	             <span id="activeThread">-</span>&#160;<span id="deadlockThread"></span>
+	         </div>
+	     </div>
+    </xsl:template>
+
+</xsl:stylesheet>
\ No newline at end of file
Index: main/plugin-core/pages/administrator/jvmstatus/refresh.xsl
===================================================================
--- main/plugin-core/pages/administrator/jvmstatus/refresh.xsl	(revision 31811)
+++ main/plugin-core/pages/administrator/jvmstatus/refresh.xsl	(nonexistent)
@@ -1,38 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-   Copyright 2012 Anyware Services
-
-   Licensed under the Apache License, Version 2.0 (the "License");
-   you may not use this file except in compliance with the License.
-   You may obtain a copy of the License at
-
-       http://www.apache.org/licenses/LICENSE-2.0
-
-   Unless required by applicable law or agreed to in writing, software
-   distributed under the License is distributed on an "AS IS" BASIS,
-   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-   See the License for the specific language governing permissions and
-   limitations under the License.
-   -->
-<xsl:stylesheet version="1.0" 
-                xmlns:i18n="http://apache.org/cocoon/i18n/2.1" 
-                xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
-                xmlns:escaper="org.apache.commons.lang.StringEscapeUtils">
-    
-    <xsl:param name="contextPath"/>
-    <xsl:param name="pluginName"/>
-    <xsl:param name="workspaceName"/>
-    <xsl:param name="workspaceURI"/>
-    
-    <xsl:variable name="workspaceContext"><xsl:value-of select="$contextPath"/><xsl:value-of select="$workspaceURI"/></xsl:variable>
-    <xsl:variable name="resourcesPath"><xsl:value-of select="$contextPath"/>/plugins/<xsl:value-of select="$pluginName"/>/resources</xsl:variable>
-    
-    <xsl:template match="/status/general">
-    	<status>
-    		<general>
-    			<xsl:copy-of select="*[name() != 'osTime']"/>
-    			<osTime><i18n:date pattern="long" src-pattern="yyyy-MM-dd'T'HH:mm" value="{/status/general/osTime}"/>&#160;<i18n:time pattern="short" src-pattern="yyyy-MM-dd'T'HH:mm" value="{/status/general/osTime}"/></osTime>
-    		</general>
-    	</status>
-    </xsl:template>    
-</xsl:stylesheet>
\ No newline at end of file
Index: main/plugin-core/pages/administrator/jvmstatus/view.xsl
===================================================================
--- main/plugin-core/pages/administrator/jvmstatus/view.xsl	(revision 31811)
+++ main/plugin-core/pages/administrator/jvmstatus/view.xsl	(nonexistent)
@@ -1,202 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-   Copyright 2012 Anyware Services
-
-   Licensed under the Apache License, Version 2.0 (the "License");
-   you may not use this file except in compliance with the License.
-   You may obtain a copy of the License at
-
-       http://www.apache.org/licenses/LICENSE-2.0
-
-   Unless required by applicable law or agreed to in writing, software
-   distributed under the License is distributed on an "AS IS" BASIS,
-   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-   See the License for the specific language governing permissions and
-   limitations under the License.
-   -->
-<xsl:stylesheet version="1.0" 
-                xmlns:i18n="http://apache.org/cocoon/i18n/2.1" 
-                xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
-                xmlns:escaper="org.apache.commons.lang.StringEscapeUtils">
-    
-    <xsl:param name="contextPath"/>
-    <xsl:param name="pluginName"/>
-    <xsl:param name="workspaceName"/>
-    <xsl:param name="workspaceURI"/>
-    
-    <xsl:variable name="workspaceContext"><xsl:value-of select="$contextPath"/><xsl:value-of select="$workspaceURI"/></xsl:variable>
-    <xsl:variable name="resourcesPath"><xsl:value-of select="$contextPath"/>/plugins/<xsl:value-of select="$pluginName"/>/resources</xsl:variable>
-    
-    <xsl:template match="/status">
-        <html>
-            <head>
-                <title><i18n:text i18n:key="PLUGINS_CORE_ADMINISTRATOR_STATUS_TITLE"/></title>
-                <link rel="stylesheet" href="{$resourcesPath}/css/administrator/jvmstatus.css" type="text/css"/>    
-			</head>
-
-			<script>
-				<script type="text/javascript" src="{$resourcesPath}/js/Ametys/plugins/core/administration/JVMStatus.js"></script>
-	            <script type="text/javascript">
-	                Ametys.plugins.core.administration.JVMStatus.initialize ("<xsl:value-of select="$pluginName"/>");
-	          		
-					Ametys.plugins.core.administration.JVMStatus._navItems = [];
-	                  
-	                Ametys.plugins.core.administration.JVMStatus._navItems.push ({label: "<i18n:text i18n:key="PLUGINS_CORE_ADMINISTRATOR_STATUS_TAB_GENERAL"/>"}); 
-	                Ametys.plugins.core.administration.JVMStatus._navItems.push ({label: "<i18n:text i18n:key="PLUGINS_CORE_ADMINISTRATOR_STATUS_TAB_SYSTEM"/>"});                        
-					Ametys.plugins.core.administration.JVMStatus._navItems.push ({label: "<i18n:text i18n:key="PLUGINS_CORE_ADMINISTRATOR_STATUS_TAB_MONITORING"/>"});                        
-					
-					Ametys.plugins.core.administration.JVMStatus.periods = [];
-					<xsl:for-each select="samples/periods/period">
-						Ametys.plugins.core.administration.JVMStatus.periods.push("<xsl:value-of select="."/>");
-					</xsl:for-each>
-
-					Ametys.plugins.core.administration.JVMStatus.samples = [];
-					<xsl:for-each select="samples/sample">
-						Ametys.plugins.core.administration.JVMStatus.samples.push({id: "<xsl:value-of select="@id"/>", label: "<xsl:copy-of select="label/node()"/>", description: "<xsl:copy-of select="description/node()"/>"});
-					</xsl:for-each>
-	          			
-					var toolPanel = Ametys.plugins.core.administration.JVMStatus.createPanel ();
-					
-					// Load properties data
-					var jvmdata = [
-							<xsl:for-each select="properties/node()">
-								<xsl:sort select="local-name()"/>
-							
-								['<xsl:value-of select="local-name()" />',
-								'<xsl:value-of select="escaper:escapeJavaScript(.)"/>']
-								<xsl:if test="not(position()=last())">
-									<xsl:text>,</xsl:text>
-								</xsl:if>								
-							</xsl:for-each>
-					];
-					
-					Ametys.plugins.core.administration.JVMStatus.loadProperties (jvmdata);
-					
-					Ametys.plugins.core.administration.JVMStatus.addFieldSet (
-						"<i18n:text i18n:key="PLUGINS_CORE_ADMINISTRATOR_STATUS_TAB_GENERAL_SYS"/>",
-						'system'
-					);
-					
-					Ametys.plugins.core.administration.JVMStatus.addFieldSet (
-						"<i18n:text i18n:key="PLUGINS_CORE_ADMINISTRATOR_STATUS_TAB_GENERAL_JVM"/>",
-						'java'
-					);
-					
-					Ametys.plugins.core.administration.JVMStatus.addFieldSet (
-						"<i18n:text i18n:key="PLUGINS_CORE_ADMINISTRATOR_STATUS_TAB_GENERAL_MEM"/>",
-						'memory'
-					);
-						
-					Ametys.plugins.core.administration.JVMStatus.addFieldSet (
-						"<i18n:text i18n:key="PLUGINS_CORE_ADMINISTRATOR_STATUS_TAB_GENERAL_HANDLE"/>",
-						'server'
-					);
-						
-	                createPanel = function () 
-					{
-						return toolPanel;
-					}
-					
-					appReady = Ext.bind(Ametys.plugins.core.administration.JVMStatus.onReady, Ametys.plugins.core.administration.JVMStatus);
-	           	</script>
-			</script>
-        
-            <body>
-            	<div style="display:none">
-    	        	<div id="system">
-    	        		 <div class="label"><i18n:text i18n:key="PLUGINS_CORE_ADMINISTRATOR_STATUS_TAB_GENERAL_SYS_OS"/></div>
-    	        		 <xsl:value-of select="/status/caracteristics/osName"/>
-    	                 <xsl:text> </xsl:text>
-    	                 (<xsl:value-of select="/status/caracteristics/osVersion"/>)
-    	                 <xsl:text> </xsl:text>
-    	                 <xsl:value-of select="/status/caracteristics/osPatch"/>
-    	                 
-    	                 <br/>
-    	                 
-    	                 <div class="label"><i18n:text i18n:key="PLUGINS_CORE_ADMINISTRATOR_STATUS_TAB_GENERAL_SYS_PROC"/></div>
-    	                 <xsl:value-of select="/status/caracteristics/availableProc"/>
-    	                 <xsl:text> </xsl:text>
-    	                 <i18n:text i18n:key="PLUGINS_CORE_ADMINISTRATOR_STATUS_TAB_GENERAL_SYS_PROC_UNIT"/>
-    	                 <xsl:text> </xsl:text>
-    	                 <xsl:value-of select="/status/caracteristics/architecture"/>
-
-    	        		 <br/>
-    	        		 <div class="label"><i18n:text i18n:key="PLUGINS_CORE_ADMINISTRATOR_STATUS_TAB_GENERAL_SYS_TIME"/></div>
-    	        		 <span id="osTime"><i18n:date pattern="long" src-pattern="yyyy-MM-dd'T'HH:mm" value="{/status/general/osTime}"/>&#160;<i18n:time pattern="short" src-pattern="yyyy-MM-dd'T'HH:mm" value="{/status/general/osTime}"/></span>
-    	        	</div>
-    	        	
-    	        	<div id="java">
-    	        		<div class="label"><i18n:text i18n:key="PLUGINS_CORE_ADMINISTRATOR_STATUS_TAB_GENERAL_JVM_VERSION"/></div>
-    	        		<xsl:value-of select="/status/caracteristics/javaVersion"/>
-    	        		<br/>
-    	        		<div class="label"><i18n:text i18n:key="PLUGINS_CORE_ADMINISTRATOR_STATUS_TAB_GENERAL_JVM_VENDOR"/></div>
-    	        		<xsl:value-of select="/status/caracteristics/javaVendor"/>
-    	        		<br/>
-                        <div class="label"><i18n:text i18n:key="PLUGINS_CORE_ADMINISTRATOR_STATUS_TAB_GENERAL_JVM_NAME"/></div>
-                        <xsl:value-of select="/status/caracteristics/jvmName"/>
-                        <br/>
-    	        		<div class="label"><i18n:text i18n:key="PLUGINS_CORE_ADMINISTRATOR_STATUS_TAB_GENERAL_JVM_TIME"/></div>
-    	        		<i18n:date pattern="long" src-pattern="yyyy-MM-dd'T'HH:mm" value="{/status/caracteristics/startTime}"/>&#160;<i18n:time pattern="short" src-pattern="yyyy-MM-dd'T'HH:mm" value="{/status/caracteristics/startTime}"/>
-    	        	</div>
-    	        	
-    	        	<div id="memory">
-    	        		<div class="label"><i18n:text i18n:key="PLUGINS_CORE_ADMINISTRATOR_STATUS_TAB_GENERAL_MEM_HEAP"/></div>
-    	        		<img class="help" id="mem-heap-help-img" src="{$resourcesPath}/img/administrator/jvmstatus/help.gif"/>
-    	        		<img src="{$resourcesPath}/img/administrator/jvmstatus/bar-mem-left.png" width="14px" height="34px"/>
-    	                <img id="totalMemImg" style="background: url({$resourcesPath}/img/administrator/jvmstatus/bar-mem-used.png) repeat-x 0px 0px" src="{$resourcesPath}/img/administrator/jvmstatus/s.gif" width="0px" height="34px"/>
-    	                <img id="freeMemImg" style="background: url({$resourcesPath}/img/administrator/jvmstatus/bar-mem-free.png) top left repeat-x;" src="{$resourcesPath}/img/administrator/jvmstatus/s.gif" width="0px" height="34px"/>
-    	                <img id="maxMemImg" style="background: url({$resourcesPath}/img/administrator/jvmstatus/bar-mem-available.png) top left repeat-x;" src="{$resourcesPath}/img/administrator/jvmstatus/s.gif" width="280px" height="34px"/>
-    	                <img src="{$resourcesPath}/img/administrator/jvmstatus/bar-mem-right.png" width="14px" height="34px"/>
-    	                
-    	                <button onclick="Ametys.plugins.core.administration.JVMStatus.refreshData(true);" title="PLUGINS_CORE_ADMINISTRATOR_STATUS_TAB_GENERAL_MEM_FREENOW" i18n:attr="title" onmouseover="this.style.borderColor = 'threedshadow'; this.style.borderStyle = 'outset';" onmouseout="this.style.borderColor = '#f1efe2'; this.style.borderStyle = 'solid';" style="border: 1px solid #FFF; background-color: #FFF; width: 40px; height: 32px;">
-    	                	<img src="{$resourcesPath}/img/administrator/jvmstatus/recycle.png"/>
-    	                </button>
-    	                
-    	        		<br/>
-    	        		
-    	        		<div style="float: left; text-align: right; width: 184px">0&#160;<i18n:text i18n:key="PLUGINS_CORE_ADMINISTRATOR_STATUS_TAB_GENERAL_MEM_UNIT"/></div>
-    	        		<div style="float: left; text-align: right; width: 136px"><span id="middleMem"></span>&#160;<i18n:text i18n:key="PLUGINS_CORE_ADMINISTRATOR_STATUS_TAB_GENERAL_MEM_UNIT"/></div>
-    	        		<div style="float: left; text-align: right; width: 124px"><span id="maxiMem"></span>&#160;&#160;<i18n:text i18n:key="PLUGINS_CORE_ADMINISTRATOR_STATUS_TAB_GENERAL_MEM_UNIT"/></div>
-    	        		
-    	        		<br/><br/>
-    	        		
-    	        		<div class="label"><i18n:text i18n:key="PLUGINS_CORE_ADMINISTRATOR_STATUS_TAB_GENERAL_MEM_NHEAP"/></div>
-    	        		<img class="help" id="mem-nheap-help-img" src="{$resourcesPath}/img/administrator/jvmstatus/help.gif"/>
-    	        		<img src="{$resourcesPath}/img/administrator/jvmstatus/bar-left.png" width="14px" height="28px"/>
-    	                <img id="totalMem2Img" style="background: url({$resourcesPath}/img/administrator/jvmstatus/bar-used.png) repeat-x 0px 0px" src="{$resourcesPath}/img/administrator/jvmstatus/s.gif" width="0px" height="28px"/>
-    	                <img id="freeMem2Img" style="background: url({$resourcesPath}/img/administrator/jvmstatus/bar-free.png) repeat-x 0px 0px" src="{$resourcesPath}/img/administrator/jvmstatus/s.gif" width="0px" height="28px"/>
-    	                <img id="maxMem2Img" style="background: url({$resourcesPath}/img/administrator/jvmstatus/bar-available.png) repeat-x 0px 0px" src="{$resourcesPath}/img/administrator/jvmstatus/s.gif" width="280px" height="28px"/>
-    	                <img src="{$resourcesPath}/img/administrator/jvmstatus/bar-right.png" width="14px" height="28px"/>
-    	                <br/>    
-    	        		<div style="float: left; text-align: right; width: 184px">0&#160;<i18n:text i18n:key="PLUGINS_CORE_ADMINISTRATOR_STATUS_TAB_GENERAL_MEM_UNIT"/></div>
-    	        		<div style="float: left; text-align: right; width: 136px"><span id="middleMem2"></span>&#160;<i18n:text i18n:key="PLUGINS_CORE_ADMINISTRATOR_STATUS_TAB_GENERAL_MEM_UNIT"/></div>
-    	        		<div style="float: left; text-align: right; width: 124px"><span id="maxiMem2"></span>&#160;&#160;<i18n:text i18n:key="PLUGINS_CORE_ADMINISTRATOR_STATUS_TAB_GENERAL_MEM_UNIT"/></div>
-    	        		
-    	        		<br/><br/>
-    	        		<div class="legend">
-    	        			<img src="{$resourcesPath}/img/administrator/jvmstatus/legend-used.gif"/><i18n:text i18n:key="PLUGINS_CORE_ADMINISTRATOR_STATUS_TAB_GENERAL_MEM_USED_SUFFIX"/>
-    	                    <img src="{$resourcesPath}/img/administrator/jvmstatus/legend-free.gif"/><i18n:text i18n:key="PLUGINS_CORE_ADMINISTRATOR_STATUS_TAB_GENERAL_MEM_FREE_SUFFIX"/>
-    	                    <img src="{$resourcesPath}/img/administrator/jvmstatus/legend-available.gif"/><i18n:text i18n:key="PLUGINS_CORE_ADMINISTRATOR_STATUS_TAB_GENERAL_MEM_AVAILABLE_SUFFIX"/>
-    	               	</div>
-    	        	</div>
-    	        	
-    	        	<div id="server">
-    	        	 	<div class="label"><i18n:text i18n:key="PLUGINS_CORE_ADMINISTRATOR_STATUS_TAB_GENERAL_HANDLE_SESSION"/></div>
-    	                <img id="handle-session-help-img" src="{$resourcesPath}/img/administrator/jvmstatus/help.gif" class="help" />                                       
-    	                <span id="activeSession">-</span>  
-    	                <br/>
-    	                
-    	                <div class="label"><i18n:text i18n:key="PLUGINS_CORE_ADMINISTRATOR_STATUS_TAB_GENERAL_HANDLE_REQUEST"/></div>
-    	               	<img id="handle-request-help-img" src="{$resourcesPath}/img/administrator/jvmstatus/help.gif" class="help" />
-    	                <span id="activeRequest">-</span>
-    					<br/>
-    					
-    					<div class="label"><i18n:text i18n:key="PLUGINS_CORE_ADMINISTRATOR_STATUS_TAB_GENERAL_HANDLE_THREAD"/></div>
-    					<img id="handle-thread-help-img" src="{$resourcesPath}/img/administrator/jvmstatus/help.gif" class="help" />
-    					<span id="activeThread">-</span>&#160;<span id="deadlockThread"></span>
-    	        	</div>
-    	        </div>
-            </body>
-        </html>
-    </xsl:template>    
-</xsl:stylesheet>
\ No newline at end of file
Index: main/plugin-core/plugin.xml
===================================================================
--- main/plugin-core/plugin.xml	(revision 31811)
+++ main/plugin-core/plugin.xml	(working copy)                 		 
@@ -1307,174 +1302,1079 @@             
             <!-- +
-                 |  ADMIN CONFIGURATION
+                 |  JVMSTATUS
                  + -->
-            <extension  point="org.ametys.runtime.workspaces.admin.DesktopManager" 
-                        id="org.ametys.runtime.plugins.core.administrator.Config"
-                        class="org.ametys.runtime.plugins.core.ui.item.StaticAdminClientSideElement"
-                        logger="org.ametys.runtime.plugins.core.ui.administrator.config">
+
+            <!-- Tools -->
+            <extension id="org.ametys.runtime.plugins.core.jvmstatus.JVMStatus"  
+                       point="org.ametys.runtime.ribbon.RibbonControlsManager" 
+                       class="org.ametys.runtime.ui.StaticClientSideElement">
                 <!-- 
-                    This interaction allows the administrator to change the main configuration of the application
+                    This tool allows the administrator to check the status of the JVM
                  -->
-				<class name="redirect">
-					<param name="Link">administrator/config/edit.html</param>
-
-					<param name="label" i18n="true">PLUGINS_CORE_ADMINISTRATOR_CONFIG_LABEL</param>
-					<param name="default-description" i18n="true">PLUGINS_CORE_ADMINISTRATOR_CONFIG_DESCRIPTION</param>
-					<param name="icon-small" file="true">img/administrator/config/icon_dock.png</param>
-					<param name="icon-medium" file="true">img/administrator/config/icon_medium.gif</param>
-					<param name="icon-large" file="true">img/administrator/config/icon_large.png</param>
-				</class>    				   
-                <Url>administrator/config/edit\.html</Url>
+                <class name="Ametys.ribbon.element.ui.button.OpenToolButtonController">
+                    <opentool-role>uitool-admin-jvmstatus</opentool-role>
+                    
+                    <label i18n="true">PLUGINS_CORE_ADMINISTRATOR_TOOL_JVMSTATUS_LABEL</label>
+                    <description i18n="true">PLUGINS_CORE_ADMINISTRATOR_TOOL_JVMSTATUS_DESC</description>
+                    
+                    <icon-small file="true">img/administrator/jvmstatus/icon_16x16.png</icon-small>
+                    <icon-medium file="true">img/administrator/jvmstatus/icon_32x32.png</icon-medium>
+                    <icon-large file="true">img/administrator/jvmstatus/icon_48x48.png</icon-large>
+                </class>
+                <scripts>
+                    <file>js/Ametys/plugins/core/administration/tool/JVMStatusTool.js</file>
+                </scripts>
+            </extension>
+                  
+            <extension id="org.ametys.runtime.plugins.core.jvmstatus.SystemProperties"  
+                       point="org.ametys.runtime.ribbon.RibbonControlsManager" 
+                       class="org.ametys.runtime.ui.StaticClientSideElement">
+                <!-- 
+                    This tool allows the administrator to check the system properties
+                 -->
+                <class name="Ametys.ribbon.element.ui.button.OpenToolButtonController">
+                    <opentool-role>uitool-admin-systemproperties</opentool-role>
+                    
+                    <label i18n="true">PLUGINS_CORE_ADMINISTRATOR_TOOL_SYSTEMPROPERTIES_LABEL</label>
+                    <description i18n="true">PLUGINS_CORE_ADMINISTRATOR_TOOL_SYSTEMPROPERTIES_DESC</description>
+                    
+                    <icon-small file="true">img/administrator/jvmstatus/icon_16x16.png</icon-small>
+                    <icon-medium file="true">img/administrator/jvmstatus/icon_32x32.png</icon-medium>
+                    <icon-large file="true">img/administrator/jvmstatus/icon_48x48.png</icon-large>
+                </class>
+                <scripts>
+                    <file>js/Ametys/plugins/core/administration/tool/SystemPropertiesTool.js</file>
+                </scripts>
             </extension>
             
-            <!-- +
-                 |  ADMIN JVMSTATUS
-                 + -->
-            <extension  point="org.ametys.runtime.workspaces.admin.DesktopManager" 
-                        id="org.ametys.runtime.plugins.core.administrator.JVMStatus"
-                        class="org.ametys.runtime.plugins.core.ui.item.StaticAdminClientSideElement"
-                        logger="org.ametys.runtime.plugins.core.ui.administrator.status">
+            <extension id="org.ametys.runtime.plugins.core.jvmstatus.Monitoring"  
+                       point="org.ametys.runtime.ribbon.RibbonControlsManager" 
+                       class="org.ametys.runtime.ui.StaticClientSideElement">
                 <!-- 
-                    This interaction allows the administrator to check the status of the JVM
+                    This tool allows the administrator to analyze monitoring graphs
                  -->
-				<class name="redirect">
-					<param name="Link">administrator/jvmstatus/view.html</param>
-
-					<param name="label" i18n="true">PLUGINS_CORE_ADMINISTRATOR_STATUS_LABEL</param>
-					<param name="default-description" i18n="true">PLUGINS_CORE_ADMINISTRATOR_STATUS_DESCRIPTION</param>
-					<param name="icon-small" file="true">img/administrator/jvmstatus/icon_dock.png</param>
-					<param name="icon-medium" file="true">img/administrator/jvmstatus/icon_medium.gif</param>
-					<param name="icon-large" file="true">img/administrator/jvmstatus/icon_large.png</param>
-				</class>    				   
-                <Url>administrator/jvmstatus/view\.html</Url>
-            </extension> 
-
+                <class name="Ametys.ribbon.element.ui.button.OpenToolButtonController">
+                    <opentool-role>uitool-admin-monitoring</opentool-role>
+                    
+                    <label i18n="true">PLUGINS_CORE_ADMINISTRATOR_TOOL_MONITORING_LABEL</label>
+                    <description i18n="true">PLUGINS_CORE_ADMINISTRATOR_TOOL_MONITORING_DESC</description>
+                    
+                    <icon-small file="true">img/administrator/jvmstatus/icon_16x16.png</icon-small>
+                    <icon-medium file="true">img/administrator/jvmstatus/icon_32x32.png</icon-medium>
+                    <icon-large file="true">img/administrator/jvmstatus/icon_48x48.png</icon-large>
+                </class>
+                <scripts>
+                    <file>js/Ametys/plugins/core/administration/tool/MonitoringTool.js</file>
+                </scripts>
+            </extension>
+                  
+                  
+            <!-- Factories -->
+            <extension id="org.ametys.runtime.plugins.core.jvmstatus.JVMStatusFactory"
+                       point="org.ametys.runtime.ui.UIToolsFactoriesManager"
+                       class="org.ametys.runtime.ui.StaticClientSideElement">
+                <class name="Ametys.tool.factory.UniqueToolFactory">
+                    <role>uitool-admin-jvmstatus</role>
+                    <toolClass>Ametys.plugins.core.administration.tool.JVMStatusTool</toolClass>
+                    
+                    <title i18n="true">PLUGINS_CORE_ADMINISTRATOR_TOOL_JVMSTATUS_LABEL</title>
+                    <description i18n="true">PLUGINS_CORE_ADMINISTRATOR_TOOL_JVMSTATUS_DESC</description>
+                    
+                    <icon-small file="true">img/administrator/jvmstatus/icon_16x16.png</icon-small>
+                    <icon-medium file="true">img/administrator/jvmstatus/icon_32x32.png</icon-medium>
+                    <icon-large file="true">img/administrator/jvmstatus/icon_48x48.png</icon-large>
+                    
+                    <default-location>c</default-location>
+                </class>
+                <scripts>
+                    <file>js/Ametys/plugins/core/administration/tool/JVMStatusTool.js</file>
+                </scripts>
+                <css>
+                    <file>css/administrator/jvmstatus.css</file>
+                </css>
+            </extension>
+            
+            <extension id="org.ametys.runtime.plugins.core.jvmstatus.SystemPropertiesFactory"
+                       point="org.ametys.runtime.ui.UIToolsFactoriesManager"
+                       class="org.ametys.runtime.ui.StaticClientSideElement">
+                <class name="Ametys.tool.factory.UniqueToolFactory">
+                    <role>uitool-admin-systemproperties</role>
+                    <toolClass>Ametys.plugins.core.administration.tool.SystemPropertiesTool</toolClass>
+                    
+                    <title i18n="true">PLUGINS_CORE_ADMINISTRATOR_TOOL_SYSTEMPROPERTIES_FACTORY_LABEL</title>
+                    <description i18n="true">PLUGINS_CORE_ADMINISTRATOR_TOOL_SYSTEMPROPERTIES_DESC</description>
+                    
+                    <icon-small file="true">img/administrator/jvmstatus/icon_16x16.png</icon-small>
+                    <icon-medium file="true">img/administrator/jvmstatus/icon_32x32.png</icon-medium>
+                    <icon-large file="true">img/administrator/jvmstatus/icon_48x48.png</icon-large>
+                    
+                    <default-location>c</default-location>
+                </class>
+                <scripts>
+                    <file>js/Ametys/plugins/core/administration/tool/SystemPropertiesTool.js</file>
+                </scripts>
+            </extension>
+            
+            <extension id="org.ametys.runtime.plugins.core.jvmstatus.MonitoringFactory"
+                       point="org.ametys.runtime.ui.UIToolsFactoriesManager"
+                       class="org.ametys.runtime.ui.StaticClientSideElement">
+                <class name="Ametys.tool.factory.UniqueToolFactory">
+                    <role>uitool-admin-monitoring</role>
+                    <toolClass>Ametys.plugins.core.administration.tool.MonitoringTool</toolClass>
+                    
+                    <title i18n="true">PLUGINS_CORE_ADMINISTRATOR_TOOL_MONITORING_LABEL</title>
+                    <description i18n="true">PLUGINS_CORE_ADMINISTRATOR_TOOL_MONITORING_DESC</description>
+                    
+                    <icon-small file="true">img/administrator/jvmstatus/icon_16x16.png</icon-small>
+                    <icon-medium file="true">img/administrator/jvmstatus/icon_32x32.png</icon-medium>
+                    <icon-large file="true">img/administrator/jvmstatus/icon_48x48.png</icon-large>
+                    
+                    <default-location>c</default-location>
+                </class>
+                <scripts>
+                    <file>js/Ametys/plugins/core/administration/tool/MonitoringTool.js</file>
+                </scripts>
+            </extension>
+            
+                        
  
Index: main/plugin-core/resources/css/administrator/jvmstatus.css
===================================================================
--- main/plugin-core/resources/css/administrator/jvmstatus.css	(revision 31873)
+++ main/plugin-core/resources/css/administrator/jvmstatus.css	(working copy)
@@ -1,5 +1,5 @@
 /*
- *  Copyright 2012 Anyware Services
+ *  Copyright 2015 Anyware Services
  *
  *  Licensed under the Apache License, Version 2.0 (the "License");
  *  you may not use this file except in compliance with the License.
@@ -14,8 +14,7 @@
  *  limitations under the License.
  */
 
-.home-wrapper .home-main .home-col-main .admin-main-panel #system-card-panel .x-panel-header,
-.home-wrapper .home-main .home-col-main .admin-main-panel #system-card-panel .x-panel-body
+.jvmstatus-tool.x-container
 {
 	background-color: transparent;
 	background-image: none;
@@ -23,33 +22,39 @@
 	border-width: 0;
 }
 
-.home-wrapper .home-main .home-col-main .admin-main-panel #system-card-panel .x-panel-header
+.monitoring-tool .x-panel-header, 
+.jvmstatus-fd .x-panel-header
 {
 	background-image: url('../../../../../_admin/resources/img/icon/group-expand-sprite.png');
 	background-repeat: no-repeat;	
 	background-position: 0 -45px;
+	background-color: transparent;
 	
 	padding-left: 15px;
 	margin-left: 15px;
 }
 
-.home-wrapper .home-main .home-col-main .admin-main-panel #system-card-panel .x-panel-header .x-panel-header-text
+.monitoring-tool .x-panel-header.x-panel-header-collapsed-top,
+.jvmstatus-fd .x-panel-header.x-panel-header-collapsed-top
 {
-	font-family: arial,sans-serif;
-	font-size: 1.21em;
-}	
+	background-position: 0 5px;
+}
 
-.home-wrapper .home-main .home-col-main .admin-main-panel #system-card-panel .x-panel-header.x-panel-header-collapsed-top
+.monitoring-tool .x-panel-body,
+.jvmstatus-fd .x-panel-body
 {
-	background-position: 0 5px;
+	border: none;
+    padding: 10px 10px 10px 32px;
+    font-size: 11px;
+    line-height: 18px;
 }
 
 
 /** GENERAL */
-.home-wrapper .home-main .home-col-main .admin-main-panel #system-card-panel #system, 
-.home-wrapper .home-main .home-col-main .admin-main-panel #system-card-panel #java, 
-.home-wrapper .home-main .home-col-main .admin-main-panel #system-card-panel #memory, 
-.home-wrapper .home-main .home-col-main .admin-main-panel #system-card-panel #server
+.jvmstatus-tool #system, 
+.jvmstatus-tool #java, 
+.jvmstatus-tool #memory, 
+.jvmstatus-tool #server
 {
 	font-family: arial,sans-serif;
 	font-size: 0.9em;
@@ -59,11 +64,11 @@
 	width: 530px;
 }
 
-.home-wrapper .home-main .home-col-main .admin-main-panel #system-card-panel #memory {
+.jvmstatus-tool #memory {
 	margin-top: 5px;
 }
 
-.home-wrapper .home-main .home-col-main .admin-main-panel #system-card-panel .label 
+.jvmstatus-tool .label 
 {
 	font-weight: bold;
 	float: left;
@@ -71,21 +76,21 @@
 	color: #1C58A0;
 }
 
-.home-wrapper .home-main .home-col-main .admin-main-panel #system-card-panel img.help 
+.jvmstatus-tool img.help 
 {
 	margin-right: 10px;
 	float: left;
 	padding-top: 6px;
 }
 
-.home-wrapper .home-main .home-col-main .admin-main-panel #system-card-panel .legend 
+.jvmstatus-tool .legend 
 {
 	font-weight: normal;
 	text-align: right;
 	width: 460px;
 }
 
-.home-wrapper .home-main .home-col-main .admin-main-panel #system-card-panel .legend img 
+.jvmstatus-tool .legend img 
 {
 	width: 10px;
 	height: 10px;
@@ -94,35 +99,29 @@
 	margin-right: 2px;
 }
 
-.home-wrapper .home-main .home-col-main .admin-main-panel #system-card-panel #memory button 
+.jvmstatus-tool #memory button 
 {
 	margin-left: 10px;
 }
 
-/** PROPERTIES */
-.home-wrapper .home-main .home-col-main .admin-main-panel #system-card-panel #properties-panel .x-grid-cell 
-{
-	background: none !important;
-}
-
 /** MONITORING */
-.home-wrapper .home-main .home-col-main .admin-main-panel #system-card-panel .monitoring a {
+.monitoring-tool .monitoring a {
 	font-family: arial,sans-serif;
 	font-weight: normal;
 }
 
-.home-wrapper .home-main .home-col-main .admin-main-panel #system-card-panel .monitoring {
+.monitoring-tool  .monitoring {
 	text-align: center;
 	vertical-align: top;
 }
 
-.home-wrapper .home-main .home-col-main .admin-main-panel #system-card-panel .monitoring img {
+.monitoring-tool  .monitoring img {
 	vertical-align: top;
 	width: 491px;
 	height: 273px;
 }
 
-.home-wrapper .home-main .home-col-main .admin-main-panel #system-card-panel .monitoring button {
+.monitoring-tool .monitoring button {
 	background-color: #ffffff; 
 	border: 2px solid #dcdcdc; 
 	width: 30px; 
Index: main/plugin-core/resources/js/Ametys/plugins/core/administration/tool/JVMStatusTool.js
===================================================================
--- main/plugin-core/resources/js/Ametys/plugins/core/administration/tool/JVMStatusTool.js	(revision 0)
+++ main/plugin-core/resources/js/Ametys/plugins/core/administration/tool/JVMStatusTool.js	(revision 0)
@@ -0,0 +1,283 @@
+/*
+ *  Copyright 2015 Anyware Services
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ */
+
+/**
+ * This tool displays the general status of the JVM
+ */
+Ext.define('Ametys.plugins.core.administration.tool.JVMStatusTool', {
+	extend: 'Ametys.tool.Tool',
+	
+	/**
+	 * @private
+	 * @property {Ext.Container} _jvmStatusPanel The JVM status main panel
+	 */
+	
+	constructor: function(config)
+	{
+		this.callParent(arguments);
+	},
+	
+	getMBSelectionInteraction: function() 
+	{
+		return Ametys.tool.Tool.MB_TYPE_NOSELECTION;
+	},
+	
+	createPanel: function ()
+	{
+		this._jvmStatusPanel = Ext.create('Ext.Container', {
+									border: false,
+									autoScroll: true,
+									cls: 'jvmstatus-tool',
+									
+									defaults: {
+										cls: 'jvmstatus-fd',
+										collapsible: true,
+										titleCollapse: true,
+										hideCollapseTool: true,
+										
+										border: false,
+										shadow: false,
+									},
+									
+									items: [{
+										xtype: 'panel',
+										itemId: 'system',
+										title : "<i18n:text i18n:key="PLUGINS_CORE_ADMINISTRATOR_STATUS_TAB_GENERAL_SYS"/>",
+										html: ''
+									},
+									{
+										xtype: 'panel',
+										itemId: 'jvm',
+										title : "<i18n:text i18n:key="PLUGINS_CORE_ADMINISTRATOR_STATUS_TAB_GENERAL_JVM"/>",
+										html: ''
+									},{
+										xtype: 'panel',
+										itemId: 'memory',
+										title : "<i18n:text i18n:key="PLUGINS_CORE_ADMINISTRATOR_STATUS_TAB_GENERAL_MEM"/>",
+										html: ''
+									},{
+										xtype: 'panel',
+										itemId: 'server',
+										title : "<i18n:text i18n:key="PLUGINS_CORE_ADMINISTRATOR_STATUS_TAB_GENERAL_HANDLE"/>",
+										html: ''
+									}
+									   
+									]
+								});
+		
+		return this._jvmStatusPanel;
+	},
+	
+	setParams: function (params)
+	{
+		this.callParent(arguments);
+		this.refresh();
+	},
+	
+	/**
+	 * Refreshes the tool
+	 */
+	refresh: function ()
+	{
+		this.showRefreshing();
+
+		Ametys.data.ServerComm.send({
+			plugin: 'core', 
+			url: 'administrator/get-jvm-status',
+			parameters: {},
+			priority: Ametys.data.ServerComm.PRIORITY_MAJOR,
+			errorMessage: {
+				category: this.self.getName(),
+				msg: "<i18n:text i18n:key='PLUGINS_CORE_ADMINISTRATOR_TOOL_JVMSTATUS_SERVER_ERROR'/>",
+			},
+			callback: {
+				handler: this._refreshCb,
+				scope: this
+			}
+		});
+	},
+	
+	/**
+	 * @private
+	 * Callback for the refreshing process
+	 * @param {Object} response the server's xml response
+	 * @param {Object[]} args the callback arguments
+	 * @param {Function} args.callback the callback 
+	 */
+	_refreshCb: function (response, args)
+	{
+		// Html for the 4 panels of the tool
+		var html = Ext.dom.Query.jsSelect("div[id='system']", response)[0].innerHTML;
+		this._jvmStatusPanel.down('#system').update(html);
+		
+		html = Ext.dom.Query.jsSelect("div[id='java']", response)[0].innerHTML;
+		this._jvmStatusPanel.down('#jvm').update(html);
+		
+		html = Ext.dom.Query.jsSelect("div[id='memory']", response)[0].innerHTML;
+		this._jvmStatusPanel.down('#memory').update(html);
+		
+		html = Ext.dom.Query.jsSelect("div[id='server']", response)[0].innerHTML;
+		this._jvmStatusPanel.down('#server').update(html);
+		
+		// Tooltips
+	    Ext.create ('Ext.ToolTip', {
+	        target: 'mem-heap-help-img',
+	        html: "<i18n:text i18n:key='PLUGINS_CORE_ADMINISTRATOR_STATUS_TAB_GENERAL_HANDLE_MEMORY_HINT_HEAP'/>"
+	    });
+	    Ext.create ('Ext.ToolTip', {
+	        target: 'mem-nheap-help-img',
+	        html: "<i18n:text i18n:key='PLUGINS_CORE_ADMINISTRATOR_STATUS_TAB_GENERAL_HANDLE_MEMORY_HINT_NHEAP'/>"
+	    });
+	    Ext.create ('Ext.ToolTip', {
+	        target: 'handle-session-help-img',
+	        html: "<i18n:text i18n:key='PLUGINS_CORE_ADMINISTRATOR_STATUS_TAB_GENERAL_HANDLE_SESSION_HELP'/>"
+	    });
+	    Ext.create ('Ext.ToolTip', {
+	        target: 'handle-request-help-img',
+	        html: "<i18n:text i18n:key='PLUGINS_CORE_ADMINISTRATOR_STATUS_TAB_GENERAL_HANDLE_REQUEST_HELP'/>"
+	    });
+	    Ext.create ('Ext.ToolTip', {
+	        target: 'handle-thread-help-img',
+	        html: "<i18n:text i18n:key='PLUGINS_CORE_ADMINISTRATOR_STATUS_TAB_GENERAL_HANDLE_THREAD_HELP'/>"
+	    });
+		
+		// Refresh used memory
+		 this._refreshData();
+		 
+		 this.showRefreshed();
+	},
+	
+	/**
+	 * Refresh the data displayed for status
+	 * @param {Boolean} gc True to also garbage collect java heap memory
+	 * @private
+	 */
+	_refreshData: function (gc)
+	{
+		if (gc)
+		{
+			Ametys.data.ServerComm.callMethod({
+				role: "org.ametys.runtime.plugins.core.administrator.jvmstatus.JVMStatusHelper",
+				methodName: "garbageCollect",
+				parameters: [],
+				callback: {
+					handler: Ext.emptyFn,
+					scope: this
+				},
+				errorMessage: {
+					category: this.self.getName(),
+					msg: "<i18n:text i18n:key='PLUGINS_CORE_ADMINISTRATOR_TOOL_JVMSTATUS_SERVER_ERROR'/>"
+				}
+			});
+		}
+		
+		Ametys.data.ServerComm.callMethod({
+			role: "org.ametys.runtime.plugins.core.administrator.jvmstatus.JVMStatusHelper",
+			methodName: "getGeneralStatus",
+			parameters: [],
+			callback: {
+				scope: this,
+				handler: this._refreshDataCb
+			},
+			errorMessage: {
+				category: this.self.getName(),
+				msg: "<i18n:text i18n:key='PLUGINS_CORE_ADMINISTRATOR_TOOL_JVMSTATUS_SERVER_ERROR'/>"
+			}
+		});
+	},
+
+	_refreshDataCb: function(response)
+	{
+	    if (response == null || !this.isNotDestroyed())
+	    {
+	       return;
+	    }
+	    
+		// Refresh every 10 seconds
+	    window.setTimeout(Ext.bind(this._refreshData, this), 10000);
+	    
+	    // HEAP MEMORY
+	    var commitedMem = response['heap-memory-commited'];
+	    var usedMem = response['heap-memory-used'];
+	    var maxMem = response['heap-memory-max'];
+	    
+	    var tip  = "<i18n:text i18n:key='PLUGINS_CORE_ADMINISTRATOR_STATUS_TAB_GENERAL_MEM_USED'/> : " + Math.round(usedMem / (1024*1024) * 10) / 10 + " <i18n:text i18n:key='PLUGINS_CORE_ADMINISTRATOR_STATUS_TAB_GENERAL_MEM_UNIT'/>"
+	            + "\n<i18n:text i18n:key='PLUGINS_CORE_ADMINISTRATOR_STATUS_TAB_GENERAL_MEM_FREE'/> : " + Math.round((commitedMem - usedMem) / (1024*1024) * 10) / 10 + " <i18n:text i18n:key='PLUGINS_CORE_ADMINISTRATOR_STATUS_TAB_GENERAL_MEM_UNIT'/>"
+	            + "\n<i18n:text i18n:key='PLUGINS_CORE_ADMINISTRATOR_STATUS_TAB_GENERAL_MEM_AVAILABLE'/> : " + Math.round((maxMem-commitedMem) / (1024*1024) * 10) / 10  + " <i18n:text i18n:key='PLUGINS_CORE_ADMINISTRATOR_STATUS_TAB_GENERAL_MEM_UNIT'/>";
+	    
+	    document.getElementById("totalMemImg").title = tip;
+	    document.getElementById("freeMemImg").title = tip;
+	    document.getElementById("maxMemImg").title = tip;
+	    
+	    document.getElementById("middleMem").innerHTML = Math.round((maxMem/2) / (1024*1024));
+	    document.getElementById("maxiMem").innerHTML = Math.round((maxMem) / (1024*1024));
+
+	    var v1 = Math.round(usedMem/maxMem * 280);
+	    var v2 = Math.round((commitedMem - usedMem)/maxMem * 280);
+	    document.getElementById("totalMemImg").width = v1;
+	    document.getElementById("freeMemImg").width = v2;
+	    document.getElementById("maxMemImg").width = 280 - v1 - v2;
+	    
+	    // non HEAP MEMORY
+	    commitedMem = response['non-heap-memory-commited'];
+	    usedMem = response['non-heap-memory-used'];
+	    maxMem = response['non-heap-memory-max'];
+	    
+	    var tip  = "<i18n:text i18n:key='PLUGINS_CORE_ADMINISTRATOR_STATUS_TAB_GENERAL_MEM_USED'/> : " + Math.round(usedMem / (1024*1024) * 10) / 10 + " <i18n:text i18n:key='PLUGINS_CORE_ADMINISTRATOR_STATUS_TAB_GENERAL_MEM_UNIT'/>"
+	            + "\n<i18n:text i18n:key='PLUGINS_CORE_ADMINISTRATOR_STATUS_TAB_GENERAL_MEM_FREE'/> : " + Math.round((commitedMem - usedMem) / (1024*1024) * 10) / 10 + " <i18n:text i18n:key='PLUGINS_CORE_ADMINISTRATOR_STATUS_TAB_GENERAL_MEM_UNIT'/>"
+	            + "\n<i18n:text i18n:key='PLUGINS_CORE_ADMINISTRATOR_STATUS_TAB_GENERAL_MEM_AVAILABLE'/> : " + Math.round((maxMem-commitedMem) / (1024*1024) * 10) / 10  + " <i18n:text i18n:key='PLUGINS_CORE_ADMINISTRATOR_STATUS_TAB_GENERAL_MEM_UNIT'/>";
+	    
+	    document.getElementById("totalMem2Img").title = tip;
+	    document.getElementById("freeMem2Img").title = tip;
+	    document.getElementById("maxMem2Img").title = tip;
+
+	    document.getElementById("middleMem2").innerHTML = Math.round((maxMem/2) / (1024*1024));
+	    document.getElementById("maxiMem2").innerHTML = Math.round((maxMem) / (1024*1024));
+
+	    var v1 = Math.round(usedMem/maxMem * 280);
+	    var v2 = Math.round((commitedMem - usedMem)/maxMem * 280);
+	    document.getElementById("totalMem2Img").width = v1;
+	    document.getElementById("freeMem2Img").width = v2;
+	    document.getElementById("maxMem2Img").width = 280 - v1 - v2;
+	    
+	    // ACTIVE SESSION
+	    var sessions = response.activeSessions;
+	    if (sessions == null) 
+	        document.getElementById("activeSession").innerHTML = "<a href='#' onclick='Ametys.plugins.core.administration.JVMStatus.helpSessions(); return false;'><i18n:text i18n:key='PLUGINS_CORE_ADMINISTRATOR_STATUS_SESSIONS_ERROR'/></a>";
+	    else
+	        document.getElementById("activeSession").innerHTML = sessions;
+
+	    // ACTIVE REQUEST
+	    var requests = response.activeRequests;
+	    if (requests == null) 
+	        document.getElementById("activeRequest").innerHTML = "<a href='#' onclick='Ametys.plugins.core.administration.JVMStatus.helpRequests(); return false;'><i18n:text i18n:key='PLUGINS_CORE_ADMINISTRATOR_STATUS_REQUESTS_ERROR'/></a>";
+	    else
+	        document.getElementById("activeRequest").innerHTML = requests;
+
+	    // ACTIVE THREAD
+	    document.getElementById("activeThread").innerHTML = response.activeThreads;
+	    var locked = response.deadlockThreads;
+	    if (locked != "0")
+	    {
+	        document.getElementById("deadlockThread").innerHTML = "(<a href='#' title='<i18n:text i18n:key='PLUGINS_CORE_ADMINISTRATOR_STATUS_THREADS_ERROR_LOCK_HINT'/>' style='color: red; font-weight: bold' onclick='Ametys.plugins.core.administration.JVMStatus.deadLock()'>" + locked + " <i18n:text i18n:key='PLUGINS_CORE_ADMINISTRATOR_STATUS_THREADS_LOCK'/></a>)";
+		}
+	    
+	    // TIME
+	    document.getElementById("startTime").innerHTML = Ext.Date.format(Ext.Date.parse(response.startTime, Ext.Date.patterns.ISO8601DateTime), Ext.Date.patterns.FullDateTime);
+	    document.getElementById("osTime").innerHTML = Ext.Date.format(Ext.Date.parse(response.osTime, Ext.Date.patterns.ISO8601DateTime), Ext.Date.patterns.FullDateTime); 
+	    return true;
+	}
+});
Index: main/plugin-core/resources/js/Ametys/plugins/core/administration/tool/MonitoringTool.js
===================================================================
--- main/plugin-core/resources/js/Ametys/plugins/core/administration/tool/MonitoringTool.js	(revision 0)
+++ main/plugin-core/resources/js/Ametys/plugins/core/administration/tool/MonitoringTool.js	(revision 0)
@@ -0,0 +1,155 @@
+/*
+ *  Copyright 2015 Anyware Services
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ */
+
+/**
+ * This tool displays monitoring data
+ */
+Ext.define('Ametys.plugins.core.administration.tool.MonitoringTool', {
+	extend: 'Ametys.tool.Tool',
+	
+	/**
+	 * @private
+	 * @property {Ext.Container} _monitoringPanel The JVM status main panel
+	 */
+	
+	constructor: function(config)
+	{
+		this.callParent(arguments);
+	},
+	
+	getMBSelectionInteraction: function() 
+	{
+		return Ametys.tool.Tool.MB_TYPE_NOSELECTION;
+	},
+	
+	createPanel: function ()
+	{
+		this._monitoringPanel = Ext.create('Ext.Container', {
+									border: false,
+									autoScroll: true,
+									cls: 'monitoring-tool'
+								});
+		
+		return this._monitoringPanel;
+	},
+	
+	setParams: function (params)
+	{
+		this.callParent(arguments);
+		this.refresh();
+	},
+	
+	/**
+	 * Refreshes the tool
+	 */
+	refresh: function ()
+	{
+		this.showRefreshing();
+
+		Ametys.data.ServerComm.callMethod({
+			role: "org.ametys.runtime.plugins.core.administrator.jvmstatus.JVMStatusHelper",
+			methodName: "getMonitoringData",
+			parameters: [],
+			callback: {
+				scope: this,
+				handler: this._refreshCb
+			},
+			errorMessage: {
+				category: this.self.getName(),
+				msg: "<i18n:text i18n:key='PLUGINS_CORE_ADMINISTRATOR_TOOL_MONITORING_SERVER_ERROR'/>"
+			}
+		});
+	},
+	
+	/**
+	 * @private
+	 * Callback for the refreshing process
+	 * @param {Object} response the server's xml response
+	 * @param {Object[]} args the callback arguments
+	 * @param {Function} args.callback the callback 
+	 */
+	_refreshCb: function (response, args)
+	{
+		var items = [];
+		for (var i = 0; i < response.samples.sampleList.length; i++)
+		{
+			var id = response.samples.sampleList[i].id;
+			var label = response.samples.sampleList[i].label;
+			var description = response.samples.sampleList[i].description;
+			
+		    items.push(new Ext.panel.Panel({
+		    	title : label,
+		    		
+		    	border: false,
+		    	
+				collapsible: true,
+				titleCollapse: true,
+				hideCollapseTool: true,
+				
+		    	html: '<div class="monitoring">'
+		    		+ '    <button style="border-left-style: none;" id="btn-' + id + '-left" onclick="Ametys.plugins.core.administration.MonitoringTool.prototype._nextImg(\'' + id + '\', -1); return false;">&lt;&lt;</button>'
+		    		+ '    <img id="img-' + id + '" src="' + Ametys.getPluginDirectPrefix("core") + '/administrator/jvmstatus/monitoring/' + id + '/' + response.samples.periods[1] + '.png" title="' + description + '"/>'
+		    		+ '    <button style="border-right-style: none;" id="btn-' + id + '-right"  onclick="Ametys.plugins.core.administration.MonitoringTool.prototype._nextImg(\'' + id + '\', +1); return false;">&gt;&gt;</button>'
+		    		+ '<br/><a target="_blank" href="' + Ametys.getPluginDirectPrefix("core") + '/administrator/jvmstatus/monitoring/' + id + '.xml"><i18n:text i18n:key="PLUGINS_CORE_ADMINISTRATOR_STATUS_TAB_MONITORING_EXPORT"/></a>'
+		    	    + '</div>'
+		    }));
+		}
+		
+		this._monitoringPanel.add(items);
+		
+		this.showRefreshed();
+	},
+	
+	/**
+	 * @private
+	 * This method is called to go to the next image in the monitoring panel 
+	 */
+	_nextImg: function(id, dir)
+	{
+		var img = Ext.get('img-' + id);
+		var src = img.dom.src;
+		
+		var currentPeriod = src.substring(src.lastIndexOf("/") + 1, src.length - 4);
+		
+		src = src.substring(0, src.lastIndexOf("/") + 1);
+		for (var i = 0; i < this.periods.length; i++)
+		{
+			if (this.periods[i] == currentPeriod)
+			{
+				src += this.periods[i + dir]
+	            if (i + dir == 0)
+	            {
+	            	Ext.get("btn-" + id + "-left").hide();
+	            	Ext.get("btn-" + id + "-right").show();
+	            }
+	            else if (i + dir == this.periods.length - 1)
+	            {
+	            	Ext.get("btn-" + id + "-left").show();
+	            	Ext.get("btn-" + id + "-right").hide();
+	            }
+	            else
+	            {
+	            	Ext.get("btn-" + id + "-left").show();
+	            	Ext.get("btn-" + id + "-right").show();
+	            }
+				break;
+			}
+		}
+		src += '.png';
+			
+		img.dom.src = src;
+	},
+});
Index: main/plugin-core/resources/js/Ametys/plugins/core/administration/tool/SystemPropertiesTool.js
===================================================================
--- main/plugin-core/resources/js/Ametys/plugins/core/administration/tool/SystemPropertiesTool.js	(revision 0)
+++ main/plugin-core/resources/js/Ametys/plugins/core/administration/tool/SystemPropertiesTool.js	(revision 0)
@@ -0,0 +1,103 @@
+/*
+ *  Copyright 2015 Anyware Services
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ */
+
+/**
+ * This tool displays a list of system properties
+ */
+Ext.define('Ametys.plugins.core.administration.tool.SystemPropertiesTool', {
+	extend: 'Ametys.tool.Tool',
+	
+	/**
+	 * @private
+	 * @property {Ext.grid.Panel} _propertiesGrid The properties grid
+	 */
+	
+	constructor: function(config)
+	{
+		this.callParent(arguments);
+	},
+	
+	getMBSelectionInteraction: function() 
+	{
+		return Ametys.tool.Tool.MB_TYPE_NOSELECTION;
+	},
+	
+	createPanel: function ()
+	{
+		this._propertiesGrid = this._drawPropertiesPanel();
+		return this._propertiesGrid;
+	},
+	
+	setParams: function (params)
+	{
+		this.callParent(arguments);
+		this.refresh();
+	},
+	
+	/**
+	 * Refreshes the tool
+	 */
+	refresh: function ()
+	{
+		this.showRefreshing();
+		this._propertiesGrid.getStore().load({callback: this.showRefreshed, scope: this});
+	},
+	
+	/**
+	 * @private
+	 * Draw the panel displaying the logs
+	 */
+	_drawPropertiesPanel: function()
+	{
+		var store = Ext.create('Ext.data.Store', {
+			model: 'Ametys.plugins.core.administration.tool.SystemPropertiesTool.Property',
+	        
+	        proxy: {
+	        	type: 'ametys',
+				plugin: 'core',
+				url: 'administrator/system-properties',
+	        	reader: {
+	        		type: 'xml',
+					record: 'property',
+					rootProperty: 'properties'
+	        	}
+	        }
+		});		
+		
+		return Ext.create('Ext.grid.Panel',{
+			region: 'center',
+
+			stateful: true,
+			stateId: this.self.getName() + "$grid",
+
+			store : store,
+			
+		    columns: [
+		        {header: "<i18n:text i18n:key='PLUGINS_CORE_ADMINISTRATOR_TOOL_SYSTEMPROPERTIES_COL_NAME'/>", menuDisabled : true, sortable: true, flex: 1, dataIndex: 'name' },
+		        {header: "<i18n:text i18n:key='PLUGINS_CORE_ADMINISTRATOR_TOOL_SYSTEMPROPERTIES_COL_VALUE'/>", menuDisabled : true, sortable: true, flex: 1, dataIndex: 'value' }
+		    ]
+		})
+	},
+});
+
+Ext.define('Ametys.plugins.core.administration.tool.SystemPropertiesTool.Property', {
+    extend: 'Ext.data.Model',
+    
+    fields: [
+       {name: 'name', mapping: '@name'},
+       {name: 'value', mapping: '@value'}
+    ]
+});
Index: main/plugin-core/sitemap.xmap
===================================================================
--- main/plugin-core/sitemap.xmap	(revision 31811)
+++ main/plugin-core/sitemap.xmap	(working copy)
@@ -19,10 +19,16 @@
 	<map:components>
         <map:generators>
             <map:generator name="administrator-config" src="org.ametys.runtime.plugins.core.administrator.configuration.ConfigGenerator" logger="org.ametys.runtime.plugins.core.administrator.sitemap.generator.config" label="content"/>
-            <map:generator name="administrator-jvmstatus" src="org.ametys.runtime.plugins.core.administrator.jvmstatus.JVMStatusGenerator" logger="org.ametys.runtime.plugins.core.administrator.sitemap.generator.jvmstatus" label="content"/>
+            
+            <map:generator name="jvm-status" src="org.ametys.runtime.plugins.core.administrator.jvmstatus.GeneralStatusGenerator" logger="org.ametys.runtime.plugins.core.administrator.sitemap.generator.jvmstatus" label="content"/>
+            <map:generator name="system-properties" src="org.ametys.runtime.plugins.core.administrator.jvmstatus.SystemPropertiesGenerator" logger="org.ametys.runtime.plugins.core.administrator.sitemap.generator.jvmstatus" label="content"/>
+            
+            
             <map:generator name="administrator-logs" src="org.ametys.runtime.plugins.core.administrator.logs.LogsGenerator" logger="org.ametys.runtime.plugins.core.administrator.sitemap.generator.logs" label="content"/>
             <map:generator name="administrator-logs-downloadzip" src="org.ametys.runtime.plugins.core.administrator.logs.LogsDownloadGenerator" logger="org.ametys.runtime.plugins.core.administrator.sitemap.generator.logsDownload" label="content"/>
+            
             <map:generator name="administrator-plugins-doc" src="org.ametys.runtime.plugins.core.administrator.plugins.doc.PluginDocGenerator" logger="org.ametys.runtime.plugins.core.administrator.sitemap.generator.plugindoc" label="content"/>
             <map:generator name="administrator-plugins-change-runtime" src="org.ametys.runtime.plugins.core.administrator.plugins.ChangeRuntime" logger="org.ametys.runtime.plugins.core.administrator.sitemap.generator.ChangeRuntimePlugins" label="content"/>
             <map:generator name="administrator-system" src="org.ametys.runtime.plugins.core.administrator.system.SystemGenerator" logger="org.ametys.runtime.plugins.core.administrator.sitemap.generator.system" label="content"/>
@@ -66,11 +72,9 @@
 		<map:actions>
             <map:action name="set-header" src="org.apache.cocoon.acting.HttpHeaderAction" logger="org.ametys.runtime.plugins.core.administrator.sitemap.action.httpHeader"/>
 
+            <map:action name="administrator-logs-level" src="org.ametys.runtime.plugins.core.administrator.logs.GetLogsLevel" logger="org.ametys.runtime.plugins.core.administrator.sitemap.generator.logs" label="content"/>
             <map:action name="administrator-is-system-user" src="org.ametys.runtime.plugins.core.right.actions.IsAdminAction" logger="org.ametys.runtime.plugins.core.administrator.sitemap.action.isAdmin"/>
 			<map:action name="administrator-password-set" src="org.ametys.runtime.plugins.core.administrator.password.SetPasswordAction" logger="org.ametys.runtime.plugins.core.administrator.sitemap.action.setPassword"/>
-            <map:action name="administrator-jvmstatus-gc" src="org.ametys.runtime.plugins.core.administrator.jvmstatus.GCAction" logger="org.ametys.runtime.plugins.core.administrator.sitemap.action.garbageCollect"/>
             <map:action name="administrator-system-update" src="org.ametys.runtime.plugins.core.administrator.system.UpdateSystemAction" logger="org.ametys.runtime.plugins.core.administrator.sitemap.action.updateSystem"/>
             <map:action name="administrator-config-save" src="org.ametys.runtime.plugins.core.administrator.configuration.SaveConfigAction" logger="org.ametys.runtime.plugins.core.administrator.sitemap.action.saveConfig"/>
             <map:action name="administrator-config-test" src="org.ametys.runtime.config.ParameterCheckerAction" logger="org.ametys.runtime.plugins.core.administrator.sitemap.action.dispatchRequest"/>
@@ -266,9 +270,10 @@
             <!-- +
                  | System status
                  + -->
-            <map:match pattern="administrator/jvmstatus/view.html">
-                <map:generate type="administrator-jvmstatus" label="content"/>
-                <map:transform type="xslt" src="pages/administrator/jvmstatus/view.xsl">
+                 
+            <map:match pattern="administrator/get-jvm-status">
+                <map:generate type="jvm-status"/>
+                <map:transform type="xslt" src="pages/administrator/jvmstatus/jvmstatus.xsl">
                     <map:parameter name="contextPath" value="{request:contextPath}"/>
                     <map:parameter name="pluginName" value="{request-attr:pluginName}"/>
                     <map:parameter name="workspaceName" value="{request-attr:workspaceName}"/>
@@ -280,25 +285,12 @@
                 </map:transform>
                 <map:serialize type="xml"/>
             </map:match>
-        
-            <map:match pattern="administrator/jvmstatus/refresh">
-                <map:act type="administrator-jvmstatus-gc"/>
-                <map:generate type="administrator-jvmstatus" label="content">
-                    <map:parameter name="properties" value="false"/>
-                </map:generate>
-                <map:transform type="xslt" src="pages/administrator/jvmstatus/refresh.xsl">
-                    <map:parameter name="contextPath" value="{request:contextPath}"/>
-                    <map:parameter name="pluginName" value="{request-attr:pluginName}"/>
-                    <map:parameter name="workspaceName" value="{request-attr:workspaceName}"/>
-                    <map:parameter name="workspaceURI" value="{request-attr:workspaceURI}"/>
-                </map:transform>
-                <map:transform type="i18n">
-                    <map:parameter name="locale" value="{locale:locale}"/>
-                    <map:parameter name="plugin" value="{request-attr:pluginName}"/>
-                </map:transform>
+            
+            <map:match pattern="administrator/system-properties">
+                <map:generate type="system-properties"/>
                 <map:serialize type="xml"/>
             </map:match>
-            
+                 
             <map:match pattern="administrator/jvmstatus/threads_**.log">
                 <map:read type="administrator-jvmstatus-threadlog"/>

Index: main/plugin-core/src/org/ametys/runtime/plugins/core/administrator/jvmstatus/GCAction.java
===================================================================
--- main/plugin-core/src/org/ametys/runtime/plugins/core/administrator/jvmstatus/GCAction.java	(revision 31873)
+++ main/plugin-core/src/org/ametys/runtime/plugins/core/administrator/jvmstatus/GCAction.java	(nonexistent)
@@ -1,48 +0,0 @@
-/*
- *  Copyright 2012 Anyware Services
- *
- *  Licensed under the Apache License, Version 2.0 (the "License");
- *  you may not use this file except in compliance with the License.
- *  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
- */
-package org.ametys.runtime.plugins.core.administrator.jvmstatus;
-
-import java.util.Map;
-
-import org.apache.avalon.framework.parameters.Parameters;
-import org.apache.avalon.framework.thread.ThreadSafe;
-import org.apache.cocoon.acting.AbstractAction;
-import org.apache.cocoon.environment.ObjectModelHelper;
-import org.apache.cocoon.environment.Redirector;
-import org.apache.cocoon.environment.Request;
-import org.apache.cocoon.environment.SourceResolver;
-
-/**
- * Simple action calling System.gc().<br>
- * Used in admin section.
- */
-public class GCAction extends AbstractAction implements ThreadSafe
-{
-    public Map act(Redirector redirector, SourceResolver resolver, Map objectModel, String source, Parameters parameters) throws Exception
-    {
-        Request request = ObjectModelHelper.getRequest(objectModel);
-        if (request.getParameter("gc") != null)
-        {
-            if (getLogger().isInfoEnabled())
-            {
-                getLogger().info("Administrator is garbage collecting");
-            }
-            System.gc();
-        }
-        
-        return EMPTY_MAP;
-    }
-}
Index: main/plugin-core/src/org/ametys/runtime/plugins/core/administrator/jvmstatus/GeneralStatusGenerator.java
===================================================================
--- main/plugin-core/src/org/ametys/runtime/plugins/core/administrator/jvmstatus/GeneralStatusGenerator.java	(revision 0)
+++ main/plugin-core/src/org/ametys/runtime/plugins/core/administrator/jvmstatus/GeneralStatusGenerator.java	(revision 0)
@@ -0,0 +1,68 @@
+/*
+ *  Copyright 2015 Anyware Services
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ */
+package org.ametys.runtime.plugins.core.administrator.jvmstatus;
+
+import java.io.IOException;
+import java.lang.management.ManagementFactory;
+import java.lang.management.OperatingSystemMXBean;
+import java.lang.management.RuntimeMXBean;
+import java.util.Date;
+
+import org.apache.cocoon.ProcessingException;
+import org.apache.cocoon.generation.AbstractGenerator;
+import org.apache.cocoon.xml.XMLUtils;
+import org.apache.commons.lang3.StringUtils;
+import org.xml.sax.SAXException;
+
+import org.ametys.runtime.util.parameter.ParameterHelper;
+
+
+/**
+ * SAXes general information about the application 
+ */
+public class GeneralStatusGenerator extends AbstractGenerator
+{
+    public void generate() throws IOException, SAXException, ProcessingException
+    {
+        
+        contentHandler.startDocument();
+        OperatingSystemMXBean osBean = ManagementFactory.getOperatingSystemMXBean();
+        RuntimeMXBean rBean = ManagementFactory.getRuntimeMXBean();
+        
+        XMLUtils.startElement(contentHandler, "characteristics");
+        XMLUtils.createElement(contentHandler, "osTime", ParameterHelper.valueToString(new Date()));
+        
+        XMLUtils.createElement(contentHandler, "osName", osBean.getName());
+        XMLUtils.createElement(contentHandler, "osVersion", osBean.getVersion());
+        
+        String osPatch = System.getProperty("sun.os.patch.level");
+        if (StringUtils.isNotEmpty(osPatch))
+        {
+            XMLUtils.createElement(contentHandler, "osPatch", osPatch);
+        }
+        
+        XMLUtils.createElement(contentHandler, "availableProc", String.valueOf(osBean.getAvailableProcessors()));
+        XMLUtils.createElement(contentHandler, "architecture", osBean.getArch());
+        
+        XMLUtils.createElement(contentHandler, "javaVendor", System.getProperty("java.vendor"));
+        XMLUtils.createElement(contentHandler, "javaVersion", System.getProperty("java.version"));
+        XMLUtils.createElement(contentHandler, "jvmName", rBean.getVmName());
+        XMLUtils.createElement(contentHandler, "startTime", ParameterHelper.valueToString(new Date(rBean.getStartTime())));
+        
+        XMLUtils.endElement(contentHandler, "characteristics");
+        contentHandler.endDocument();
+    }
+}
Index: main/plugin-core/src/org/ametys/runtime/plugins/core/administrator/jvmstatus/JVMStatusGenerator.java
===================================================================
--- main/plugin-core/src/org/ametys/runtime/plugins/core/administrator/jvmstatus/JVMStatusGenerator.java	(revision 31873)
+++ main/plugin-core/src/org/ametys/runtime/plugins/core/administrator/jvmstatus/JVMStatusGenerator.java	(nonexistent)
@@ -1,199 +0,0 @@
-/*
- *  Copyright 2012 Anyware Services
- *
- *  Licensed under the Apache License, Version 2.0 (the "License");
- *  you may not use this file except in compliance with the License.
- *  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
- */
-package org.ametys.runtime.plugins.core.administrator.jvmstatus;
-
-import java.io.IOException;
-import java.lang.management.ManagementFactory;
-import java.lang.management.MemoryMXBean;
-import java.lang.management.OperatingSystemMXBean;
-import java.lang.management.RuntimeMXBean;
-import java.lang.management.ThreadMXBean;
-import java.util.Date;
-import java.util.Map;
-
-import org.apache.avalon.framework.service.ServiceException;
-import org.apache.avalon.framework.service.ServiceManager;
-import org.apache.cocoon.ProcessingException;
-import org.apache.cocoon.generation.ServiceableGenerator;
-import org.apache.cocoon.xml.AttributesImpl;
-import org.apache.cocoon.xml.XMLUtils;
-import org.apache.commons.lang3.StringUtils;
-import org.xml.sax.SAXException;
-
-import org.ametys.runtime.plugins.core.administrator.jvmstatus.monitoring.MonitoringExtensionPoint;
-import org.ametys.runtime.plugins.core.administrator.jvmstatus.monitoring.SampleManager;
-import org.ametys.runtime.plugins.core.administrator.jvmstatus.monitoring.MonitoringConstants.Period;
-import org.ametys.runtime.util.parameter.ParameterHelper;
-
-
-/**
- * SAXes general information about the application : JVM status, sessions count, system properties, ...
- */
-public class JVMStatusGenerator extends ServiceableGenerator
-{
-    private MonitoringExtensionPoint _monitoringExtensionPoint;
-
-    @Override
-    public void service(ServiceManager smanager) throws ServiceException
-    {
-        super.service(smanager);
-        _monitoringExtensionPoint = (MonitoringExtensionPoint) smanager.lookup(MonitoringExtensionPoint.ROLE);
-    }
-    
-    public void generate() throws IOException, SAXException, ProcessingException
-    {
-        
-        contentHandler.startDocument();
-        contentHandler.startElement("", "status", "status", new AttributesImpl());
-        
-        _generalStatus();
-        if (parameters.getParameterAsBoolean("properties", true))
-        {
-            _caracteristics();
-            _properties();
-            _samples();
-        }
-        
-        contentHandler.endElement("", "status", "status");
-        contentHandler.endDocument();
-    }
-
-    private void _caracteristics() throws SAXException
-    {
-        OperatingSystemMXBean osBean = ManagementFactory.getOperatingSystemMXBean();
-        RuntimeMXBean rBean = ManagementFactory.getRuntimeMXBean();
-        
-        XMLUtils.startElement(contentHandler, "caracteristics");
-
-        XMLUtils.createElement(contentHandler, "osName", osBean.getName());
-        XMLUtils.createElement(contentHandler, "osVersion", osBean.getVersion());
-        
-        String osPatch = System.getProperty("sun.os.patch.level");
-        if (StringUtils.isNotEmpty(osPatch))
-        {
-            XMLUtils.createElement(contentHandler, "osPatch", osPatch);
-        }
-        
-        XMLUtils.createElement(contentHandler, "availableProc", String.valueOf(osBean.getAvailableProcessors()));
-        XMLUtils.createElement(contentHandler, "architecture", osBean.getArch());
-        
-        XMLUtils.createElement(contentHandler, "javaVendor", System.getProperty("java.vendor"));
-        XMLUtils.createElement(contentHandler, "javaVersion", System.getProperty("java.version"));
-        XMLUtils.createElement(contentHandler, "jvmName", rBean.getVmName());
-        XMLUtils.createElement(contentHandler, "startTime", ParameterHelper.valueToString(new Date(rBean.getStartTime())));
-        
-        XMLUtils.endElement(contentHandler, "caracteristics");        
-    }
-
-    private void _generalStatus() throws SAXException
-    {
-        XMLUtils.startElement(contentHandler, "general");
-
-        XMLUtils.createElement(contentHandler, "osTime", ParameterHelper.valueToString(new Date()));
-
-        try
-        {
-            XMLUtils.createElement(contentHandler, "activeSessions", String.valueOf(SessionCountListener.getSessionCount()));
-        }
-        catch (IllegalStateException e)
-        {
-            // empty : no value in activeSession means an error
-        }
-        
-        try
-        {
-            XMLUtils.createElement(contentHandler, "activeRequests", String.valueOf(RequestCountListener.getCurrentRequestCount()));
-        }
-        catch (IllegalStateException e)
-        {
-            // empty : no value in activeSession means an error
-        }
-        
-        
-        ThreadMXBean tBean = ManagementFactory.getThreadMXBean();
-        MemoryMXBean mBean = ManagementFactory.getMemoryMXBean();
-        
-        XMLUtils.createElement(contentHandler, "activeThreads", String.valueOf(tBean.getThreadCount()));
-        long[] lockedThreads = ManagementFactory.getThreadMXBean().findMonitorDeadlockedThreads();
-        XMLUtils.createElement(contentHandler, "deadlockThreads", lockedThreads != null ? String.valueOf(lockedThreads.length) : "0");
-        
-        XMLUtils.startElement(contentHandler, "memory");
-        
-        XMLUtils.startElement(contentHandler, "heap");
-        XMLUtils.createElement(contentHandler, "max", String.valueOf(mBean.getHeapMemoryUsage().getMax()));
-        XMLUtils.createElement(contentHandler, "used", String.valueOf(mBean.getHeapMemoryUsage().getUsed()));
-        XMLUtils.createElement(contentHandler, "commited", String.valueOf(mBean.getHeapMemoryUsage().getCommitted()));
-        XMLUtils.endElement(contentHandler, "heap");
-
-        long nonHeapUsed = mBean.getNonHeapMemoryUsage().getUsed();
-        long nonHeapCommited = mBean.getNonHeapMemoryUsage().getCommitted();
-        long nonHeapMax = Math.max(mBean.getNonHeapMemoryUsage().getMax(), nonHeapCommited);
-
-        XMLUtils.startElement(contentHandler, "nonHeap");
-        XMLUtils.createElement(contentHandler, "max", String.valueOf(nonHeapMax));
-        XMLUtils.createElement(contentHandler, "used", String.valueOf(nonHeapUsed));
-        XMLUtils.createElement(contentHandler, "commited", String.valueOf(nonHeapCommited));
-        XMLUtils.endElement(contentHandler, "nonHeap");
-
-        XMLUtils.endElement(contentHandler, "memory");
-
-        XMLUtils.endElement(contentHandler, "general");
-    }
-    
-    private void _properties() throws SAXException
-    {
-        RuntimeMXBean rBean = ManagementFactory.getRuntimeMXBean();
-
-        XMLUtils.startElement(contentHandler, "properties");
-
-        Map<String, String> properties = rBean.getSystemProperties();
-        for (String key : properties.keySet())
-        {
-            if (key.indexOf(":") == -1)
-            {
-                XMLUtils.createElement(contentHandler, key, properties.get(key));
-            }
-        }
-        
-        XMLUtils.endElement(contentHandler, "properties");
-    }
-    
-    private void _samples() throws SAXException
-    {
-        XMLUtils.startElement(contentHandler, "samples");
-
-        XMLUtils.startElement(contentHandler, "periods");
-        for (Period period : Period.values())
-        {
-            XMLUtils.createElement(contentHandler, "period", period.toString());
-        }
-        XMLUtils.endElement(contentHandler, "periods");
-        
-        for (String extensionId : _monitoringExtensionPoint.getExtensionsIds())
-        {
-            SampleManager sampleManager = _monitoringExtensionPoint.getExtension(extensionId);
-
-            AttributesImpl attrs = new AttributesImpl();
-            attrs.addCDATAAttribute("id", sampleManager.getId());
-            XMLUtils.startElement(contentHandler, "sample", attrs);
-            sampleManager.getLabel().toSAX(contentHandler, "label");
-            sampleManager.getDescription().toSAX(contentHandler, "description");
-            XMLUtils.endElement(contentHandler, "sample");
-        }
-        
-        XMLUtils.endElement(contentHandler, "samples");
-    }
-}
Index: main/plugin-core/src/org/ametys/runtime/plugins/core/administrator/jvmstatus/JVMStatusHelper.java
===================================================================
--- main/plugin-core/src/org/ametys/runtime/plugins/core/administrator/jvmstatus/JVMStatusHelper.java	(revision 0)
+++ main/plugin-core/src/org/ametys/runtime/plugins/core/administrator/jvmstatus/JVMStatusHelper.java	(revision 0)
@@ -0,0 +1,155 @@
+package org.ametys.runtime.plugins.core.administrator.jvmstatus;
+
+import java.lang.management.ManagementFactory;
+import java.lang.management.MemoryMXBean;
+import java.lang.management.RuntimeMXBean;
+import java.lang.management.ThreadMXBean;
+import java.text.SimpleDateFormat;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import org.apache.avalon.framework.component.Component;
+import org.apache.avalon.framework.logger.AbstractLogEnabled;
+import org.apache.avalon.framework.service.ServiceException;
+import org.apache.avalon.framework.service.ServiceManager;
+import org.apache.avalon.framework.service.Serviceable;
+import org.apache.cocoon.xml.AttributesImpl;
+import org.apache.cocoon.xml.XMLUtils;
+
+import org.ametys.runtime.plugins.core.administrator.jvmstatus.monitoring.MonitoringConstants.Period;
+import org.ametys.runtime.plugins.core.administrator.jvmstatus.monitoring.MonitoringExtensionPoint;
+import org.ametys.runtime.plugins.core.administrator.jvmstatus.monitoring.SampleManager;
+import org.ametys.runtime.ui.Callable;
+import org.ametys.runtime.util.I18nUtils;
+import org.ametys.runtime.util.parameter.ParameterHelper;
+
+/**
+ * Methods allowing the resfreshing of the jvm status tool 
+ */
+public class JVMStatusHelper extends AbstractLogEnabled implements Component, Serviceable
+{
+    /** The monitoring extension point */
+    private MonitoringExtensionPoint _monitoringExtensionPoint;
+    
+    /** Component containing i18n utilitary methods */
+    private I18nUtils _i18nUtils;
+    
+    public void service(ServiceManager manager) throws ServiceException
+    {
+        _monitoringExtensionPoint = (MonitoringExtensionPoint) manager.lookup(MonitoringExtensionPoint.ROLE);
+        _i18nUtils = (I18nUtils) manager.lookup(I18nUtils.ROLE);
+    }
+    
+    /**
+     * Runs a garbage collector.
+     * @return an empty map
+     */
+    @Callable
+    public Map<String, Object> garbageCollect ()
+    {
+        if (getLogger().isInfoEnabled())
+        {
+            getLogger().info("Administrator is garbage collecting");
+        }
+        
+        System.gc();
+        
+        return Collections.EMPTY_MAP;
+    }
+    
+    /**
+     * Retrieves information about the general status of the system 
+     * @return a map containing the general status information
+     */
+    @Callable
+    public Map<String, Object> getGeneralStatus()
+    {
+        Map<String, Object> result = new HashMap<String, Object>();
+
+        result.put("osTime", ParameterHelper.valueToString(new Date()));
+        try
+        {
+            result.put("activeSessions", SessionCountListener.getSessionCount());
+        }
+        catch (IllegalStateException e)
+        {
+            // empty : no value in activeSession means an error
+        }
+        
+        try
+        {
+            result.put("activeRequests", RequestCountListener.getCurrentRequestCount());
+        }
+        catch (IllegalStateException e)
+        {
+            // empty : no value in activeSession means an error
+        }
+        
+        
+        ThreadMXBean tBean = ManagementFactory.getThreadMXBean();
+        MemoryMXBean mBean = ManagementFactory.getMemoryMXBean();
+        RuntimeMXBean rBean = ManagementFactory.getRuntimeMXBean();
+        
+        result.put("activeThreads", tBean.getThreadCount());
+        long[] lockedThreads = ManagementFactory.getThreadMXBean().findMonitorDeadlockedThreads();
+        
+        result.put("deadlockThreads", lockedThreads != null ? String.valueOf(lockedThreads.length) : "0");
+    
+        result.put("heap-memory-max", mBean.getHeapMemoryUsage().getMax());
+        result.put("heap-memory-used", mBean.getHeapMemoryUsage().getUsed());
+        result.put("heap-memory-commited", mBean.getHeapMemoryUsage().getCommitted());
+        
+        long nonHeapUsed = mBean.getNonHeapMemoryUsage().getUsed();
+        long nonHeapCommited = mBean.getNonHeapMemoryUsage().getCommitted();
+        long nonHeapMax = Math.max(mBean.getNonHeapMemoryUsage().getMax(), nonHeapCommited);
+
+        result.put("non-heap-memory-max", nonHeapMax);
+        result.put("non-heap-memory-used", nonHeapUsed);
+        result.put("non-heap-memory-commited", nonHeapCommited);
+        
+        result.put("startTime", ParameterHelper.valueToString(new Date(rBean.getStartTime())));
+        
+        return result;
+    }
+    
+    /**
+     * Retrieves the monitoring data 
+     * @return a map containing the monitoring data
+     */
+    @Callable
+    public Map<String, Object> getMonitoringData()
+    {
+        Map<String, Object> result = new HashMap<> ();
+        
+        Map<String, Object> samples = new HashMap<> ();
+        List<String> periods = new ArrayList<> ();
+        
+        for (Period period : Period.values())
+        {
+            periods.add(period.toString());
+        }
+        
+        samples.put("periods", periods);
+        
+        List<Map<String, String>> sampleList = new ArrayList<> ();
+        for (String extensionId : _monitoringExtensionPoint.getExtensionsIds())
+        {
+            Map<String, String> sample = new HashMap<> ();
+            SampleManager sampleManager = _monitoringExtensionPoint.getExtension(extensionId);
+
+            sample.put("id", sampleManager.getId());
+            sample.put("label", _i18nUtils.translate(sampleManager.getLabel()));
+            sample.put("description", _i18nUtils.translate(sampleManager.getDescription()));
+            
+            sampleList.add(sample);
+        }
+        
+        samples.put("sampleList", sampleList);
+        result.put("samples", samples);
+        return result;
+    }
+}
Index: main/plugin-core/src/org/ametys/runtime/plugins/core/administrator/jvmstatus/SystemPropertiesGenerator.java
===================================================================
--- main/plugin-core/src/org/ametys/runtime/plugins/core/administrator/jvmstatus/SystemPropertiesGenerator.java	(revision 0)
+++ main/plugin-core/src/org/ametys/runtime/plugins/core/administrator/jvmstatus/SystemPropertiesGenerator.java	(revision 0)
@@ -0,0 +1,42 @@
+package org.ametys.runtime.plugins.core.administrator.jvmstatus;
+
+import java.io.IOException;
+import java.lang.management.ManagementFactory;
+import java.lang.management.RuntimeMXBean;
+import java.util.Map;
+
+import org.apache.cocoon.ProcessingException;
+import org.apache.cocoon.generation.AbstractGenerator;
+import org.apache.cocoon.xml.AttributesImpl;
+import org.apache.cocoon.xml.XMLUtils;
+import org.xml.sax.SAXException;
+
+/**
+ * SAXes the system properties 
+ */
+public class SystemPropertiesGenerator extends AbstractGenerator
+{
+    public void generate() throws IOException, SAXException, ProcessingException
+    {
+        contentHandler.startDocument();
+        RuntimeMXBean rBean = ManagementFactory.getRuntimeMXBean();
+
+        XMLUtils.startElement(contentHandler, "properties");
+
+        Map<String, String> properties = rBean.getSystemProperties();
+        for (String key : properties.keySet())
+        {
+            if (key.indexOf(":") == -1)
+            {   
+                AttributesImpl attrs = new AttributesImpl();
+                attrs.addCDATAAttribute("name", key);
+                attrs.addCDATAAttribute("value", properties.get(key));
+                
+                XMLUtils.createElement(contentHandler, "property", attrs);
+            }
+        }
+        
+        XMLUtils.endElement(contentHandler, "properties");
+        contentHandler.endDocument();
+    }
+}
