--- /dev/null
+// (c) BenoƮt PIN 2006-2007
+// http://plinn.org
+// Licence GPL
+
+function XMLExport() {
+ this.domDoc = Sarissa.getDomDocument('http://plinn.org/namespaces/plinn_document/1.0', 'plinn');
+ this.rootNode = this.domDoc.documentElement;
+}
+
+XMLExport.prototype.getXML = function() {
+ this.exportDocument();
+ var s = new XMLSerializer();
+ XML_OUTPUT.value = s.serializeToString(this.domDoc);
+};
+
+
+XMLExport.prototype.exportDocument = function() {
+ this.exportRectangles(LAYER_MANAGER.space, this.rootNode);
+};
+
+XMLExport.prototype.exportRectangles = function(baseObj, baseNode) {
+ var doc = this.domDoc;
+ var childs = baseObj.childNodes;
+
+ for(var i = 0 ; i < childs.length ; i++) {
+ rectObj = childs[i].rectangle;
+ if (!rectObj)
+ continue;
+
+ // rectangle
+ var rectEl = doc.createElement("rectangle");
+ rectEl.setAttribute("width", rectObj.width);
+ rectEl.setAttribute("height", rectObj.height);
+ rectEl.setAttribute("elementKey", rectObj.elementKey);
+ rectEl.setAttribute("ddOptions", rectObj.ddOptions);
+ rectEl.setAttribute("ratio", rectObj.ratio);
+ rectEl.setAttribute("visibility", rectObj.style.visibility);
+
+ // upperLeftCorner
+ var ulc = doc.createElement("upperLeftCorner");
+ var point = doc.createElement("point");
+ point.setAttribute("x", rectObj.upperLeftCorner.x);
+ point.setAttribute("y", rectObj.upperLeftCorner.y);
+ ulc.appendChild(point);
+ rectEl.appendChild(ulc);
+
+ // raw data
+ var rdata = doc.createElement("rawData");
+ if (rectObj.getRawData) {
+ var rawEl = doc.createTextNode(rectObj.getRawData());
+ rdata.appendChild(rawEl);
+ }
+ rectEl.appendChild(rdata);
+
+ baseNode.appendChild(rectEl);
+
+ this.exportRectangles(rectObj.node, rectEl);
+ }
+};
+
+function XMLImport(url, root_container) {
+ this.root_container = root_container;
+ var thisImporter = this;
+ var req = new XMLHttpRequest();
+
+ req.onreadystatechange = function() {
+ if(req.readyState == 4)
+ thisImporter.constructDocument(req);
+ }
+ req.open("GET", url, true);
+ req.send(null);
+}
+
+XMLImport.prototype.constructDocument = function(req) {
+ var rootNode = req.responseXML.documentElement;
+ var layerElements = rootNode.childNodes;
+ initLayerManager(this.root_container, true);
+ var layerElement;
+ for (var i = 0 ; i < layerElements.length ; i++) {
+ layerElement = layerElements[i];
+ if (i==0) { // initialize LAYER_MANAGER from first layer data
+ LAYER_MANAGER.defaultLayerWidth = parseInt(layerElement.getAttribute("width"));
+ LAYER_MANAGER.defaultLayerHeight = parseInt(layerElement.getAttribute("height"));
+ LAYER_MANAGER.addLayer("relative");
+ }
+ else
+ LAYER_MANAGER.addLayer();
+
+ // common part
+ if (layerElement.getAttribute("visibility") == "hidden")
+ LAYER_MANAGER.toggleLayerVisibility();
+
+ this.constructRectangles(CURRENT_LAYER, layerElement)
+ }
+};
+
+XMLImport.prototype.constructRectangles = function(baseObj, baseNode) {
+ var rectangleElements = baseNode.childNodes;
+ var rectE, rect, ulcE, ulc, rawDataE, rawData, putFunc;
+
+ for (var i = 0 ; i < rectangleElements.length ; i ++) {
+ rectE = rectangleElements[i];
+ if (rectE.nodeName != "rectangle")
+ continue;
+ ulcE = rectE.childNodes[0].childNodes[0];
+ rawDataE = rectE.childNodes[1]
+
+ ulc = new Point( parseInt(ulcE.getAttribute("x")), parseInt(ulcE.getAttribute("y")) )
+ rect = new Rectangle(ulc,
+ parseInt(rectE.getAttribute("width")),
+ parseInt(rectE.getAttribute("height")),
+ rectE.getAttribute("elementKey"),
+ parseInt(rectE.getAttribute("ddOptions")),
+ parseFloat(rectE.getAttribute("ratio")));
+
+ putFunc = ELEMENTS_POOL[rectE.getAttribute("elementKey")]["putData"]
+ if (putFunc)
+ putFunc.apply(rect, [rawDataE.childNodes[0].nodeValue]);
+
+ rect.draw(baseObj);
+ }
+};
+
+/* utils */
+function _plinnDocumentBeforeSubmit() {
+ with (GLOBAL_DD_CONTROLER.ddEventCaptureElmt) {
+ onmousedown=null;
+ onmousemouse=null;
+ onmouseup=null;
+ }
+ new XMLExport().getXML();
+}
\ No newline at end of file