summaryrefslogtreecommitdiff
path: root/webapps/qooxdoo-0.6.5-sdk/frontend/framework/source/class/qx/log/WindowAppender.js
diff options
context:
space:
mode:
Diffstat (limited to 'webapps/qooxdoo-0.6.5-sdk/frontend/framework/source/class/qx/log/WindowAppender.js')
-rw-r--r--webapps/qooxdoo-0.6.5-sdk/frontend/framework/source/class/qx/log/WindowAppender.js286
1 files changed, 0 insertions, 286 deletions
diff --git a/webapps/qooxdoo-0.6.5-sdk/frontend/framework/source/class/qx/log/WindowAppender.js b/webapps/qooxdoo-0.6.5-sdk/frontend/framework/source/class/qx/log/WindowAppender.js
deleted file mode 100644
index 4bfc5e5bf4..0000000000
--- a/webapps/qooxdoo-0.6.5-sdk/frontend/framework/source/class/qx/log/WindowAppender.js
+++ /dev/null
@@ -1,286 +0,0 @@
-/* ************************************************************************
-
- qooxdoo - the new era of web development
-
- http://qooxdoo.org
-
- Copyright:
- 2006 STZ-IDA, Germany, http://www.stz-ida.de
-
- License:
- LGPL: http://www.gnu.org/licenses/lgpl.html
- EPL: http://www.eclipse.org/org/documents/epl-v10.php
- See the LICENSE file in the project's top-level directory for details.
-
- Authors:
- * Til Schneider (til132)
-
-************************************************************************ */
-
-/* ************************************************************************
-
-#module(core)
-#module(log)
-
-************************************************************************ */
-
-/**
- * An appender that writes all messages to a log window.
- * <p>
- * This class does not depend on qooxdoo widgets, so it also works when there
- * are problems with widgets or when the widgets are not yet initialized.
- *
- * @param name {String ? "qx_log"} the name of the log window.
- */
-qx.OO.defineClass("qx.log.WindowAppender", qx.log.Appender,
-function(name) {
- qx.log.Appender.call(this);
-
- this._id = qx.log.WindowAppender.register(this);
- this._name = (name == null) ? "qx_log" : name;
-
- this._errorsPreventingAutoCloseCount = 0;
-
- this._logWindowOpened = false;
-});
-
-
-/**
- * The maximum number of messages to show. If null the number of messages is not
- * limited.
- */
-qx.OO.addProperty({ name:"maxMessages", type:"number", defaultValue:500 });
-
-/** Whether the window should appear under the main window. */
-qx.OO.addProperty({ name:"popUnder", type:"boolean", defaultValue:false, allowNull:false });
-
-/** Whether the window should automatically be closed when its creating page is unloaded and
- * errors have been logged. Note that errors that have been logged before this property has been
- * turned off will be ignored. Warning: Turning this off may create a memory hole because the disposer
- * of this class will auto-close the window, i. e. it may stay open after dispose(), still holding
- * memory. However, for diagnostics it is often more important to get information about errors
- * than to save memory.
- */
-qx.OO.addProperty({ name:"autoCloseWithErrors", type:"boolean", defaultValue:true, allowNull:false });
-
-
-/**
- * Creates and opens the log window if it doesn't alread exist.
- */
-qx.Proto.openWindow = function() {
- if (this._logWindowOpened) {
- // The window is already open -> Nothing to do
- return;
- }
-
- // Open the logger window
- var winWidth = 600;
- var winHeight = 350;
- var winLeft = window.screen.width - winWidth;
- var winTop = window.screen.height - winHeight;
- var params = "toolbar=no,scrollbars=yes,resizable=yes,"
- + "width=" + winWidth + ",height=" + winHeight
- + ",left=" + winLeft + ",top=" + winTop;
-
- // NOTE: In window.open the browser will process the event queue.
- // Which means that other log events may arrive during this time.
- // The log window is then in an inconsistent state, because the
- // this._logElem is not created yet. These events will be added to the
- // this._logEventQueue and logged after this._logElem is created.
- this._logWindow = window.open("", this._name, params);
-
- if (!this._logWindow || this._logWindow.closed)
- {
- if (!this._popupBlockerWarning) {
- alert("Couldn't open debug window. Please disable your popup blocker!");
- }
-
- this._popupBlockerWarning = true;
- return;
- }
-
- // Seems to be OK now.
- this._popupBlockerWarning = false;
-
- // Store that window is open
- this._logWindowOpened = true;
-
- if (this.getPopUnder()) {
- this._logWindow.blur();
- window.focus();
- }
-
- var logDocument = this._logWindow.document;
- // NOTE: We have to use a static onunload handler, because an onunload
- // that is set later using DOM is ignored completely.
- // (at least in Firefox, but maybe in IE, too)
- logDocument.open();
- logDocument.write("<html><head><title>" + this._name + "</title></head>"
- + '<body onload="qx = opener.qx;" onunload="try{qx.log.WindowAppender._registeredAppenders[' + this._id + ']._autoCloseWindow()}catch(e){}">'
- + '<pre id="log" wrap="wrap" style="font-size:11"></pre></body></html>');
- logDocument.close();
-
- this._logElem = logDocument.getElementById("log");
-
- // Log the events from the queue
- if (this._logEventQueue != null) {
- for (var i = 0; i < this._logEventQueue.length; i++) {
- this.appendLogEvent(this._logEventQueue[i]);
- }
- this._logEventQueue = null;
- }
-};
-
-
-/**
- * Closes the log window.
- */
-qx.Proto.closeWindow = function() {
- if (this._logWindow != null) {
- this._logWindow.close();
- this._logWindow = null;
- this._logElem = null;
- this._logWindowOpened = false;
- }
-};
-
-/**
- * Called when the window should be automatically closed (because the page that opened
- * is is unloaded). Will only close the window if the autoClose***-Properties allow it
- */
-qx.Proto._autoCloseWindow = function() {
- if (this.getAutoCloseWithErrors() || this._errorsPreventingAutoCloseCount == 0){
- this.closeWindow();
- } else {
- //Show message why auto-close has failed
- this._showMessageInLog("Log window message: <b>Note: " + this._errorsPreventingAutoCloseCount
- + " errors have been recorded, keeping log window open.</b>");
- }
-};
-
-/**
- * Appends a line to the log showing the given text
- * @param msg {String} message to show, may be HTML
- */
-qx.Proto._showMessageInLog = function(msg) {
- //Create dummy log event and use appendLogEvent()
- //Reason is that it is rather complicated to get something into the log
- //window when it is not already open -> reuse the existing code
- //which does event queuing in such a case
- var dummyEvent = {message: msg, isDummyEventForMessage : true};
- this.appendLogEvent(dummyEvent);
-};
-
-
-// overridden
-qx.Proto.appendLogEvent = function(evt) {
- if (!this._logWindowOpened) {
- this._logEventQueue = [];
- this._logEventQueue.push(evt);
-
- this.openWindow();
-
- // Popup-Blocker was active!
- if (!this._logWindowOpened) {
- return;
- }
- } else if (this._logElem == null) {
- // The window is currenlty opening, but not yet finished
- // -> Put the event in the queue
- this._logEventQueue.push(evt);
- } else {
- var divElem = this._logWindow.document.createElement("div");
- if (evt.level >= qx.log.Logger.LEVEL_ERROR) {
- divElem.style.backgroundColor = "#FFEEEE";
- if (!this.getAutoCloseWithErrors()){
- this._errorsPreventingAutoCloseCount += 1;
- }
- } else if (evt.level == qx.log.Logger.LEVEL_DEBUG) {
- divElem.style.color = "gray";
- }
- if (evt.isDummyEventForMessage){
- divElem.innerHTML = evt.message;
- } else {
- divElem.innerHTML = qx.html.String.fromText(this.formatLogEvent(evt));
- }
- this._logElem.appendChild(divElem);
-
- while (this._logElem.childNodes.length > this.getMaxMessages()) {
- this._logElem.removeChild(this._logElem.firstChild);
-
- if (this._removedMessageCount == null) {
- this._removedMessageCount = 1;
- } else {
- this._removedMessageCount++;
- }
- }
-
- if (this._removedMessageCount != null) {
- this._logElem.firstChild.innerHTML = "(" + this._removedMessageCount
- + " messages removed)";
- }
-
- // Scroll to bottom
- this._logWindow.scrollTo(0, this._logElem.offsetHeight);
- }
-}
-
-qx.Proto._modifyAutoCloseWithErrors = function(propValue, propOldValue, propData){
- if (!propValue && propOldValue){
- this._errorsPreventingAutoCloseCount = 0;
-
- //Show message in log so user can see which errors have been counted
- this._showMessageInLog("Log window message: Starting error recording, any errors below this line will prevent the log window from closing");
-
- } else if (propValue && !propOldValue){
- //Show message in log so user can see which errors have been counted
- this._showMessageInLog("Log window message: Stopping error recording, discarding " + this._errorsPreventingAutoCloseCount + " errors.");
- }
- return true;
-}
-
-
-
-// overridden
-qx.Proto.dispose = function() {
- if (this.getDisposed()) {
- return true;
- }
-
- this._autoCloseWindow();
-
- return qx.log.Appender.prototype.dispose.call(this);
-}
-
-
-qx.Class._nextId = 1;
-qx.Class._registeredAppenders = {};
-
-
-/**
- * Registers a WindowAppender. This is used by the WindowAppender internally.
- * You don't have to call this.
- *
- * @param appender {WindowAppender} the WindowAppender to register.
- * @return {Integer} the ID.
- */
-qx.Class.register = function(appender) {
- var WindowAppender = qx.log.WindowAppender;
-
- var id = WindowAppender._nextId++;
- WindowAppender._registeredAppenders[id] = appender;
-
- return id;
-}
-
-
-/**
- * Returns a prviously registered WindowAppender.
- *
- * @param id {Integer} the ID of the wanted WindowAppender.
- * @return {WindowAppender} the WindowAppender or null if no
- * WindowAppender with this ID is registered.
- */
-qx.Class.getAppender = function(id) {
- return qx.log.WindowAppender._registeredAppenders[id];
-}