📄 window.js
字号:
this.doNotNotifyHide = false; this._notify("onClose"); } }, minimize: function() { var r2 = $(this.getId() + "_row2"); var dh = r2.getDimensions().height; if (r2.visible()) { var h = this.element.getHeight() - dh; this.height -= dh; r2.hide() this.element.setStyle({height: h + "px"}) if (! this.useTop) { var bottom = parseFloat(this.element.getStyle('bottom')); this.element.setStyle({bottom: (bottom + dh) + 'px'}); } } else { var h = this.element.getHeight() + dh; this.height += dh; this.element.setStyle({height: h + "px"}) if (! this.useTop) { var bottom = parseFloat(this.element.getStyle('bottom')); this.element.setStyle({bottom: (bottom - dh) + 'px'}); } r2.show(); this.toFront(); } this._notify("onMinimize"); // Store new location/size if need be this._saveCookie() }, maximize: function() { if (this.isMinimized()) return; if (isIE && this.heightN == 0) this._getWindowBorderSize(); if (this.storedLocation != null) { this._restoreLocation(); if(this.iefix) this.iefix.hide(); } else { this._storeLocation(); Windows.unsetOverflow(this); var windowScroll = WindowUtilities.getWindowScroll(); var pageSize = WindowUtilities.getPageSize(); var left = windowScroll.left; var top = windowScroll.top; if (this.options.parent != document.body) { windowScroll = {top:0, left:0, bottom:0, right:0}; var dim = this.options.parent.getDimensions(); pageSize.windowWidth = dim.width; pageSize.windowHeight = dim.height; top = 0; left = 0; } if (this.constraint) { pageSize.windowWidth -= Math.max(0, this.constraintPad.left) + Math.max(0, this.constraintPad.right); pageSize.windowHeight -= Math.max(0, this.constraintPad.top) + Math.max(0, this.constraintPad.bottom); left += Math.max(0, this.constraintPad.left); top += Math.max(0, this.constraintPad.top); } this.element.setStyle(this.useLeft ? {left: left} : {right: left}); this.element.setStyle(this.useTop ? {top: top} : {bottom: top}); this.setSize(pageSize.windowWidth - this.widthW - this.widthE , pageSize.windowHeight - this.heightN - this.heightS) this.toFront(); if (this.iefix) this._fixIEOverlapping(); } this._notify("onMaximize"); // Store new location/size if need be this._saveCookie() }, isMinimized: function() { var r2 = $(this.getId() + "_row2"); return !r2.visible(); }, isMaximized: function() { return (this.storedLocation != null); }, setOpacity: function(opacity) { if (Element.setOpacity) Element.setOpacity(this.element, opacity); }, setZIndex: function(zindex) { this.element.setStyle({zIndex: zindex}); Windows.updateZindex(zindex, this); }, setTitle: function(newTitle) { if (!newTitle || newTitle == "") newTitle = " "; Element.update(this.element.id + '_top', newTitle); }, setStatusBar: function(element) { var statusBar = $(this.getId() + "_bottom"); if (typeof(element) == "object") { if (this.bottombar.firstChild) this.bottombar.replaceChild(element, this.bottombar.firstChild); else this.bottombar.appendChild(element); } else this.bottombar.innerHTML = element; }, _checkIEOverlapping: function() { if(!this.iefix && (Prototype.Browser.IE) && this.element.getStyle('position') == 'absolute' && this.element.id == 'overlay_modal') { new Insertion.After(this.element.id, '<iframe id="' + this.element.id + '_iefix" '+ 'style="display:none;position:absolute;filter:progid:DXImageTransform.Microsoft.Alpha(opacity=0);" ' + 'src="javascript:false;" frameborder="0" scrolling="no"></iframe>'); this.iefix = $(this.element.id+'_iefix'); } if(this.iefix) setTimeout(this._fixIEOverlapping.bind(this), 50); }, _fixIEOverlapping: function() { Position.clone(this.element, this.iefix); this.iefix.style.zIndex = this.element.style.zIndex - 1; this.iefix.show(); }, _getWindowBorderSize: function(event) { // Hack to get real window border size!! var div = this._createHiddenDiv(this.options.className + "_n") this.heightN = Element.getDimensions(div).height; div.parentNode.removeChild(div) var div = this._createHiddenDiv(this.options.className + "_s") this.heightS = Element.getDimensions(div).height; div.parentNode.removeChild(div) var div = this._createHiddenDiv(this.options.className + "_e") this.widthE = Element.getDimensions(div).width; div.parentNode.removeChild(div) var div = this._createHiddenDiv(this.options.className + "_w") this.widthW = Element.getDimensions(div).width; div.parentNode.removeChild(div); // Workaround for IE!! if (isIE) { this.heightS = $(this.getId() +"_row3").getDimensions().height; this.heightN = $(this.getId() +"_row1").getDimensions().height; } // Safari size fix if (/Konqueror|Safari|KHTML/.test(navigator.userAgent)) this.setSize(this.width, this.height); if (this.doMaximize) this.maximize(); if (this.doMinimize) this.minimize(); }, _createHiddenDiv: function(className) { var objBody = document.body; var win = document.createElement("div"); win.setAttribute('id', this.element.id+ "_tmp"); win.className = className; win.style.display = 'none'; win.innerHTML = ''; objBody.insertBefore(win, objBody.firstChild); return win; }, _storeLocation: function() { if (this.storedLocation == null) { this.storedLocation = {useTop: this.useTop, useLeft: this.useLeft, top: this.element.getStyle('top'), bottom: this.element.getStyle('bottom'), left: this.element.getStyle('left'), right: this.element.getStyle('right'), width: this.width, height: this.height }; } }, _restoreLocation: function() { if (this.storedLocation != null) { this.useLeft = this.storedLocation.useLeft; this.useTop = this.storedLocation.useTop; this.element.setStyle(this.useLeft ? {left: this.storedLocation.left} : {right: this.storedLocation.right}); this.element.setStyle(this.useTop ? {top: this.storedLocation.top} : {bottom: this.storedLocation.bottom}); this.setSize(this.storedLocation.width, this.storedLocation.height); Windows.resetOverflow(); this._removeStoreLocation(); } }, _removeStoreLocation: function() { this.storedLocation = null; }, _saveCookie: function() { if (this.cookie) { var value = ""; if (this.useLeft) value += "l:" + (this.storedLocation ? this.storedLocation.left : this.element.getStyle('left')) else value += "r:" + (this.storedLocation ? this.storedLocation.right : this.element.getStyle('right')) if (this.useTop) value += ",t:" + (this.storedLocation ? this.storedLocation.top : this.element.getStyle('top')) else value += ",b:" + (this.storedLocation ? this.storedLocation.bottom :this.element.getStyle('bottom')) value += "," + (this.storedLocation ? this.storedLocation.width : this.width); value += "," + (this.storedLocation ? this.storedLocation.height : this.height); value += "," + this.isMinimized(); value += "," + this.isMaximized(); WindowUtilities.setCookie(value, this.cookie) } }, _createWiredElement: function() { if (! this.wiredElement) { if (isIE) this._getWindowBorderSize(); var div = document.createElement("div"); div.className = "wired_frame " + this.options.className + "_wired_frame"; div.style.position = 'absolute'; this.options.parent.insertBefore(div, this.options.parent.firstChild); this.wiredElement = $(div); } if (this.useLeft) this.wiredElement.setStyle({left: this.element.getStyle('left')}); else this.wiredElement.setStyle({right: this.element.getStyle('right')}); if (this.useTop) this.wiredElement.setStyle({top: this.element.getStyle('top')}); else this.wiredElement.setStyle({bottom: this.element.getStyle('bottom')}); var dim = this.element.getDimensions(); this.wiredElement.setStyle({width: dim.width + "px", height: dim.height +"px"}); this.wiredElement.setStyle({zIndex: Windows.maxZIndex+30}); return this.wiredElement; }, _hideWiredElement: function() { if (! this.wiredElement || ! this.currentDrag) return; if (this.currentDrag == this.element) this.currentDrag = null; else { if (this.useLeft) this.element.setStyle({left: this.currentDrag.getStyle('left')}); else this.element.setStyle({right: this.currentDrag.getStyle('right')}); if (this.useTop) this.element.setStyle({top: this.currentDrag.getStyle('top')}); else this.element.setStyle({bottom: this.currentDrag.getStyle('bottom')}); this.currentDrag.hide(); this.currentDrag = null; if (this.doResize) this.setSize(this.width, this.height); } }, _notify: function(eventName) { if (this.options[eventName]) this.options[eventName](this); else Windows.notify(eventName, this); }};// Windows containers, register all page windowsvar Windows = { windows: [], modalWindows: [], observers: [], focusedWindow: null, maxZIndex: 0, addObserver: function(observer) { this.removeObserver(observer); this.observers.push(observer); }, removeObserver: function(observer) { this.observers = this.observers.reject( function(o) { return o==observer }); }, // onDestroy onStartResize onStartMove onResize onMove onEndResize onEndMove onFocus onBeforeShow onShow onHide onMinimize onMaximize onClose notify: function(eventName, win) { this.observers.each( function(o) {if(o[eventName]) o[eventName](eventName, win);}); }, // Gets window from its id getWindow: function(id) { return this.windows.detect(function(d) { return d.getId() ==id }); }, // Gets the last focused window getFocusedWindow: function() { return this.focusedWindow; }, updateFocusedWindow: function() { this.focusedWindow = this.windows.length >=2 ? this.windows[this.windows.length-2] : null; }, // Registers a new window (called by Windows constructor) register: function(win) { this.windows.push(win); }, // Add a modal window in the stack addModalWindow: function(win) { // Disable screen if first modal window if (this.modalWindows.length == 0) WindowUtilities.disableScreen(win.options.className, 'overlay_modal', win.getId()); else { // Move overlay over all windows if (Window.keepMultiModalWindow) { $('overlay_modal').style.zIndex = Windows.maxZIndex + 10000; Windows.maxZIndex += 10000; WindowUtilities._hideSelect(this.modalWindows.last().getId()); } // Hide current modal window else this.modalWindows.last().element.hide(); // Fucking IE select issue WindowUtilities._showSelect(win.getId()); } this.modalWindows.push(win); }, removeModalWindow: function(win) { this.modalWindows.pop(); // No more modal windows if (this.modalWindows.length == 0) WindowUtilities.enableScreen(); else { if (Window.keepMultiModalWindow) { this.modalWindows.last().toFront(); WindowUtilities._showSelect(this.modalWindows.last().getId()); } else this.modalWindows.last().element.show(); } }, // Registers a new window (called by Windows constructor) register: function(win) { this.windows.push(win); }, // Unregisters a window (called by Windows destructor) unregister: function(win) { this.windows = this.windows.reject(function(d) { return d==win }); }, // Closes all windows closeAll: function() { this.windows.each( function(w) {Windows.close(w.getId())} ); }, closeAllModalWindows: function() { WindowUtilities.enableScreen(); this.modalWindows.each( function(win) {win.hide()}); }, // Minimizes a window with its id minimize: function(id, event) { var win = this.getWindow(id) if (win && win.visible) win.minimize(); Event.stop(event); }, // Maximizes a window with its id maximize: function(id, event) { var win = this.getWindow(id) if (win && win.visible) win.maximize(); Event.stop(event); }, // Closes a window with its id close: function(id, event) { var win = this.getWindow(id); if (win) win.close()//win.options.destroyOnClose ? win.close() : win.hide(); if (event) Event.stop(event); }, unsetOverflow: function(except) { this.windows.each(function(d) { d.oldOverflow = d.getContent().getStyle("overflow") || "auto" ; d.getContent().setStyle({overflow: "hidden"}) }); if (except && except.oldOverflow) except.getContent().setStyle({overflow: except.oldOverflow}); }, resetOverflow: function() { this.windows.each(function(d) { if (d.oldOverflow) d.getContent().setStyle({overflow: d.oldOverflow}) });
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -