http://git-wip-us.apache.org/repos/asf/logging-chainsaw/blob/96ebd9ad/src/main/java/org/apache/log4j/chainsaw/receivers/ReceiversPanel.java
----------------------------------------------------------------------
diff --git 
a/src/main/java/org/apache/log4j/chainsaw/receivers/ReceiversPanel.java 
b/src/main/java/org/apache/log4j/chainsaw/receivers/ReceiversPanel.java
index aaa4642..063b539 100644
--- a/src/main/java/org/apache/log4j/chainsaw/receivers/ReceiversPanel.java
+++ b/src/main/java/org/apache/log4j/chainsaw/receivers/ReceiversPanel.java
@@ -5,9 +5,9 @@
  * The ASF licenses this file to You under the Apache License, Version 2.0
  * (the "License"); you may not use this file except in compliance with
  * the License.  You may obtain a copy of the License at
- * 
+ *
  *      http://www.apache.org/licenses/LICENSE-2.0
- * 
+ *
  * Unless required by applicable law or agreed to in writing, software
  * distributed under the License is distributed on an "AS IS" BASIS,
  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
@@ -17,892 +17,854 @@
 
 package org.apache.log4j.chainsaw.receivers;
 
-import java.awt.*;
-import java.awt.event.ActionEvent;
-import java.awt.event.KeyEvent;
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.List;
-import java.util.Map;
-
-import java.io.File;
-
-import javax.swing.AbstractAction;
-import javax.swing.Action;
-import javax.swing.BorderFactory;
-import javax.swing.Box;
-import javax.swing.Icon;
-import javax.swing.ImageIcon;
-import javax.swing.JComponent;
-import javax.swing.JDialog;
-import javax.swing.JFrame;
-import javax.swing.JMenuItem;
-import javax.swing.JOptionPane;
-import javax.swing.JPanel;
-import javax.swing.JPopupMenu;
-import javax.swing.JRadioButtonMenuItem;
-import javax.swing.JScrollPane;
-import javax.swing.JSplitPane;
-import javax.swing.JToolBar;
-import javax.swing.JTree;
-import javax.swing.SwingUtilities;
-import javax.swing.event.TreeExpansionEvent;
-import javax.swing.event.TreeModelEvent;
-import javax.swing.event.TreeModelListener;
-import javax.swing.event.TreeSelectionEvent;
-import javax.swing.event.TreeSelectionListener;
-import javax.swing.event.TreeWillExpandListener;
-import javax.swing.tree.DefaultMutableTreeNode;
-import javax.swing.tree.ExpandVetoException;
-import javax.swing.tree.TreePath;
-
 import org.apache.log4j.Level;
 import org.apache.log4j.LogManager;
 import org.apache.log4j.Logger;
 import org.apache.log4j.chainsaw.PopupListener;
 import org.apache.log4j.chainsaw.SmallButton;
-import org.apache.log4j.chainsaw.prefs.SettingsManager;
-import org.apache.log4j.chainsaw.prefs.SettingsListener;
-import org.apache.log4j.chainsaw.prefs.SaveSettingsEvent;
-import org.apache.log4j.chainsaw.prefs.LoadSettingsEvent;
 import org.apache.log4j.chainsaw.help.HelpManager;
 import org.apache.log4j.chainsaw.helper.SwingHelper;
 import org.apache.log4j.chainsaw.icons.ChainsawIcons;
 import org.apache.log4j.chainsaw.icons.LevelIconFactory;
 import org.apache.log4j.chainsaw.icons.LineIconFactory;
 import org.apache.log4j.chainsaw.messages.MessageCenter;
+import org.apache.log4j.chainsaw.prefs.LoadSettingsEvent;
+import org.apache.log4j.chainsaw.prefs.SaveSettingsEvent;
+import org.apache.log4j.chainsaw.prefs.SettingsListener;
+import org.apache.log4j.chainsaw.prefs.SettingsManager;
 import org.apache.log4j.net.SocketNodeEventListener;
 import org.apache.log4j.net.SocketReceiver;
-import org.apache.log4j.plugins.Pauseable;
-import org.apache.log4j.plugins.Plugin;
-import org.apache.log4j.plugins.PluginEvent;
-import org.apache.log4j.plugins.PluginListener;
-import org.apache.log4j.plugins.PluginRegistry;
-import org.apache.log4j.plugins.Receiver;
+import org.apache.log4j.plugins.*;
 import org.apache.log4j.spi.LoggerRepository;
 import org.apache.log4j.spi.LoggerRepositoryEx;
 
