X-Git-Url: https://scm.cri.ensmp.fr/git/PlinnDocument.git/blobdiff_plain/57a4d385a1d2806d5877f53b1fdb0bd94efa2dbb:/skins/layout_controlers.js..3b91dbcbb0b99d3d796a01813018db0e540bd0ec:/Products/PlinnDocument/skins/static/gitweb.js diff --git a/skins/layout_controlers.js b/skins/layout_controlers.js deleted file mode 100644 index c0a383e..0000000 --- a/skins/layout_controlers.js +++ /dev/null @@ -1,365 +0,0 @@ -// (c) Benoît PIN 2006-2007 -// http://plinn.org -// Licence GPL - -// Global variables -var CURRENT_LAYER; -var LAYER_MANAGER; -var XML_OUTPUT; -var PLINN_DOCUMENT_URL; -var GLOBAL_DD_CONTROLER; - -function initPlinn(root_container, xmlDataUrl) { - PLINN_DOCUMENT_URL = document.getElementById("PlinnDocumentUrl").innerHTML; - form_path = PLINN_DOCUMENT_URL+'/'; // for epoz - initElementsPool(); - initWidgets(); - var imp = new XMLImport(xmlDataUrl, root_container); - GLOBAL_DD_CONTROLER = new GlobalPlinnDDControler(root_container); -} - - -function initWidgets() { - // Global control widgets - XML_OUTPUT = document.getElementById("xml_output") -} - -function initLayerManager(root_container) { - LAYER_MANAGER = new LayerManager(root_container, new ColorIterator(240, 80, 60, 83)); // todo : move in config file -} - -function Point(x, y) { - this.x = x; - this.y = y; -} -Point.prototype.difference = function(point) { return new Point(this.x - point.x, this.y - point.y); }; -Point.prototype.addition = function(point) { return new Point(this.x + point.x, this.y + point.y); }; -Point.prototype.toString = function() { return "(" + String(this.x) + ", " + String(this.y) + ")"; }; - - -function GlobalPlinnDDControler(root_container) { - this.root_container = root_container; - this.dragInProgress = false; - - this.currentRect = null; - this.dragAllowed = null; - this.resizeAllowed = null; - this.scalable = null; - this.deleteAllowed = null; - - - //Constants - this.DRAG_MODE = 0; - this.RESIZE_MODE = 1; - - this.mode = this.DRAG_MODE; - this.ddEventCaptureElmt = document; - - // event listeners - var thisControler = this; - with (this.root_container) { - onmouseover = function(evt){thisControler.onmouseover(evt);}; - onmouseout = function(evt){thisControler.onmouseout(evt);}; - } - with (this.ddEventCaptureElmt) { - onmousedown = function(evt){thisControler.onmousedown(evt);}; - onmousemove = function(evt){thisControler.onmousemove(evt);}; - onmouseup = function(evt){thisControler.onmouseup(evt);}; - } -} - -GlobalPlinnDDControler.prototype.onmouseover = function(evt) { - if (this.dragInProgress) return; - var ob = getTargetedObject(evt); - var rect = ob.rectangle; - if (!rect) return; - rect.showHandles(); -}; - -GlobalPlinnDDControler.prototype.onmouseout = function(evt) { - if (this.dragInProgress) return; - var ob = getTargetedObject(evt); - var rect = ob.rectangle; - if (!rect) return; - rect.hideHandles(); -}; - -GlobalPlinnDDControler.prototype.onmousedown = function(evt) { - var ob = getTargetedObject(evt); - var rect = ob.rectangle; - - if (!rect) return; - - this.currentRect = rect; - this.setDDOptions(rect.ddOptions); - - var evt = getEventObject(evt); - if (this.deleteAllowed && ( - (evt.shiftKey && evt.altKey) || - (ob.tagName == "IMG" && ob.className=="rectangle_delimg")) ) { - if (confirm(PlinnLang["Do you realy want to delete ?"])) { - var hostDiv = rect.hostDiv; - hostDiv.parentNode.removeChild(hostDiv); - } - return; - } - - this.originalClickPoint = new Point(evt.screenX, evt.screenY); - this.originalSize = new Point(rect.width, rect.height); - this.offsetPoint = rect.upperLeftCorner.difference(this.originalClickPoint); - - if (evt.shiftKey || (ob.tagName == "SPAN" && ob.className=="resize_handle")) { - this.mode = this.RESIZE_MODE; - this.startDrag(evt, rect); - } - else if(evt.altKey || (ob.tagName == "DIV" && ob.className=="rectangle_header")){ - this.mode = this.DRAG_MODE; - this.startDrag(evt, rect); - } -}; - -GlobalPlinnDDControler.prototype.onmousemove = function(evt) { - var evt = getEventObject(evt); - if (this.dragInProgress) { - var rectangle = this.currentRect; - if (this.dragAllowed && (this.mode == this.DRAG_MODE)) { - var relativeEvtPoint = new Point(evt.screenX, evt.screenY).addition(this.offsetPoint); - rectangle.moveTo(relativeEvtPoint); - } - else if (this.resizeAllowed && (this.mode == this.RESIZE_MODE)) { - var delta = new Point(evt.screenX, evt.screenY).difference(this.originalClickPoint); - var size = this.originalSize.addition(delta); - if (this.scalable) { - size = new Point(size.x, Math.round(size.x * rectangle.ratio)); - } - - rectangle.resizeTo(size); - } - if (browser.isIE) { - try {document.selection.clear();} - catch (e){return;} - } - } -}; - -GlobalPlinnDDControler.prototype.onmouseup = function(evt) { - this.drop() - var rectangle = this.currentRect; - if (rectangle && rectangle.ondrop) - rectangle.ondrop(); -}; - - -GlobalPlinnDDControler.prototype.startDrag = function(evt, rect) { - disablePropagation(evt); - disableDefault(evt); - this.dragInProgress = true; -}; - -GlobalPlinnDDControler.prototype.drop = function() {this.dragInProgress = false;}; - -GlobalPlinnDDControler.prototype.setDDOptions = function(options){ - this.dragAllowed = (options & 1) == 1; - this.resizeAllowed = (options & 2) == 2; - this.scalable = (options & 4) == 4; - this.deleteAllowed = (options & 8) == 8; -}; - - - -function LayerManager(main_space, colorIterator) { - this.space = main_space; - this.layers = new Array(); - this.defaultLayerWidth = 800; - this.defaultLayerHeight = 600; - this.colorIterator = colorIterator; - this.layerSelector = document.getElementById('layerSelector'); - var thisManager = this; - - // add layer selector commands - // separator between layers list and layer commandes - var sepOpt = document.createElement("option"); - sepOpt.innerHTML = "--------"; - sepOpt.disabled = "disabled"; - sepOpt.style.color = "#888"; - - // new layer command - var addLayerOpt = document.createElement("option"); - addLayerOpt.value = "add"; - addLayerOpt.innerHTML = PlinnLang["New layer"]; - addLayerOpt.style.color = "#000"; - - // remove layer command - var removeLayerOpt = document.createElement("option"); - removeLayerOpt.value = "rm"; - removeLayerOpt.innerHTML = PlinnLang["Remove layer"]; - removeLayerOpt.disabled = "disabled"; - - with (this.layerSelector) { - appendChild(sepOpt); - appendChild(addLayerOpt); - appendChild(removeLayerOpt); - } - addListener(this.layerSelector, 'change', function(){thisManager.activateLayer();}); -} - -LayerManager.prototype.addLayer = function(position) { - var color = this.colorIterator.next(); - var mode = 6; // resize and delete - if (this.layers.length <= 1) - mode = 2; // resize only - var l = new Rectangle(new Point(0, 0), this.defaultLayerWidth, this.defaultLayerHeight, "DIV_ELEMENT", 2); - setBorderColor(l, color.toRGBString()); - l.onresize = resizeOnMouseMove; - l.ondrop = resizeOnDrop; - l.style.overflow = "hidden"; - l.draw(this.space, position); - var index = this.layers.push(l) - 1; - - var opt = document.createElement("option"); - strId = String(index); - opt.value = strId; - opt.id = "layer_" + strId; - opt.innerHTML = PlinnLang["Layer "] + strId; - opt.style.color = color.toRGBString(); - this.layerSelector.insertBefore(opt, this.layerSelector.childNodes[this.layers.length-1]); - - // If there's only one layer, the remove command is disabled. - if (this.layers.length > 1) { - var rmCommand = this.layerSelector.childNodes[this.layerSelector.length -1] - rmCommand.removeAttribute("disabled"); - rmCommand.style.color="#000"; - } - this.activateLayer(index); -}; - -LayerManager.prototype.activateLayer = function(index) { - var layerSelector = this.layerSelector; - var index = (index != null) ? index : layerSelector.value; - // handle commands - index = ( Number(index) || Number(index ) == 0 ) ? Number(index) : index - - if (typeof(index) == typeof('')) { - switch (index) { - case "add" : - this.addLayer(); - break; - case "rm" : - this.removeCurrentLayer(); - break; - }; - return; - } - - CURRENT_LAYER = this.layers[index]; - this._syncLayerStatusImage(); - var opt = document.getElementById("layer_" + String(index)); - layerSelector.selectedIndex = opt.index; - layerSelector.style.color = opt.style.color; - this.putCurrentLayerOnTop(); -}; - - -LayerManager.prototype.putCurrentLayerOnTop = function() { - for(var i = 0 ; i < this.layers.length ; i++) { - layer = this.layers[i]; - if (layer == CURRENT_LAYER) - layer.style.zIndex = String(this.layers.length); - else - layer.style.zIndex = String(i); - } -}; - -LayerManager.prototype.toggleLayerVisibility = function(){ - var currentVisibility = CURRENT_LAYER.style.visibility; - if (currentVisibility == "hidden") - CURRENT_LAYER.style.visibility = "visible"; - else - CURRENT_LAYER.style.visibility = "hidden"; - - this._syncLayerStatusImage(); -}; - -LayerManager.prototype._syncLayerStatusImage = function() { - var layerStatusImage = document.getElementById("layer_status"); - if (CURRENT_LAYER.style.visibility == "hidden") { - layerStatusImage.src = "plinn_icons/hidden_layer.gif"; - layerStatusImage.title = PlinnLang["Show layer"]; - } - else { - layerStatusImage.src = "plinn_icons/visible_layer.gif"; - layerStatusImage.title = PlinnLang["Hide layer"]; - } -}; - -LayerManager.prototype.removeCurrentLayer = function() { - var layersLength = this.layers.length; - var layerSelector = this.layerSelector; - var layer, deletedLayerIndex; - for (var i = 0 ; i < layersLength ; i++) { - layer = this.layers[i]; - if (layer == CURRENT_LAYER) { - if (confirm(PlinnLang["confirm_layer_delete"] + i + "\" ?")) { - this.space.removeChild(layer.hostDiv); - this.layers.splice(i, 1); - layerSelector.removeChild(layerSelector.childNodes[i]); - deletedLayerIndex = i; - break; - } - else { - this.activateLayer(i); - return; - } - } - } - - // update layer indexes - for (var i = 0 ; i < this.layers.length ; i++) { - layerSelector.childNodes[i].value = String(i); - layerSelector.childNodes[i].id = "layer_" + String(i); - layerSelector.childNodes[i].innerHTML = PlinnLang["Layer "] + String(i); - } - - if (this.layers.length == 1) { - var removeCmdOpt = layerSelector.childNodes[layerSelector.childNodes.length - 1]; - removeCmdOpt.disabled = "disabled"; - removeCmdOpt.style.color = "#888"; - } - - if (deletedLayerIndex == 0) - this.layers[0].style.position = "relative"; - - // activate previous layer - this.activateLayer((deletedLayerIndex > 0) ? --deletedLayerIndex : 0); - -}; - -function resizeOnMouseMove() { - if (LAYER_MANAGER.layers.length > 5) - return; // to expensive - else - _resizeAllLayers(this); -} - -function resizeOnDrop() { _resizeAllLayers(this);} - -function _resizeAllLayers(layer) { - var layers = LAYER_MANAGER.layers; - var size = new Point(layer.width, layer.height); - var l; - for(var i = 0 ; i < layers.length ; i++) { - l = layers[i]; - if (layer != l) - l.resizeTo(size, true); - } - LAYER_MANAGER.defaultLayerWidth = size.x; - LAYER_MANAGER.defaultLayerHeight = size.y; -} - -function CreateAttachmentLink(data) { - // data like that : "title[attachment/a_file] - var title = data.split("\[", 1)[0]; - var url =data.match(/\[(.*)\]/)[1]; - var link ="" + title + ""; - InsertHTML(link); -} \ No newline at end of file