Revision: 6595
Author: [email protected]
Date: Mon Nov  2 13:47:14 2009
Log: Merge trunk r6592 into this branch.

Propagate log message colors to lower-priority ancestors.

     svn merge --ignore-ancestry -c6592 \
           https://google-web-toolkit.googlecode.com/svn/trunk/ .

http://code.google.com/p/google-web-toolkit/source/detail?r=6595

Modified:
  /releases/2.0/branch-info.txt
   
/releases/2.0/dev/core/src/com/google/gwt/dev/shell/log/SwingTreeLogger.java

=======================================
--- /releases/2.0/branch-info.txt       Mon Nov  2 13:43:26 2009
+++ /releases/2.0/branch-info.txt       Mon Nov  2 13:47:14 2009
@@ -183,3 +183,8 @@
  tr...@6589 was merged into this branch
    De-deprecate HandlerManager.removeHandler, resolves issue 3102
    svn merge --ignore-ancestry -c r6581    
https://google-web-toolkit.googlecode.com/svn/trunk .
+
+tr...@6592 was merged into this branch
+  Propagate log message colors to lower-priority ancestors.
+    svn merge --ignore-ancestry -c6592 \
+      https://google-web-toolkit.googlecode.com/svn/trunk/ .
=======================================
---  
/releases/2.0/dev/core/src/com/google/gwt/dev/shell/log/SwingTreeLogger.java    
 
Fri Oct 16 20:54:44 2009
+++  
/releases/2.0/dev/core/src/com/google/gwt/dev/shell/log/SwingTreeLogger.java    
 
Mon Nov  2 13:47:14 2009
@@ -16,6 +16,7 @@
  package com.google.gwt.dev.shell.log;

  import com.google.gwt.core.ext.TreeLogger;
+import com.google.gwt.core.ext.TreeLogger.Type;
  import com.google.gwt.dev.shell.Icons;
  import com.google.gwt.dev.util.log.AbstractTreeLogger;

@@ -25,6 +26,8 @@
  import java.net.URL;
  import java.text.NumberFormat;
  import java.util.Date;
+import java.util.HashMap;
+import java.util.Map;
  import java.util.concurrent.ExecutionException;

  import javax.swing.Icon;
@@ -49,12 +52,26 @@
      private static final Date firstLog = new Date();
      private static NumberFormat minHr = NumberFormat.getIntegerInstance();
      private static NumberFormat seconds = NumberFormat.getNumberInstance();
+    private static final Map<Type, Color> logColors = new HashMap<Type,  
Color>();
+    private static final Map<Type,Icon> logIcons = new HashMap<Type,  
Icon>();

      static {
        seconds.setMinimumFractionDigits(3);
        seconds.setMaximumFractionDigits(3);
        seconds.setMinimumIntegerDigits(2);
        minHr.setMinimumIntegerDigits(2);
+      logColors.put(Type.ERROR, Color.RED);
+      logIcons.put(Type.ERROR, Icons.getLogItemError());
+      logColors.put(Type.WARN, WARN_COLOR);
+      logIcons.put(Type.WARN, Icons.getLogItemWarning());
+      logColors.put(Type.INFO, Color.BLACK);
+      logIcons.put(Type.INFO, Icons.getLogItemInfo());
+      logColors.put(Type.TRACE, Color.DARK_GRAY);
+      logIcons.put(Type.TRACE, Icons.getLogItemTrace());
+      logColors.put(Type.DEBUG, DEBUG_COLOR);
+      logIcons.put(Type.DEBUG, Icons.getLogItemDebug());
+      logColors.put(Type.SPAM, SPAM_COLOR);
+      logIcons.put(Type.SPAM, Icons.getLogItemSpam());
      }

      public final SwingTreeLogger childLogger;
@@ -75,12 +92,18 @@

      public final TreeLogger.Type type;

+    /**
+     * Maintains the highest priority of any child events.
+     */
+    private Type inheritedPriority;
+
      public LogEvent(SwingTreeLogger logger, boolean isBranchCommit, int  
index,
          Type type, String message, Throwable caught, HelpInfo helpInfo) {
        this.childLogger = logger;
        this.isBranchCommit = isBranchCommit;
        this.index = index;
        this.type = type;
+      this.inheritedPriority = type;
        this.message = message;
        this.helpInfo = helpInfo;
        this.timestamp = new Date();
@@ -132,6 +155,10 @@
        }
        return sb.toString();
      }
+
+    public Type getInheritedPriority() {
+      return inheritedPriority;
+    }

      /**
       * Set the properties of a label to match this log entry.
@@ -139,29 +166,12 @@
       * @param treeLabel label to set properties for.
       */
      public void setDisplayProperties(JLabel treeLabel) {
-      Icon image = null;
-      if (type == TreeLogger.ERROR) {
-        treeLabel.setForeground(Color.RED);
-        image = Icons.getLogItemError();
-      } else if (type == TreeLogger.WARN) {
-        treeLabel.setForeground(WARN_COLOR);
-        image = Icons.getLogItemWarning();
-      } else if (type == TreeLogger.INFO) {
-        treeLabel.setForeground(Color.BLACK);
-        image = Icons.getLogItemInfo();
-      } else if (type == TreeLogger.TRACE) {
-        treeLabel.setForeground(Color.DARK_GRAY);
-        image = Icons.getLogItemTrace();
-      } else if (type == TreeLogger.DEBUG) {
-        treeLabel.setForeground(DEBUG_COLOR);
-        image = Icons.getLogItemDebug();
-      } else if (type == TreeLogger.SPAM) {
-        treeLabel.setForeground(SPAM_COLOR);
-        image = Icons.getLogItemSpam();
-      } else {
-        // Messages without icons, ie ALL
-        treeLabel.setForeground(Color.BLACK);
-      }
+      Icon image = logIcons.get(type);
+      Color color = logColors.get(inheritedPriority);
+      if (color == null) {
+        color = Color.BLACK;
+      }
+      treeLabel.setForeground(color);
        treeLabel.setIcon(image);
        StringBuffer sb = new StringBuffer();

@@ -199,6 +209,21 @@
        s += "]";
        return s;
      }
+
+    /**
+     * Update this log event's inherited priority, which is the highest  
priority
+     * of this event and any child events.
+     *
+     * @param inheritedPriority
+     * @return true if the priority was upgraded
+     */
+    public boolean updateInheritedPriority(Type inheritedPriority) {
+      if (this.inheritedPriority.isLowerPriorityThan(inheritedPriority)) {
+        this.inheritedPriority = inheritedPriority;
+        return true;
+      }
+      return false;
+    }

      private void formatTimestamp(long ts, StringBuffer sb) {
        sb.append(minHr.format(ts / (1000 * 60 * 60)));
@@ -293,6 +318,15 @@
            if (event.type.needsAttention()) {
              panel.tree.makeVisible(new TreePath(node.getPath()));
            }
+          // Propagate our priority to our ancestors
+          Type priority = event.getInheritedPriority();
+          while (parent != panel.treeModel.getRoot()) {
+            LogEvent parentEvent = (LogEvent) parent.getUserObject();
+            if (!parentEvent.updateInheritedPriority(priority)) {
+              break;
+            }
+            parent = (DefaultMutableTreeNode) parent.getParent();
+          }
          } catch (InterruptedException e) {
            // TODO(jat): Auto-generated catch block
            e.printStackTrace();

--~--~---------~--~----~------------~-------~--~----~
http://groups.google.com/group/Google-Web-Toolkit-Contributors
-~----------~----~----~----~------~----~------~--~---

Reply via email to