]> git.argeo.org Git - gpl/argeo-slc.git/commitdiff
Simple XML Highlighter
authorCharles du Jeu <charles.dujeu@gmail.com>
Wed, 28 Apr 2010 08:17:23 +0000 (08:17 +0000)
committerCharles du Jeu <charles.dujeu@gmail.com>
Wed, 28 Apr 2010 08:17:23 +0000 (08:17 +0000)
git-svn-id: https://svn.argeo.org/slc/trunk@3505 4cfe0d0a-d680-48aa-b62c-e0a02a3f76cc

server/org.argeo.slc.ria/src/argeo-ria-lib/jcr/class/org/argeo/jcr/ria/views/XmlNodeEditor.js

index 2493edda84cab20e1664f7f734f05f250cd56f6a..2c1b25955d3e9bfd829a71eaee349529661188ac 100644 (file)
@@ -1,5 +1,5 @@
 qx.Class.define("org.argeo.jcr.ria.views.XmlNodeEditor", {\r
-       extend : qx.ui.embed.Html,\r
+       extend : qx.ui.container.Composite,\r
        implement : [org.argeo.ria.components.IView], \r
 \r
        properties : {\r
@@ -26,6 +26,10 @@ qx.Class.define("org.argeo.jcr.ria.views.XmlNodeEditor", {
        \r
        construct : function(){\r
                this.base(arguments);\r
+               this.setLayout(new qx.ui.layout.VBox());\r
+               this.htmlPane = new qx.ui.embed.Html();\r
+               this.htmlPane.setOverflow("auto", "auto");\r
+               this.add(this.htmlPane, {flex:1});\r
        },\r
        \r
        members : {\r
@@ -38,8 +42,7 @@ qx.Class.define("org.argeo.jcr.ria.views.XmlNodeEditor", {
                 * @return {Boolean}\r
                 */\r
                init : function(viewPane, data){\r
-                       this.setViewSelection(new org.argeo.ria.components.ViewSelection(viewPane.getViewId()));          \r
-                       this.setHtml("Hello!");\r
+                       this.setViewSelection(new org.argeo.ria.components.ViewSelection(viewPane.getViewId()));                                \r
                },\r
                /**\r
                 * The implementation should contain the real data loading (i.o. query...)\r
@@ -49,7 +52,32 @@ qx.Class.define("org.argeo.jcr.ria.views.XmlNodeEditor", {
                        rootNode.load();\r
                        rootNode.addListener("changeLoadState", function(){\r
                                var xmlString = rootNode.toXmlString(true);\r
-                               this.setHtml(qx.xml.String.escape(xmlString));\r
+                           var TAG_START_PATTERN = new RegExp("<([0-9a-zA-Z\.]+)([^>]*)>", "gi");\r
+                           var TAG_END_PATTERN = new RegExp("</([0-9a-zA-Z\.]+)>", "gi");\r
+                           var TAG_CLOSE_PATTERN = new RegExp("(/?>)", "gi");\r
+                           var TAG_ATTRIBUTE = new RegExp("\\s([0-9a-zA-Z:]+)\\=\"([^\"]*)\"", "gi");\r
+                           // Not implemented yet\r
+                           var TAG_COMMENT = new RegExp("(<!--.*-->)", "gi");\r
+                           var TAG_CDATA_START = new RegExp("(\\<!\\[CDATA\\[).*", "gi");\r
+                           var TAG_CDATA_END = new RegExp(".*(]]>)", "gi");\r
+                               \r
+                           xmlString = xmlString.replace(TAG_START_PATTERN, 'xml_div_begin&lt;xml_tagname_begin$1xml_tagname_end$2&gt;');\r
+                           xmlString = xmlString.replace(TAG_END_PATTERN, '&lt;/xml_tagname_begin$1xml_tagname_end&gt;xml_div_end');\r
+                           xmlString = xmlString.replace(TAG_CLOSE_PATTERN, '&gt;');\r
+                           \r
+                           xmlString = xmlString.replace(TAG_ATTRIBUTE, ' xml_attname_begin$1xml_attname_end="xml_attvalue_begin$2xml_attvalue_end"');\r
+                               \r
+                               //xmlString = qx.xml.String.escape(xmlString);\r
+                               xmlString = xmlString.replace(new RegExp("(xml_div_begin)", "g"), '<div style="padding-top:2px;padding-left:15px;">');\r
+                               xmlString = xmlString.replace(new RegExp("(xml_div_end)", "g"), '</div>');\r
+                               xmlString = xmlString.replace(new RegExp("(xml_tagname_begin)", "g"), '<b style="color:rgb(63,127,127);">');\r
+                               xmlString = xmlString.replace(new RegExp("(xml_tagname_end)", "g"), '</b>');\r
+                               xmlString = xmlString.replace(new RegExp("(xml_attname_begin)", "g"), '<b>');\r
+                               xmlString = xmlString.replace(new RegExp("(xml_attname_end)", "g"), '</b>');\r
+                               xmlString = xmlString.replace(new RegExp("(xml_attvalue_begin)", "g"), '<span style="color:rgb(0,0,255)">');\r
+                               xmlString = xmlString.replace(new RegExp("(xml_attvalue_end)", "g"), '</span>');\r
+                               xmlString = '<div style="margin-left:-10px;">' + xmlString + '</div>';\r
+                               this.htmlPane.setHtml(xmlString);\r
                        }, this);\r
                },\r
                /**\r
@@ -57,7 +85,7 @@ qx.Class.define("org.argeo.jcr.ria.views.XmlNodeEditor", {
                 * @return {Boolean}\r
                 */\r
                addScroll : function(){\r
-                       return true;\r
+                       return false;\r
                },\r
                /**\r
                 * Called at destruction time\r