+import javax.swing.*;
+import javax.swing.event.*;
+import javax.swing.tree.DefaultMutableTreeNode;
+import javax.swing.tree.ExpandVetoException;
+import javax.swing.tree.TreePath;
+import java.awt.*;
+import java.awt.event.ActionEvent;
+import java.awt.event.KeyEvent;
+import java.io.File;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.List;
+import java.util.Map;
+
 
 /**
  * This panel is used to manage all the Receivers configured within Log4j
  *
- *
  * @author Paul Smith <psm...@apache.org>
  * @author Scott Deboy <sde...@apache.org>
  */
 public class ReceiversPanel extends JPanel implements SettingsListener {
-  final Action newReceiverButtonAction;
-  final Action pauseReceiverButtonAction;
-  final Action playReceiverButtonAction;
-  final Action shutdownReceiverButtonAction;
-  final Action saveReceiversButtonAction;
-  final Action restartReceiverButtonAction;
-  private final Action showReceiverHelpAction;
-  private final Action startAllAction;
-  private final JPopupMenu popupMenu = new ReceiverPopupMenu();
-  private final JTree receiversTree = new JTree();
-  private final NewReceiverPopupMenu newReceiverPopup =
-    new NewReceiverPopupMenu();
-  private final ReceiverToolbar buttonPanel;
-  private final JSplitPane splitter = new JSplitPane();
-  private final PluginPropertyEditorPanel pluginEditorPanel =
-    new PluginPropertyEditorPanel();
-  private final Logger logger = LogManager.getLogger(ReceiversPanel.class);
-  
-  private final PluginRegistry pluginRegistry;
-  
-
-  public ReceiversPanel() {
-    super(new BorderLayout());
-    LoggerRepository repo = LogManager.getLoggerRepository();
-    final ReceiversTreeModel model = new ReceiversTreeModel();
-    if (repo instanceof LoggerRepositoryEx) {
-       pluginRegistry = ((LoggerRepositoryEx) repo).getPluginRegistry();
-       pluginRegistry.addPluginListener(model);
-
-       //iterate over visual receivers and call setcontainer
-       Collection c = pluginRegistry.getPlugins(VisualReceiver.class);
-        for (Object aC : c) {
-            ((VisualReceiver) aC).setContainer(this);
-        }
-       
-       pluginRegistry.addPluginListener(new PluginListener() {
-               public void pluginStarted(PluginEvent e) {
-                       //if we get a plugin started callback, set the container
-                       if (e.getPlugin() instanceof VisualReceiver) {
-                               
((VisualReceiver)e.getPlugin()).setContainer(ReceiversPanel.this);
-                       }
-               }
-
-               public void pluginStopped(PluginEvent e) {
-               }
-       });
-    } else {
-       pluginRegistry = null;
-    }
-    
-    receiversTree.setModel(model);
-
-    receiversTree.setExpandsSelectedPaths(true);
-    model.addTreeModelListener(
-      new TreeModelListener() {
-        public void treeNodesChanged(TreeModelEvent e) {
-          expandRoot();
-        }
+    final Action newReceiverButtonAction;
+    final Action pauseReceiverButtonAction;
+    final Action playReceiverButtonAction;
+    final Action shutdownReceiverButtonAction;
+    final Action saveReceiversButtonAction;
+    final Action restartReceiverButtonAction;
+    private final Action showReceiverHelpAction;
+    private final Action startAllAction;
+    private final JPopupMenu popupMenu = new ReceiverPopupMenu();
+    private final JTree receiversTree = new JTree();
+    private final NewReceiverPopupMenu newReceiverPopup =
+        new NewReceiverPopupMenu();
+    private final ReceiverToolbar buttonPanel;
+    private final JSplitPane splitter = new JSplitPane();
+    private final PluginPropertyEditorPanel pluginEditorPanel =
+        new PluginPropertyEditorPanel();
+    private final Logger logger = LogManager.getLogger(ReceiversPanel.class);
+
+    private final PluginRegistry pluginRegistry;
+
+
+    public ReceiversPanel() {
+        super(new BorderLayout());
+        LoggerRepository repo = LogManager.getLoggerRepository();
+        final ReceiversTreeModel model = new ReceiversTreeModel();
+        if (repo instanceof LoggerRepositoryEx) {
+            pluginRegistry = ((LoggerRepositoryEx) repo).getPluginRegistry();
+            pluginRegistry.addPluginListener(model);
+
+            //iterate over visual receivers and call setcontainer
+            Collection c = pluginRegistry.getPlugins(VisualReceiver.class);
+            for (Object aC : c) {
+                ((VisualReceiver) aC).setContainer(this);
+            }
 
-        public void treeNodesInserted(TreeModelEvent e) {
-          expandRoot();
-        }
+            pluginRegistry.addPluginListener(new PluginListener() {
+                public void pluginStarted(PluginEvent e) {
+                    //if we get a plugin started callback, set the container
+                    if (e.getPlugin() instanceof VisualReceiver) {
+                        ((VisualReceiver) 
e.getPlugin()).setContainer(ReceiversPanel.this);
+                    }
+                }
 
-        public void treeNodesRemoved(TreeModelEvent e) {
-          expandRoot();
+                public void pluginStopped(PluginEvent e) {
+                }
+            });
+        } else {
+            pluginRegistry = null;
         }
 
-        public void treeStructureChanged(TreeModelEvent e) {
-          expandRoot();
-        }
+        receiversTree.setModel(model);
+
+        receiversTree.setExpandsSelectedPaths(true);
+        model.addTreeModelListener(
+            new TreeModelListener() {
+                public void treeNodesChanged(TreeModelEvent e) {
+                    expandRoot();
+                }
+
+                public void treeNodesInserted(TreeModelEvent e) {
+                    expandRoot();
+                }
 
-        private void expandRoot() {
-          receiversTree.expandPath(
+                public void treeNodesRemoved(TreeModelEvent e) {
+                    expandRoot();
+                }
+
+                public void treeStructureChanged(TreeModelEvent e) {
+                    expandRoot();
+                }
+
+                private void expandRoot() {
+                    receiversTree.expandPath(
+                        new TreePath(model.getPathToRoot(model.RootNode)));
+                }
+            });
+        receiversTree.expandPath(
             new TreePath(model.getPathToRoot(model.RootNode)));
-        }
-      });
-    receiversTree.expandPath(
-      new TreePath(model.getPathToRoot(model.RootNode)));
-
-    receiversTree.addTreeWillExpandListener(
-      new TreeWillExpandListener() {
-        public void treeWillCollapse(TreeExpansionEvent event)
-          throws ExpandVetoException {
-          if (event.getPath().getLastPathComponent() == model.RootNode) {
-            throw new ExpandVetoException(event);
-          }
-        }
 
-        public void treeWillExpand(TreeExpansionEvent event) {
-        }
-      });
+        receiversTree.addTreeWillExpandListener(
+            new TreeWillExpandListener() {
+                public void treeWillCollapse(TreeExpansionEvent event)
+                    throws ExpandVetoException {
+                    if (event.getPath().getLastPathComponent() == 
model.RootNode) {
+                        throw new ExpandVetoException(event);
+                    }
+                }
 
-    receiversTree.addTreeSelectionListener(
-            e -> {
-              TreePath path = e.getNewLeadSelectionPath();
+                public void treeWillExpand(TreeExpansionEvent event) {
+                }
+            });
 
-              if (path != null) {
-                DefaultMutableTreeNode node =
-                  (DefaultMutableTreeNode) path.getLastPathComponent();
-
-                if (
-                  (node != null) && (node.getUserObject() != null)
-                    && (node.getUserObject() instanceof Plugin)) {
-                  Plugin p = (Plugin) node.getUserObject();
-                  logger.debug("plugin=" + p);
-                  pluginEditorPanel.setPlugin(p);
-                } else {
-                  pluginEditorPanel.setPlugin(null);
+        receiversTree.addTreeSelectionListener(
+            e -> {
+                TreePath path = e.getNewLeadSelectionPath();
+
+                if (path != null) {
+                    DefaultMutableTreeNode node =
+                        (DefaultMutableTreeNode) path.getLastPathComponent();
+
+                    if (
+                        (node != null) && (node.getUserObject() != null)
+                            && (node.getUserObject() instanceof Plugin)) {
+                        Plugin p = (Plugin) node.getUserObject();
+                        logger.debug("plugin=" + p);
+                        pluginEditorPanel.setPlugin(p);
+                    } else {
+                        pluginEditorPanel.setPlugin(null);
+                    }
                 }
-              }
             });
 
-    receiversTree.setToolTipText("Allows you to manage Log4j Receivers");
-    newReceiverButtonAction =
-      new AbstractAction() {
-          public void actionPerformed(ActionEvent e) {
-            newReceiverPopup.show(
-              buttonPanel.newReceiverButton, 0,
-              buttonPanel.newReceiverButton.getHeight());
-          }
-        };
-    newReceiverButtonAction.putValue(
-      Action.SMALL_ICON, new ImageIcon(ChainsawIcons.ICON_NEW_RECEIVER));
-    newReceiverButtonAction.putValue(
-      Action.SHORT_DESCRIPTION, "Creates and configures a new Receiver");
-    newReceiverButtonAction.putValue(Action.NAME, "New Receiver");
-    newReceiverButtonAction.putValue(
-      Action.MNEMONIC_KEY, KeyEvent.VK_N);
-
-    newReceiverButtonAction.setEnabled(true);
-
-    playReceiverButtonAction =
-      new AbstractAction() {
-          public void actionPerformed(ActionEvent e) {
-            playCurrentlySelectedReceiver();
-          }
-        };
-
-    playReceiverButtonAction.putValue(
-      Action.SHORT_DESCRIPTION, "Resumes the selected Node");
-    playReceiverButtonAction.putValue(Action.NAME, "Resume");
-    playReceiverButtonAction.putValue(
-      Action.SMALL_ICON, new ImageIcon(ChainsawIcons.ICON_RESUME_RECEIVER));
-    playReceiverButtonAction.setEnabled(false);
-    playReceiverButtonAction.putValue(
-      Action.MNEMONIC_KEY, KeyEvent.VK_R);
-
-    pauseReceiverButtonAction =
-      new AbstractAction() {
-          public void actionPerformed(ActionEvent e) {
-            pauseCurrentlySelectedReceiver();
-          }
-        };
-
-    pauseReceiverButtonAction.putValue(
-      Action.SHORT_DESCRIPTION,
-      "Pause the selected Receiver.  All events received will be discarded.");
-    pauseReceiverButtonAction.putValue(Action.NAME, "Pause");
-
-    pauseReceiverButtonAction.putValue(
-      Action.MNEMONIC_KEY, KeyEvent.VK_P);
-
-    pauseReceiverButtonAction.putValue(
-      Action.SMALL_ICON, new ImageIcon(ChainsawIcons.PAUSE));
-    pauseReceiverButtonAction.setEnabled(false);
-
-    shutdownReceiverButtonAction =
-      new AbstractAction() {
-          public void actionPerformed(ActionEvent e) {
-            shutdownCurrentlySelectedReceiver();
-          }
-        };
-
-    shutdownReceiverButtonAction.putValue(
-      Action.SHORT_DESCRIPTION,
-      "Shuts down the selected Receiver, and removes it from the Plugin 
registry");
-    shutdownReceiverButtonAction.putValue(Action.NAME, "Shutdown");
-
-    shutdownReceiverButtonAction.putValue(
-      Action.SMALL_ICON, new ImageIcon(ChainsawIcons.ICON_STOP_RECEIVER));
-    shutdownReceiverButtonAction.putValue(
-      Action.MNEMONIC_KEY, KeyEvent.VK_S);
-
-    shutdownReceiverButtonAction.setEnabled(false);
-
-    saveReceiversButtonAction =
-      new AbstractAction() {
-          public void actionPerformed(ActionEvent e) {
-            saveReceivers();
-          }
-        };
-
-    saveReceiversButtonAction.putValue(
-      Action.SHORT_DESCRIPTION,
-      "Save the current receiver configuration");
-    saveReceiversButtonAction.putValue(Action.NAME, "Save receivers");
-
-    saveReceiversButtonAction.putValue(
-      Action.SMALL_ICON, new ImageIcon(ChainsawIcons.FILE_SAVE_AS));
-    saveReceiversButtonAction.putValue(
-      Action.MNEMONIC_KEY, KeyEvent.VK_V);
-
-
-    restartReceiverButtonAction =
-        new AbstractAction() {
-            public void actionPerformed(ActionEvent e) {
-              Receiver selectedReceiver = getCurrentlySelectedReceiver();
-              if(selectedReceiver == null){
-               return;
-              }
-              selectedReceiver.shutdown();
-              selectedReceiver.activateOptions();
-              //allow the visual receiver to get a container on restart
-              if (selectedReceiver instanceof VisualReceiver) {
-                  
((VisualReceiver)selectedReceiver).setContainer(ReceiversPanel.this);
-              }
-            }
-          };
+        receiversTree.setToolTipText("Allows you to manage Log4j Receivers");
+        newReceiverButtonAction =
+            new AbstractAction() {
+                public void actionPerformed(ActionEvent e) {
+                    newReceiverPopup.show(
+                        buttonPanel.newReceiverButton, 0,
+                        buttonPanel.newReceiverButton.getHeight());
+                }
+            };
+        newReceiverButtonAction.putValue(
+            Action.SMALL_ICON, new ImageIcon(ChainsawIcons.ICON_NEW_RECEIVER));
+        newReceiverButtonAction.putValue(
+            Action.SHORT_DESCRIPTION, "Creates and configures a new Receiver");
+        newReceiverButtonAction.putValue(Action.NAME, "New Receiver");
+        newReceiverButtonAction.putValue(
+            Action.MNEMONIC_KEY, KeyEvent.VK_N);
+
+        newReceiverButtonAction.setEnabled(true);
+
+        playReceiverButtonAction =
+            new AbstractAction() {
+                public void actionPerformed(ActionEvent e) {
+                    playCurrentlySelectedReceiver();
+                }
+            };
 
-      restartReceiverButtonAction.putValue(
-        Action.SHORT_DESCRIPTION,
-        "Restarts the selected Receiver");
-      restartReceiverButtonAction.putValue(Action.NAME, "Restart");
+        playReceiverButtonAction.putValue(
+            Action.SHORT_DESCRIPTION, "Resumes the selected Node");
+        playReceiverButtonAction.putValue(Action.NAME, "Resume");
+        playReceiverButtonAction.putValue(
+            Action.SMALL_ICON, new 
ImageIcon(ChainsawIcons.ICON_RESUME_RECEIVER));
+        playReceiverButtonAction.setEnabled(false);
+        playReceiverButtonAction.putValue(
+            Action.MNEMONIC_KEY, KeyEvent.VK_R);
 
-      restartReceiverButtonAction.putValue(
-        Action.SMALL_ICON, new ImageIcon(ChainsawIcons.ICON_RESTART));
-      restartReceiverButtonAction.putValue(
-        Action.MNEMONIC_KEY, KeyEvent.VK_R);
+        pauseReceiverButtonAction =
+            new AbstractAction() {
+                public void actionPerformed(ActionEvent e) {
+                    pauseCurrentlySelectedReceiver();
+                }
+            };
 
-      restartReceiverButtonAction.setEnabled(false);
+        pauseReceiverButtonAction.putValue(
+            Action.SHORT_DESCRIPTION,
+            "Pause the selected Receiver.  All events received will be 
discarded.");
+        pauseReceiverButtonAction.putValue(Action.NAME, "Pause");
 
-    showReceiverHelpAction =
-      new AbstractAction("Help") {
-          public void actionPerformed(ActionEvent e) {
-            Receiver receiver = getCurrentlySelectedReceiver();
+        pauseReceiverButtonAction.putValue(
+            Action.MNEMONIC_KEY, KeyEvent.VK_P);
 
-            if (receiver != null) {
-              HelpManager.getInstance().showHelpForClass(receiver.getClass());
-            }
-          }
-        };
-
-    showReceiverHelpAction.putValue(
-      Action.SMALL_ICON, new ImageIcon(ChainsawIcons.HELP));
-    showReceiverHelpAction.putValue(
-      Action.SHORT_DESCRIPTION, "Displays the JavaDoc page for this Plugin");
-
-    startAllAction =
-      new AbstractAction(
-        "(Re)start All Receivers", new 
ImageIcon(ChainsawIcons.ICON_RESTART_ALL)) {
-          public void actionPerformed(ActionEvent e) {
-            if (
-              JOptionPane.showConfirmDialog(
-                  null,
-                  "This will cause any active Receiver to stop, and 
disconnect.  Is this ok?",
-                  "Confirm", JOptionPane.OK_CANCEL_OPTION) == 
JOptionPane.OK_OPTION) {
-              new Thread(
-                      () -> {
-                        Collection allReceivers =
-                            pluginRegistry.getPlugins(Receiver.class);
-
-                          for (Object allReceiver : allReceivers) {
-                              Receiver item = (Receiver) allReceiver;
-                              item.shutdown();
-                              item.activateOptions();
-                          }
-
-                        updateReceiverTreeInDispatchThread();
-                        MessageCenter.getInstance().getLogger().info(
-                          "All Receivers have been (re)started");
-                      }).start();
-            }
-          }
-        };
+        pauseReceiverButtonAction.putValue(
+            Action.SMALL_ICON, new ImageIcon(ChainsawIcons.PAUSE));
+        pauseReceiverButtonAction.setEnabled(false);
 
-    startAllAction.putValue(
-      Action.SHORT_DESCRIPTION,
-      "Ensures that any Receiver that isn't active, is started, and any 
started action is stopped, and then restarted");
+        shutdownReceiverButtonAction =
+            new AbstractAction() {
+                public void actionPerformed(ActionEvent e) {
+                    shutdownCurrentlySelectedReceiver();
+                }
+            };
 
-    receiversTree.setBorder(BorderFactory.createEmptyBorder(5, 5, 5, 5));
-    receiversTree.setCellRenderer(new ReceiverTreeCellRenderer());
-    receiversTree.setRowHeight(19);
+        shutdownReceiverButtonAction.putValue(
+            Action.SHORT_DESCRIPTION,
+            "Shuts down the selected Receiver, and removes it from the Plugin 
registry");
+        shutdownReceiverButtonAction.putValue(Action.NAME, "Shutdown");
 
-    buttonPanel = new ReceiverToolbar();
-    receiversTree.addTreeSelectionListener(buttonPanel);
+        shutdownReceiverButtonAction.putValue(
+            Action.SMALL_ICON, new 
ImageIcon(ChainsawIcons.ICON_STOP_RECEIVER));
+        shutdownReceiverButtonAction.putValue(
+            Action.MNEMONIC_KEY, KeyEvent.VK_S);
 
-    PopupListener popupListener = new PopupListener(popupMenu);
-    receiversTree.addMouseListener(popupListener);
-    this.addMouseListener(popupListener);
+        shutdownReceiverButtonAction.setEnabled(false);
 
-    JComponent component = receiversTree;
-    JScrollPane pane = new JScrollPane(component);
+        saveReceiversButtonAction =
+            new AbstractAction() {
+                public void actionPerformed(ActionEvent e) {
+                    saveReceivers();
+                }
+            };
 
-    splitter.setOrientation(JSplitPane.VERTICAL_SPLIT);
+        saveReceiversButtonAction.putValue(
+            Action.SHORT_DESCRIPTION,
+            "Save the current receiver configuration");
+        saveReceiversButtonAction.putValue(Action.NAME, "Save receivers");
 
-    splitter.setTopComponent(pane);
-    splitter.setBottomComponent(pluginEditorPanel);
+        saveReceiversButtonAction.putValue(
+            Action.SMALL_ICON, new ImageIcon(ChainsawIcons.FILE_SAVE_AS));
+        saveReceiversButtonAction.putValue(
+            Action.MNEMONIC_KEY, KeyEvent.VK_V);
 
-    splitter.setResizeWeight(0.7);
-    add(buttonPanel, BorderLayout.NORTH);
-    add(splitter, BorderLayout.CENTER);
 
-    /**
-     * This Tree likes to be notified when Socket's are accepted so
-     * we listen for them and update the Tree.
-     */
-    SocketNodeEventListener listener =
-      new SocketNodeEventListener() {
-        public void socketOpened(String remoteInfo) {
-          updateReceiverTreeInDispatchThread();
+        restartReceiverButtonAction =
+            new AbstractAction() {
+                public void actionPerformed(ActionEvent e) {
+                    Receiver selectedReceiver = getCurrentlySelectedReceiver();
+                    if (selectedReceiver == null) {
+                        return;
+                    }
+                    selectedReceiver.shutdown();
+                    selectedReceiver.activateOptions();
+                    //allow the visual receiver to get a container on restart
+                    if (selectedReceiver instanceof VisualReceiver) {
+                        ((VisualReceiver) 
selectedReceiver).setContainer(ReceiversPanel.this);
+                    }
+                }
+            };
+
+        restartReceiverButtonAction.putValue(
+            Action.SHORT_DESCRIPTION,
+            "Restarts the selected Receiver");
+        restartReceiverButtonAction.putValue(Action.NAME, "Restart");
+
+        restartReceiverButtonAction.putValue(
+            Action.SMALL_ICON, new ImageIcon(ChainsawIcons.ICON_RESTART));
+        restartReceiverButtonAction.putValue(
+            Action.MNEMONIC_KEY, KeyEvent.VK_R);
+
+        restartReceiverButtonAction.setEnabled(false);
+
+        showReceiverHelpAction =
+            new AbstractAction("Help") {
+                public void actionPerformed(ActionEvent e) {
+                    Receiver receiver = getCurrentlySelectedReceiver();
+
+                    if (receiver != null) {
+                        
HelpManager.getInstance().showHelpForClass(receiver.getClass());
+                    }
+                }
+            };
+
+        showReceiverHelpAction.putValue(
+            Action.SMALL_ICON, new ImageIcon(ChainsawIcons.HELP));
+        showReceiverHelpAction.putValue(
+            Action.SHORT_DESCRIPTION, "Displays the JavaDoc page for this 
Plugin");
+
+        startAllAction =
+            new AbstractAction(
+                "(Re)start All Receivers", new 
ImageIcon(ChainsawIcons.ICON_RESTART_ALL)) {
+                public void actionPerformed(ActionEvent e) {
+                    if (
+                        JOptionPane.showConfirmDialog(
+                            null,
+                            "This will cause any active Receiver to stop, and 
disconnect.  Is this ok?",
+                            "Confirm", JOptionPane.OK_CANCEL_OPTION) == 
JOptionPane.OK_OPTION) {
+                        new Thread(
+                            () -> {
+                                Collection allReceivers =
+                                    pluginRegistry.getPlugins(Receiver.class);
+
+                                for (Object allReceiver : allReceivers) {
+                                    Receiver item = (Receiver) allReceiver;
+                                    item.shutdown();
+                                    item.activateOptions();
+                                }
+
+                                updateReceiverTreeInDispatchThread();
+                                MessageCenter.getInstance().getLogger().info(
+                                    "All Receivers have been (re)started");
+                            }).start();
+                    }
+                }
+            };
+
+        startAllAction.putValue(
+            Action.SHORT_DESCRIPTION,
+            "Ensures that any Receiver that isn't active, is started, and any 
started action is stopped, and then restarted");
+
+        receiversTree.setBorder(BorderFactory.createEmptyBorder(5, 5, 5, 5));
+        receiversTree.setCellRenderer(new ReceiverTreeCellRenderer());
+        receiversTree.setRowHeight(19);
+
+        buttonPanel = new ReceiverToolbar();
+        receiversTree.addTreeSelectionListener(buttonPanel);
+
+        PopupListener popupListener = new PopupListener(popupMenu);
+        receiversTree.addMouseListener(popupListener);
+        this.addMouseListener(popupListener);
+
+        JComponent component = receiversTree;
+        JScrollPane pane = new JScrollPane(component);
+
+        splitter.setOrientation(JSplitPane.VERTICAL_SPLIT);
+
+        splitter.setTopComponent(pane);
+        splitter.setBottomComponent(pluginEditorPanel);
+
+        splitter.setResizeWeight(0.7);
+        add(buttonPanel, BorderLayout.NORTH);
+        add(splitter, BorderLayout.CENTER);
+
+        /**
+         * This Tree likes to be notified when Socket's are accepted so
+         * we listen for them and update the Tree.
+         */
+        SocketNodeEventListener listener =
+            new SocketNodeEventListener() {
+                public void socketOpened(String remoteInfo) {
+                    updateReceiverTreeInDispatchThread();
+                }
+
+                public void socketClosedEvent(Exception e) {
+                    updateReceiverTreeInDispatchThread();
+                }
+            };
+
+        /**
+         * add this listener to all SocketReceivers
+         */
+        if (pluginRegistry != null) {
+            List socketReceivers =
+                pluginRegistry.getPlugins(SocketReceiver.class);
+
+            for (Object socketReceiver : socketReceivers) {
+                SocketReceiver element = (SocketReceiver) socketReceiver;
+                element.addSocketNodeEventListener(listener);
+            }
         }
+    }
 
-        public void socketClosedEvent(Exception e) {
-          updateReceiverTreeInDispatchThread();
+    private void saveReceivers() {
+        File saveConfigFile = SwingHelper.promptForFile(this, null, "Save 
receiver configuration XML file", false);
+        if (saveConfigFile != null) {
+            
ReceiversHelper.getInstance().saveReceiverConfiguration(saveConfigFile);
         }
-      };
+    }
+
+    protected ReceiversTreeModel getReceiverTreeModel() {
+        return ((ReceiversTreeModel) receiversTree.getModel());
+    }
 
     /**
-     * add this listener to all SocketReceivers
+     *
      */
-    if (pluginRegistry != null) {
-       List socketReceivers =
-               pluginRegistry.getPlugins(SocketReceiver.class);
+    protected void updateCurrentlySelectedNodeInDispatchThread() {
+        SwingUtilities.invokeLater(
+            () -> {
+                DefaultMutableTreeNode node =
+                    (DefaultMutableTreeNode) receiversTree
+                        .getLastSelectedPathComponent();
 
-        for (Object socketReceiver : socketReceivers) {
-            SocketReceiver element = (SocketReceiver) socketReceiver;
-            element.addSocketNodeEventListener(listener);
-        }
-     }
-  }
+                if (node == null) {
+                    return;
+                }
 
-  private void saveReceivers() {
-    File saveConfigFile = SwingHelper.promptForFile(this, null, "Save receiver 
configuration XML file", false);
-    if (saveConfigFile != null) {
-      ReceiversHelper.getInstance().saveReceiverConfiguration(saveConfigFile);
+                getReceiverTreeModel().nodeChanged(node);
+                updateActions();
+            });
     }
-  }
 
-  protected ReceiversTreeModel getReceiverTreeModel() {
-    return ((ReceiversTreeModel) receiversTree.getModel());
-  }
+    /**
+     * Returns the currently selected Receiver, or null if there is no
+     * selected Receiver (this could be because a) nothing at all is selected
+     * or b) a non Receiver type node is selected
+     *
+     * @return Receiver or null
+     */
+    private Receiver getCurrentlySelectedReceiver() {
+        DefaultMutableTreeNode node =
+            (DefaultMutableTreeNode) 
receiversTree.getLastSelectedPathComponent();
 
-  /**
-   *
-   */
-  protected void updateCurrentlySelectedNodeInDispatchThread() {
-    SwingUtilities.invokeLater(
-            () -> {
-              DefaultMutableTreeNode node =
-                (DefaultMutableTreeNode) receiversTree
-                .getLastSelectedPathComponent();
+        if (node == null) {
+            return null;
+        }
 
-              if (node == null) {
-                return;
-              }
+        Object userObject = node.getUserObject();
 
-              getReceiverTreeModel().nodeChanged(node);
-              updateActions();
-            });
-  }
-
-  /**
-   * Returns the currently selected Receiver, or null if there is no
-   * selected Receiver (this could be because a) nothing at all is selected
-   * or b) a non Receiver type node is selected
-   *
-   * @return Receiver or null
-   */
-  private Receiver getCurrentlySelectedReceiver() {
-    DefaultMutableTreeNode node =
-      (DefaultMutableTreeNode) receiversTree.getLastSelectedPathComponent();
-
-    if (node == null) {
-      return null;
+        if (userObject instanceof Receiver) {
+            return (Receiver) userObject;
+        }
+
+        return null;
     }
 
-    Object userObject = node.getUserObject();
+    private Receiver[] getSelectedReceivers() {
+        TreePath[] paths = receiversTree.getSelectionPaths();
+        Collection receivers = new ArrayList();
 
-    if (userObject instanceof Receiver) {
-      return (Receiver) userObject;
+        for (TreePath path : paths) {
+            DefaultMutableTreeNode node =
+                (DefaultMutableTreeNode) path.getLastPathComponent();
+
+            if ((node != null) && node.getUserObject() instanceof Receiver) {
+                receivers.add(node.getUserObject());
+            }
+        }
+
+        return (Receiver[]) receivers.toArray(new Receiver[0]);
     }
 
-    return null;
-  }
-
-  private Receiver[] getSelectedReceivers() {
-    TreePath[] paths = receiversTree.getSelectionPaths();
-    Collection receivers = new ArrayList();
-
-      for (TreePath path : paths) {
-          DefaultMutableTreeNode node =
-                  (DefaultMutableTreeNode) path.getLastPathComponent();
-
-          if ((node != null) && node.getUserObject() instanceof Receiver) {
-              receivers.add(node.getUserObject());
-          }
-      }
-
-    return (Receiver[]) receivers.toArray(new Receiver[0]);
-  }
-
-  /**
-   * Returns the currently seleted node's User Object, or null
-   * if there is no selected node, or if the currently selected node has
-   * not user Object
-   * @return Object representing currently seleted Node's User Object
-   */
-  private Object getCurrentlySelectedUserObject() {
-    DefaultMutableTreeNode node =
-      (DefaultMutableTreeNode) receiversTree.getLastSelectedPathComponent();
-
-    if (node == null) {
-      return null;
+    /**
+     * Returns the currently seleted node's User Object, or null
+     * if there is no selected node, or if the currently selected node has
+     * not user Object
+     *
+     * @return Object representing currently seleted Node's User Object
+     */
+    private Object getCurrentlySelectedUserObject() {
+        DefaultMutableTreeNode node =
+            (DefaultMutableTreeNode) 
receiversTree.getLastSelectedPathComponent();
+
+        if (node == null) {
+            return null;
+        }
+
+        return node.getUserObject();
     }
 
-    return node.getUserObject();
-  }
-
-  /**
-   * Takes the currently selected Receiver and pauess it, effectively
-   * discarding any received event BEFORE it is even posted to the logger
-   * repository.
-   *
-   * The user is NOT asked to confirm this operation
-   *
-   */
-  private void pauseCurrentlySelectedReceiver() {
-    new Thread(
+    /**
+     * Takes the currently selected Receiver and pauess it, effectively
+     * discarding any received event BEFORE it is even posted to the logger
+     * repository.
+     * <p>
+     * The user is NOT asked to confirm this operation
+     */
+    private void pauseCurrentlySelectedReceiver() {
+        new Thread(
             () -> {
-              Object obj = getCurrentlySelectedUserObject();
+                Object obj = getCurrentlySelectedUserObject();
 
-              if ((obj != null) && obj instanceof Pauseable) {
-                ((Pauseable) obj).setPaused(true);
-                updateCurrentlySelectedNodeInDispatchThread();
-              }
+                if ((obj != null) && obj instanceof Pauseable) {
+                    ((Pauseable) obj).setPaused(true);
+                    updateCurrentlySelectedNodeInDispatchThread();
+                }
             }).start();
-  }
-
-  /**
-   * Ensures that the currently selected receiver active property is set to
-   * true
-   *
-   */
-  private void playCurrentlySelectedReceiver() {
-    new Thread(
+    }
+
+    /**
+     * Ensures that the currently selected receiver active property is set to
+     * true
+     */
+    private void playCurrentlySelectedReceiver() {
+        new Thread(
             () -> {
-              Object obj = getCurrentlySelectedUserObject();
+                Object obj = getCurrentlySelectedUserObject();
 
-              if ((obj != null) && obj instanceof Pauseable) {
-                ((Pauseable) obj).setPaused(false);
+                if ((obj != null) && obj instanceof Pauseable) {
+                    ((Pauseable) obj).setPaused(false);
 
-                updateCurrentlySelectedNodeInDispatchThread();
-              }
-            }).start();
-  }
-
-  /**
-   * Takes the currently selected Receiver and stops it, which effectively
-   * removes it from the PluginRegistry.
-   *
-   * The user is asked to confirm this operation
-   *
-   */
-  private void shutdownCurrentlySelectedReceiver() {
-    if (
-      JOptionPane.showConfirmDialog(
-          null,
-          "Are you sure you wish to shutdown this receiver?\n\nThis will 
disconnect any network resources, and remove it from the PluginRegistry.",
-          "Confirm stop of Receiver", JOptionPane.YES_NO_OPTION) == 
JOptionPane.YES_OPTION) {
-      new Thread(
-              () -> {
-                Receiver[] receivers = getSelectedReceivers();
-
-                if (receivers != null) {
-                    for (Receiver receiver : receivers) {
-                        pluginRegistry.stopPlugin(receiver.getName());
-                    }
+                    updateCurrentlySelectedNodeInDispatchThread();
                 }
-              }).start();
+            }).start();
     }
-  }
 
-  /**
-   * Sets the state of actions depending on certain conditions (i.e what is
-   * currently selected etc.)
-   */
-  private void updateActions() {
-    Object object = getCurrentlySelectedUserObject();
+    /**
+     * Takes the currently selected Receiver and stops it, which effectively
+     * removes it from the PluginRegistry.
+     * <p>
+     * The user is asked to confirm this operation
+     */
+    private void shutdownCurrentlySelectedReceiver() {
+        if (
+            JOptionPane.showConfirmDialog(
+                null,
+                "Are you sure you wish to shutdown this receiver?\n\nThis will 
disconnect any network resources, and remove it from the PluginRegistry.",
+                "Confirm stop of Receiver", JOptionPane.YES_NO_OPTION) == 
JOptionPane.YES_OPTION) {
+            new Thread(
+                () -> {
+                    Receiver[] receivers = getSelectedReceivers();
+
+                    if (receivers != null) {
+                        for (Receiver receiver : receivers) {
+                            pluginRegistry.stopPlugin(receiver.getName());
+                        }
+                    }
+                }).start();
+        }
+    }
 
-    if ((object != null) && object instanceof Pauseable) {
-      Pauseable pauseable = (Pauseable) object;
+    /**
+     * Sets the state of actions depending on certain conditions (i.e what is
+     * currently selected etc.)
+     */
+    private void updateActions() {
+        Object object = getCurrentlySelectedUserObject();
+
+        if ((object != null) && object instanceof Pauseable) {
+            Pauseable pauseable = (Pauseable) object;
+
+            if (!pauseable.isPaused()) {
+                pauseReceiverButtonAction.setEnabled(true);
+                playReceiverButtonAction.setEnabled(false);
+            } else {
+                pauseReceiverButtonAction.setEnabled(false);
+                playReceiverButtonAction.setEnabled(true);
+            }
+        } else {
+            pauseReceiverButtonAction.setEnabled(false);
+            playReceiverButtonAction.setEnabled(false);
+        }
 
-      if (!pauseable.isPaused()) {
-        pauseReceiverButtonAction.setEnabled(true);
-        playReceiverButtonAction.setEnabled(false);
-      } else {
-        pauseReceiverButtonAction.setEnabled(false);
-        playReceiverButtonAction.setEnabled(true);
-      }
-    } else {
-      pauseReceiverButtonAction.setEnabled(false);
-      playReceiverButtonAction.setEnabled(false);
+        if (object instanceof Receiver) {
+            newReceiverButtonAction.setEnabled(true);
+            shutdownReceiverButtonAction.setEnabled(true);
+            restartReceiverButtonAction.setEnabled(true);
+        } else {
+            shutdownReceiverButtonAction.setEnabled(false);
+            restartReceiverButtonAction.setEnabled(false);
+        }
     }
 
-    if (object instanceof Receiver) {
-      newReceiverButtonAction.setEnabled(true);
-      shutdownReceiverButtonAction.setEnabled(true);
-      restartReceiverButtonAction.setEnabled(true);
-    } else {
-      shutdownReceiverButtonAction.setEnabled(false);
-      restartReceiverButtonAction.setEnabled(false);
-    }
-  }
-
-  /**
-   * Ensures that the Receiver tree is updated with the latest information
-   * and that this operation occurs in the Swing Event Dispatch thread.
-   *
-   */
-  public void updateReceiverTreeInDispatchThread() {
-    logger.debug(
-      "updateReceiverTreeInDispatchThread, should not be needed now");
-
-    //    if (SwingUtilities.isEventDispatchThread()) {
-    //      updateReceiverTree.run();
-    //    } else {
-    //      SwingUtilities.invokeLater(updateReceiverTree);
-    //    }
-  }
-
-  /* (non-Javadoc)
-   * @see java.awt.Component#setVisible(boolean)
-   */
-  public void setVisible(boolean aFlag) {
-    boolean oldValue = isVisible();
-    super.setVisible(aFlag);
-    firePropertyChange("visible", oldValue, isVisible());
-  }
-
-  public void loadSettings(LoadSettingsEvent event){}
-
-   /**
-    * Saves all the receivers which are active at shut down as a configuration
-    * file which can be loaded when Chainsaw will be restarted.
-    */
-
-  public void saveSettings(SaveSettingsEvent event){
-     File file = new 
File(SettingsManager.getInstance().getSettingsDirectory(), 
"receiver-config.xml");
-     ReceiversHelper.getInstance().saveReceiverConfiguration(file);
-  }
-
-  /**
-   * A popup menu that allows the user to choose which
-   * style of Receiver to create, which spawns a relevant Dialog
-   * to enter the information and create the Receiver
-   *
-   * @author Paul Smith &lt;psm...@apache.org&gt;
-   *
-   */
-  class NewReceiverPopupMenu extends JPopupMenu {
-    NewReceiverPopupMenu() {
-      try {
-        final List receiverList =
-          ReceiversHelper.getInstance().getKnownReceiverClasses();
-        String separatorCheck = null;
-
-          for (Object aReceiverList : receiverList) {
-              final Class toCreate = (Class) aReceiverList;
-              Package thePackage = toCreate.getPackage();
-              final String name =
-                      
toCreate.getName().substring(thePackage.getName().length() + 1);
-
-              if (separatorCheck == null) {
-                  separatorCheck = name.substring(0, 1);
-              } else {
-                  String current = name.substring(0, 1);
-
-                  if (!current.equals(separatorCheck)) {
-                      addSeparator();
-                      separatorCheck = current;
-                  }
-              }
-
-              add(
-                      new AbstractAction("New " + name + "...") {
-                          public void actionPerformed(ActionEvent e) {
-                              Container container = 
SwingUtilities.getAncestorOfClass(JFrame.class, ReceiversPanel.this);
-                              final JDialog dialog = new JDialog((JFrame) 
container, "New " + toCreate.getName() + "...", true);
-
-                              try {
-                                  final NewReceiverDialogPanel panel =
-                                          
NewReceiverDialogPanel.create(toCreate);
-                                  dialog.getContentPane().add(panel);
-                                  dialog.pack();
-                                  SwingHelper.centerOnScreen(dialog);
-
-                                  /**
-                                   * Make the default button the ok button
-                                   */
-                                  
dialog.getRootPane().setDefaultButton(panel.getOkPanel().getOkButton());
-
-                                  /**
-                                   * Use the standard Cancel metaphor
-                                   */
-                                  SwingHelper.configureCancelForDialog(dialog, 
panel.getOkPanel().getCancelButton());
-
-
-                                  
panel.getOkPanel().getOkButton().addActionListener(
-                                          e2 -> {
-                                              Plugin plugin = 
panel.getPlugin();
-                                              if (plugin.getName() != null && 
!plugin.getName().trim().equals("")) {
-                                                  dialog.dispose();
-                                                  
pluginRegistry.addPlugin(plugin);
-                                                  plugin.activateOptions();
-                                                  
MessageCenter.getInstance().addMessage("Plugin '" + plugin.getName() + "' 
started");
-                                              } else {
-                                                  
MessageCenter.getInstance().getLogger().error("Name required to create 
receiver");
-                                              }
-                                          });
-                                  dialog.setVisible(true);
-                              } catch (Exception e1) {
-                                  e1.printStackTrace();
-                                  
MessageCenter.getInstance().getLogger().error(
-                                          "Failed to create the new Receiver 
dialog", e1);
-                              }
-                          }
-                      });
-          }
-      } catch (Exception e) {
-        e.printStackTrace();
-        throw new RuntimeException(e.getMessage());
-      }
-    }
-  }
-
-  /**
-   * A popup menu class for when the user uses the popup trigger action
-   * on a node in the Receiver tree.
-   *
-   * @author Paul Smith &lt;psm...@apache.org&gt;
-   *
-   */
-  class ReceiverPopupMenu extends JPopupMenu {
-    ReceiverPopupMenu() {
+    /**
+     * Ensures that the Receiver tree is updated with the latest information
+     * and that this operation occurs in the Swing Event Dispatch thread.
+     */
+    public void updateReceiverTreeInDispatchThread() {
+        logger.debug(
+            "updateReceiverTreeInDispatchThread, should not be needed now");
+
+        //    if (SwingUtilities.isEventDispatchThread()) {
+        //      updateReceiverTree.run();
+        //    } else {
+        //      SwingUtilities.invokeLater(updateReceiverTree);
+        //    }
     }
 
     /* (non-Javadoc)
-     * @see javax.swing.JPopupMenu#show(java.awt.Component, int, int)
+     * @see java.awt.Component#setVisible(boolean)
      */
-    public void show(Component invoker, int x, int y) {
-      DefaultMutableTreeNode node =
-        (DefaultMutableTreeNode) receiversTree.getLastSelectedPathComponent();
-
-      if (node == null) {
-        return;
-      }
-
-      Object userObject = node.getUserObject();
-      removeAll();
+    public void setVisible(boolean aFlag) {
+        boolean oldValue = isVisible();
+        super.setVisible(aFlag);
+        firePropertyChange("visible", oldValue, isVisible());
+    }
 
-      if (userObject == getRootOfTree().getUserObject()) {
-        buildForReceiversRoot();
-      } else if (getCurrentlySelectedReceiver() != null) {
-        buildForReceiverNode();
-      } else {
-        return;
-      }
+    public void loadSettings(LoadSettingsEvent event) {
+    }
 
-      this.invalidate();
-      this.validate();
+    /**
+     * Saves all the receivers which are active at shut down as a configuration
+     * file which can be loaded when Chainsaw will be restarted.
+     */
 
-      super.show(invoker, x, y);
+    public void saveSettings(SaveSettingsEvent event) {
+        File file = new 
File(SettingsManager.getInstance().getSettingsDirectory(), 
"receiver-config.xml");
+        ReceiversHelper.getInstance().saveReceiverConfiguration(file);
     }
 
     /**
+     * A popup menu that allows the user to choose which
+     * style of Receiver to create, which spawns a relevant Dialog
+     * to enter the information and create the Receiver
      *
+     * @author Paul Smith &lt;psm...@apache.org&gt;
      */
-    private DefaultMutableTreeNode getRootOfTree() {
-      return (DefaultMutableTreeNode) receiversTree.getModel().getRoot();
+    class NewReceiverPopupMenu extends JPopupMenu {
+        NewReceiverPopupMenu() {
+            try {
+                final List receiverList =
+                    ReceiversHelper.getInstance().getKnownReceiverClasses();
+                String separatorCheck = null;
+
+                for (Object aReceiverList : receiverList) {
+                    final Class toCreate = (Class) aReceiverList;
+                    Package thePackage = toCreate.getPackage();
+                    final String name =
+                        
toCreate.getName().substring(thePackage.getName().length() + 1);
+
+                    if (separatorCheck == null) {
+                        separatorCheck = name.substring(0, 1);
+                    } else {
+                        String current = name.substring(0, 1);
+
+                        if (!current.equals(separatorCheck)) {
+                            addSeparator();
+                            separatorCheck = current;
+                        }
+                    }
+
+                    add(
+                        new AbstractAction("New " + name + "...") {
+                            public void actionPerformed(ActionEvent e) {
+                                Container container = 
SwingUtilities.getAncestorOfClass(JFrame.class, ReceiversPanel.this);
+                                final JDialog dialog = new JDialog((JFrame) 
container, "New " + toCreate.getName() + "...", true);
+
+                                try {
+                                    final NewReceiverDialogPanel panel =
+                                        
NewReceiverDialogPanel.create(toCreate);
+                                    dialog.getContentPane().add(panel);
+                                    dialog.pack();
+                                    SwingHelper.centerOnScreen(dialog);
+
+                                    /**
+                                     * Make the default button the ok button
+                                     */
+                                    
dialog.getRootPane().setDefaultButton(panel.getOkPanel().getOkButton());
+
+                                    /**
+                                     * Use the standard Cancel metaphor
+                                     */
+                                    
SwingHelper.configureCancelForDialog(dialog, 
panel.getOkPanel().getCancelButton());
+
+
+                                    
panel.getOkPanel().getOkButton().addActionListener(
+                                        e2 -> {
+                                            Plugin plugin = panel.getPlugin();
+                                            if (plugin.getName() != null && 
!plugin.getName().trim().equals("")) {
+                                                dialog.dispose();
+                                                
pluginRegistry.addPlugin(plugin);
+                                                plugin.activateOptions();
+                                                
MessageCenter.getInstance().addMessage("Plugin '" + plugin.getName() + "' 
started");
+                                            } else {
+                                                
MessageCenter.getInstance().getLogger().error("Name required to create 
receiver");
+                                            }
+                                        });
+                                    dialog.setVisible(true);
+                                } catch (Exception e1) {
+                                    e1.printStackTrace();
+                                    
MessageCenter.getInstance().getLogger().error(
+                                        "Failed to create the new Receiver 
dialog", e1);
+                                }
+                            }
+                        });
+                }
+            } catch (Exception e) {
+                e.printStackTrace();
+                throw new RuntimeException(e.getMessage());
+            }
+        }
     }
 
     /**
-     * Builds the popup menu with relevant items for a selected
-     * Receiver node in the Tree.
+     * A popup menu class for when the user uses the popup trigger action
+     * on a node in the Receiver tree.
+     *
+     * @author Paul Smith &lt;psm...@apache.org&gt;
      */
-    private void buildForReceiverNode() {
-
-      add(playReceiverButtonAction);
-      add(pauseReceiverButtonAction);
-      add(restartReceiverButtonAction);
-      add(shutdownReceiverButtonAction);
-      add(saveReceiversButtonAction);
-
-      addSeparator();
-
-      final Receiver r = getCurrentlySelectedReceiver();
-      add(createLevelRadioButton(r, Level.TRACE));
-      add(createLevelRadioButton(r, Level.DEBUG));
-      add(createLevelRadioButton(r, Level.INFO));
-      add(createLevelRadioButton(r, Level.WARN));
-      add(createLevelRadioButton(r, Level.ERROR));
-      addSeparator();
-      add(createLevelRadioButton(r, Level.OFF));
-      add(createLevelRadioButton(r, Level.ALL));
-      addSeparator();
-      add(showReceiverHelpAction);
-    }
+    class ReceiverPopupMenu extends JPopupMenu {
+        ReceiverPopupMenu() {
+        }
+
+        /* (non-Javadoc)
+         * @see javax.swing.JPopupMenu#show(java.awt.Component, int, int)
+         */
+        public void show(Component invoker, int x, int y) {
+            DefaultMutableTreeNode node =
+                (DefaultMutableTreeNode) 
receiversTree.getLastSelectedPathComponent();
+
+            if (node == null) {
+                return;
+            }
+
+            Object userObject = node.getUserObject();
+            removeAll();
 
-    private JRadioButtonMenuItem createLevelRadioButton(
-      final Receiver r, final Level l) {
-      Map<String, Icon> levelIconMap = 
LevelIconFactory.getInstance().getLevelToIconMap();
-
-      Action action =
-        new AbstractAction(
-          l.toString(), levelIconMap.get(l.toString())) {
-          public void actionPerformed(ActionEvent e) {
-            if (r != null) {
-              r.setThreshold(l);
-              updateCurrentlySelectedNodeInDispatchThread();
+            if (userObject == getRootOfTree().getUserObject()) {
+                buildForReceiversRoot();
+            } else if (getCurrentlySelectedReceiver() != null) {
+                buildForReceiverNode();
+            } else {
+                return;
             }
-          }
-        };
 
-      JRadioButtonMenuItem item = new JRadioButtonMenuItem(action);
-      item.setSelected(r.getThreshold() == l);
+            this.invalidate();
+            this.validate();
+
+            super.show(invoker, x, y);
+        }
+
+        /**
+         *
+         */
+        private DefaultMutableTreeNode getRootOfTree() {
+            return (DefaultMutableTreeNode) receiversTree.getModel().getRoot();
+        }
 
-      return item;
+        /**
+         * Builds the popup menu with relevant items for a selected
+         * Receiver node in the Tree.
+         */
+        private void buildForReceiverNode() {
+
+            add(playReceiverButtonAction);
+            add(pauseReceiverButtonAction);
+            add(restartReceiverButtonAction);
+            add(shutdownReceiverButtonAction);
+            add(saveReceiversButtonAction);
+
+            addSeparator();
+
+            final Receiver r = getCurrentlySelectedReceiver();
+            add(createLevelRadioButton(r, Level.TRACE));
+            add(createLevelRadioButton(r, Level.DEBUG));
+            add(createLevelRadioButton(r, Level.INFO));
+            add(createLevelRadioButton(r, Level.WARN));
+            add(createLevelRadioButton(r, Level.ERROR));
+            addSeparator();
+            add(createLevelRadioButton(r, Level.OFF));
+            add(createLevelRadioButton(r, Level.ALL));
+            addSeparator();
+            add(showReceiverHelpAction);
+        }
+
+        private JRadioButtonMenuItem createLevelRadioButton(
+            final Receiver r, final Level l) {
+            Map<String, Icon> levelIconMap = 
LevelIconFactory.getInstance().getLevelToIconMap();
+
+            Action action =
+                new AbstractAction(
+                    l.toString(), levelIconMap.get(l.toString())) {
+                    public void actionPerformed(ActionEvent e) {
+                        if (r != null) {
+                            r.setThreshold(l);
+                            updateCurrentlySelectedNodeInDispatchThread();
+                        }
+                    }
+                };
+
+            JRadioButtonMenuItem item = new JRadioButtonMenuItem(action);
+            item.setSelected(r.getThreshold() == l);
+
+            return item;
+        }
+
+        /**
+         * Builds a relevant set of menus for when the Root node in the 
Receiver
+         * tree has been selected
+         */
+        private void buildForReceiversRoot() {
+            JMenuItem startAll = new JMenuItem(startAllAction);
+
+            add(newReceiverButtonAction);
+
+            addSeparator();
+            add(startAll);
+        }
     }
 
     /**
-     * Builds a relevant set of menus for when the Root node in the Receiver
-     * tree has been selected
+     * A simple Panel that has toolbar buttons for restarting,
+     * playing, pausing, and stoping receivers
      *
+     * @author Paul Smith &lt;psm...@apache.org&gt;
      */
-    private void buildForReceiversRoot() {
-      JMenuItem startAll = new JMenuItem(startAllAction);
-
-      add(newReceiverButtonAction);
+    private class ReceiverToolbar extends JToolBar
+        implements TreeSelectionListener {
+        final SmallButton newReceiverButton;
 
-      addSeparator();
-      add(startAll);
-    }
-  }
+        private ReceiverToolbar() {
+            setFloatable(false);
 
-  /**
-   * A simple Panel that has toolbar buttons for restarting,
-   * playing, pausing, and stoping receivers
-   *
-   * @author Paul Smith &lt;psm...@apache.org&gt;
-   *
-   */
-  private class ReceiverToolbar extends JToolBar
-    implements TreeSelectionListener {
-    final SmallButton newReceiverButton;
+            SmallButton restartReceiverButton = new 
SmallButton(restartReceiverButtonAction);
+            restartReceiverButton.setText(null);
 
-    private ReceiverToolbar() {
-      setFloatable(false);
+            SmallButton shutdownReceiverButton =
+                new SmallButton(shutdownReceiverButtonAction);
+            shutdownReceiverButton.setText(null);
 
-      SmallButton restartReceiverButton = new 
SmallButton(restartReceiverButtonAction);
-      restartReceiverButton.setText(null);
-      
-      SmallButton shutdownReceiverButton =
-        new SmallButton(shutdownReceiverButtonAction);
-      shutdownReceiverButton.setText(null);
+            SmallButton saveReceiversButton =
+                new SmallButton(saveReceiversButtonAction);
+            saveReceiversButton.setText(null);
 
-      SmallButton saveReceiversButton =
-        new SmallButton(saveReceiversButtonAction);
-      saveReceiversButton.setText(null);
+            SmallButton restartAllButton = new SmallButton(startAllAction);
+            restartAllButton.setText(null);
 
-      SmallButton restartAllButton = new SmallButton(startAllAction);
-      restartAllButton.setText(null);
-      
-      
 
-      newReceiverButton = new SmallButton(newReceiverButtonAction);
-      newReceiverButton.setText(null);
-      newReceiverButton.addMouseListener(new PopupListener(newReceiverPopup));
+            newReceiverButton = new SmallButton(newReceiverButtonAction);
+            newReceiverButton.setText(null);
+            newReceiverButton.addMouseListener(new 
PopupListener(newReceiverPopup));
 
-      add(newReceiverButton);
-      add(restartAllButton);
+            add(newReceiverButton);
+            add(restartAllButton);
 
-      addSeparator();
+            addSeparator();
 
-      add(restartReceiverButton);
-      add(shutdownReceiverButton);
-      add(saveReceiversButton);
+            add(restartReceiverButton);
+            add(shutdownReceiverButton);
+            add(saveReceiversButton);
 
-      addSeparator();
+            addSeparator();
 
-      Action closeAction =
-        new AbstractAction(null, LineIconFactory.createCloseIcon()) {
-          public void actionPerformed(ActionEvent e) {
-            ReceiversPanel.this.setVisible(false);
-          }
-        };
+            Action closeAction =
+                new AbstractAction(null, LineIconFactory.createCloseIcon()) {
+                    public void actionPerformed(ActionEvent e) {
+                        ReceiversPanel.this.setVisible(false);
+                    }
+                };
 
-      closeAction.putValue(
-        Action.SHORT_DESCRIPTION, "Closes the Receiver panel");
+            closeAction.putValue(
+                Action.SHORT_DESCRIPTION, "Closes the Receiver panel");
 
-      add(Box.createHorizontalGlue());
+            add(Box.createHorizontalGlue());
 
-      add(new SmallButton(closeAction));
+            add(new SmallButton(closeAction));
 
-      add(Box.createHorizontalStrut(5));
-    }
+            add(Box.createHorizontalStrut(5));
+        }
 
-    /**
-     * Ensures the enabled property of the actions is set properly
-     * according to the currently selected node in the tree
-     */
-    public void valueChanged(TreeSelectionEvent e) {
-      updateActions();
+        /**
+         * Ensures the enabled property of the actions is set properly
+         * according to the currently selected node in the tree
+         */
+        public void valueChanged(TreeSelectionEvent e) {
+            updateActions();
+        }
     }
-  }
 }

http://git-wip-us.apache.org/repos/asf/logging-chainsaw/blob/96ebd9ad/src/main/java/org/apache/log4j/chainsaw/receivers/ReceiversTreeModel.java
----------------------------------------------------------------------
diff --git 
a/src/main/java/org/apache/log4j/chainsaw/receivers/ReceiversTreeModel.java 
b/src/main/java/org/apache/log4j/chainsaw/receivers/ReceiversTreeModel.java
index 7d75a20..0f363e4 100644
--- a/src/main/java/org/apache/log4j/chainsaw/receivers/ReceiversTreeModel.java
+++ b/src/main/java/org/apache/log4j/chainsaw/receivers/ReceiversTreeModel.java
@@ -5,9 +5,9 @@
  * The ASF licenses this file to You under the Apache License, Version 2.0
  * (the "License"); you may not use this file except in compliance with
  * the License.  You may obtain a copy of the License at
- * 
+ *
  *      http://www.apache.org/licenses/LICENSE-2.0
- * 
+ *
  * Unless required by applicable law or agreed to in writing, software
  * distributed under the License is distributed on an "AS IS" BASIS,
  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
@@ -17,24 +17,23 @@
 
 package org.apache.log4j.chainsaw.receivers;
 
-import java.beans.PropertyChangeListener;
-import java.util.Collection;
-import java.util.Vector;
-import java.util.Enumeration;
-
-import javax.swing.tree.DefaultMutableTreeNode;
-import javax.swing.tree.DefaultTreeModel;
-import javax.swing.tree.TreeNode;
-
 import org.apache.log4j.LogManager;
 import org.apache.log4j.Logger;
 import org.apache.log4j.net.SocketReceiver;
-import org.apache.log4j.spi.LoggerRepository;
-import org.apache.log4j.spi.LoggerRepositoryEx;
 import org.apache.log4j.plugins.Plugin;
 import org.apache.log4j.plugins.PluginEvent;
 import org.apache.log4j.plugins.PluginListener;
 import org.apache.log4j.plugins.Receiver;
+import org.apache.log4j.spi.LoggerRepository;
+import org.apache.log4j.spi.LoggerRepositoryEx;
+
+import javax.swing.tree.DefaultMutableTreeNode;
+import javax.swing.tree.DefaultTreeModel;
+import javax.swing.tree.TreeNode;
+import java.beans.PropertyChangeListener;
+import java.util.Collection;
+import java.util.Enumeration;
+import java.util.Vector;
 
 
 /**
@@ -44,146 +43,145 @@ import org.apache.log4j.plugins.Receiver;
  * @author Paul Smith &lt;psm...@apache.org&gt;
  */
 public class ReceiversTreeModel extends DefaultTreeModel
-  implements PluginListener {
-  private static final String ROOTNODE_LABEL = "Receivers";
-  final DefaultMutableTreeNode NoReceiversNode =
-    new DefaultMutableTreeNode("No Receivers defined");
-  final DefaultMutableTreeNode RootNode;
-  private final Logger logger = LogManager.getLogger(ReceiversTreeModel.class);
-
-  ReceiversTreeModel() {
-    super(new DefaultMutableTreeNode(ROOTNODE_LABEL));
-    RootNode = (DefaultMutableTreeNode) getRoot();
-    refresh();
-  }
-
-  /**
-   * Creates a new ReceiversTreeModel by querying the Log4j Plugin Repository
-   * and building up the required information.
-   *
-   * @return ReceiversTreeModel
-   */
-  public final synchronized ReceiversTreeModel refresh() {
-    RootNode.removeAllChildren();
-
-    LoggerRepository repo = LogManager.getLoggerRepository();
-    Collection receivers;
-    if (repo instanceof LoggerRepositoryEx) {
-        receivers = ((LoggerRepositoryEx) 
repo).getPluginRegistry().getPlugins(Receiver.class);
-    } else {
-        receivers = new Vector();
+    implements PluginListener {
+    private static final String ROOTNODE_LABEL = "Receivers";
+    final DefaultMutableTreeNode NoReceiversNode =
+        new DefaultMutableTreeNode("No Receivers defined");
+    final DefaultMutableTreeNode RootNode;
+    private final Logger logger = 
LogManager.getLogger(ReceiversTreeModel.class);
+
+    ReceiversTreeModel() {
+        super(new DefaultMutableTreeNode(ROOTNODE_LABEL));
+        RootNode = (DefaultMutableTreeNode) getRoot();
+        refresh();
     }
 
-    updateRootDisplay();
+    /**
+     * Creates a new ReceiversTreeModel by querying the Log4j Plugin Repository
+     * and building up the required information.
+     *
+     * @return ReceiversTreeModel
+     */
+    public final synchronized ReceiversTreeModel refresh() {
+        RootNode.removeAllChildren();
+
+        LoggerRepository repo = LogManager.getLoggerRepository();
+        Collection receivers;
+        if (repo instanceof LoggerRepositoryEx) {
+            receivers = ((LoggerRepositoryEx) 
repo).getPluginRegistry().getPlugins(Receiver.class);
+        } else {
+            receivers = new Vector();
+        }
+
+        updateRootDisplay();
 
-    if (receivers.size() == 0) {
-      getRootNode().add(NoReceiversNode);
-    } else {
-        for (Object receiver : receivers) {
-            final Receiver item = (Receiver) receiver;
-            final DefaultMutableTreeNode receiverNode = new 
DefaultMutableTreeNode(item);
+        if (receivers.size() == 0) {
+            getRootNode().add(NoReceiversNode);
+        } else {
+            for (Object receiver : receivers) {
+                final Receiver item = (Receiver) receiver;
+                final DefaultMutableTreeNode receiverNode = new 
DefaultMutableTreeNode(item);
 
-            
item.addPropertyChangeListener(creatPluginPropertyChangeListener(item, 
receiverNode));
-            if (item instanceof SocketReceiver) {
-                for (Object details : ((SocketReceiver) 
item).getConnectedSocketDetails()) {
-                    receiverNode.add(new DefaultMutableTreeNode(details));
+                
item.addPropertyChangeListener(creatPluginPropertyChangeListener(item, 
receiverNode));
+                if (item instanceof SocketReceiver) {
+                    for (Object details : ((SocketReceiver) 
item).getConnectedSocketDetails()) {
+                        receiverNode.add(new DefaultMutableTreeNode(details));
+                    }
                 }
-            }
 
-            getRootNode().add(receiverNode);
+                getRootNode().add(receiverNode);
+            }
         }
+
+        reload();
+
+        return this;
     }
 
-    reload();
-
-    return this;
-  }
-
-  private PropertyChangeListener creatPluginPropertyChangeListener(final 
Receiver item, final DefaultMutableTreeNode receiverNode)
-  {
-    return evt -> {
-      logger.debug(evt.toString());
-      ReceiversTreeModel.this.fireTreeNodesChanged(item, 
receiverNode.getPath(), null, null);
-
-    };
-  }
-
-  /**
-   * Ensure the Root node of this tree is updated with the latest information
-   * and that listeners are notified.
-   */
-  void updateRootDisplay() {
-    getRootNode().setUserObject(ROOTNODE_LABEL);
-    nodeChanged(getRootNode());
-  }
-
-  DefaultMutableTreeNode getRootNode() {
-    return (DefaultMutableTreeNode) getRoot();
-  }
-
-  /* (non-Javadoc)
-   * @see 
org.apache.log4j.plugins.PluginListener#pluginStarted(org.apache.log4j.plugins.PluginEvent)
-   */
-  public void pluginStarted(PluginEvent e) {
-    if (e.getPlugin() instanceof Receiver) {
-      if (NoReceiversNode.getParent() == getRootNode()) {
-        int index = getRootNode().getIndex(NoReceiversNode);
-        getRootNode().remove(NoReceiversNode);
-        nodesWereRemoved(
-          getRootNode(), new int[] { index }, new Object[] { NoReceiversNode 
});
-      }
-
-      Receiver receiver = (Receiver) e.getPlugin();
-      DefaultMutableTreeNode newNode = new DefaultMutableTreeNode(receiver);
-      getRootNode().add(newNode);
-      
receiver.addPropertyChangeListener(creatPluginPropertyChangeListener(receiver, 
newNode));
-      nodesWereInserted(
-        getRootNode(), new int[] { getRootNode().getIndex(newNode) });
+    private PropertyChangeListener creatPluginPropertyChangeListener(final 
Receiver item, final DefaultMutableTreeNode receiverNode) {
+        return evt -> {
+            logger.debug(evt.toString());
+            ReceiversTreeModel.this.fireTreeNodesChanged(item, 
receiverNode.getPath(), null, null);
+
+        };
+    }
+
+    /**
+     * Ensure the Root node of this tree is updated with the latest information
+     * and that listeners are notified.
+     */
+    void updateRootDisplay() {
+        getRootNode().setUserObject(ROOTNODE_LABEL);
+        nodeChanged(getRootNode());
     }
-  }
-
-       TreeNode resolvePluginNode(Plugin p){
-               /**
-                * Lets walk the tree, top-down until we find the node with the 
plugin
-                * attached.
-                * 
-                * Since the tree hierachy is quite flat, this is should not 
-                * be a performance issue at all, but if it is,
-                * then "I have no recollection of that Senator".
-                */
-               TreeNode treeNode = null;
-               Enumeration e = getRootNode().breadthFirstEnumeration();
-               while(e.hasMoreElements()){
-                       DefaultMutableTreeNode node = (DefaultMutableTreeNode) 
e.nextElement();
-                       if(node.getUserObject().equals(p)){
-                               treeNode = node;
-                               break;
-                       }
-               }
-               return treeNode;
-       }
-       
-  /* (non-Javadoc)
-   * @see 
org.apache.log4j.plugins.PluginListener#pluginStopped(org.apache.log4j.plugins.PluginEvent)
-   */
-  public void pluginStopped(PluginEvent e) {
-    if (e.getPlugin() instanceof Receiver) {
-      Receiver receiver = (Receiver) e.getPlugin();
-      DefaultMutableTreeNode node =
-        (DefaultMutableTreeNode) resolvePluginNode(receiver);
-        if (node != null) {
-            int index = getRootNode().getIndex(node);
-            getRootNode().remove(node);
-            nodesWereRemoved(
-                getRootNode(), new int[] { index }, new Object[] { node });
+
+    DefaultMutableTreeNode getRootNode() {
+        return (DefaultMutableTreeNode) getRoot();
+    }
+
+    /* (non-Javadoc)
+     * @see 
org.apache.log4j.plugins.PluginListener#pluginStarted(org.apache.log4j.plugins.PluginEvent)
+     */
+    public void pluginStarted(PluginEvent e) {
+        if (e.getPlugin() instanceof Receiver) {
+            if (NoReceiversNode.getParent() == getRootNode()) {
+                int index = getRootNode().getIndex(NoReceiversNode);
+                getRootNode().remove(NoReceiversNode);
+                nodesWereRemoved(
+                    getRootNode(), new int[]{index}, new 
Object[]{NoReceiversNode});
+            }
+
+            Receiver receiver = (Receiver) e.getPlugin();
+            DefaultMutableTreeNode newNode = new 
DefaultMutableTreeNode(receiver);
+            getRootNode().add(newNode);
+            
receiver.addPropertyChangeListener(creatPluginPropertyChangeListener(receiver, 
newNode));
+            nodesWereInserted(
+                getRootNode(), new int[]{getRootNode().getIndex(newNode)});
         }
+    }
 
-      if (getRootNode().getChildCount() == 0) {
-        getRootNode().add(NoReceiversNode);
+    TreeNode resolvePluginNode(Plugin p) {
+        /**
+         * Lets walk the tree, top-down until we find the node with the plugin
+         * attached.
+         *
+         * Since the tree hierachy is quite flat, this is should not
+         * be a performance issue at all, but if it is,
+         * then "I have no recollection of that Senator".
+         */
+        TreeNode treeNode = null;
+        Enumeration e = getRootNode().breadthFirstEnumeration();
+        while (e.hasMoreElements()) {
+            DefaultMutableTreeNode node = (DefaultMutableTreeNode) 
e.nextElement();
+            if (node.getUserObject().equals(p)) {
+                treeNode = node;
+                break;
+            }
+        }
+        return treeNode;
+    }
 
-        int index = getRootNode().getIndex(NoReceiversNode);
-        nodesWereInserted(getRootNode(), new int[] { index });
-      }
+    /* (non-Javadoc)
+     * @see 
org.apache.log4j.plugins.PluginListener#pluginStopped(org.apache.log4j.plugins.PluginEvent)
+     */
+    public void pluginStopped(PluginEvent e) {
+        if (e.getPlugin() instanceof Receiver) {
+            Receiver receiver = (Receiver) e.getPlugin();
+            DefaultMutableTreeNode node =
+                (DefaultMutableTreeNode) resolvePluginNode(receiver);
+            if (node != null) {
+                int index = getRootNode().getIndex(node);
+                getRootNode().remove(node);
+                nodesWereRemoved(
+                    getRootNode(), new int[]{index}, new Object[]{node});
+            }
+
+            if (getRootNode().getChildCount() == 0) {
+                getRootNode().add(NoReceiversNode);
+
+                int index = getRootNode().getIndex(NoReceiversNode);
+                nodesWereInserted(getRootNode(), new int[]{index});
+            }
+        }
     }
-  }
 }

http://git-wip-us.apache.org/repos/asf/logging-chainsaw/blob/96ebd9ad/src/main/java/org/apache/log4j/chainsaw/receivers/VisualReceiver.java
----------------------------------------------------------------------
diff --git 
a/src/main/java/org/apache/log4j/chainsaw/receivers/VisualReceiver.java 
b/src/main/java/org/apache/log4j/chainsaw/receivers/VisualReceiver.java
index 29ffd31..10dc693 100644
--- a/src/main/java/org/apache/log4j/chainsaw/receivers/VisualReceiver.java
+++ b/src/main/java/org/apache/log4j/chainsaw/receivers/VisualReceiver.java
@@ -1,12 +1,12 @@
 /*
  * Copyright 1999,2004 The Apache Software Foundation.
- * 
+ *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
  * You may obtain a copy of the License at
- * 
+ *
  *      http://www.apache.org/licenses/LICENSE-2.0
- * 
+ *
  * Unless required by applicable law or agreed to in writing, software
  * distributed under the License is distributed on an "AS IS" BASIS,
  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
@@ -16,24 +16,23 @@
 
 package org.apache.log4j.chainsaw.receivers;
 
-import java.awt.Container;
+import java.awt.*;
 
 /**
- * If a receiver has a visual component, implement this interface and Chainsaw 
will call 
+ * If a receiver has a visual component, implement this interface and Chainsaw 
will call
  * 'setContainer' passing in a container that the receiver can use.
  * <p>
  * For example, VFSLogFilePatternReceiver provides an optional 
'promptForUserInfo', that
  * when set to true, will allow a login dialog to be displayed on top of the 
Chainsaw window.
- * 
- * @author Scott Deboy&lt;sde...@apache.org&gt;
  *
+ * @author Scott Deboy&lt;sde...@apache.org&gt;
  */
 
 public interface VisualReceiver {
-       /**
-        * Provides access to a container.
-        * 
-        * @param container
-        */
-       void setContainer(Container container);
+    /**
+     * Provides access to a container.
+     *
+     * @param container
+     */
+    void setContainer(Container container);
 }

http://git-wip-us.apache.org/repos/asf/logging-chainsaw/blob/96ebd9ad/src/main/java/org/apache/log4j/chainsaw/version/VersionManager.java
----------------------------------------------------------------------
diff --git 
a/src/main/java/org/apache/log4j/chainsaw/version/VersionManager.java 
b/src/main/java/org/apache/log4j/chainsaw/version/VersionManager.java
index fdbb009..c81813f 100644
--- a/src/main/java/org/apache/log4j/chainsaw/version/VersionManager.java
+++ b/src/main/java/org/apache/log4j/chainsaw/version/VersionManager.java
@@ -19,28 +19,25 @@ package org.apache.log4j.chainsaw.version;
 
 /**
  * @author psmith
- *
  */
-public class VersionManager
-{
+public class VersionManager {
 
     private static final VersionManager instance = new VersionManager();
-    
+
     private static final String VERSION_INFO = "1.99.99 (02 March 2006)";
-    
+
     public static final VersionManager getInstance() {
         return instance;
     }
-    
+
     public String getVersionNumber() {
         return VERSION_INFO;
     }
-    
+
     /**
-     * 
+     *
      */
-    private VersionManager()
-    {
+    private VersionManager() {
     }
 
 }

Reply via email to