Would it be possible to send a patch diff file in "diff -u"
format<http://stephenjungels.com/jungels.net/articles/diff-patch-ten-minutes.html>so
I can follow better what you are proposing. Thanks.

On Sat, Apr 25, 2009 at 1:49 PM, Trung <[email protected]> wrote:

>
> Would like to modify WindowLogger as below:
>
> // File client/WindowLogger
> package com.allen_sauer.gwt.log.client;
>
> import com.allen_sauer.gwt.log.client.util.DOMUtil;
>
> import com.google.gwt.core.client.GWT;
> import com.google.gwt.core.client.JavaScriptObject;
> import com.google.gwt.event.logical.shared.CloseEvent;
> import com.google.gwt.event.logical.shared.CloseHandler;
> import com.google.gwt.user.client.Window;
>
> public class WindowLogger extends AbstractLogger implements
> Window.ClosingHandler, CloseHandler{
>  private static final String CSS_LOG_MESSAGE = "log-message";
>  private static final String STACKTRACE_ELEMENT_PREFIX =
> "&nbsp;&nbsp;&nbsp;&nbsp;at&nbsp;";
>
>  private JavaScriptObject loggingWindow;
>
>  public WindowLogger() {
>    init(this);
>    Window.addWindowClosingHandler(this);
>    Window.addCloseHandler(this);
>  }
>
>  public void openLoggingWindow(){
>    if (loggingWindow == null){
>      loggingWindow = open(GWT.getModuleBaseURL() + "/logging.html",
> "", "");
>    }
>  }
>
>  @Override
>  public boolean isSupported(){
>    return true;
>  }
>
>  public void log(int logLevel, String message){
>    assert false;
>    // Method never called since {...@link #log(int, String, Throwable)}
> is
>    // overridden
>  }
>
>  @Override
>  public void log(int logLevel, String message, Throwable throwable){
>    String text = message.replaceAll("<", "&lt;").replaceAll(">",
> "&gt;");
>    String title = makeTitle(message, throwable);
>    if (throwable != null) {
>      while (throwable != null) {
>        text += throwable.getClass().getName() + ":<br><b>" +
> throwable.getMessage() + "</b>";
>        StackTraceElement[] stackTraceElements =
> throwable.getStackTrace();
>        if (stackTraceElements.length > 0) {
>          text += "<div class='log-stacktrace'>";
>          for (StackTraceElement element : stackTraceElements) {
>            text += STACKTRACE_ELEMENT_PREFIX + element + "<br>";
>          }
>          text += "</div>";
>        }
>        throwable = throwable.getCause();
>        if (throwable != null) {
>          text += "Caused by: ";
>        }
>      }
>    }
>    text = text.replaceAll("\r\n|\r|\n", "<BR>");
>    text = "<div class='" + CSS_LOG_MESSAGE
>        + "' onmouseover='className+=\" log-message-hover\"' "
>        + "onmouseout='className=className.replace(/ log-message-hover/
> g,\"\")' style='color: "
>        + getColor(logLevel) + "' title='" + title + "'>" + text + "</
> div>";
>
>    if (loggingWindow != null){
>      logTextInLoggingWindow(loggingWindow, text);
>    }
>  }
>
>  public void onWindowClosing(Window.ClosingEvent event) {
>    if (loggingWindow != null){
>      closeLoggingWindow(loggingWindow);
>    }
>  }
>
>  public void onClose(CloseEvent event) {
>    if (loggingWindow != null){
>      closeLoggingWindow(loggingWindow);
>    }
>  }
>
>  private static native void init(WindowLogger me) /*-{
>    $wnd.windowLogger = {
>      onLoggingWindowClosed: function(){
>
> [email protected]_sauer.gwt.log.client.windowlogger
> ::onLoggingWindowClosedCallback
> ()();
>      },
>      abc: function(){
>      }
>    };
>  }-*/;
>
>  private static native JavaScriptObject open(String url, String name,
> String features) /*-{
>    var w = $wnd.open(url, name, features);
>    $wnd.focus();
>    return w;
>  }-*/;
>
>  private static native void closeLoggingWindow(JavaScriptObject
> loggingWindow) /*-{
>    loggingWindow.close();
>  }-*/;
>
>  /**
>   * Called from javascript
>   */
>  private void onLoggingWindowClosedCallback(){
>    Window.alert("set loggingWindow = null");
>    loggingWindow = null;
>  }
>
>  private static native void logTextInLoggingWindow(JavaScriptObject
> loggingWindow, String text) /*-{
>    loggingWindow.logText(text);
>  }-*/;
>
>  private String makeTitle(String message, Throwable throwable) {
>    if (throwable != null) {
>      if (throwable.getMessage() == null) {
>        message = throwable.getClass().getName();
>      } else {
>        message = throwable.getMessage().replaceAll(
>            throwable.getClass().getName().replaceAll("^(.+\\.).+$",
> "$1"), "");
>      }
>    }
>    return DOMUtil.adjustTitleLineBreaks(message).replaceAll("<",
> "&lt;").replaceAll(">", "&gt;").replaceAll(
>        "'", "\"");
>  }
>
>  private String getColor(int logLevel) {
>    if (logLevel == Log.LOG_LEVEL_OFF) {
>      return "#000"; // black
>    }
>    if (logLevel >= Log.LOG_LEVEL_FATAL) {
>      return "#F00"; // bright red
>    }
>    if (logLevel >= Log.LOG_LEVEL_ERROR) {
>      return "#C11B17"; // dark red
>    }
>    if (logLevel >= Log.LOG_LEVEL_WARN) {
>      return "#E56717"; // dark orange
>    }
>    if (logLevel >= Log.LOG_LEVEL_INFO) {
>      return "#2B60DE"; // blue
>    }
>    if (logLevel >= Log.LOG_LEVEL_DEBUG) {
>      return "#20b000"; // green
>    }
>    return "#F0F"; // purple
>  }
> }
>
>
> // File public/logging.html
> <html>
>  <head>
>    <title>Logging Window</title>
>    <script language='javascript'>
>      function informOpener(){
>        window.opener.windowLogger.onLoggingWindowClosed();
>      }
>
>      function logText(text){
>        document.body.innerHTML = document.body.innerHTML + text;
>
>        document.body['scrollTop'] = 1000000;
>      }
>    </script>
>  </head>
>  <body onbeforeunload="informOpener()">
>  </body>
> </html>
>
>
> Hope this help.
> Cheers
>
> >
>


-- 
Regards,
Farrukh

--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"gwt-log" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to 
[email protected]
For more options, visit this group at 
http://groups.google.com/group/gwt-log?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to