http://git-wip-us.apache.org/repos/asf/logging-chainsaw/blob/96ebd9ad/src/main/java/org/apache/log4j/chainsaw/ChainsawTabbedPane.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/log4j/chainsaw/ChainsawTabbedPane.java 
b/src/main/java/org/apache/log4j/chainsaw/ChainsawTabbedPane.java
index 97b0cd3..ce79562 100644
--- a/src/main/java/org/apache/log4j/chainsaw/ChainsawTabbedPane.java
+++ b/src/main/java/org/apache/log4j/chainsaw/ChainsawTabbedPane.java
@@ -18,32 +18,27 @@
 /*
  * @author Paul Smith <psm...@apache.org>
  *
-*/
+ */
 package org.apache.log4j.chainsaw;
 
-import java.awt.Component;
-import java.awt.EventQueue;
-import java.io.File;
-import java.io.FileReader;
-import java.io.FileWriter;
-
-import javax.swing.Icon;
-import javax.swing.JComponent;
-import javax.swing.JTabbedPane;
-
 import com.thoughtworks.xstream.XStream;
 import com.thoughtworks.xstream.io.xml.DomDriver;
-
 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 javax.swing.*;
+import java.awt.*;
+import java.io.File;
+import java.io.FileReader;
+import java.io.FileWriter;
+
 
 /**
  * The only reason this class is needed is because
  * of a stupid 'issue' with the JTabbedPane.
- *
+ * <p>
  * If the currently selected tab is the first tab,
  * and we insert a new tab at the front, then as
  * far as the JTabbedPane is concerned, NO STATE has
@@ -51,141 +46,141 @@ import org.apache.log4j.chainsaw.prefs.SettingsManager;
  * the same (even though the TAB is different - go figure)
  * and therefore no ChangeEvent is generated and sent
  * to listeners.  Thanks very much Sun!
- *
+ * <p>
  * For more information on the issue:
  * http://developer.java.sun.com/developer/bugParade/bugs/4253819.html
- * 
+ *
  * @author Paul Smith &lt;psm...@apache.org&gt;
  * @author Scott Deboy &lt;sde...@apache.org&gt;
- *
  */
 
 class ChainsawTabbedPane extends JTabbedPane implements SettingsListener {
-  public SavableTabSetting tabSetting;
-  public static final String WELCOME_TAB = "Welcome";
-  public static final String ZEROCONF = "Zeroconf";
-  /**
-   *
-   * Create the tabbed pane.  
-   *
-   */
-  public ChainsawTabbedPane() {
-    super();
-  }
-
-  /**
-   * Returns true if this TabbedPane has an instance of the WelcomePanel
-   * in it
-   * @return true/false
-   */
-  boolean containsWelcomePanel() {
-    return indexOfTab("Welcome") > -1;
-  }
-
-  /**
-   * Our custom implementation of inserting a new tab,
-   * this method ALWAYS inserts it at the front because
-   * we get an ArrayIndexOutOfBoundsException otherwise
-   * under some JDK implementations.
-   *
-   * This method also causes a fireStateChange() to be
-   * called so that listeners get notified of the event.
-   * See the class level comments for the reason why...
-   * @param name
-   * @param component
-   */
-  public void addANewTab(String name, JComponent component, Icon icon) {
-    super.insertTab(name, icon, component, null, getTabCount());
-
-    super.fireStateChanged();
-    if (!"chainsaw-log".equals(name)) {
-        EventQueue.invokeLater(() -> setSelectedTab(getTabCount() - 1));
+    public SavableTabSetting tabSetting;
+    public static final String WELCOME_TAB = "Welcome";
+    public static final String ZEROCONF = "Zeroconf";
+
+    /**
+     * Create the tabbed pane.
+     */
+    public ChainsawTabbedPane() {
+        super();
+    }
+
+    /**
+     * Returns true if this TabbedPane has an instance of the WelcomePanel
+     * in it
+     *
+     * @return true/false
+     */
+    boolean containsWelcomePanel() {
+        return indexOfTab("Welcome") > -1;
+    }
+
+    /**
+     * Our custom implementation of inserting a new tab,
+     * this method ALWAYS inserts it at the front because
+     * we get an ArrayIndexOutOfBoundsException otherwise
+     * under some JDK implementations.
+     * <p>
+     * This method also causes a fireStateChange() to be
+     * called so that listeners get notified of the event.
+     * See the class level comments for the reason why...
+     *
+     * @param name
+     * @param component
+     */
+    public void addANewTab(String name, JComponent component, Icon icon) {
+        super.insertTab(name, icon, component, null, getTabCount());
+
+        super.fireStateChanged();
+        if (!"chainsaw-log".equals(name)) {
+            EventQueue.invokeLater(() -> setSelectedTab(getTabCount() - 1));
+        }
+    }
+
+    public void setSelectedTab(int index) {
+        if (getTabCount() >= index) {
+            setSelectedIndex(index);
+        }
+
+        getSelectedComponent().setVisible(true);
+        getSelectedComponent().validate();
+        super.fireStateChanged();
+    }
+
+    public void addANewTab(
+        String name, JComponent component, Icon icon, String tooltip) {
+        super.insertTab(name, icon, component, tooltip, getTabCount());
+        super.fireStateChanged();
+    }
+
+    public void remove(Component component) {
+        super.remove(component);
+        super.fireStateChanged();
     }
-  }
 
-  public void setSelectedTab(int index) {
-    if (getTabCount() >= index) {
-      setSelectedIndex(index);
+    /**
+     * Saves the state of the currently active tabs to an XML file.
+     * Only considers the Welcome, Drag and Drop and chainsaw-log
+     * panels as they are the panel which are always running. Saves
+     * whether they are hidden or not....
+     */
+
+    public void saveSettings(SaveSettingsEvent event) {
+        File file = new 
File(SettingsManager.getInstance().getSettingsDirectory(), "tab-settings.xml");
+        XStream stream = new XStream(new DomDriver());
+        try {
+            FileWriter writer = new FileWriter(file);
+            int count = super.getTabCount();
+            String title;
+            SavableTabSetting setting = new SavableTabSetting();
+            for (int i = 0; i < count; i++) {
+                title = super.getTitleAt(i);
+                switch (title) {
+                    case WELCOME_TAB:
+                        setting.setWelcome(true);
+                        break;
+                    case "chainsaw-log":
+                        setting.setChainsawLog(true);
+                        break;
+                    case ZEROCONF:
+                        setting.setZeroconf(true);
+                        break;
+                }
+            }
+
+            stream.toXML(setting, writer);
+            writer.close();
+
+        } catch (Exception e) {
+            file.delete();
+            e.printStackTrace();
+        }
     }
 
-    getSelectedComponent().setVisible(true);
-    getSelectedComponent().validate();
-    super.fireStateChanged();
-  }
-
-  public void addANewTab(
-    String name, JComponent component, Icon icon, String tooltip) {
-    super.insertTab(name, icon, component, tooltip, getTabCount());
-    super.fireStateChanged();
-  }
-
-  public void remove(Component component) {
-    super.remove(component);
-    super.fireStateChanged();
-  }
-
-  /**
-   * Saves the state of the currently active tabs to an XML file.
-   * Only considers the Welcome, Drag and Drop and chainsaw-log
-   * panels as they are the panel which are always running. Saves
-   * whether they are hidden or not....
-   */
-
-  public void saveSettings(SaveSettingsEvent event){
-   File file = new File(SettingsManager.getInstance().getSettingsDirectory(), 
"tab-settings.xml");
-   XStream stream = new XStream(new DomDriver());
-   try {
-     FileWriter writer = new FileWriter(file);
-     int count = super.getTabCount();
-     String title;
-     SavableTabSetting setting = new SavableTabSetting();
-     for(int i = 0 ; i < count ; i++){
-       title = super.getTitleAt(i);
-         switch (title) {
-             case WELCOME_TAB:
-                 setting.setWelcome(true);
-                 break;
-             case "chainsaw-log":
-                 setting.setChainsawLog(true);
-                 break;
-             case ZEROCONF:
-                 setting.setZeroconf(true);
-                 break;
-         }
-     }
-
-     stream.toXML(setting, writer);
-     writer.close();
-
-   } catch (Exception e) {
-     file.delete();
-     e.printStackTrace();
-   }
-  }
-
-  /**
-   * Loads the saved tab setting by reading the XML file.
-   * If the file doesn't exist, all three panels should be
-   * shown as the default setting....
-   */
-
-  public void loadSettings(LoadSettingsEvent event){
-    File file = new File(SettingsManager.getInstance().getSettingsDirectory(), 
"tab-settings.xml");
-    XStream stream = new XStream(new DomDriver());
-    try {
-      if (file.exists()) {
-        FileReader reader = new FileReader(file);
-        tabSetting = (SavableTabSetting) stream.fromXML(reader);
-        reader.close();
-      } else {
-        tabSetting = new SavableTabSetting();
-        tabSetting.setWelcome(true);
-        tabSetting.setChainsawLog(true);
-        tabSetting.setZeroconf(true);
-      }
-    } catch (Exception e) {
-      e.printStackTrace();
-      file.delete();
+    /**
+     * Loads the saved tab setting by reading the XML file.
+     * If the file doesn't exist, all three panels should be
+     * shown as the default setting....
+     */
+
+    public void loadSettings(LoadSettingsEvent event) {
+        File file = new 
File(SettingsManager.getInstance().getSettingsDirectory(), "tab-settings.xml");
+        XStream stream = new XStream(new DomDriver());
+        try {
+            if (file.exists()) {
+                FileReader reader = new FileReader(file);
+                tabSetting = (SavableTabSetting) stream.fromXML(reader);
+                reader.close();
+            } else {
+                tabSetting = new SavableTabSetting();
+                tabSetting.setWelcome(true);
+                tabSetting.setChainsawLog(true);
+                tabSetting.setZeroconf(true);
+            }
+        } catch (Exception e) {
+            e.printStackTrace();
+            file.delete();
+        }
     }
-  }
 }

http://git-wip-us.apache.org/repos/asf/logging-chainsaw/blob/96ebd9ad/src/main/java/org/apache/log4j/chainsaw/ChainsawToolBarAndMenus.java
----------------------------------------------------------------------
diff --git 
a/src/main/java/org/apache/log4j/chainsaw/ChainsawToolBarAndMenus.java 
b/src/main/java/org/apache/log4j/chainsaw/ChainsawToolBarAndMenus.java
index 30e283c..90abba9 100644
--- a/src/main/java/org/apache/log4j/chainsaw/ChainsawToolBarAndMenus.java
+++ b/src/main/java/org/apache/log4j/chainsaw/ChainsawToolBarAndMenus.java
@@ -17,10 +17,16 @@
 
 package org.apache.log4j.chainsaw;
 
-import java.awt.BorderLayout;
-import java.awt.Dimension;
-import java.awt.Insets;
-import java.awt.Toolkit;
+import org.apache.log4j.chainsaw.filter.FilterModel;
+import org.apache.log4j.chainsaw.help.HelpManager;
+import org.apache.log4j.chainsaw.icons.ChainsawIcons;
+import org.apache.log4j.chainsaw.osx.OSXIntegration;
+import org.apache.log4j.chainsaw.receivers.ReceiversHelper;
+
+import javax.swing.*;
+import javax.swing.event.ChangeEvent;
+import javax.swing.event.ChangeListener;
+import java.awt.*;
 import java.awt.event.ActionEvent;
 import java.awt.event.InputEvent;
 import java.awt.event.KeyEvent;
@@ -28,917 +34,889 @@ import java.util.ArrayList;
 import java.util.Collection;
 import java.util.List;
 
-import javax.swing.AbstractAction;
-import javax.swing.Action;
-import javax.swing.Box;
-import javax.swing.ImageIcon;
-import javax.swing.JButton;
-import javax.swing.JCheckBoxMenuItem;
-import javax.swing.JComponent;
-import javax.swing.JDialog;
-import javax.swing.JEditorPane;
-import javax.swing.JLabel;
-import javax.swing.JMenu;
-import javax.swing.JMenuBar;
-import javax.swing.JMenuItem;
-import javax.swing.JPanel;
-import javax.swing.JRadioButtonMenuItem;
-import javax.swing.JToolBar;
-import javax.swing.KeyStroke;
-import javax.swing.SwingConstants;
-import javax.swing.SwingUtilities;
-import javax.swing.UIManager;
-import javax.swing.event.ChangeEvent;
-import javax.swing.event.ChangeListener;
-
-import org.apache.log4j.chainsaw.filter.FilterModel;
-import org.apache.log4j.chainsaw.help.HelpManager;
-import org.apache.log4j.chainsaw.icons.ChainsawIcons;
-import org.apache.log4j.chainsaw.osx.OSXIntegration;
-import org.apache.log4j.chainsaw.receivers.ReceiversHelper;
-
 
 /**
  * Encapsulates the full Toolbar, and menus and all the actions that can be 
performed from it.
+ *
  * @author Paul Smith &lt;psm...@apache.org&gt;
  * @author Scott Deboy &lt;sde...@apache.org&gt;
  */
 class ChainsawToolBarAndMenus implements ChangeListener {
-  private final SmallToggleButton showReceiversButton;
-  private final Action changeModelAction;
-  private final Action clearAction;
-  private final Action toggleWelcomeVisibleAction;
-  private final Action findPreviousColorizedEventAction;
-  private final Action findNextColorizedEventAction;
-  private final Action findNextMarkerAction;
-  private final Action findPreviousMarkerAction;
-  private final Action toggleMarkerAction;
-  private final Action clearAllMarkersAction;
-  private final Action pauseAction;
-  private final Action showPreferencesAction;
-  private final Action showColorPanelAction;
-  private final Action showReceiversAction;
-  private final Action toggleLogTreeAction;
-  private final Action toggleScrollToBottomAction;
-  private final Action scrollToTopAction;
-  private final Action toggleDetailPaneAction;
-  private final Action toggleToolbarAction;
-  private final Action undockAction;
-  private final Action customExpressionPanelAction;
-  private final Collection lookAndFeelMenus = new ArrayList();
-  private final JCheckBoxMenuItem toggleShowReceiversCheck =
-    new JCheckBoxMenuItem();
-  private final JCheckBoxMenuItem toggleLogTreeMenuItem =
-    new JCheckBoxMenuItem();
-  private final JCheckBoxMenuItem toggleScrollToBottomMenuItem =
-    new JCheckBoxMenuItem();
-  private final JCheckBoxMenuItem toggleDetailMenuItem =
-    new JCheckBoxMenuItem();
-  private final JCheckBoxMenuItem toggleCyclicMenuItem =
-    new JCheckBoxMenuItem();
-  private final FileMenu fileMenu;
-  private final JCheckBoxMenuItem toggleStatusBarCheck =
-    new JCheckBoxMenuItem();
-  private final JMenu viewMenu = new JMenu("View");
-  private final JMenuBar menuBar;
-  private final JCheckBoxMenuItem menuShowWelcome = new JCheckBoxMenuItem();
-  private final JToolBar toolbar;
-  private final LogUI logui;
-  private final SmallButton clearButton = new SmallButton();
-  private final SmallToggleButton detailPaneButton = new SmallToggleButton();
-  private final SmallToggleButton logTreePaneButton = new SmallToggleButton();
-  private final SmallToggleButton scrollToBottomButton = new 
SmallToggleButton();
-  private final SmallToggleButton pauseButton = new SmallToggleButton();
-  private final SmallToggleButton toggleCyclicButton = new SmallToggleButton();
-  private final Action[] logPanelSpecificActions;
-  private final JMenu activeTabMenu = new JMenu("Current tab");
+    private final SmallToggleButton showReceiversButton;
+    private final Action changeModelAction;
+    private final Action clearAction;
+    private final Action toggleWelcomeVisibleAction;
+    private final Action findPreviousColorizedEventAction;
+    private final Action findNextColorizedEventAction;
+    private final Action findNextMarkerAction;
+    private final Action findPreviousMarkerAction;
+    private final Action toggleMarkerAction;
+    private final Action clearAllMarkersAction;
+    private final Action pauseAction;
+    private final Action showPreferencesAction;
+    private final Action showColorPanelAction;
+    private final Action showReceiversAction;
+    private final Action toggleLogTreeAction;
+    private final Action toggleScrollToBottomAction;
+    private final Action scrollToTopAction;
+    private final Action toggleDetailPaneAction;
+    private final Action toggleToolbarAction;
+    private final Action undockAction;
+    private final Action customExpressionPanelAction;
+    private final Collection lookAndFeelMenus = new ArrayList();
+    private final JCheckBoxMenuItem toggleShowReceiversCheck =
+        new JCheckBoxMenuItem();
+    private final JCheckBoxMenuItem toggleLogTreeMenuItem =
+        new JCheckBoxMenuItem();
+    private final JCheckBoxMenuItem toggleScrollToBottomMenuItem =
+        new JCheckBoxMenuItem();
+    private final JCheckBoxMenuItem toggleDetailMenuItem =
+        new JCheckBoxMenuItem();
+    private final JCheckBoxMenuItem toggleCyclicMenuItem =
+        new JCheckBoxMenuItem();
+    private final FileMenu fileMenu;
+    private final JCheckBoxMenuItem toggleStatusBarCheck =
+        new JCheckBoxMenuItem();
+    private final JMenu viewMenu = new JMenu("View");
+    private final JMenuBar menuBar;
+    private final JCheckBoxMenuItem menuShowWelcome = new JCheckBoxMenuItem();
+    private final JToolBar toolbar;
+    private final LogUI logui;
+    private final SmallButton clearButton = new SmallButton();
+    private final SmallToggleButton detailPaneButton = new SmallToggleButton();
+    private final SmallToggleButton logTreePaneButton = new 
SmallToggleButton();
+    private final SmallToggleButton scrollToBottomButton = new 
SmallToggleButton();
+    private final SmallToggleButton pauseButton = new SmallToggleButton();
+    private final SmallToggleButton toggleCyclicButton = new 
SmallToggleButton();
+    private final Action[] logPanelSpecificActions;
+    private final JMenu activeTabMenu = new JMenu("Current tab");
 
     ChainsawToolBarAndMenus(final LogUI logui) {
-    this.logui = logui;
-    toolbar = new JToolBar(SwingConstants.HORIZONTAL);
-    menuBar = new JMenuBar();
-    fileMenu = new FileMenu(logui);
-    toggleWelcomeVisibleAction = toggleWelcomeVisibleAction();
-    changeModelAction = createChangeModelAction();
-    findNextMarkerAction = createFindNextMarkerAction();
-    findPreviousColorizedEventAction = getFindPreviousColorizedEventAction();
-    findNextColorizedEventAction = getFindNextColorizedEventAction();
-    findPreviousMarkerAction = createFindPreviousMarkerAction();
-    toggleMarkerAction = createToggleMarkerAction();
-    clearAllMarkersAction = createClearAllMarkersAction();
-    customExpressionPanelAction = createCustomExpressionPanelAction();
-    showPreferencesAction = createShowPreferencesAction();
-    showColorPanelAction = createShowColorPanelAction();
-    toggleToolbarAction = createToggleToolbarAction();
-    toggleLogTreeAction = createToggleLogTreeAction();
-    toggleScrollToBottomAction = createScrollToBottomAction();
-    scrollToTopAction = createScrollToTopAction();
-    pauseAction = createPauseAction();
-    clearAction = createClearAction();
-    undockAction = createUndockAction();
-    showReceiversAction = createShowReceiversAction();
-    showReceiversButton = new SmallToggleButton(showReceiversAction);
-
-    toggleDetailPaneAction = createToggleDetailPaneAction();
-    createMenuBar();
-    createToolbar();
-
-    logPanelSpecificActions =
-      new Action[] {
-        pauseAction, findNextColorizedEventAction, 
findPreviousColorizedEventAction,
-        findNextMarkerAction, findPreviousMarkerAction,
-        toggleMarkerAction, clearAllMarkersAction, scrollToTopAction, 
clearAction,
-        fileMenu.getFileSaveAction(), toggleDetailPaneAction,
-        showPreferencesAction, showColorPanelAction, undockAction,
-        toggleLogTreeAction, toggleScrollToBottomAction, changeModelAction,
-      };
-
-    logui.getApplicationPreferenceModel().addPropertyChangeListener(
-      "statusBar",
+        this.logui = logui;
+        toolbar = new JToolBar(SwingConstants.HORIZONTAL);
+        menuBar = new JMenuBar();
+        fileMenu = new FileMenu(logui);
+        toggleWelcomeVisibleAction = toggleWelcomeVisibleAction();
+        changeModelAction = createChangeModelAction();
+        findNextMarkerAction = createFindNextMarkerAction();
+        findPreviousColorizedEventAction = 
getFindPreviousColorizedEventAction();
+        findNextColorizedEventAction = getFindNextColorizedEventAction();
+        findPreviousMarkerAction = createFindPreviousMarkerAction();
+        toggleMarkerAction = createToggleMarkerAction();
+        clearAllMarkersAction = createClearAllMarkersAction();
+        customExpressionPanelAction = createCustomExpressionPanelAction();
+        showPreferencesAction = createShowPreferencesAction();
+        showColorPanelAction = createShowColorPanelAction();
+        toggleToolbarAction = createToggleToolbarAction();
+        toggleLogTreeAction = createToggleLogTreeAction();
+        toggleScrollToBottomAction = createScrollToBottomAction();
+        scrollToTopAction = createScrollToTopAction();
+        pauseAction = createPauseAction();
+        clearAction = createClearAction();
+        undockAction = createUndockAction();
+        showReceiversAction = createShowReceiversAction();
+        showReceiversButton = new SmallToggleButton(showReceiversAction);
+
+        toggleDetailPaneAction = createToggleDetailPaneAction();
+        createMenuBar();
+        createToolbar();
+
+        logPanelSpecificActions =
+            new Action[]{
+                pauseAction, findNextColorizedEventAction, 
findPreviousColorizedEventAction,
+                findNextMarkerAction, findPreviousMarkerAction,
+                toggleMarkerAction, clearAllMarkersAction, scrollToTopAction, 
clearAction,
+                fileMenu.getFileSaveAction(), toggleDetailPaneAction,
+                showPreferencesAction, showColorPanelAction, undockAction,
+                toggleLogTreeAction, toggleScrollToBottomAction, 
changeModelAction,
+            };
+
+        logui.getApplicationPreferenceModel().addPropertyChangeListener(
+            "statusBar",
             evt -> {
-              boolean value = (Boolean) evt.getNewValue();
-              toggleStatusBarCheck.setSelected(value);
+                boolean value = (Boolean) evt.getNewValue();
+                toggleStatusBarCheck.setSelected(value);
             });
 
-    logui.getApplicationPreferenceModel().addPropertyChangeListener(
-      "receivers",
+        logui.getApplicationPreferenceModel().addPropertyChangeListener(
+            "receivers",
             evt -> {
-              boolean value = (Boolean) evt.getNewValue();
-              showReceiversButton.setSelected(value);
-              toggleShowReceiversCheck.setSelected(value);
+                boolean value = (Boolean) evt.getNewValue();
+                showReceiversButton.setSelected(value);
+                toggleShowReceiversCheck.setSelected(value);
             });
-  }
-
-  /**
-   * @return
-   */
-  private Action createChangeModelAction() {
-    Action action =
-      new AbstractAction("Use Cyclic", new ImageIcon(ChainsawIcons.REFRESH)) {
-        public void actionPerformed(ActionEvent arg0) {
-          LogPanel logPanel = logui.getCurrentLogPanel();
-          logPanel.toggleCyclic();
-          scanState();
-        }
-      };
-
-    action.putValue(
-      Action.SHORT_DESCRIPTION, "Changes between Cyclic and Unlimited mode.");
-
-    return action;
-  }
-
-  /**
-  * @return
-  */
-  private Action createToggleLogTreeAction() {
-    Action action =
-      new AbstractAction("Toggle the Logger Tree Pane") {
-        public void actionPerformed(ActionEvent e) {
-          if (logui.getCurrentLogPanel() != null) {
-            logui.getCurrentLogPanel().toggleLogTreeVisible();
-          }
-        }
-      };
-
-    action.putValue(Action.SHORT_DESCRIPTION, "Toggles the Logger Tree Pane");
-    action.putValue("enabled", Boolean.TRUE);
-    action.putValue(Action.MNEMONIC_KEY, KeyEvent.VK_T);
-    action.putValue(
-      Action.ACCELERATOR_KEY,
-      KeyStroke.getKeyStroke(KeyEvent.VK_T, 
Toolkit.getDefaultToolkit().getMenuShortcutKeyMask()));
-    action.putValue(
-      Action.SMALL_ICON, new ImageIcon(ChainsawIcons.WINDOW_ICON));
-
-    return action;
-  }
-
-  /**
-   * @return
-   */
-   private Action createScrollToBottomAction() {
-     Action action =
-       new AbstractAction("Toggle Scroll to Bottom") {
-         public void actionPerformed(ActionEvent e) {
-           if (logui.getCurrentLogPanel() != null) {
-             logui.getCurrentLogPanel().toggleScrollToBottom();
-           }
-         }
-       };
-
-     action.putValue(Action.SHORT_DESCRIPTION, "Toggles Scroll to Bottom");
-     action.putValue("enabled", Boolean.TRUE);
-     action.putValue(Action.MNEMONIC_KEY, KeyEvent.VK_B);
-     action.putValue(
-       Action.ACCELERATOR_KEY,
-       KeyStroke.getKeyStroke(KeyEvent.VK_B, 
Toolkit.getDefaultToolkit().getMenuShortcutKeyMask()));
-     action.putValue(
-       Action.SMALL_ICON, new ImageIcon(ChainsawIcons.SCROLL_TO_BOTTOM));
-
-     return action;
-   }
+    }
 
-    private Action createScrollToTopAction() {
-      Action action =
-        new AbstractAction("Scroll to top") {
-          public void actionPerformed(ActionEvent e) {
-            if (logui.getCurrentLogPanel() != null) {
-              logui.getCurrentLogPanel().scrollToTop();
-            }
-          }
-        };
+    /**
+     * @return
+     */
+    private Action createChangeModelAction() {
+        Action action =
+            new AbstractAction("Use Cyclic", new 
ImageIcon(ChainsawIcons.REFRESH)) {
+                public void actionPerformed(ActionEvent arg0) {
+                    LogPanel logPanel = logui.getCurrentLogPanel();
+                    logPanel.toggleCyclic();
+                    scanState();
+                }
+            };
+
+        action.putValue(
+            Action.SHORT_DESCRIPTION, "Changes between Cyclic and Unlimited 
mode.");
+
+        return action;
+    }
 
-      action.putValue(Action.SHORT_DESCRIPTION, "Scroll to top");
-      action.putValue("enabled", Boolean.TRUE);
-      action.putValue(Action.MNEMONIC_KEY, KeyEvent.VK_T);
-      action.putValue(Action.ACCELERATOR_KEY, 
KeyStroke.getKeyStroke(KeyEvent.VK_A,  
Toolkit.getDefaultToolkit().getMenuShortcutKeyMask()));
+    /**
+     * @return
+     */
+    private Action createToggleLogTreeAction() {
+        Action action =
+            new AbstractAction("Toggle the Logger Tree Pane") {
+                public void actionPerformed(ActionEvent e) {
+                    if (logui.getCurrentLogPanel() != null) {
+                        logui.getCurrentLogPanel().toggleLogTreeVisible();
+                    }
+                }
+            };
+
+        action.putValue(Action.SHORT_DESCRIPTION, "Toggles the Logger Tree 
Pane");
+        action.putValue("enabled", Boolean.TRUE);
+        action.putValue(Action.MNEMONIC_KEY, KeyEvent.VK_T);
+        action.putValue(
+            Action.ACCELERATOR_KEY,
+            KeyStroke.getKeyStroke(KeyEvent.VK_T, 
Toolkit.getDefaultToolkit().getMenuShortcutKeyMask()));
+        action.putValue(
+            Action.SMALL_ICON, new ImageIcon(ChainsawIcons.WINDOW_ICON));
+
+        return action;
+    }
 
-      return action;
+    /**
+     * @return
+     */
+    private Action createScrollToBottomAction() {
+        Action action =
+            new AbstractAction("Toggle Scroll to Bottom") {
+                public void actionPerformed(ActionEvent e) {
+                    if (logui.getCurrentLogPanel() != null) {
+                        logui.getCurrentLogPanel().toggleScrollToBottom();
+                    }
+                }
+            };
+
+        action.putValue(Action.SHORT_DESCRIPTION, "Toggles Scroll to Bottom");
+        action.putValue("enabled", Boolean.TRUE);
+        action.putValue(Action.MNEMONIC_KEY, KeyEvent.VK_B);
+        action.putValue(
+            Action.ACCELERATOR_KEY,
+            KeyStroke.getKeyStroke(KeyEvent.VK_B, 
Toolkit.getDefaultToolkit().getMenuShortcutKeyMask()));
+        action.putValue(
+            Action.SMALL_ICON, new ImageIcon(ChainsawIcons.SCROLL_TO_BOTTOM));
+
+        return action;
     }
 
-     private Action createFindNextMarkerAction() {
-       Action action =
-         new AbstractAction("Find next marker") {
-           public void actionPerformed(ActionEvent e) {
-             if (logui.getCurrentLogPanel() != null) {
-               logui.getCurrentLogPanel().findNextMarker();
-             }
-           }
-         };
+    private Action createScrollToTopAction() {
+        Action action =
+            new AbstractAction("Scroll to top") {
+                public void actionPerformed(ActionEvent e) {
+                    if (logui.getCurrentLogPanel() != null) {
+                        logui.getCurrentLogPanel().scrollToTop();
+                    }
+                }
+            };
+
+        action.putValue(Action.SHORT_DESCRIPTION, "Scroll to top");
+        action.putValue("enabled", Boolean.TRUE);
+        action.putValue(Action.MNEMONIC_KEY, KeyEvent.VK_T);
+        action.putValue(Action.ACCELERATOR_KEY, 
KeyStroke.getKeyStroke(KeyEvent.VK_A, 
Toolkit.getDefaultToolkit().getMenuShortcutKeyMask()));
 
-       action.putValue(Action.SHORT_DESCRIPTION, "Find the next marker from 
the current location");
-       action.putValue("enabled", Boolean.TRUE);
-       action.putValue(Action.MNEMONIC_KEY, KeyEvent.VK_N);
-       action.putValue(Action.ACCELERATOR_KEY, KeyStroke.getKeyStroke("F2"));
+        return action;
+    }
 
-       return action;
-     }
+    private Action createFindNextMarkerAction() {
+        Action action =
+            new AbstractAction("Find next marker") {
+                public void actionPerformed(ActionEvent e) {
+                    if (logui.getCurrentLogPanel() != null) {
+                        logui.getCurrentLogPanel().findNextMarker();
+                    }
+                }
+            };
+
+        action.putValue(Action.SHORT_DESCRIPTION, "Find the next marker from 
the current location");
+        action.putValue("enabled", Boolean.TRUE);
+        action.putValue(Action.MNEMONIC_KEY, KeyEvent.VK_N);
+        action.putValue(Action.ACCELERATOR_KEY, KeyStroke.getKeyStroke("F2"));
 
-    private Action createFindPreviousMarkerAction() {
-      Action action =
-        new AbstractAction("Find previous marker") {
-          public void actionPerformed(ActionEvent e) {
-            if (logui.getCurrentLogPanel() != null) {
-              logui.getCurrentLogPanel().findPreviousMarker();
-            }
-          }
-        };
+        return action;
+    }
 
-      action.putValue(Action.SHORT_DESCRIPTION, "Find the previous marker from 
the current location");
-      action.putValue("enabled", Boolean.TRUE);
-      action.putValue(Action.MNEMONIC_KEY, KeyEvent.VK_P);
-      action.putValue(Action.ACCELERATOR_KEY, 
KeyStroke.getKeyStroke(KeyEvent.VK_F2,  InputEvent.SHIFT_MASK));
+    private Action createFindPreviousMarkerAction() {
+        Action action =
+            new AbstractAction("Find previous marker") {
+                public void actionPerformed(ActionEvent e) {
+                    if (logui.getCurrentLogPanel() != null) {
+                        logui.getCurrentLogPanel().findPreviousMarker();
+                    }
+                }
+            };
+
+        action.putValue(Action.SHORT_DESCRIPTION, "Find the previous marker 
from the current location");
+        action.putValue("enabled", Boolean.TRUE);
+        action.putValue(Action.MNEMONIC_KEY, KeyEvent.VK_P);
+        action.putValue(Action.ACCELERATOR_KEY, 
KeyStroke.getKeyStroke(KeyEvent.VK_F2, InputEvent.SHIFT_MASK));
 
-      return action;
+        return action;
     }
 
     private Action createToggleMarkerAction() {
-      Action action =
-        new AbstractAction("Toggle marker") {
-          public void actionPerformed(ActionEvent e) {
-            if (logui.getCurrentLogPanel() != null) {
-              logui.getCurrentLogPanel().toggleMarker();
-            }
-          }
-        };
-
-      action.putValue(Action.SHORT_DESCRIPTION, "Toggle marker for selected 
row");
-      action.putValue("enabled", Boolean.TRUE);
-      action.putValue(Action.MNEMONIC_KEY, KeyEvent.VK_T);
-      action.putValue(Action.ACCELERATOR_KEY, 
KeyStroke.getKeyStroke(KeyEvent.VK_F2,  
Toolkit.getDefaultToolkit().getMenuShortcutKeyMask()));
+        Action action =
+            new AbstractAction("Toggle marker") {
+                public void actionPerformed(ActionEvent e) {
+                    if (logui.getCurrentLogPanel() != null) {
+                        logui.getCurrentLogPanel().toggleMarker();
+                    }
+                }
+            };
+
+        action.putValue(Action.SHORT_DESCRIPTION, "Toggle marker for selected 
row");
+        action.putValue("enabled", Boolean.TRUE);
+        action.putValue(Action.MNEMONIC_KEY, KeyEvent.VK_T);
+        action.putValue(Action.ACCELERATOR_KEY, 
KeyStroke.getKeyStroke(KeyEvent.VK_F2, 
Toolkit.getDefaultToolkit().getMenuShortcutKeyMask()));
 
-      return action;
+        return action;
     }
 
     private Action createClearAllMarkersAction() {
-      Action action =
-        new AbstractAction("Clear all markers") {
-          public void actionPerformed(ActionEvent e) {
-            if (logui.getCurrentLogPanel() != null) {
-              logui.getCurrentLogPanel().clearAllMarkers();
-            }
-          }
-        };
+        Action action =
+            new AbstractAction("Clear all markers") {
+                public void actionPerformed(ActionEvent e) {
+                    if (logui.getCurrentLogPanel() != null) {
+                        logui.getCurrentLogPanel().clearAllMarkers();
+                    }
+                }
+            };
+
+        action.putValue(Action.SHORT_DESCRIPTION, "Removes all markers");
+        action.putValue("enabled", Boolean.TRUE);
+        action.putValue(Action.MNEMONIC_KEY, KeyEvent.VK_R);
+        action.putValue(Action.ACCELERATOR_KEY, 
KeyStroke.getKeyStroke(KeyEvent.VK_F2, 
Toolkit.getDefaultToolkit().getMenuShortcutKeyMask() | InputEvent.SHIFT_MASK));
 
-      action.putValue(Action.SHORT_DESCRIPTION, "Removes all markers");
-      action.putValue("enabled", Boolean.TRUE);
-      action.putValue(Action.MNEMONIC_KEY, KeyEvent.VK_R);
-      action.putValue(Action.ACCELERATOR_KEY, 
KeyStroke.getKeyStroke(KeyEvent.VK_F2,  
Toolkit.getDefaultToolkit().getMenuShortcutKeyMask() | InputEvent.SHIFT_MASK));
+        return action;
+    }
 
-      return action;
+    /**
+     * DOCUMENT ME!
+     */
+    public void stateChange() {
+        scanState();
     }
 
-   /**
-   * DOCUMENT ME!
-   */
-  public void stateChange() {
-    scanState();
-  }
-
-  /**
-   * DOCUMENT ME!
-   *
-   * @param e DOCUMENT ME!
-   */
-  public void stateChanged(ChangeEvent e) {
-    scanState();
-  }
-
-  JMenuBar getMenubar() {
-    return menuBar;
-  }
-
-  JToolBar getToolbar() {
-    return toolbar;
-  }
-
-  private Action createClearAction() {
-    final Action action =
-      new AbstractAction("Clear") {
-        public void actionPerformed(ActionEvent e) {
-          LogPanel logPanel = logui.getCurrentLogPanel();
-
-          if (logPanel == null) {
-            return;
-          }
-
-          logPanel.clearEvents();
-        }
-      };
-
-    action.putValue(Action.MNEMONIC_KEY, KeyEvent.VK_C);
-    action.putValue(
-      Action.ACCELERATOR_KEY,
-      KeyStroke.getKeyStroke(KeyEvent.VK_BACK_SPACE, 
Toolkit.getDefaultToolkit().getMenuShortcutKeyMask()));
-    action.putValue(
-      Action.SHORT_DESCRIPTION, "Removes all the events from the current 
view");
-    action.putValue(Action.SMALL_ICON, new ImageIcon(ChainsawIcons.DELETE));
-
-    return action;
-  }
-
-  private Action toggleWelcomeVisibleAction() {
-    final Action action =
-      new AbstractAction() {
-        public void actionPerformed(ActionEvent e) {
-          toggleWelcomeVisibleAction.putValue(Action.NAME, "Welcome tab");
-          if (menuShowWelcome.isSelected()) {
-            logui.addWelcomePanel();
-          } else {
-            logui.removeWelcomePanel();
-          }
-        }
-      };
+    /**
+     * DOCUMENT ME!
+     *
+     * @param e DOCUMENT ME!
+     */
+    public void stateChanged(ChangeEvent e) {
+        scanState();
+    }
 
-    action.putValue(Action.ACCELERATOR_KEY, KeyStroke.getKeyStroke("F1"));
+    JMenuBar getMenubar() {
+        return menuBar;
+    }
 
-    //    action.putValue(Action.ACCELERATOR_KEY, 
KeyStroke.getKeyStroke(KeyEvent.VK_C, InputEvent.ALT_MASK));
-    action.putValue(Action.SHORT_DESCRIPTION, "Toggles the Welcome tab");
-    action.putValue(Action.MNEMONIC_KEY, KeyEvent.VK_C);
-    action.putValue(Action.NAME, "Welcome tab");
+    JToolBar getToolbar() {
+        return toolbar;
+    }
 
-    return action;
-  }
+    private Action createClearAction() {
+        final Action action =
+            new AbstractAction("Clear") {
+                public void actionPerformed(ActionEvent e) {
+                    LogPanel logPanel = logui.getCurrentLogPanel();
+
+                    if (logPanel == null) {
+                        return;
+                    }
+
+                    logPanel.clearEvents();
+                }
+            };
+
+        action.putValue(Action.MNEMONIC_KEY, KeyEvent.VK_C);
+        action.putValue(
+            Action.ACCELERATOR_KEY,
+            KeyStroke.getKeyStroke(KeyEvent.VK_BACK_SPACE, 
Toolkit.getDefaultToolkit().getMenuShortcutKeyMask()));
+        action.putValue(
+            Action.SHORT_DESCRIPTION, "Removes all the events from the current 
view");
+        action.putValue(Action.SMALL_ICON, new 
ImageIcon(ChainsawIcons.DELETE));
+
+        return action;
+    }
 
-  private void createMenuBar() {
-    JMenuItem menuItemUseRightMouse =
-      new JMenuItem(
-        "Other options available via panel's right mouse button popup menu");
-    menuItemUseRightMouse.setEnabled(false);
+    private Action toggleWelcomeVisibleAction() {
+        final Action action =
+            new AbstractAction() {
+                public void actionPerformed(ActionEvent e) {
+                    toggleWelcomeVisibleAction.putValue(Action.NAME, "Welcome 
tab");
+                    if (menuShowWelcome.isSelected()) {
+                        logui.addWelcomePanel();
+                    } else {
+                        logui.removeWelcomePanel();
+                    }
+                }
+            };
+
+        action.putValue(Action.ACCELERATOR_KEY, KeyStroke.getKeyStroke("F1"));
+
+        //    action.putValue(Action.ACCELERATOR_KEY, 
KeyStroke.getKeyStroke(KeyEvent.VK_C, InputEvent.ALT_MASK));
+        action.putValue(Action.SHORT_DESCRIPTION, "Toggles the Welcome tab");
+        action.putValue(Action.MNEMONIC_KEY, KeyEvent.VK_C);
+        action.putValue(Action.NAME, "Welcome tab");
+
+        return action;
+    }
+
+    private void createMenuBar() {
+        JMenuItem menuItemUseRightMouse =
+            new JMenuItem(
+                "Other options available via panel's right mouse button popup 
menu");
+        menuItemUseRightMouse.setEnabled(false);
 
-    viewMenu.setMnemonic('V');
+        viewMenu.setMnemonic('V');
 
-    final JCheckBoxMenuItem showToolbarCheck =
-      new JCheckBoxMenuItem(toggleToolbarAction);
-    showToolbarCheck.setSelected(
-      logui.getApplicationPreferenceModel().isToolbar());
+        final JCheckBoxMenuItem showToolbarCheck =
+            new JCheckBoxMenuItem(toggleToolbarAction);
+        showToolbarCheck.setSelected(
+            logui.getApplicationPreferenceModel().isToolbar());
 
-    logui.getApplicationPreferenceModel().addPropertyChangeListener(
-      "toolbar",
+        logui.getApplicationPreferenceModel().addPropertyChangeListener(
+            "toolbar",
             evt -> {
-              boolean value = (Boolean) evt.getNewValue();
-              showToolbarCheck.setSelected(value);
+                boolean value = (Boolean) evt.getNewValue();
+                showToolbarCheck.setSelected(value);
             });
 
-    menuShowWelcome.setAction(toggleWelcomeVisibleAction);
+        menuShowWelcome.setAction(toggleWelcomeVisibleAction);
 
-    JCheckBoxMenuItem pause = new JCheckBoxMenuItem(pauseAction);
-    JMenuItem menuPrefs = new JMenuItem(showPreferencesAction);
-    menuPrefs.setText(
-      showPreferencesAction.getValue(Action.SHORT_DESCRIPTION).toString());
+        JCheckBoxMenuItem pause = new JCheckBoxMenuItem(pauseAction);
+        JMenuItem menuPrefs = new JMenuItem(showPreferencesAction);
+        menuPrefs.setText(
+            
showPreferencesAction.getValue(Action.SHORT_DESCRIPTION).toString());
 
-    JMenuItem menuCustomExpressionPanel =
-      new JMenuItem(customExpressionPanelAction);
-    menuCustomExpressionPanel.setText(
-      
customExpressionPanelAction.getValue(Action.SHORT_DESCRIPTION).toString());
+        JMenuItem menuCustomExpressionPanel =
+            new JMenuItem(customExpressionPanelAction);
+        menuCustomExpressionPanel.setText(
+            
customExpressionPanelAction.getValue(Action.SHORT_DESCRIPTION).toString());
 
-    JMenuItem menuShowColor = new JMenuItem(showColorPanelAction);
-    menuShowColor.setText(
-      showColorPanelAction.getValue(Action.SHORT_DESCRIPTION).toString());
+        JMenuItem menuShowColor = new JMenuItem(showColorPanelAction);
+        menuShowColor.setText(
+            
showColorPanelAction.getValue(Action.SHORT_DESCRIPTION).toString());
 
-    JMenuItem menuUndock = new JMenuItem(undockAction);
+        JMenuItem menuUndock = new JMenuItem(undockAction);
 
-    JMenuItem showAppPrefs =
-      new JMenuItem("Show Application-wide Preferences...");
+        JMenuItem showAppPrefs =
+            new JMenuItem("Show Application-wide Preferences...");
 
-    showAppPrefs.addActionListener(
+        showAppPrefs.addActionListener(
             e -> logui.showApplicationPreferences());
 
-    toggleDetailMenuItem.setAction(toggleDetailPaneAction);
-    toggleDetailMenuItem.setSelected(true);
-
-    toggleCyclicMenuItem.setAction(changeModelAction);
+        toggleDetailMenuItem.setAction(toggleDetailPaneAction);
+        toggleDetailMenuItem.setSelected(true);
+
+        toggleCyclicMenuItem.setAction(changeModelAction);
+
+        toggleCyclicMenuItem.setSelected(true);
+
+        toggleLogTreeMenuItem.setAction(toggleLogTreeAction);
+        toggleLogTreeMenuItem.setSelected(true);
+
+        toggleScrollToBottomMenuItem.setAction(toggleScrollToBottomAction);
+
+        final Action toggleStatusBarAction =
+            new AbstractAction("Show Status bar") {
+                public void actionPerformed(ActionEvent arg0) {
+                    logui.getApplicationPreferenceModel().setStatusBar(
+                        toggleStatusBarCheck.isSelected());
+                }
+            };
+
+        toggleStatusBarAction.putValue(
+            Action.MNEMONIC_KEY, KeyEvent.VK_B);
+        toggleStatusBarCheck.setAction(toggleStatusBarAction);
+        toggleStatusBarCheck.setSelected(
+            logui.getApplicationPreferenceModel().isStatusBar());
+
+        activeTabMenu.add(pause);
+        activeTabMenu.add(toggleCyclicMenuItem);
+        activeTabMenu.addSeparator();
+        activeTabMenu.add(toggleDetailMenuItem);
+        activeTabMenu.add(toggleLogTreeMenuItem);
+        activeTabMenu.addSeparator();
+        activeTabMenu.add(menuUndock);
+        activeTabMenu.add(menuShowColor);
+        activeTabMenu.add(menuPrefs);
+
+        activeTabMenu.addSeparator();
+        activeTabMenu.add(new CopyEventsToClipboardAction(logui));
+        activeTabMenu.add(new JMenuItem(clearAction));
+
+        activeTabMenu.addSeparator();
+        activeTabMenu.add(new JMenuItem(toggleMarkerAction));
+        activeTabMenu.add(new JMenuItem(findNextMarkerAction));
+        activeTabMenu.add(new JMenuItem(findPreviousMarkerAction));
+        activeTabMenu.add(new JMenuItem(clearAllMarkersAction));
+
+        activeTabMenu.add(new JMenuItem(findNextColorizedEventAction));
+        activeTabMenu.add(new JMenuItem(findPreviousColorizedEventAction));
+
+        activeTabMenu.addSeparator();
+        activeTabMenu.add(new JMenuItem(scrollToTopAction));
+        activeTabMenu.add(toggleScrollToBottomMenuItem);
+        activeTabMenu.add(menuItemUseRightMouse);
+
+        viewMenu.add(showToolbarCheck);
+        viewMenu.add(toggleStatusBarCheck);
+        viewMenu.add(toggleShowReceiversCheck);
+        viewMenu.add(menuShowWelcome);
+        viewMenu.addSeparator();
+        viewMenu.add(menuCustomExpressionPanel);
 
-    toggleCyclicMenuItem.setSelected(true);
+        if (!OSXIntegration.IS_OSX) {
+            viewMenu.addSeparator();
+            viewMenu.add(showAppPrefs);
+        }
 
-    toggleLogTreeMenuItem.setAction(toggleLogTreeAction);
-    toggleLogTreeMenuItem.setSelected(true);
+        JMenu helpMenu = new JMenu("Help");
+        helpMenu.setMnemonic('H');
 
-    toggleScrollToBottomMenuItem.setAction(toggleScrollToBottomAction);
+        JMenuItem about = new JMenuItem("About Chainsaw v2...");
+        about.setMnemonic('A');
+        about.addActionListener(
+            e -> logui.showAboutBox());
 
-    final Action toggleStatusBarAction =
-      new AbstractAction("Show Status bar") {
-        public void actionPerformed(ActionEvent arg0) {
-          logui.getApplicationPreferenceModel().setStatusBar(
-            toggleStatusBarCheck.isSelected());
+        Action startTutorial =
+            new AbstractAction("Tutorial...", new 
ImageIcon(ChainsawIcons.HELP)) {
+                public void actionPerformed(ActionEvent e) {
+                    logui.setupTutorial();
+                }
+            };
+
+        startTutorial.putValue(
+            Action.SHORT_DESCRIPTION, "Starts the tutorial process");
+        helpMenu.add(startTutorial);
+
+        List knownReceivers =
+            ReceiversHelper.getInstance().getKnownReceiverClasses();
+        JMenu receiverHelp = new JMenu("Receiver JavaDoc");
+
+        for (Object knownReceiver : knownReceivers) {
+            final Class clazz = (Class) knownReceiver;
+            receiverHelp.add(
+                new AbstractAction(clazz.getName()) {
+                    public void actionPerformed(ActionEvent arg0) {
+                        HelpManager.getInstance().showHelpForClass(clazz);
+                    }
+                });
         }
-      };
-
-    toggleStatusBarAction.putValue(
-      Action.MNEMONIC_KEY, KeyEvent.VK_B);
-    toggleStatusBarCheck.setAction(toggleStatusBarAction);
-    toggleStatusBarCheck.setSelected(
-      logui.getApplicationPreferenceModel().isStatusBar());
-
-    activeTabMenu.add(pause);
-    activeTabMenu.add(toggleCyclicMenuItem);
-    activeTabMenu.addSeparator();
-    activeTabMenu.add(toggleDetailMenuItem);
-    activeTabMenu.add(toggleLogTreeMenuItem);
-    activeTabMenu.addSeparator();
-    activeTabMenu.add(menuUndock);
-    activeTabMenu.add(menuShowColor);
-    activeTabMenu.add(menuPrefs);
-
-    activeTabMenu.addSeparator();
-    activeTabMenu.add(new CopyEventsToClipboardAction(logui));
-    activeTabMenu.add(new JMenuItem(clearAction));
-
-    activeTabMenu.addSeparator();
-    activeTabMenu.add(new JMenuItem(toggleMarkerAction));
-    activeTabMenu.add(new JMenuItem(findNextMarkerAction));
-    activeTabMenu.add(new JMenuItem(findPreviousMarkerAction));
-    activeTabMenu.add(new JMenuItem(clearAllMarkersAction));
-
-    activeTabMenu.add(new JMenuItem(findNextColorizedEventAction));
-    activeTabMenu.add(new JMenuItem(findPreviousColorizedEventAction));
-
-    activeTabMenu.addSeparator();
-    activeTabMenu.add(new JMenuItem(scrollToTopAction));
-    activeTabMenu.add(toggleScrollToBottomMenuItem);
-    activeTabMenu.add(menuItemUseRightMouse);
-    
-    viewMenu.add(showToolbarCheck);
-    viewMenu.add(toggleStatusBarCheck);
-    viewMenu.add(toggleShowReceiversCheck);
-    viewMenu.add(menuShowWelcome);
-    viewMenu.addSeparator();
-    viewMenu.add(menuCustomExpressionPanel);
-
-    if (!OSXIntegration.IS_OSX) {
-        viewMenu.addSeparator();
-        viewMenu.add(showAppPrefs);
+
+        helpMenu.add(receiverHelp);
+
+        helpMenu.addSeparator();
+        helpMenu.add(CommonActions.getInstance().getShowReleaseNotes());
+        helpMenu.add(about);
+
+        menuBar.add(fileMenu);
+        menuBar.add(viewMenu);
+        menuBar.add(activeTabMenu);
+        menuBar.add(helpMenu);
     }
 
-    JMenu helpMenu = new JMenu("Help");
-    helpMenu.setMnemonic('H');
+    private Action createPauseAction() {
+        final Action action =
+            new AbstractAction("Pause") {
+                public void actionPerformed(ActionEvent evt) {
+                    LogPanel logPanel = logui.getCurrentLogPanel();
 
-    JMenuItem about = new JMenuItem("About Chainsaw v2...");
-    about.setMnemonic('A');
-    about.addActionListener(
-            e -> logui.showAboutBox());
+                    if (logPanel == null) {
+                        return;
+                    }
 
-    Action startTutorial =
-      new AbstractAction("Tutorial...", new ImageIcon(ChainsawIcons.HELP)) {
-        public void actionPerformed(ActionEvent e) {
-          logui.setupTutorial();
-        }
-      };
-
-    startTutorial.putValue(
-      Action.SHORT_DESCRIPTION, "Starts the tutorial process");
-    helpMenu.add(startTutorial);
-
-    List knownReceivers =
-      ReceiversHelper.getInstance().getKnownReceiverClasses();
-    JMenu receiverHelp = new JMenu("Receiver JavaDoc");
-
-      for (Object knownReceiver : knownReceivers) {
-          final Class clazz = (Class) knownReceiver;
-          receiverHelp.add(
-                  new AbstractAction(clazz.getName()) {
-                      public void actionPerformed(ActionEvent arg0) {
-                          HelpManager.getInstance().showHelpForClass(clazz);
-                      }
-                  });
-      }
-
-    helpMenu.add(receiverHelp);
-
-    helpMenu.addSeparator();
-    helpMenu.add(CommonActions.getInstance().getShowReleaseNotes());
-    helpMenu.add(about);
-
-    menuBar.add(fileMenu);
-    menuBar.add(viewMenu);
-    menuBar.add(activeTabMenu);
-    menuBar.add(helpMenu);
-  }
-
-  private Action createPauseAction() {
-    final Action action =
-      new AbstractAction("Pause") {
-        public void actionPerformed(ActionEvent evt) {
-          LogPanel logPanel = logui.getCurrentLogPanel();
-
-          if (logPanel == null) {
-            return;
-          }
-
-          logPanel.setPaused(!logPanel.isPaused());
-          scanState();
-        }
-      };
-
-    action.putValue(Action.MNEMONIC_KEY, KeyEvent.VK_P);
-    action.putValue(Action.ACCELERATOR_KEY, KeyStroke.getKeyStroke("F12"));
-    action.putValue(
-      Action.SHORT_DESCRIPTION,
-      "Causes incoming events for this tab to be discarded");
-    action.putValue(Action.SMALL_ICON, new ImageIcon(ChainsawIcons.PAUSE));
-
-    return action;
-  }
-
-  private Action createShowPreferencesAction() {
-    Action showPreferences =
-      new AbstractAction("", ChainsawIcons.ICON_PREFERENCES) {
-        public void actionPerformed(ActionEvent arg0) {
-          LogPanel logPanel = logui.getCurrentLogPanel();
-
-          if (logPanel != null) {
-            logPanel.showPreferences();
-          }
-        }
-      };
+                    logPanel.setPaused(!logPanel.isPaused());
+                    scanState();
+                }
+            };
+
+        action.putValue(Action.MNEMONIC_KEY, KeyEvent.VK_P);
+        action.putValue(Action.ACCELERATOR_KEY, KeyStroke.getKeyStroke("F12"));
+        action.putValue(
+            Action.SHORT_DESCRIPTION,
+            "Causes incoming events for this tab to be discarded");
+        action.putValue(Action.SMALL_ICON, new ImageIcon(ChainsawIcons.PAUSE));
 
-    showPreferences.putValue(
-      Action.SHORT_DESCRIPTION, "Tab Preferences...");
+        return action;
+    }
 
-    // TODO think of good mnemonics and HotKey for this action
-    return showPreferences;
-  }
+    private Action createShowPreferencesAction() {
+        Action showPreferences =
+            new AbstractAction("", ChainsawIcons.ICON_PREFERENCES) {
+                public void actionPerformed(ActionEvent arg0) {
+                    LogPanel logPanel = logui.getCurrentLogPanel();
 
-  private Action createCustomExpressionPanelAction() {
-    final JDialog dialog = new JDialog(logui, "Define tab", true);
-    dialog.getContentPane().add(getCustomExpressionPanel());
-    dialog.setLocationRelativeTo(null);
-    dialog.pack();
+                    if (logPanel != null) {
+                        logPanel.showPreferences();
+                    }
+                }
+            };
 
-    Action createExpressionPanel =
-      new AbstractAction("", ChainsawIcons.ICON_HELP) {
-        public void actionPerformed(ActionEvent arg0) {
-            LogPanel.centerAndSetVisible(dialog);
-        }
-      };
+        showPreferences.putValue(
+            Action.SHORT_DESCRIPTION, "Tab Preferences...");
 
-    createExpressionPanel.putValue(
-      Action.SHORT_DESCRIPTION, "Create tab from expression...   ");
+        // TODO think of good mnemonics and HotKey for this action
+        return showPreferences;
+    }
 
-    // TODO think of good mnemonics and HotKey for this action
-    return createExpressionPanel;
-  }
+    private Action createCustomExpressionPanelAction() {
+        final JDialog dialog = new JDialog(logui, "Define tab", true);
+        dialog.getContentPane().add(getCustomExpressionPanel());
+        dialog.setLocationRelativeTo(null);
+        dialog.pack();
 
-  private Action createShowColorPanelAction() {
-    Action showColorPanel =
-      new AbstractAction("", ChainsawIcons.ICON_PREFERENCES) {
-        public void actionPerformed(ActionEvent arg0) {
-          LogPanel logPanel = logui.getCurrentLogPanel();
+        Action createExpressionPanel =
+            new AbstractAction("", ChainsawIcons.ICON_HELP) {
+                public void actionPerformed(ActionEvent arg0) {
+                    LogPanel.centerAndSetVisible(dialog);
+                }
+            };
 
-          if (logPanel != null) {
-            logPanel.showColorPreferences();
-          }
-        }
-      };
-
-    showColorPanel.putValue(
-      Action.SHORT_DESCRIPTION, "Color settings...");
-
-    // TODO think of good mnemonics and HotKey for this action
-    return showColorPanel;
-  }
-
-  /**
-   * @return
-   */
-  private Action createShowReceiversAction() {
-    final Action action =
-      new AbstractAction("Show Receivers") {
-        public void actionPerformed(ActionEvent arg0) {
-          logui.getApplicationPreferenceModel().setReceivers(
-            !logui.getApplicationPreferenceModel().isReceivers());
-        }
-      };
-
-    action.putValue(Action.MNEMONIC_KEY, KeyEvent.VK_E);
-    action.putValue(
-      Action.SHORT_DESCRIPTION,
-      "Shows the currently configured Log4j Receivers");
-    action.putValue(Action.ACCELERATOR_KEY, KeyStroke.getKeyStroke("F6"));
-    action.putValue(
-      Action.SMALL_ICON, new ImageIcon(ChainsawIcons.ANIM_NET_CONNECT));
-    toggleShowReceiversCheck.setAction(action);
-
-    return action;
-  }
-
-  private Action createToggleDetailPaneAction() {
-    Action action =
-      new AbstractAction("Show Detail Pane") {
-        public void actionPerformed(ActionEvent evt) {
-          LogPanel logPanel = logui.getCurrentLogPanel();
-
-          if (logPanel == null) {
-            return;
-          }
-
-          logPanel.toggleDetailVisible();
-        }
-      };
+        createExpressionPanel.putValue(
+            Action.SHORT_DESCRIPTION, "Create tab from expression...   ");
 
-    action.putValue(Action.MNEMONIC_KEY, KeyEvent.VK_D);
-    action.putValue(
-      Action.ACCELERATOR_KEY,
-      KeyStroke.getKeyStroke(KeyEvent.VK_D, 
Toolkit.getDefaultToolkit().getMenuShortcutKeyMask()));
-    action.putValue(Action.SHORT_DESCRIPTION, "Hides/Shows the Detail Pane");
-    action.putValue(Action.SMALL_ICON, new ImageIcon(ChainsawIcons.INFO));
+        // TODO think of good mnemonics and HotKey for this action
+        return createExpressionPanel;
+    }
 
-    return action;
-  }
+    private Action createShowColorPanelAction() {
+        Action showColorPanel =
+            new AbstractAction("", ChainsawIcons.ICON_PREFERENCES) {
+                public void actionPerformed(ActionEvent arg0) {
+                    LogPanel logPanel = logui.getCurrentLogPanel();
 
-  private Action createToggleToolbarAction() {
-    /**
-     * -== Begin of Show/Hide toolbar action
-     */
-    final Action action =
-      new AbstractAction("Show Toolbar") {
-        public void actionPerformed(ActionEvent e) {
-          logui.getApplicationPreferenceModel().setToolbar(
-            !logui.getApplicationPreferenceModel().isToolbar());
-        }
-      };
-
-    action.putValue(Action.MNEMONIC_KEY, KeyEvent.VK_T);
-
-    return action;
-  }
-
-  private void createToolbar() {
-    Insets buttonMargins = new Insets(1, 1, 1, 1);
-
-    FileMenu menu = (FileMenu) menuBar.getMenu(0);
-
-    JButton fileOpenButton = new SmallButton(menu.getLog4JFileOpenAction());
-    fileOpenButton.setMargin(buttonMargins);
-
-    JButton fileSaveButton = new SmallButton(menu.getFileSaveAction());
-    fileSaveButton.setMargin(buttonMargins);
-
-    fileOpenButton.setText("");
-    fileSaveButton.setText("");
-
-    toolbar.add(fileOpenButton);
-    toolbar.add(fileSaveButton);
-    toolbar.addSeparator();
-
-    pauseButton.setAction(pauseAction);
-    pauseButton.setText("");
-
-    //         
pauseButton.getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW).put(KeyStroke.getKeyStroke("F12"),pauseAction.getValue(Action.NAME)
 );
-    pauseButton.getActionMap().put(
-      pauseAction.getValue(Action.NAME), pauseAction);
-
-    toggleCyclicButton.setAction(changeModelAction);
-    toggleCyclicButton.setText(null);
-
-    detailPaneButton.setAction(toggleDetailPaneAction);
-    detailPaneButton.setText(null);
-    detailPaneButton.getActionMap().put(
-      toggleDetailPaneAction.getValue(Action.NAME), toggleDetailPaneAction);
-    
detailPaneButton.getInputMap(JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT).put(
-      KeyStroke.getKeyStroke(KeyEvent.VK_D, 
Toolkit.getDefaultToolkit().getMenuShortcutKeyMask()),
-      toggleDetailPaneAction.getValue(Action.NAME));
-
-    logTreePaneButton.setAction(toggleLogTreeAction);
-    logTreePaneButton.getActionMap().put(
-      toggleLogTreeAction.getValue(Action.NAME), toggleLogTreeAction);
-    
logTreePaneButton.getInputMap(JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT).put(
-      KeyStroke.getKeyStroke(KeyEvent.VK_T, 
Toolkit.getDefaultToolkit().getMenuShortcutKeyMask()),
-      toggleLogTreeAction.getValue(Action.NAME));
-    logTreePaneButton.setText(null);
-
-    scrollToBottomButton.setAction(toggleScrollToBottomAction);
-    scrollToBottomButton.getActionMap().put(
-      toggleScrollToBottomAction.getValue(Action.NAME), 
toggleScrollToBottomAction);
-    
scrollToBottomButton.getInputMap(JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT).put(
-      KeyStroke.getKeyStroke(KeyEvent.VK_B, 
Toolkit.getDefaultToolkit().getMenuShortcutKeyMask()),
-      toggleScrollToBottomAction.getValue(Action.NAME));
-    scrollToBottomButton.setText(null);
-
-    SmallButton prefsButton = new SmallButton(showPreferencesAction);
-    SmallButton undockButton = new SmallButton(undockAction);
-    undockButton.setText("");
-
-    toolbar.add(undockButton);
-    toolbar.add(pauseButton);
-    toolbar.add(toggleCyclicButton);
-    toolbar.addSeparator();
-    toolbar.add(detailPaneButton);
-    toolbar.add(logTreePaneButton);
-    toolbar.add(scrollToBottomButton);
-    toolbar.add(prefsButton);
-    toolbar.addSeparator();
-
-    toolbar.add(clearButton);
-    clearButton.setAction(clearAction);
-    clearButton.setText("");
-    toolbar.addSeparator();
-
-    showReceiversButton.setText(null);
-    toolbar.add(showReceiversButton);
-
-    toolbar.add(Box.createHorizontalGlue());
-
-    toolbar.setMargin(buttonMargins);
-    toolbar.setFloatable(false);
-  }
-
-  private Action createUndockAction() {
-    Action action =
-      new AbstractAction("Undock", ChainsawIcons.ICON_UNDOCK) {
-        public void actionPerformed(ActionEvent arg0) {
-          LogPanel logPanel = logui.getCurrentLogPanel();
-
-          if (logPanel != null) {
-            logPanel.undock();
-          }
-        }
-      };
-
-    action.putValue(
-      Action.SHORT_DESCRIPTION,
-      "Undocks the current Log panel into its own window");
-
-    // TODO think of some mnemonics and HotKeys for this action
-    return action;
-  }
-
-  private void scanState() {
-    toggleStatusBarCheck.setSelected(logui.isStatusBarVisible());
-    toggleShowReceiversCheck.setSelected(
-      logui.getApplicationPreferenceModel().isReceivers());
-
-    logTreePaneButton.setSelected(logui.isLogTreePanelVisible());
-    LogPanel panel = logui.getCurrentLogPanel();
-    if (panel != null) {
-       scrollToBottomButton.setSelected(panel.isScrollToBottom());
-        toggleDetailMenuItem.setSelected(panel.isDetailVisible());
-    } else {
-       scrollToBottomButton.setSelected(false);
-        toggleDetailMenuItem.setSelected(false);
+                    if (logPanel != null) {
+                        logPanel.showColorPreferences();
+                    }
+                }
+            };
+
+        showColorPanel.putValue(
+            Action.SHORT_DESCRIPTION, "Color settings...");
+
+        // TODO think of good mnemonics and HotKey for this action
+        return showColorPanel;
     }
-    showReceiversButton.setSelected(
-      logui.getApplicationPreferenceModel().isReceivers());
-    menuShowWelcome.setSelected(logui.getTabbedPane().containsWelcomePanel());
 
     /**
-     * We get the currently selected LogPanel, and if null, deactivate some
-     * actions
+     * @return
      */
-    LogPanel logPanel = logui.getCurrentLogPanel();
-
-    boolean activateLogPanelActions = true;
-
-    if (logPanel == null) {
-      activateLogPanelActions = false;
-      activeTabMenu.setEnabled(false);
-      toggleWelcomeVisibleAction.setEnabled(true);
-      detailPaneButton.setSelected(false);
-      toggleCyclicButton.setSelected(false);
-    } else {
-      activeTabMenu.setEnabled(true);
-      fileMenu.getFileSaveAction().setEnabled(true);
-      pauseButton.getModel().setSelected(logPanel.isPaused());
-      toggleCyclicButton.setSelected(logPanel.isCyclic());
-      logui.getStatusBar().setPaused(logPanel.isPaused(), 
logPanel.getIdentifier());
-      toggleCyclicMenuItem.setSelected(logPanel.isCyclic());
-      detailPaneButton.getModel().setSelected(logPanel.isDetailVisible());
-      toggleLogTreeMenuItem.setSelected(logPanel.isLogTreeVisible());
-      toggleScrollToBottomMenuItem.setSelected(logPanel.isScrollToBottom());
+    private Action createShowReceiversAction() {
+        final Action action =
+            new AbstractAction("Show Receivers") {
+                public void actionPerformed(ActionEvent arg0) {
+                    logui.getApplicationPreferenceModel().setReceivers(
+                        !logui.getApplicationPreferenceModel().isReceivers());
+                }
+            };
+
+        action.putValue(Action.MNEMONIC_KEY, KeyEvent.VK_E);
+        action.putValue(
+            Action.SHORT_DESCRIPTION,
+            "Shows the currently configured Log4j Receivers");
+        action.putValue(Action.ACCELERATOR_KEY, KeyStroke.getKeyStroke("F6"));
+        action.putValue(
+            Action.SMALL_ICON, new ImageIcon(ChainsawIcons.ANIM_NET_CONNECT));
+        toggleShowReceiversCheck.setAction(action);
+
+        return action;
     }
 
-      for (Action logPanelSpecificAction : logPanelSpecificActions) {
-          logPanelSpecificAction.setEnabled(activateLogPanelActions);
-      }
+    private Action createToggleDetailPaneAction() {
+        Action action =
+            new AbstractAction("Show Detail Pane") {
+                public void actionPerformed(ActionEvent evt) {
+                    LogPanel logPanel = logui.getCurrentLogPanel();
 
-    String currentLookAndFeelName = UIManager.getLookAndFeel().getName();
+                    if (logPanel == null) {
+                        return;
+                    }
 
-      for (Object lookAndFeelMenu : lookAndFeelMenus) {
-          JRadioButtonMenuItem element = (JRadioButtonMenuItem) 
lookAndFeelMenu;
+                    logPanel.toggleDetailVisible();
+                }
+            };
 
-          if (element.getText().equals(currentLookAndFeelName)) {
-              element.setSelected(true);
-          } else {
-              element.setSelected(false);
-          }
-      }
-  }
+        action.putValue(Action.MNEMONIC_KEY, KeyEvent.VK_D);
+        action.putValue(
+            Action.ACCELERATOR_KEY,
+            KeyStroke.getKeyStroke(KeyEvent.VK_D, 
Toolkit.getDefaultToolkit().getMenuShortcutKeyMask()));
+        action.putValue(Action.SHORT_DESCRIPTION, "Hides/Shows the Detail 
Pane");
+        action.putValue(Action.SMALL_ICON, new ImageIcon(ChainsawIcons.INFO));
 
-    private Action getFindNextColorizedEventAction() {
-      final Action action =
-        new AbstractAction("Find next colorized event") {
-          public void actionPerformed(ActionEvent e) {
-            LogPanel p = logui.getCurrentLogPanel();
-            if (p != null) {
-              p.findNextColorizedEvent();
+        return action;
+    }
+
+    private Action createToggleToolbarAction() {
+        /**
+         * -== Begin of Show/Hide toolbar action
+         */
+        final Action action =
+            new AbstractAction("Show Toolbar") {
+                public void actionPerformed(ActionEvent e) {
+                    logui.getApplicationPreferenceModel().setToolbar(
+                        !logui.getApplicationPreferenceModel().isToolbar());
+                }
+            };
+
+        action.putValue(Action.MNEMONIC_KEY, KeyEvent.VK_T);
+
+        return action;
+    }
+
+    private void createToolbar() {
+        Insets buttonMargins = new Insets(1, 1, 1, 1);
+
+        FileMenu menu = (FileMenu) menuBar.getMenu(0);
+
+        JButton fileOpenButton = new 
SmallButton(menu.getLog4JFileOpenAction());
+        fileOpenButton.setMargin(buttonMargins);
+
+        JButton fileSaveButton = new SmallButton(menu.getFileSaveAction());
+        fileSaveButton.setMargin(buttonMargins);
+
+        fileOpenButton.setText("");
+        fileSaveButton.setText("");
+
+        toolbar.add(fileOpenButton);
+        toolbar.add(fileSaveButton);
+        toolbar.addSeparator();
+
+        pauseButton.setAction(pauseAction);
+        pauseButton.setText("");
+
+        //             
pauseButton.getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW).put(KeyStroke.getKeyStroke("F12"),pauseAction.getValue(Action.NAME)
 );
+        pauseButton.getActionMap().put(
+            pauseAction.getValue(Action.NAME), pauseAction);
+
+        toggleCyclicButton.setAction(changeModelAction);
+        toggleCyclicButton.setText(null);
+
+        detailPaneButton.setAction(toggleDetailPaneAction);
+        detailPaneButton.setText(null);
+        detailPaneButton.getActionMap().put(
+            toggleDetailPaneAction.getValue(Action.NAME), 
toggleDetailPaneAction);
+        
detailPaneButton.getInputMap(JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT).put(
+            KeyStroke.getKeyStroke(KeyEvent.VK_D, 
Toolkit.getDefaultToolkit().getMenuShortcutKeyMask()),
+            toggleDetailPaneAction.getValue(Action.NAME));
+
+        logTreePaneButton.setAction(toggleLogTreeAction);
+        logTreePaneButton.getActionMap().put(
+            toggleLogTreeAction.getValue(Action.NAME), toggleLogTreeAction);
+        
logTreePaneButton.getInputMap(JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT).put(
+            KeyStroke.getKeyStroke(KeyEvent.VK_T, 
Toolkit.getDefaultToolkit().getMenuShortcutKeyMask()),
+            toggleLogTreeAction.getValue(Action.NAME));
+        logTreePaneButton.setText(null);
+
+        scrollToBottomButton.setAction(toggleScrollToBottomAction);
+        scrollToBottomButton.getActionMap().put(
+            toggleScrollToBottomAction.getValue(Action.NAME), 
toggleScrollToBottomAction);
+        
scrollToBottomButton.getInputMap(JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT).put(
+            KeyStroke.getKeyStroke(KeyEvent.VK_B, 
Toolkit.getDefaultToolkit().getMenuShortcutKeyMask()),
+            toggleScrollToBottomAction.getValue(Action.NAME));
+        scrollToBottomButton.setText(null);
+
+        SmallButton prefsButton = new SmallButton(showPreferencesAction);
+        SmallButton undockButton = new SmallButton(undockAction);
+        undockButton.setText("");
+
+        toolbar.add(undockButton);
+        toolbar.add(pauseButton);
+        toolbar.add(toggleCyclicButton);
+        toolbar.addSeparator();
+        toolbar.add(detailPaneButton);
+        toolbar.add(logTreePaneButton);
+        toolbar.add(scrollToBottomButton);
+        toolbar.add(prefsButton);
+        toolbar.addSeparator();
+
+        toolbar.add(clearButton);
+        clearButton.setAction(clearAction);
+        clearButton.setText("");
+        toolbar.addSeparator();
+
+        showReceiversButton.setText(null);
+        toolbar.add(showReceiversButton);
+
+        toolbar.add(Box.createHorizontalGlue());
+
+        toolbar.setMargin(buttonMargins);
+        toolbar.setFloatable(false);
+    }
+
+    private Action createUndockAction() {
+        Action action =
+            new AbstractAction("Undock", ChainsawIcons.ICON_UNDOCK) {
+                public void actionPerformed(ActionEvent arg0) {
+                    LogPanel logPanel = logui.getCurrentLogPanel();
+
+                    if (logPanel != null) {
+                        logPanel.undock();
+                    }
+                }
+            };
+
+        action.putValue(
+            Action.SHORT_DESCRIPTION,
+            "Undocks the current Log panel into its own window");
+
+        //     TODO think of some mnemonics and HotKeys for this action
+        return action;
+    }
+
+    private void scanState() {
+        toggleStatusBarCheck.setSelected(logui.isStatusBarVisible());
+        toggleShowReceiversCheck.setSelected(
+            logui.getApplicationPreferenceModel().isReceivers());
+
+        logTreePaneButton.setSelected(logui.isLogTreePanelVisible());
+        LogPanel panel = logui.getCurrentLogPanel();
+        if (panel != null) {
+            scrollToBottomButton.setSelected(panel.isScrollToBottom());
+            toggleDetailMenuItem.setSelected(panel.isDetailVisible());
+        } else {
+            scrollToBottomButton.setSelected(false);
+            toggleDetailMenuItem.setSelected(false);
+        }
+        showReceiversButton.setSelected(
+            logui.getApplicationPreferenceModel().isReceivers());
+        
menuShowWelcome.setSelected(logui.getTabbedPane().containsWelcomePanel());
+
+        /**
+         * We get the currently selected LogPanel, and if null, deactivate some
+         * actions
+         */
+        LogPanel logPanel = logui.getCurrentLogPanel();
+
+        boolean activateLogPanelActions = true;
+
+        if (logPanel == null) {
+            activateLogPanelActions = false;
+            activeTabMenu.setEnabled(false);
+            toggleWelcomeVisibleAction.setEnabled(true);
+            detailPaneButton.setSelected(false);
+            toggleCyclicButton.setSelected(false);
+        } else {
+            activeTabMenu.setEnabled(true);
+            fileMenu.getFileSaveAction().setEnabled(true);
+            pauseButton.getModel().setSelected(logPanel.isPaused());
+            toggleCyclicButton.setSelected(logPanel.isCyclic());
+            logui.getStatusBar().setPaused(logPanel.isPaused(), 
logPanel.getIdentifier());
+            toggleCyclicMenuItem.setSelected(logPanel.isCyclic());
+            
detailPaneButton.getModel().setSelected(logPanel.isDetailVisible());
+            toggleLogTreeMenuItem.setSelected(logPanel.isLogTreeVisible());
+            
toggleScrollToBottomMenuItem.setSelected(logPanel.isScrollToBottom());
+        }
+
+        for (Action logPanelSpecificAction : logPanelSpecificActions) {
+            logPanelSpecificAction.setEnabled(activateLogPanelActions);
+        }
+
+        String currentLookAndFeelName = UIManager.getLookAndFeel().getName();
+
+        for (Object lookAndFeelMenu : lookAndFeelMenus) {
+            JRadioButtonMenuItem element = (JRadioButtonMenuItem) 
lookAndFeelMenu;
+
+            if (element.getText().equals(currentLookAndFeelName)) {
+                element.setSelected(true);
+            } else {
+                element.setSelected(false);
             }
-          }
-        };
+        }
+    }
+
+    private Action getFindNextColorizedEventAction() {
+        final Action action =
+            new AbstractAction("Find next colorized event") {
+                public void actionPerformed(ActionEvent e) {
+                    LogPanel p = logui.getCurrentLogPanel();
+                    if (p != null) {
+                        p.findNextColorizedEvent();
+                    }
+                }
+            };
         action.putValue(Action.SHORT_DESCRIPTION, "Find the next colorized 
event from the current location");
         action.putValue("enabled", Boolean.TRUE);
         action.putValue(Action.MNEMONIC_KEY, KeyEvent.VK_N);
         action.putValue(Action.ACCELERATOR_KEY, 
KeyStroke.getKeyStroke(KeyEvent.VK_N, 
Toolkit.getDefaultToolkit().getMenuShortcutKeyMask()));
 
-      return action;
+        return action;
     }
 
     private Action getFindPreviousColorizedEventAction() {
-      final Action action =
-        new AbstractAction("Find previous colorized event") {
-          public void actionPerformed(ActionEvent e) {
-            LogPanel p = logui.getCurrentLogPanel();
-
-            if (p != null) {
-              p.findPreviousColorizedEvent();
-            }
-          }
-        };
+        final Action action =
+            new AbstractAction("Find previous colorized event") {
+                public void actionPerformed(ActionEvent e) {
+                    LogPanel p = logui.getCurrentLogPanel();
+
+                    if (p != null) {
+                        p.findPreviousColorizedEvent();
+                    }
+                }
+            };
         action.putValue(Action.SHORT_DESCRIPTION, "Find the next colorized 
event from the current location");
         action.putValue("enabled", Boolean.TRUE);
         action.putValue(Action.MNEMONIC_KEY, KeyEvent.VK_P);
         action.putValue(Action.ACCELERATOR_KEY, 
KeyStroke.getKeyStroke(KeyEvent.VK_P, 
Toolkit.getDefaultToolkit().getMenuShortcutKeyMask()));
 
-      return action;
+        return action;
     }
 
-  private JPanel getCustomExpressionPanel() {
-    final JPanel panel = new JPanel(new BorderLayout());
-    panel.add(
-      new JLabel("Enter expression for new tab:  "), BorderLayout.NORTH);
-
-    final JEditorPane entryField = new JEditorPane();
-    entryField.setPreferredSize(new Dimension(350, 75));
-    JTextComponentFormatter.applySystemFontAndSize(entryField);
-    entryField.addKeyListener(
-      new ExpressionRuleContext(new FilterModel(), entryField));
-    panel.add(entryField, BorderLayout.CENTER);
-
-    JButton ok = new JButton(" OK ");
-    JButton close = new JButton(" Close ");
-    JPanel lowerPanel = new JPanel();
-    lowerPanel.add(ok);
-    lowerPanel.add(Box.createHorizontalStrut(7));
-    lowerPanel.add(close);
-    panel.add(lowerPanel, BorderLayout.SOUTH);
-
-    ok.addActionListener(
-      new AbstractAction() {
-        public void actionPerformed(ActionEvent evt) {
-          logui.createCustomExpressionLogPanel(entryField.getText());
-          SwingUtilities.getAncestorOfClass(JDialog.class, panel).setVisible(
-            false);
-        }
-      });
+    private JPanel getCustomExpressionPanel() {
+        final JPanel panel = new JPanel(new BorderLayout());
+        panel.add(
+            new JLabel("Enter expression for new tab:  "), BorderLayout.NORTH);
+
+        final JEditorPane entryField = new JEditorPane();
+        entryField.setPreferredSize(new Dimension(350, 75));
+        JTextComponentFormatter.applySystemFontAndSize(entryField);
+        entryField.addKeyListener(
+            new ExpressionRuleContext(new FilterModel(), entryField));
+        panel.add(entryField, BorderLayout.CENTER);
+
+        JButton ok = new JButton(" OK ");
+        JButton close = new JButton(" Close ");
+        JPanel lowerPanel = new JPanel();
+        lowerPanel.add(ok);
+        lowerPanel.add(Box.createHorizontalStrut(7));
+        lowerPanel.add(close);
+        panel.add(lowerPanel, BorderLayout.SOUTH);
+
+        ok.addActionListener(
+            new AbstractAction() {
+                public void actionPerformed(ActionEvent evt) {
+                    logui.createCustomExpressionLogPanel(entryField.getText());
+                    SwingUtilities.getAncestorOfClass(JDialog.class, 
panel).setVisible(
+                        false);
+                }
+            });
 
-    close.addActionListener(
-      new AbstractAction() {
-        public void actionPerformed(ActionEvent evt) {
-          SwingUtilities.getAncestorOfClass(JDialog.class, panel).setVisible(
-            false);
-        }
-      });
+        close.addActionListener(
+            new AbstractAction() {
+                public void actionPerformed(ActionEvent evt) {
+                    SwingUtilities.getAncestorOfClass(JDialog.class, 
panel).setVisible(
+                        false);
+                }
+            });
 
-    //String expression = JOptionPane.showInputDialog(logui, "Enter 
expression", "Create custom expression LogPanel", JOptionPane.PLAIN_MESSAGE);
-    return panel;
-  }
+        //String expression = JOptionPane.showInputDialog(logui, "Enter 
expression", "Create custom expression LogPanel", JOptionPane.PLAIN_MESSAGE);
+        return panel;
+    }
 }

http://git-wip-us.apache.org/repos/asf/logging-chainsaw/blob/96ebd9ad/src/main/java/org/apache/log4j/chainsaw/ChainsawViewer.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/log4j/chainsaw/ChainsawViewer.java 
b/src/main/java/org/apache/log4j/chainsaw/ChainsawViewer.java
index c269cc6..a116894 100644
--- a/src/main/java/org/apache/log4j/chainsaw/ChainsawViewer.java
+++ b/src/main/java/org/apache/log4j/chainsaw/ChainsawViewer.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.
@@ -19,15 +19,16 @@ package org.apache.log4j.chainsaw;
 
 
 /**
-  Chainsaw compatible gui viewers must implement this interface
-  in order to be opened and configured by the ChainsawAppender class.
-
-  @author Mark Womack
-*/
+ * Chainsaw compatible gui viewers must implement this interface
+ * in order to be opened and configured by the ChainsawAppender class.
+ *
+ * @author Mark Womack
+ */
 public interface ChainsawViewer {
-  /**
-    Called when the viewer should activate.
-
-    @param model The ChainsawAppender model instance the viewer should use. */
-  void activateViewer(ChainsawAppender model);
+    /**
+     * Called when the viewer should activate.
+     *
+     * @param model The ChainsawAppender model instance the viewer should use.
+     */
+    void activateViewer(ChainsawAppender model);
 }

http://git-wip-us.apache.org/repos/asf/logging-chainsaw/blob/96ebd9ad/src/main/java/org/apache/log4j/chainsaw/CheckListCellRenderer.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/log4j/chainsaw/CheckListCellRenderer.java 
b/src/main/java/org/apache/log4j/chainsaw/CheckListCellRenderer.java
index 090bdf9..db4ca8a 100644
--- a/src/main/java/org/apache/log4j/chainsaw/CheckListCellRenderer.java
+++ b/src/main/java/org/apache/log4j/chainsaw/CheckListCellRenderer.java
@@ -16,64 +16,58 @@
  */
 package org.apache.log4j.chainsaw;
 
-import java.awt.Component;
-
-import javax.swing.BorderFactory;
-import javax.swing.JCheckBox;
-import javax.swing.JList;
-import javax.swing.ListCellRenderer;
-import javax.swing.UIManager;
+import javax.swing.*;
 import javax.swing.border.Border;
 import javax.swing.table.TableColumn;
+import java.awt.*;
 
 
 /**
  * A ListCellRenderer that display a check box if the value
  * has been "checked".
- * 
+ * <p>
  * Borrowed heavily from the excellent book "Swing, 2nd Edition" by
  * Matthew Robinson &amp; Pavel Vorobiev.
- * 
- * @author Paul Smith
  *
+ * @author Paul Smith
  */
 public abstract class CheckListCellRenderer extends JCheckBox
-  implements ListCellRenderer {
-  private final Border noFocusBorder =
-    BorderFactory.createEmptyBorder(1, 1, 1, 1);
+    implements ListCellRenderer {
+    private final Border noFocusBorder =
+        BorderFactory.createEmptyBorder(1, 1, 1, 1);
 
-  /**
-   *
-   */
-  public CheckListCellRenderer() {
-    super();
-    setOpaque(true);
-    setBorder(noFocusBorder);
-  }
+    /**
+     *
+     */
+    public CheckListCellRenderer() {
+        super();
+        setOpaque(true);
+        setBorder(noFocusBorder);
+    }
 
-  /* (non-Javadoc)
-   * @see 
javax.swing.ListCellRenderer#getListCellRendererComponent(javax.swing.JList, 
java.lang.Object, int, boolean, boolean)
-   */
-  public Component getListCellRendererComponent(
-    JList list, Object value, int index, boolean isSelected,
-    boolean cellHasFocus) {
-         setText(((TableColumn)value).getHeaderValue().toString());
-    setBackground(
-      isSelected ? list.getSelectionBackground() : list.getBackground());
-    setForeground(
-      isSelected ? list.getSelectionForeground() : list.getForeground());
-    setFont(list.getFont());
-    setBorder(
-      cellHasFocus ? UIManager.getBorder("List.focusCellHighlightBorder")
-                   : noFocusBorder);
+    /* (non-Javadoc)
+     * @see 
javax.swing.ListCellRenderer#getListCellRendererComponent(javax.swing.JList, 
java.lang.Object, int, boolean, boolean)
+     */
+    public Component getListCellRendererComponent(
+        JList list, Object value, int index, boolean isSelected,
+        boolean cellHasFocus) {
+        setText(((TableColumn) value).getHeaderValue().toString());
+        setBackground(
+            isSelected ? list.getSelectionBackground() : list.getBackground());
+        setForeground(
+            isSelected ? list.getSelectionForeground() : list.getForeground());
+        setFont(list.getFont());
+        setBorder(
+            cellHasFocus ? UIManager.getBorder("List.focusCellHighlightBorder")
+                : noFocusBorder);
 
-    setSelected(isSelected(value));
-    return this;
-  }
+        setSelected(isSelected(value));
+        return this;
+    }
 
-/**
- * @param value
- * @return selected flag
- */
-protected abstract boolean isSelected(Object value);
+    /**
+     * @param value
+     * @return selected flag
+     */
+    protected abstract boolean isSelected(Object value);
 }

Reply via email to