X-Git-Url: http://git.argeo.org/?a=blobdiff_plain;f=server%2Forg.argeo.slc.ria%2Fsrc%2Fargeo-ria-lib%2Fjcr%2Fclass%2Forg%2Fargeo%2Fjcr%2Fria%2Fviews%2FPlainXmlViewer.js;h=92b6755e89d59cbf399ffaddf090b56332e9a03b;hb=730d2bd9dcd58cf9ff28115174a2a43f2c1359cd;hp=a164315a51a3e32631732734c5c4ff1e741226d4;hpb=3f7517acb8c3d2d5e90ddee64a7a2890be301468;p=gpl%2Fargeo-slc.git diff --git a/server/org.argeo.slc.ria/src/argeo-ria-lib/jcr/class/org/argeo/jcr/ria/views/PlainXmlViewer.js b/server/org.argeo.slc.ria/src/argeo-ria-lib/jcr/class/org/argeo/jcr/ria/views/PlainXmlViewer.js index a164315a5..92b6755e8 100644 --- a/server/org.argeo.slc.ria/src/argeo-ria-lib/jcr/class/org/argeo/jcr/ria/views/PlainXmlViewer.js +++ b/server/org.argeo.slc.ria/src/argeo-ria-lib/jcr/class/org/argeo/jcr/ria/views/PlainXmlViewer.js @@ -8,7 +8,21 @@ qx.Class.define("org.argeo.jcr.ria.views.PlainXmlViewer", { * See {@link org.argeo.ria.event.CommandsManager#definitions} for the keys to use for defining commands. */ commands : { - init : {} + init : { + "close" : { + label : "Close", + shared : true, + icon : "org.argeo.slc.ria/window-close.png", + shortcut : "Control+w", + enabled : true, + menu : "Test", + toolbar : "result", + callback : function(e){ + this._viewPane.closeCurrent(); + }, + command : null + } + } }, viewSelection : { nullable:false, @@ -21,9 +35,6 @@ qx.Class.define("org.argeo.jcr.ria.views.PlainXmlViewer", { instanceLabel : { init:"Xml Editor", event : "changeInstanceLabel" - }, - dataModel : { - } }, @@ -40,11 +51,14 @@ qx.Class.define("org.argeo.jcr.ria.views.PlainXmlViewer", { * @param data {Mixed} Any object or data passed by the initiator of the view * @return {Boolean} */ - init : function(viewPane, dataModel){ + init : function(viewPane, jcrNode){ + this._viewPane = viewPane; this.setViewSelection(new org.argeo.ria.components.ViewSelection(viewPane.getViewId())); this.setLayout(new qx.ui.layout.VBox()); - this.setDataModel(dataModel); - + + this.setInstanceId("edit:" + jcrNode.getPath()); + this.setInstanceLabel("Node '" + jcrNode.getName()+"'"); + this.htmlPane = new qx.ui.embed.Html(); this.htmlPane.setOverflow("auto", "auto"); this.htmlPane.setDecorator("input"); @@ -55,52 +69,56 @@ qx.Class.define("org.argeo.jcr.ria.views.PlainXmlViewer", { * The implementation should contain the real data loading (i.o. query...) * @return {Boolean} */ - load : function(){ - var dataModel = this.getDataModel(); - dataModel.addListener("changeSelection", function(event){ - var selection = event.getData(); - if(!selection.length) { - this.htmlPane.setHtml(""); - return; + load : function(jcrNode){ + // Load full XML (deep) + //jcrNode.load(-1); + var fakeNode = new org.argeo.jcr.ria.model.Node(jcrNode.getName(), jcrNode.getNodeProvider(), true); + fakeNode.setPath(jcrNode.getPath()); + fakeNode.addListener("changeLoadState", function(event){ + if(event.getData() == "loaded"){ + var xmlString = fakeNode.toXmlString(true); + this._loadXmlString(xmlString); + } + }, this); + fakeNode.load(-1); + }, + + _loadXmlString : function(xmlString){ + var TAG_START_PATTERN = new RegExp("<([0-9a-zA-Z\.:]+)([^>]*)>", "gi"); + var TAG_END_PATTERN = new RegExp("", "gi"); + var TAG_CLOSE_PATTERN = new RegExp("(/?>)", "gi"); + var TAG_ATTRIBUTE = new RegExp("\\s([0-9a-zA-Z:_]+)\\=\"([^\"]*)\"", "gi"); + // Not implemented yet + var TAG_COMMENT = new RegExp("()", "gi"); + var TAG_CDATA_START = new RegExp("(\\)", "gi"); + + xmlString = xmlString.replace(TAG_START_PATTERN, 'xml_div_begin<xml_tagname_begin$1xml_tagname_end$2>'); + xmlString = xmlString.replace(TAG_END_PATTERN, '</xml_tagname_begin$1xml_tagname_end>xml_div_end'); + xmlString = xmlString.replace(TAG_CLOSE_PATTERN, '>'); + + xmlString = xmlString.replace(TAG_ATTRIBUTE, ' xml_attname_begin$1xml_attname_end="xml_attvalue_begin$2xml_attvalue_end"'); + + //xmlString = qx.xml.String.escape(xmlString); + xmlString = xmlString.replace(new RegExp("(xml_div_begin)", "g"), '
'); + xmlString = xmlString.replace(new RegExp("(xml_div_end)", "g"), '
'); + xmlString = xmlString.replace(new RegExp("(xml_tagname_begin)", "g"), ''); + xmlString = xmlString.replace(new RegExp("(xml_tagname_end)", "g"), ''); + xmlString = xmlString.replace(new RegExp("(xml_attname_begin)", "g"), ''); + xmlString = xmlString.replace(new RegExp("(xml_attname_end)", "g"), ''); + xmlString = xmlString.replace(new RegExp("(xml_attvalue_begin)", "g"), ''); + xmlString = xmlString.replace(new RegExp("(xml_attvalue_end)", "g"), ''); + xmlString = '
' + xmlString + '
'; + this.htmlPane.setHtml(xmlString); + var call = new qx.util.DeferredCall(function(){ + var htmlDom = this.htmlPane.getContentElement().getDomElement(); + var spans = qx.bom.Selector.query("span", htmlDom); + for(var i=0;i]*)>", "gi"); - var TAG_END_PATTERN = new RegExp("", "gi"); - var TAG_CLOSE_PATTERN = new RegExp("(/?>)", "gi"); - var TAG_ATTRIBUTE = new RegExp("\\s([0-9a-zA-Z:_]+)\\=\"([^\"]*)\"", "gi"); - // Not implemented yet - var TAG_COMMENT = new RegExp("()", "gi"); - var TAG_CDATA_START = new RegExp("(\\)", "gi"); - - xmlString = xmlString.replace(TAG_START_PATTERN, 'xml_div_begin<xml_tagname_begin$1xml_tagname_end$2>'); - xmlString = xmlString.replace(TAG_END_PATTERN, '</xml_tagname_begin$1xml_tagname_end>xml_div_end'); - xmlString = xmlString.replace(TAG_CLOSE_PATTERN, '>'); - - xmlString = xmlString.replace(TAG_ATTRIBUTE, ' xml_attname_begin$1xml_attname_end="xml_attvalue_begin$2xml_attvalue_end"'); - - //xmlString = qx.xml.String.escape(xmlString); - xmlString = xmlString.replace(new RegExp("(xml_div_begin)", "g"), '
'); - xmlString = xmlString.replace(new RegExp("(xml_div_end)", "g"), '
'); - xmlString = xmlString.replace(new RegExp("(xml_tagname_begin)", "g"), ''); - xmlString = xmlString.replace(new RegExp("(xml_tagname_end)", "g"), ''); - xmlString = xmlString.replace(new RegExp("(xml_attname_begin)", "g"), ''); - xmlString = xmlString.replace(new RegExp("(xml_attname_end)", "g"), ''); - xmlString = xmlString.replace(new RegExp("(xml_attvalue_begin)", "g"), ''); - xmlString = xmlString.replace(new RegExp("(xml_attvalue_end)", "g"), ''); - xmlString = '
' + xmlString + '
'; - this.htmlPane.setHtml(xmlString); - var call = new qx.util.DeferredCall(function(){ - var htmlDom = this.htmlPane.getContentElement().getDomElement(); - var spans = qx.bom.Selector.query("span", htmlDom); - for(var i=0;i