psmith 2003/06/19 15:58:12 Modified: src/java/org/apache/log4j/chainsaw ReceiversPanel.java Log: Run the restarting of all the Receiver plugin's in a separate thread so the Event Dispatch thread can continue on painting the screen. also ensured that the runnable that causes the Receiver tree to be updated is done through the event dispatch thread. Revision Changes Path 1.6 +32 -16 jakarta-log4j-sandbox/src/java/org/apache/log4j/chainsaw/ReceiversPanel.java Index: ReceiversPanel.java =================================================================== RCS file: /home/cvs/jakarta-log4j-sandbox/src/java/org/apache/log4j/chainsaw/ReceiversPanel.java,v retrieving revision 1.5 retrieving revision 1.6 diff -u -r1.5 -r1.6 --- ReceiversPanel.java 19 Jun 2003 06:20:09 -0000 1.5 +++ ReceiversPanel.java 19 Jun 2003 22:58:12 -0000 1.6 @@ -119,22 +119,30 @@ logui, "This will cause any active Receiver to stop, and disconnect. Is this ok?", "Confirm", JOptionPane.OK_CANCEL_OPTION) == JOptionPane.OK_OPTION) { - Collection allReceivers = - PluginRegistry.getPlugins( - LogManager.getLoggerRepository(), Receiver.class); - - for (Iterator iter = allReceivers.iterator(); iter.hasNext();) { - Receiver item = (Receiver) iter.next(); - PluginRegistry.stopPlugin(item); - PluginRegistry.startPlugin(item); - } - - updateReceiverTree.run(); - logui.getStatusBar().setMessage( - "All Receivers have been (re)started"); + new Thread( + new Runnable() { + public void run() { + Collection allReceivers = + PluginRegistry.getPlugins( + LogManager.getLoggerRepository(), Receiver.class); + + for (Iterator iter = allReceivers.iterator(); + iter.hasNext();) { + Receiver item = (Receiver) iter.next(); + PluginRegistry.stopPlugin(item); + PluginRegistry.startPlugin(item); + } + + + updateReceiverTreeInDispatchThread(); + logui.getStatusBar().setMessage( + "All Receivers have been (re)started"); + } + }).start(); } } }; + startAllAction.putValue( Action.SHORT_DESCRIPTION, "Ensures that any Receiver that isn't active, is started."); @@ -287,11 +295,11 @@ SocketNodeEventListener listener = new SocketNodeEventListener() { public void socketOpened(String remoteInfo) { - SwingUtilities.invokeLater(updateReceiverTree); + updateReceiverTreeInDispatchThread(); } public void socketClosedEvent(Exception e) { - SwingUtilities.invokeLater(updateReceiverTree); + updateReceiverTreeInDispatchThread(); } }; @@ -304,6 +312,14 @@ element.addSocketNodeEventListener(listener); } } + + private void updateReceiverTreeInDispatchThread() { + if(SwingUtilities.isEventDispatchThread()){ + updateReceiverTree.run(); + } else{ + SwingUtilities.invokeLater(updateReceiverTree); + } + } class ReceiverPopupMenu extends JPopupMenu { final JMenu startMenu = new JMenu("Start"); @@ -376,7 +392,7 @@ socketReceiver.setActive(false); logui.getStatusBar().setMessage( socketReceiver.getName() + " has been paused"); - updateReceiverTree.run(); + updateReceiverTreeInDispatchThread(); } } };
--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]