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
\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
* @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
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<xml_tagname_begin$1xml_tagname_end$2>');\r
+ xmlString = xmlString.replace(TAG_END_PATTERN, '</xml_tagname_begin$1xml_tagname_end>xml_div_end');\r
+ xmlString = xmlString.replace(TAG_CLOSE_PATTERN, '>');\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
* @return {Boolean}\r
*/\r
addScroll : function(){\r
- return true;\r
+ return false;\r
},\r
/**\r
* Called at destruction time\r