From general-return-1532-apmail-logging-general-archive=logging.apache.org@logging.apache.org Thu Aug 05 04:37:15 2010 Return-Path: Delivered-To: apmail-logging-general-archive@www.apache.org Received: (qmail 44389 invoked from network); 5 Aug 2010 04:37:14 -0000 Received: from unknown (HELO mail.apache.org) (140.211.11.3) by 140.211.11.9 with SMTP; 5 Aug 2010 04:37:14 -0000 Received: (qmail 96669 invoked by uid 500); 5 Aug 2010 04:37:14 -0000 Delivered-To: apmail-logging-general-archive@logging.apache.org Received: (qmail 96522 invoked by uid 500); 5 Aug 2010 04:37:12 -0000 Mailing-List: contact general-help@logging.apache.org; run by ezmlm Precedence: bulk list-help: list-unsubscribe: List-Post: Reply-To: "Logging General" List-Id: Delivered-To: mailing list general@logging.apache.org Received: (qmail 96514 invoked by uid 99); 5 Aug 2010 04:37:11 -0000 Received: from athena.apache.org (HELO athena.apache.org) (140.211.11.136) by apache.org (qpsmtpd/0.29) with ESMTP; Thu, 05 Aug 2010 04:37:11 +0000 X-ASF-Spam-Status: No, hits=-2000.0 required=10.0 tests=ALL_TRUSTED X-Spam-Check-By: apache.org Received: from [140.211.11.4] (HELO eris.apache.org) (140.211.11.4) by apache.org (qpsmtpd/0.29) with ESMTP; Thu, 05 Aug 2010 04:37:10 +0000 Received: by eris.apache.org (Postfix, from userid 65534) id B81DF2388980; Thu, 5 Aug 2010 04:35:53 +0000 (UTC) Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: svn commit: r982464 - in /logging/chainsaw/trunk/src/main/java/org/apache/log4j/chainsaw: LogPanelLoggerTreeModel.java LoggerNameTreePanel.java Date: Thu, 05 Aug 2010 04:35:53 -0000 To: general@logging.apache.org From: sdeboy@apache.org X-Mailer: svnmailer-1.0.8 Message-Id: <20100805043553.B81DF2388980@eris.apache.org> Author: sdeboy Date: Thu Aug 5 04:35:53 2010 New Revision: 982464 URL: http://svn.apache.org/viewvc?rev=982464&view=rev Log: If focus-on in the logger tree is selected and the event table is cleared, ensure the previously focused-on logger is added to the logger tree & focus-on is re-enabled for that logger Modified: logging/chainsaw/trunk/src/main/java/org/apache/log4j/chainsaw/LogPanelLoggerTreeModel.java logging/chainsaw/trunk/src/main/java/org/apache/log4j/chainsaw/LoggerNameTreePanel.java Modified: logging/chainsaw/trunk/src/main/java/org/apache/log4j/chainsaw/LogPanelLoggerTreeModel.java URL: http://svn.apache.org/viewvc/logging/chainsaw/trunk/src/main/java/org/apache/log4j/chainsaw/LogPanelLoggerTreeModel.java?rev=982464&r1=982463&r2=982464&view=diff ============================================================================== --- logging/chainsaw/trunk/src/main/java/org/apache/log4j/chainsaw/LogPanelLoggerTreeModel.java (original) +++ logging/chainsaw/trunk/src/main/java/org/apache/log4j/chainsaw/LogPanelLoggerTreeModel.java Thu Aug 5 04:35:53 2010 @@ -33,6 +33,7 @@ import javax.swing.tree.MutableTreeNode; import org.apache.log4j.LogManager; import org.apache.log4j.Logger; +import org.apache.log4j.chainsaw.helper.SwingHelper; /** @@ -54,6 +55,7 @@ class LogPanelLoggerTreeModel extends De * @see org.apache.log4j.chainsaw.LoggerNameListener#loggerNameAdded(java.lang.String) */ public void loggerNameAdded(final String loggerName) { + //invoke later, not on current EDT SwingUtilities.invokeLater( new Runnable() { public void run() { Modified: logging/chainsaw/trunk/src/main/java/org/apache/log4j/chainsaw/LoggerNameTreePanel.java URL: http://svn.apache.org/viewvc/logging/chainsaw/trunk/src/main/java/org/apache/log4j/chainsaw/LoggerNameTreePanel.java?rev=982464&r1=982463&r2=982464&view=diff ============================================================================== --- logging/chainsaw/trunk/src/main/java/org/apache/log4j/chainsaw/LoggerNameTreePanel.java (original) +++ logging/chainsaw/trunk/src/main/java/org/apache/log4j/chainsaw/LoggerNameTreePanel.java Thu Aug 5 04:35:53 2010 @@ -23,6 +23,7 @@ import java.awt.Color; import java.awt.Component; import java.awt.Cursor; import java.awt.Dimension; +import java.awt.EventQueue; import java.awt.FlowLayout; import java.awt.Font; import java.awt.Point; @@ -160,6 +161,7 @@ final class LoggerNameTreePanel extends private Rule ignoreExpressionRule; private FilterModel filterModel; private boolean expandRootLatch = false; + private String currentlySelectedLoggerName; //~ Constructors ============================================================ @@ -1191,7 +1193,7 @@ final class LoggerNameTreePanel extends DefaultMutableTreeNode node = (DefaultMutableTreeNode) depthEnum.nextElement(); - if (node.isLeaf()) + if (node.isLeaf() && node.getParent() != null) { TreeNode[] nodes = ((DefaultMutableTreeNode) node.getParent()).getPath(); @@ -1275,10 +1277,10 @@ final class LoggerNameTreePanel extends } boolean focusOnSelected = isFocusOnSelected(); // editLoggerAction.setEnabled(path != null); - String logger = getCurrentlySelectedLoggerName(); + currentlySelectedLoggerName = getCurrentlySelectedLoggerName(); focusOnAction.setEnabled( (path != null) && (node != null) && (node.getParent() != null) - && !hiddenSet.contains(logger)); + && !hiddenSet.contains(currentlySelectedLoggerName)); hideAction.setEnabled( (path != null) && (node != null) && (node.getParent() != null)); if (!focusOnAction.isEnabled()) @@ -1297,9 +1299,9 @@ final class LoggerNameTreePanel extends updateRefineFocusAction.setEnabled(path != null); clearRefineFocusAction.setEnabled(true); - if (logger != null) + if (currentlySelectedLoggerName != null) { - boolean isHidden = hiddenSet.contains(logger); + boolean isHidden = hiddenSet.contains(currentlySelectedLoggerName); popupMenu.hideCheck.setSelected(isHidden); ignoreLoggerButton.setSelected(isHidden); } @@ -1459,6 +1461,20 @@ final class LoggerNameTreePanel extends public void reset() { expandRootLatch = false; + //keep track if focuson was active when we were reset + final String logger = currentlySelectedLoggerName; + final boolean focusOnSelected = isFocusOnSelected(); + if (logger == null || !focusOnSelected) { + return; + } + + //loggernameAdded runs on EDT + logTreeModel.loggerNameAdded(logger); + EventQueue.invokeLater(new Runnable() { + public void run() { + setFocusOn(logger); + } + }); } //~ Inner Classes ===========================================================