| /** |
| * Copyright (c) 2006-2015, JGraph Ltd |
| * Copyright (c) 2006-2015, Gaudenz Alder |
| */ |
| /** |
| * Class: mxDivResizer |
| * |
| * Maintains the size of a div element in Internet Explorer. This is a |
| * workaround for the right and bottom style being ignored in IE. |
| * |
| * If you need a div to cover the scrollwidth and -height of a document, |
| * then you can use this class as follows: |
| * |
| * (code) |
| * var resizer = new mxDivResizer(background); |
| * resizer.getDocumentHeight = function() |
| * { |
| * return document.body.scrollHeight; |
| * } |
| * resizer.getDocumentWidth = function() |
| * { |
| * return document.body.scrollWidth; |
| * } |
| * resizer.resize(); |
| * (end) |
| * |
| * Constructor: mxDivResizer |
| * |
| * Constructs an object that maintains the size of a div |
| * element when the window is being resized. This is only |
| * required for Internet Explorer as it ignores the respective |
| * stylesheet information for DIV elements. |
| * |
| * Parameters: |
| * |
| * div - Reference to the DOM node whose size should be maintained. |
| * container - Optional Container that contains the div. Default is the |
| * window. |
| */ |
| function mxDivResizer(div, container) |
| { |
| if (div.nodeName.toLowerCase() == 'div') |
| { |
| if (container == null) |
| { |
| container = window; |
| } |
| |
| this.div = div; |
| var style = mxUtils.getCurrentStyle(div); |
| |
| if (style != null) |
| { |
| this.resizeWidth = style.width == 'auto'; |
| this.resizeHeight = style.height == 'auto'; |
| } |
| |
| mxEvent.addListener(container, 'resize', |
| mxUtils.bind(this, function(evt) |
| { |
| if (!this.handlingResize) |
| { |
| this.handlingResize = true; |
| this.resize(); |
| this.handlingResize = false; |
| } |
| }) |
| ); |
| |
| this.resize(); |
| } |
| }; |
| |
| /** |
| * Function: resizeWidth |
| * |
| * Boolean specifying if the width should be updated. |
| */ |
| mxDivResizer.prototype.resizeWidth = true; |
| |
| /** |
| * Function: resizeHeight |
| * |
| * Boolean specifying if the height should be updated. |
| */ |
| mxDivResizer.prototype.resizeHeight = true; |
| |
| /** |
| * Function: handlingResize |
| * |
| * Boolean specifying if the width should be updated. |
| */ |
| mxDivResizer.prototype.handlingResize = false; |
| |
| /** |
| * Function: resize |
| * |
| * Updates the style of the DIV after the window has been resized. |
| */ |
| mxDivResizer.prototype.resize = function() |
| { |
| var w = this.getDocumentWidth(); |
| var h = this.getDocumentHeight(); |
| |
| var l = parseInt(this.div.style.left); |
| var r = parseInt(this.div.style.right); |
| var t = parseInt(this.div.style.top); |
| var b = parseInt(this.div.style.bottom); |
| |
| if (this.resizeWidth && |
| !isNaN(l) && |
| !isNaN(r) && |
| l >= 0 && |
| r >= 0 && |
| w - r - l > 0) |
| { |
| this.div.style.width = (w - r - l)+'px'; |
| } |
| |
| if (this.resizeHeight && |
| !isNaN(t) && |
| !isNaN(b) && |
| t >= 0 && |
| b >= 0 && |
| h - t - b > 0) |
| { |
| this.div.style.height = (h - t - b)+'px'; |
| } |
| }; |
| |
| /** |
| * Function: getDocumentWidth |
| * |
| * Hook for subclassers to return the width of the document (without |
| * scrollbars). |
| */ |
| mxDivResizer.prototype.getDocumentWidth = function() |
| { |
| return document.body.clientWidth; |
| }; |
| |
| /** |
| * Function: getDocumentHeight |
| * |
| * Hook for subclassers to return the height of the document (without |
| * scrollbars). |
| */ |
| mxDivResizer.prototype.getDocumentHeight = function() |
| { |
| return document.body.clientHeight; |
| }; |