]> git.argeo.org Git - gpl/argeo-slc.git/blobdiff - org.argeo.slc.webapp/src/main/webapp/source/class/org/argeo/ria/components/Logger.js
Refactoring part I (src move)
[gpl/argeo-slc.git] / org.argeo.slc.webapp / src / main / webapp / source / class / org / argeo / ria / components / Logger.js
diff --git a/org.argeo.slc.webapp/src/main/webapp/source/class/org/argeo/ria/components/Logger.js b/org.argeo.slc.webapp/src/main/webapp/source/class/org/argeo/ria/components/Logger.js
new file mode 100644 (file)
index 0000000..ab9a7a2
--- /dev/null
@@ -0,0 +1,94 @@
+/* ************************************************************************\r
+\r
+  Copyright: 2008 Argeo\r
+\r
+   License: \r
+\r
+   Authors: Charles du Jeu\r
+\r
+************************************************************************ */\r
+qx.Class.define("org.argeo.ria.components.Logger",\r
+{\r
+       type : "singleton",\r
+       extend : qx.ui.window.Window,\r
+  \r
+       construct : function(){\r
+               this.base(arguments, "Logs", "resource/slc/help-contents.png");\r
+               this.set({\r
+                       showMaximize : true,\r
+                       showMinimize : false,\r
+                       width: 550,\r
+                       height: 300\r
+               });\r
+               this.setLayout(new qx.ui.layout.Dock(0,5));\r
+               var buttonPane = new qx.ui.container.Composite(new qx.ui.layout.Canvas());\r
+               var closeButton = new qx.ui.form.Button("Close");               \r
+               closeButton.addListener("execute", function(e){\r
+                       this.hide();                    \r
+               }, this);\r
+               buttonPane.add(closeButton, {width:'20%',left:'40%'});\r
+               this.add(buttonPane, {edge:'south'});\r
+               this.setModal(false);\r
+               \r
+               var layout = new qx.ui.layout.VBox(2);          \r
+               this._logPane = new qx.ui.container.Composite(layout);\r
+               var deco = new qx.ui.decoration.Single(1, 'solid', '#000000');\r
+               deco.setBackgroundColor("#ffffff")\r
+               var scroller = new qx.ui.container.Scroll(this._logPane);\r
+               scroller.setDecorator(deco);\r
+               this.add(scroller, {edge:'center', width:'100%', height:'100%'});\r
+             // Build style sheet content\r
+             var style =\r
+             [\r
+               '.messages{font-size:0.9em}',\r
+               '.messages div{padding:0px 4px;}',\r
+               '.messages .offset{font-weight:bold;}',\r
+               '.messages .object{font-style:italic;}',\r
+       \r
+               '.messages .user-command{color:blue}',\r
+               '.messages .user-result{background:white}',\r
+               '.messages .user-error{background:#FFE2D5}',\r
+               '.messages .level-debug{background:white}',\r
+               '.messages .level-info{background:#DEEDFA}',\r
+               '.messages .level-warn{background:#FFF7D5}',\r
+               '.messages .level-error{background:#FFE2D5}',\r
+               '.messages .level-user{background:#E3EFE9}',\r
+               '.messages .type-string{color:black;font-weight:normal;}',\r
+               '.messages .type-number{color:#155791;font-weight:normal;}',\r
+               '.messages .type-boolean{color:#15BC91;font-weight:normal;}',\r
+               '.messages .type-array{color:#CC3E8A;font-weight:bold;}',\r
+               '.messages .type-map{color:#CC3E8A;font-weight:bold;}',\r
+               '.messages .type-key{color:#565656;font-style:italic}',\r
+               '.messages .type-class{color:#5F3E8A;font-weight:bold}',\r
+               '.messages .type-instance{color:#565656;font-weight:bold}',\r
+               '.messages .type-stringify{color:#565656;font-weight:bold}'\r
+             ];        \r
+             // Include stylesheet\r
+             qx.bom.Stylesheet.createElement(style.join(""));\r
+               \r
+       },\r
+       \r
+       members : {\r
+               process : function(entry){\r
+                       var wrapper = qx.log.appender.Util.toHtml(entry);\r
+                       var label = new qx.ui.basic.Label('<div class="messages"><div class="'+wrapper.className+'">'+wrapper.innerHTML+'</div></div>');\r
+                       label.setRich(true);\r
+                       if(entry.level == "error"){\r
+                               var alert = new org.argeo.ria.components.Modal("Error");\r
+                               alert.addContent(label.clone());                                \r
+                               alert.attachAndShow();\r
+                       }\r
+                       this._logPane.addAt(label, 0);\r
+               },\r
+               toggle : function(){\r
+                       this.show();\r
+                       this.center();\r
+               }\r
+       },\r
+\r
+       destruct : function()\r
+    {\r
+      qx.log.Logger.unregister(this);\r
+    }\r
+       \r
+});\r