//# 0 errors, 513 messages
//#
/*
    //#ErrorPanel.java:1:1: class: com.dmdirc.addons.ui_swing.components.statusbar.ErrorPanel$1
    //#ErrorPanel.java:1:1: method: com.dmdirc.addons.ui_swing.components.statusbar.ErrorPanel$1.com.dmdirc.addons.ui_swing.components.statusbar.ErrorPanel$1__static_init
    //#ErrorPanel.java:1:1: class: com.dmdirc.addons.ui_swing.components.statusbar.ErrorPanel
 * Copyright (c) 2006-2008 Chris Smith, Shane Mc Cormack, Gregory Holmes
 *
 * Permission is hereby granted, free of charge, to any person obtaining a copy
 * of this software and associated documentation files (the "Software"), to deal
 * in the Software without restriction, including without limitation the rights
 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
 * copies of the Software, and to permit persons to whom the Software is
 * furnished to do so, subject to the following conditions:
 *
 * The above copyright notice and this permission notice shall be included in
 * all copies or substantial portions of the Software.
 *
 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
 * SOFTWARE.
 */

package com.dmdirc.addons.ui_swing.components.statusbar;

import com.dmdirc.addons.ui_swing.MainFrame;
import com.dmdirc.addons.ui_swing.SwingController;
import com.dmdirc.addons.ui_swing.dialogs.error.ErrorListDialog;
import com.dmdirc.logger.ErrorLevel;
import com.dmdirc.logger.ErrorListener;
import com.dmdirc.logger.ErrorManager;
import com.dmdirc.logger.ProgramError;
import com.dmdirc.ui.IconManager;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseEvent;
import java.util.Collection;
import java.util.List;

import javax.swing.Icon;
import javax.swing.JLabel;
import javax.swing.JMenuItem;
import javax.swing.JPopupMenu;
import javax.swing.SwingUtilities;

/**
 * Shows error status in the status bar.
 *
 * @since 0.6.3m1
 * @author chris
 */
public class ErrorPanel extends StatusbarPopupPanel implements ErrorListener, ActionListener {
    //#ErrorPanel.java:52: method: ErrorManager com.dmdirc.addons.ui_swing.components.statusbar.ErrorPanel.access$000(ErrorPanel)
    //#input(ErrorManager access$000(ErrorPanel)): x0
    //#input(ErrorManager access$000(ErrorPanel)): x0.errorManager
    //#output(ErrorManager access$000(ErrorPanel)): return_value
    //#pre[1] (ErrorManager access$000(ErrorPanel)): x0 != null
    //#post(ErrorManager access$000(ErrorPanel)): return_value == x0.errorManager
    //#post(ErrorManager access$000(ErrorPanel)): init'ed(return_value)
    //#ErrorPanel.java:52: end of method: ErrorManager com.dmdirc.addons.ui_swing.components.statusbar.ErrorPanel.access$000(ErrorPanel)
    //#ErrorPanel.java:52: method: ErrorLevel com.dmdirc.addons.ui_swing.components.statusbar.ErrorPanel.access$100(ErrorPanel)
    //#input(ErrorLevel access$100(ErrorPanel)): x0
    //#input(ErrorLevel access$100(ErrorPanel)): x0.errorLevel
    //#output(ErrorLevel access$100(ErrorPanel)): return_value
    //#pre[1] (ErrorLevel access$100(ErrorPanel)): x0 != null
    //#pre[2] (ErrorLevel access$100(ErrorPanel)): init'ed(x0.errorLevel)
    //#post(ErrorLevel access$100(ErrorPanel)): return_value == x0.errorLevel
    //#post(ErrorLevel access$100(ErrorPanel)): init'ed(return_value)
    //#ErrorPanel.java:52: end of method: ErrorLevel com.dmdirc.addons.ui_swing.components.statusbar.ErrorPanel.access$100(ErrorPanel)
    //#ErrorPanel.java:52: method: ErrorLevel com.dmdirc.addons.ui_swing.components.statusbar.ErrorPanel.access$102(ErrorPanel, ErrorLevel)
    //#input(ErrorLevel access$102(ErrorPanel, ErrorLevel)): x0
    //#input(ErrorLevel access$102(ErrorPanel, ErrorLevel)): x1
    //#output(ErrorLevel access$102(ErrorPanel, ErrorLevel)): return_value
    //#output(ErrorLevel access$102(ErrorPanel, ErrorLevel)): x0.errorLevel
    //#pre[1] (ErrorLevel access$102(ErrorPanel, ErrorLevel)): x0 != null
    //#post(ErrorLevel access$102(ErrorPanel, ErrorLevel)): return_value == x1
    //#post(ErrorLevel access$102(ErrorPanel, ErrorLevel)): init'ed(return_value)
    //#post(ErrorLevel access$102(ErrorPanel, ErrorLevel)): x0.errorLevel == return_value
    //#ErrorPanel.java:52: end of method: ErrorLevel com.dmdirc.addons.ui_swing.components.statusbar.ErrorPanel.access$102(ErrorPanel, ErrorLevel)

    /**
     * A version number for this class. It should be changed whenever the class
     * structure is changed (or anything else that would prevent serialized
     * objects being unserialized with the new class).
     */
    private static final long serialVersionUID = 2;

    /** non error state image icon. */
    private static final Icon DEFAULT_ICON = IconManager.getIconManager().
    //#ErrorPanel.java:62: method: com.dmdirc.addons.ui_swing.components.statusbar.ErrorPanel.com.dmdirc.addons.ui_swing.components.statusbar.ErrorPanel__static_init
    //#ErrorPanel.java:62: Warning: method not available - call not analyzed
    //#    call on IconManager com.dmdirc.ui.IconManager:getIconManager()
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.components.statusbar.ErrorPanel
    //#    method: com.dmdirc.addons.ui_swing.components.statusbar.ErrorPanel__static_init
    //#    unanalyzed callee: IconManager com.dmdirc.ui.IconManager:getIconManager()
    //#ErrorPanel.java:62: Warning: method not available - call not analyzed
    //#    call on Icon com.dmdirc.ui.IconManager:getIcon(String)
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.components.statusbar.ErrorPanel
    //#    method: com.dmdirc.addons.ui_swing.components.statusbar.ErrorPanel__static_init
    //#    unanalyzed callee: Icon com.dmdirc.ui.IconManager:getIcon(String)
    //#output(com.dmdirc.addons.ui_swing.components.statusbar.ErrorPanel__static_init): DEFAULT_ICON
    //#output(com.dmdirc.addons.ui_swing.components.statusbar.ErrorPanel__static_init): __Descendant_Table[com/dmdirc/addons/ui_swing/components/statusbar/ErrorPanel]
    //#output(com.dmdirc.addons.ui_swing.components.statusbar.ErrorPanel__static_init): __Dispatch_Table.actionPerformed(Ljava/awt/event/ActionEvent;)V
    //#output(com.dmdirc.addons.ui_swing.components.statusbar.ErrorPanel__static_init): __Dispatch_Table.checkErrors()V
    //#output(com.dmdirc.addons.ui_swing.components.statusbar.ErrorPanel__static_init): __Dispatch_Table.checkMouseEvent(Ljava/awt/event/MouseEvent;)V
    //#output(com.dmdirc.addons.ui_swing.components.statusbar.ErrorPanel__static_init): __Dispatch_Table.clearError()V
    //#output(com.dmdirc.addons.ui_swing.components.statusbar.ErrorPanel__static_init): __Dispatch_Table.closeDialog()V
    //#output(com.dmdirc.addons.ui_swing.components.statusbar.ErrorPanel__static_init): __Dispatch_Table.errorAdded(Lcom/dmdirc/logger/ProgramError;)V
    //#output(com.dmdirc.addons.ui_swing.components.statusbar.ErrorPanel__static_init): __Dispatch_Table.errorDeleted(Lcom/dmdirc/logger/ProgramError;)V
    //#output(com.dmdirc.addons.ui_swing.components.statusbar.ErrorPanel__static_init): __Dispatch_Table.errorStatusChanged(Lcom/dmdirc/logger/ProgramError;)V
    //#output(com.dmdirc.addons.ui_swing.components.statusbar.ErrorPanel__static_init): __Dispatch_Table.getWindow()Lcom/dmdirc/addons/ui_swing/components/statusbar/StatusbarPopupWindow;
    //#output(com.dmdirc.addons.ui_swing.components.statusbar.ErrorPanel__static_init): __Dispatch_Table.isReady()Z
    //#output(com.dmdirc.addons.ui_swing.components.statusbar.ErrorPanel__static_init): __Dispatch_Table.mouseClicked(Ljava/awt/event/MouseEvent;)V
    //#output(com.dmdirc.addons.ui_swing.components.statusbar.ErrorPanel__static_init): __Dispatch_Table.mouseEntered(Ljava/awt/event/MouseEvent;)V
    //#output(com.dmdirc.addons.ui_swing.components.statusbar.ErrorPanel__static_init): __Dispatch_Table.mouseExited(Ljava/awt/event/MouseEvent;)V
    //#output(com.dmdirc.addons.ui_swing.components.statusbar.ErrorPanel__static_init): __Dispatch_Table.mousePressed(Ljava/awt/event/MouseEvent;)V
    //#output(com.dmdirc.addons.ui_swing.components.statusbar.ErrorPanel__static_init): __Dispatch_Table.mouseReleased(Ljava/awt/event/MouseEvent;)V
    //#output(com.dmdirc.addons.ui_swing.components.statusbar.ErrorPanel__static_init): __Dispatch_Table.openDialog()V
    //#output(com.dmdirc.addons.ui_swing.components.statusbar.ErrorPanel__static_init): __Dispatch_Table.refreshDialog()V
    //#output(com.dmdirc.addons.ui_swing.components.statusbar.ErrorPanel__static_init): __Dispatch_Table.setText(Ljava/lang/String;)V
    //#output(com.dmdirc.addons.ui_swing.components.statusbar.ErrorPanel__static_init): com/dmdirc/addons/ui_swing/components/statusbar/StatusbarPopupPanel.__Descendant_Table[com/dmdirc/addons/ui_swing/components/statusbar/ErrorPanel]
    //#presumption(com.dmdirc.addons.ui_swing.components.statusbar.ErrorPanel__static_init): com.dmdirc.ui.IconManager:getIconManager(...)@62 != null
    //#post(com.dmdirc.addons.ui_swing.components.statusbar.ErrorPanel__static_init): init'ed(DEFAULT_ICON)
    //#post(com.dmdirc.addons.ui_swing.components.statusbar.ErrorPanel__static_init): __Descendant_Table[com/dmdirc/addons/ui_swing/components/statusbar/ErrorPanel] == &__Dispatch_Table
    //#post(com.dmdirc.addons.ui_swing.components.statusbar.ErrorPanel__static_init): com/dmdirc/addons/ui_swing/components/statusbar/StatusbarPopupPanel.__Descendant_Table[com/dmdirc/addons/ui_swing/components/statusbar/ErrorPanel] == &__Dispatch_Table
    //#post(com.dmdirc.addons.ui_swing.components.statusbar.ErrorPanel__static_init): __Dispatch_Table.actionPerformed(Ljava/awt/event/ActionEvent;)V == &actionPerformed
    //#post(com.dmdirc.addons.ui_swing.components.statusbar.ErrorPanel__static_init): __Dispatch_Table.checkErrors()V == &checkErrors
    //#post(com.dmdirc.addons.ui_swing.components.statusbar.ErrorPanel__static_init): __Dispatch_Table.checkMouseEvent(Ljava/awt/event/MouseEvent;)V == &checkMouseEvent
    //#post(com.dmdirc.addons.ui_swing.components.statusbar.ErrorPanel__static_init): __Dispatch_Table.clearError()V == &clearError
    //#post(com.dmdirc.addons.ui_swing.components.statusbar.ErrorPanel__static_init): __Dispatch_Table.closeDialog()V == &com/dmdirc/addons/ui_swing/components/statusbar/StatusbarPopupPanel.closeDialog
    //#post(com.dmdirc.addons.ui_swing.components.statusbar.ErrorPanel__static_init): __Dispatch_Table.errorAdded(Lcom/dmdirc/logger/ProgramError;)V == &errorAdded
    //#post(com.dmdirc.addons.ui_swing.components.statusbar.ErrorPanel__static_init): __Dispatch_Table.errorDeleted(Lcom/dmdirc/logger/ProgramError;)V == &errorDeleted
    //#post(com.dmdirc.addons.ui_swing.components.statusbar.ErrorPanel__static_init): __Dispatch_Table.errorStatusChanged(Lcom/dmdirc/logger/ProgramError;)V == &errorStatusChanged
    //#post(com.dmdirc.addons.ui_swing.components.statusbar.ErrorPanel__static_init): __Dispatch_Table.getWindow()Lcom/dmdirc/addons/ui_swing/components/statusbar/StatusbarPopupWindow; == &getWindow
    //#post(com.dmdirc.addons.ui_swing.components.statusbar.ErrorPanel__static_init): __Dispatch_Table.isReady()Z == &isReady
    //#post(com.dmdirc.addons.ui_swing.components.statusbar.ErrorPanel__static_init): __Dispatch_Table.mouseClicked(Ljava/awt/event/MouseEvent;)V == &mouseClicked
    //#post(com.dmdirc.addons.ui_swing.components.statusbar.ErrorPanel__static_init): __Dispatch_Table.mouseEntered(Ljava/awt/event/MouseEvent;)V == &mouseEntered
    //#post(com.dmdirc.addons.ui_swing.components.statusbar.ErrorPanel__static_init): __Dispatch_Table.mouseExited(Ljava/awt/event/MouseEvent;)V == &mouseExited
    //#post(com.dmdirc.addons.ui_swing.components.statusbar.ErrorPanel__static_init): __Dispatch_Table.mousePressed(Ljava/awt/event/MouseEvent;)V == &mousePressed
    //#post(com.dmdirc.addons.ui_swing.components.statusbar.ErrorPanel__static_init): __Dispatch_Table.mouseReleased(Ljava/awt/event/MouseEvent;)V == &mouseReleased
    //#post(com.dmdirc.addons.ui_swing.components.statusbar.ErrorPanel__static_init): __Dispatch_Table.openDialog()V == &com/dmdirc/addons/ui_swing/components/statusbar/StatusbarPopupPanel.openDialog
    //#post(com.dmdirc.addons.ui_swing.components.statusbar.ErrorPanel__static_init): __Dispatch_Table.refreshDialog()V == &com/dmdirc/addons/ui_swing/components/statusbar/StatusbarPopupPanel.refreshDialog
    //#post(com.dmdirc.addons.ui_swing.components.statusbar.ErrorPanel__static_init): __Dispatch_Table.setText(Ljava/lang/String;)V == &com/dmdirc/addons/ui_swing/components/statusbar/StatusbarPopupPanel.setText
    //#ErrorPanel.java:62: end of method: com.dmdirc.addons.ui_swing.components.statusbar.ErrorPanel.com.dmdirc.addons.ui_swing.components.statusbar.ErrorPanel__static_init
            getIcon("normal");
    /** Currently showing error level. */
    private ErrorLevel errorLevel;
    /** Status controller. */
    private final MainFrame mainFrame;
    /** Swing status bar. */
    private SwingStatusBar statusBar;
    /** Error manager. */
    private final ErrorManager errorManager = ErrorManager.getErrorManager();
    //#ErrorPanel.java:71: Warning: method not available - call not analyzed
    //#    call on ErrorManager com.dmdirc.logger.ErrorManager:getErrorManager()
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.components.statusbar.ErrorPanel
    //#    method: void com.dmdirc.addons.ui_swing.components.statusbar.ErrorPanel(SwingController, MainFrame, SwingStatusBar)
    //#    unanalyzed callee: ErrorManager com.dmdirc.logger.ErrorManager:getErrorManager()
    /** Dismiss menu. */
    private final JPopupMenu menu;
    /** Dismiss menu item. */
    private final JMenuItem dismiss;
    /** Show menu item. */
    private final JMenuItem show;
    /** Swing controller. */
    private SwingController controller;

    /**
     * Creates a new ErrorPanel for the speicified status bar.
     *
     * @param controller Swing controller
     * @param mainFrame Main frame
     * @param statusBar Status bar  
     */
    public ErrorPanel(final SwingController controller,
            final MainFrame mainFrame, final SwingStatusBar statusBar) {
        super(new JLabel());
    //#ErrorPanel.java:90: method: void com.dmdirc.addons.ui_swing.components.statusbar.ErrorPanel.com.dmdirc.addons.ui_swing.components.statusbar.ErrorPanel(SwingController, MainFrame, SwingStatusBar)
    //#input(void com.dmdirc.addons.ui_swing.components.statusbar.ErrorPanel(SwingController, MainFrame, SwingStatusBar)): DEFAULT_ICON
    //#input(void com.dmdirc.addons.ui_swing.components.statusbar.ErrorPanel(SwingController, MainFrame, SwingStatusBar)): controller
    //#input(void com.dmdirc.addons.ui_swing.components.statusbar.ErrorPanel(SwingController, MainFrame, SwingStatusBar)): mainFrame
    //#input(void com.dmdirc.addons.ui_swing.components.statusbar.ErrorPanel(SwingController, MainFrame, SwingStatusBar)): statusBar
    //#input(void com.dmdirc.addons.ui_swing.components.statusbar.ErrorPanel(SwingController, MainFrame, SwingStatusBar)): this
    //#output(void com.dmdirc.addons.ui_swing.components.statusbar.ErrorPanel(SwingController, MainFrame, SwingStatusBar)): new JLabel(ErrorPanel#1) num objects
    //#output(void com.dmdirc.addons.ui_swing.components.statusbar.ErrorPanel(SwingController, MainFrame, SwingStatusBar)): new JMenuItem(ErrorPanel#3) num objects
    //#output(void com.dmdirc.addons.ui_swing.components.statusbar.ErrorPanel(SwingController, MainFrame, SwingStatusBar)): new JMenuItem(ErrorPanel#4) num objects
    //#output(void com.dmdirc.addons.ui_swing.components.statusbar.ErrorPanel(SwingController, MainFrame, SwingStatusBar)): new JPopupMenu(ErrorPanel#2) num objects
    //#output(void com.dmdirc.addons.ui_swing.components.statusbar.ErrorPanel(SwingController, MainFrame, SwingStatusBar)): this.controller
    //#output(void com.dmdirc.addons.ui_swing.components.statusbar.ErrorPanel(SwingController, MainFrame, SwingStatusBar)): this.dismiss
    //#output(void com.dmdirc.addons.ui_swing.components.statusbar.ErrorPanel(SwingController, MainFrame, SwingStatusBar)): this.errorManager
    //#output(void com.dmdirc.addons.ui_swing.components.statusbar.ErrorPanel(SwingController, MainFrame, SwingStatusBar)): this.label
    //#output(void com.dmdirc.addons.ui_swing.components.statusbar.ErrorPanel(SwingController, MainFrame, SwingStatusBar)): this.mainFrame
    //#output(void com.dmdirc.addons.ui_swing.components.statusbar.ErrorPanel(SwingController, MainFrame, SwingStatusBar)): this.menu
    //#output(void com.dmdirc.addons.ui_swing.components.statusbar.ErrorPanel(SwingController, MainFrame, SwingStatusBar)): this.show
    //#output(void com.dmdirc.addons.ui_swing.components.statusbar.ErrorPanel(SwingController, MainFrame, SwingStatusBar)): this.statusBar
    //#new obj(void com.dmdirc.addons.ui_swing.components.statusbar.ErrorPanel(SwingController, MainFrame, SwingStatusBar)): new JLabel(ErrorPanel#1)
    //#new obj(void com.dmdirc.addons.ui_swing.components.statusbar.ErrorPanel(SwingController, MainFrame, SwingStatusBar)): new JMenuItem(ErrorPanel#3)
    //#new obj(void com.dmdirc.addons.ui_swing.components.statusbar.ErrorPanel(SwingController, MainFrame, SwingStatusBar)): new JMenuItem(ErrorPanel#4)
    //#new obj(void com.dmdirc.addons.ui_swing.components.statusbar.ErrorPanel(SwingController, MainFrame, SwingStatusBar)): new JPopupMenu(ErrorPanel#2)
    //#presumption(void com.dmdirc.addons.ui_swing.components.statusbar.ErrorPanel(SwingController, MainFrame, SwingStatusBar)): com.dmdirc.logger.ErrorManager:getErrorManager(...)@71 != null
    //#post(void com.dmdirc.addons.ui_swing.components.statusbar.ErrorPanel(SwingController, MainFrame, SwingStatusBar)): this.controller == controller
    //#post(void com.dmdirc.addons.ui_swing.components.statusbar.ErrorPanel(SwingController, MainFrame, SwingStatusBar)): init'ed(this.controller)
    //#post(void com.dmdirc.addons.ui_swing.components.statusbar.ErrorPanel(SwingController, MainFrame, SwingStatusBar)): this.dismiss == &new JMenuItem(ErrorPanel#3)
    //#post(void com.dmdirc.addons.ui_swing.components.statusbar.ErrorPanel(SwingController, MainFrame, SwingStatusBar)): this.errorManager != null
    //#post(void com.dmdirc.addons.ui_swing.components.statusbar.ErrorPanel(SwingController, MainFrame, SwingStatusBar)): this.label == &new JLabel(ErrorPanel#1)
    //#post(void com.dmdirc.addons.ui_swing.components.statusbar.ErrorPanel(SwingController, MainFrame, SwingStatusBar)): this.mainFrame == mainFrame
    //#post(void com.dmdirc.addons.ui_swing.components.statusbar.ErrorPanel(SwingController, MainFrame, SwingStatusBar)): init'ed(this.mainFrame)
    //#post(void com.dmdirc.addons.ui_swing.components.statusbar.ErrorPanel(SwingController, MainFrame, SwingStatusBar)): this.menu == &new JPopupMenu(ErrorPanel#2)
    //#post(void com.dmdirc.addons.ui_swing.components.statusbar.ErrorPanel(SwingController, MainFrame, SwingStatusBar)): this.show == &new JMenuItem(ErrorPanel#4)
    //#post(void com.dmdirc.addons.ui_swing.components.statusbar.ErrorPanel(SwingController, MainFrame, SwingStatusBar)): this.statusBar == statusBar
    //#post(void com.dmdirc.addons.ui_swing.components.statusbar.ErrorPanel(SwingController, MainFrame, SwingStatusBar)): init'ed(this.statusBar)
    //#post(void com.dmdirc.addons.ui_swing.components.statusbar.ErrorPanel(SwingController, MainFrame, SwingStatusBar)): new JLabel(ErrorPanel#1) num objects == 1
    //#post(void com.dmdirc.addons.ui_swing.components.statusbar.ErrorPanel(SwingController, MainFrame, SwingStatusBar)): new JMenuItem(ErrorPanel#3) num objects == 1
    //#post(void com.dmdirc.addons.ui_swing.components.statusbar.ErrorPanel(SwingController, MainFrame, SwingStatusBar)): new JMenuItem(ErrorPanel#4) num objects == 1
    //#post(void com.dmdirc.addons.ui_swing.components.statusbar.ErrorPanel(SwingController, MainFrame, SwingStatusBar)): new JPopupMenu(ErrorPanel#2) num objects == 1
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.statusbar.ErrorPanel(SwingController, MainFrame, SwingStatusBar)): Effects-of-calling:javax.swing.SwingUtilities:invokeLater
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.statusbar.ErrorPanel(SwingController, MainFrame, SwingStatusBar)): Effects-of-calling:javax.swing.JPanel
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.statusbar.ErrorPanel(SwingController, MainFrame, SwingStatusBar)): Effects-of-calling:javax.swing.BorderFactory:createEtchedBorder
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.statusbar.ErrorPanel(SwingController, MainFrame, SwingStatusBar)): Effects-of-calling:com.dmdirc.addons.ui_swing.components.statusbar.StatusbarPopupPanel:setBorder
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.statusbar.ErrorPanel(SwingController, MainFrame, SwingStatusBar)): Effects-of-calling:net.miginfocom.swing.MigLayout
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.statusbar.ErrorPanel(SwingController, MainFrame, SwingStatusBar)): Effects-of-calling:com.dmdirc.addons.ui_swing.components.statusbar.StatusbarPopupPanel:setLayout
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.statusbar.ErrorPanel(SwingController, MainFrame, SwingStatusBar)): Effects-of-calling:com.dmdirc.addons.ui_swing.components.statusbar.StatusbarPopupPanel:add
    //#unanalyzed(void com.dmdirc.addons.ui_swing.components.statusbar.ErrorPanel(SwingController, MainFrame, SwingStatusBar)): Effects-of-calling:com.dmdirc.addons.ui_swing.components.statusbar.StatusbarPopupPanel:addMouseListener

        this.controller = controller;
        this.mainFrame = mainFrame;
        this.statusBar = statusBar;
        
        menu = new JPopupMenu();
        dismiss = new JMenuItem("Clear All");
        show = new JMenuItem("Open");
        label.setIcon(DEFAULT_ICON);
        setVisible(errorManager.getErrorCount() > 0);
    //#ErrorPanel.java:100: Warning: method not available - call not analyzed
    //#    call on int com.dmdirc.logger.ErrorManager:getErrorCount()
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.components.statusbar.ErrorPanel
    //#    method: void com.dmdirc.addons.ui_swing.components.statusbar.ErrorPanel(SwingController, MainFrame, SwingStatusBar)
    //#    unanalyzed callee: int com.dmdirc.logger.ErrorManager:getErrorCount()
    //#ErrorPanel.java:100: Warning: method not available - call not analyzed
    //#    call on void com.dmdirc.addons.ui_swing.components.statusbar.ErrorPanel:setVisible(bool)
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.components.statusbar.ErrorPanel
    //#    method: void com.dmdirc.addons.ui_swing.components.statusbar.ErrorPanel(SwingController, MainFrame, SwingStatusBar)
    //#    unanalyzed callee: void com.dmdirc.addons.ui_swing.components.statusbar.ErrorPanel:setVisible(bool)
        menu.add(show);
        menu.add(dismiss);
        errorManager.addErrorListener(this);
    //#ErrorPanel.java:103: Warning: method not available - call not analyzed
    //#    call on void com.dmdirc.logger.ErrorManager:addErrorListener(ErrorListener)
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.components.statusbar.ErrorPanel
    //#    method: void com.dmdirc.addons.ui_swing.components.statusbar.ErrorPanel(SwingController, MainFrame, SwingStatusBar)
    //#    unanalyzed callee: void com.dmdirc.logger.ErrorManager:addErrorListener(ErrorListener)
        dismiss.addActionListener(this);
        show.addActionListener(this);
        checkErrors();
    }
    //#ErrorPanel.java:107: end of method: void com.dmdirc.addons.ui_swing.components.statusbar.ErrorPanel.com.dmdirc.addons.ui_swing.components.statusbar.ErrorPanel(SwingController, MainFrame, SwingStatusBar)

    /** {@inheritDoc} */
    @Override
    protected StatusbarPopupWindow getWindow() {
        return new ErrorPopup(this, mainFrame);
    //#ErrorPanel.java:112: method: StatusbarPopupWindow com.dmdirc.addons.ui_swing.components.statusbar.ErrorPanel.getWindow()
    //#input(StatusbarPopupWindow getWindow()): com/dmdirc/addons/ui_swing/components/statusbar/StatusbarPopupWindow.java.awt.Dialog$ModalityType.MODELESS
    //#input(StatusbarPopupWindow getWindow()): this
    //#input(StatusbarPopupWindow getWindow()): this.mainFrame
    //#output(StatusbarPopupWindow getWindow()): new ErrorPopup(getWindow#1) num objects
    //#output(StatusbarPopupWindow getWindow()): return_value.__Tag
    //#output(StatusbarPopupWindow getWindow()): return_value.parent
    //#output(StatusbarPopupWindow getWindow()): return_value.parentWindow
    //#output(StatusbarPopupWindow getWindow()): return_value
    //#new obj(StatusbarPopupWindow getWindow()): new ErrorPopup(getWindow#1)
    //#post(StatusbarPopupWindow getWindow()): return_value == &new ErrorPopup(getWindow#1)
    //#post(StatusbarPopupWindow getWindow()): new ErrorPopup(getWindow#1) num objects == 1
    //#post(StatusbarPopupWindow getWindow()): return_value.__Tag == com/dmdirc/addons/ui_swing/components/statusbar/ErrorPopup
    //#post(StatusbarPopupWindow getWindow()): return_value.parent == this
    //#post(StatusbarPopupWindow getWindow()): return_value.parent != null
    //#post(StatusbarPopupWindow getWindow()): return_value.parentWindow == this.mainFrame
    //#post(StatusbarPopupWindow getWindow()): init'ed(return_value.parentWindow)
    //#unanalyzed(StatusbarPopupWindow getWindow()): Effects-of-calling:com.dmdirc.addons.ui_swing.components.statusbar.StatusbarPopupWindow
    //#unanalyzed(StatusbarPopupWindow getWindow()): Effects-of-calling:com.dmdirc.addons.ui_swing.components.StandardDialog
    //#unanalyzed(StatusbarPopupWindow getWindow()): Effects-of-calling:com.dmdirc.addons.ui_swing.components.statusbar.StatusbarPopupWindow:setDefaultCloseOperation
    //#ErrorPanel.java:112: end of method: StatusbarPopupWindow com.dmdirc.addons.ui_swing.components.statusbar.ErrorPanel.getWindow()
    }

    /** Clears the error. */
    public void clearError() {
        label.setIcon(DEFAULT_ICON);
    //#ErrorPanel.java:117: method: void com.dmdirc.addons.ui_swing.components.statusbar.ErrorPanel.clearError()
    //#input(void clearError()): DEFAULT_ICON
    //#input(void clearError()): this
    //#input(void clearError()): this.label
    //#output(void clearError()): this.errorLevel
    //#pre[2] (void clearError()): this.label != null
    //#post(void clearError()): this.errorLevel == null
        errorLevel = null;
    }
    //#ErrorPanel.java:119: end of method: void com.dmdirc.addons.ui_swing.components.statusbar.ErrorPanel.clearError()

    /** {@inheritDoc} */
    @Override
    public void errorAdded(final ProgramError error) {
        checkErrors();
    //#ErrorPanel.java:124: method: void com.dmdirc.addons.ui_swing.components.statusbar.ErrorPanel.errorAdded(ProgramError)
    //#input(void errorAdded(ProgramError)): this
    //#unanalyzed(void errorAdded(ProgramError)): Effects-of-calling:javax.swing.SwingUtilities:invokeLater
    }
    //#ErrorPanel.java:125: end of method: void com.dmdirc.addons.ui_swing.components.statusbar.ErrorPanel.errorAdded(ProgramError)

    /** {@inheritDoc} */
    @Override
    public void errorDeleted(final ProgramError error) {
        checkErrors();
    //#ErrorPanel.java:130: method: void com.dmdirc.addons.ui_swing.components.statusbar.ErrorPanel.errorDeleted(ProgramError)
    //#input(void errorDeleted(ProgramError)): this
    //#unanalyzed(void errorDeleted(ProgramError)): Effects-of-calling:javax.swing.SwingUtilities:invokeLater
    }
    //#ErrorPanel.java:131: end of method: void com.dmdirc.addons.ui_swing.components.statusbar.ErrorPanel.errorDeleted(ProgramError)

    /** {@inheritDoc} */
    @Override
    public void errorStatusChanged(final ProgramError error) {
        //Ignore
    }
    //#ErrorPanel.java:137: method: void com.dmdirc.addons.ui_swing.components.statusbar.ErrorPanel.errorStatusChanged(ProgramError)
    //#ErrorPanel.java:137: end of method: void com.dmdirc.addons.ui_swing.components.statusbar.ErrorPanel.errorStatusChanged(ProgramError)

    /** Checks all the errors for the most significant error. */
    private void checkErrors() {
        SwingUtilities.invokeLater(new Runnable() {
    //#ErrorPanel.java:141: method: void com.dmdirc.addons.ui_swing.components.statusbar.ErrorPanel$1.com.dmdirc.addons.ui_swing.components.statusbar.ErrorPanel$1(ErrorPanel)
    //#input(void com.dmdirc.addons.ui_swing.components.statusbar.ErrorPanel$1(ErrorPanel)): Param_1
    //#input(void com.dmdirc.addons.ui_swing.components.statusbar.ErrorPanel$1(ErrorPanel)): this
    //#output(void com.dmdirc.addons.ui_swing.components.statusbar.ErrorPanel$1(ErrorPanel)): this.this$0
    //#post(void com.dmdirc.addons.ui_swing.components.statusbar.ErrorPanel$1(ErrorPanel)): this.this$0 == Param_1
    //#post(void com.dmdirc.addons.ui_swing.components.statusbar.ErrorPanel$1(ErrorPanel)): init'ed(this.this$0)
    //#ErrorPanel.java:141: end of method: void com.dmdirc.addons.ui_swing.components.statusbar.ErrorPanel$1.com.dmdirc.addons.ui_swing.components.statusbar.ErrorPanel$1(ErrorPanel)
    //#ErrorPanel.java:141: method: void com.dmdirc.addons.ui_swing.components.statusbar.ErrorPanel.checkErrors()
    //#input(void checkErrors()): this

            /** {@inheritDoc} */
            @Override
            public void run() {
                clearError();
    //#ErrorPanel.java:146: method: void com.dmdirc.addons.ui_swing.components.statusbar.ErrorPanel$1.run()
    //#input(void run()): com/dmdirc/addons/ui_swing/components/statusbar/ErrorPanel.DEFAULT_ICON
    //#input(void run()): com/dmdirc/addons/ui_swing/components/statusbar/ErrorPanel.__Descendant_Table[com/dmdirc/addons/ui_swing/components/statusbar/ErrorPanel]
    //#input(void run()): com/dmdirc/addons/ui_swing/components/statusbar/ErrorPanel.__Descendant_Table[others]
    //#input(void run()): com/dmdirc/addons/ui_swing/components/statusbar/ErrorPanel.__Dispatch_Table.clearError()V
    //#input(void run()): this
    //#input(void run()): this.this$0
    //#input(void run()): this.this$0.__Tag
    //#input(void run()): this.this$0.errorManager
    //#input(void run()): this.this$0.label
    //#output(void run()): this.this$0.errorLevel
    //#pre[2] (void run()): this.this$0 != null
    //#pre[3] (void run()): this.__Tag == com/dmdirc/addons/ui_swing/components/statusbar/ErrorPanel
    //#pre[4] (void run()): this.errorManager != null
    //#pre[5] (void run()): (soft) this.label != null
    //#presumption(void run()): com.dmdirc.logger.ErrorManager:getErrors(...)@147 != null
    //#presumption(void run()): com.dmdirc.logger.ProgramError:getLevel(...)@153 != null
    //#presumption(void run()): com.dmdirc.logger.ProgramError:getLevel(...)@155 != null
    //#presumption(void run()): java.util.Iterator:next(...)@152 != null
    //#post(void run()): init'ed(this.errorLevel)
    //#unanalyzed(void run()): Effects-of-calling:javax.swing.JLabel:setIcon
    //#test_vector(void run()): com.dmdirc.logger.ErrorLevel:moreImportant(...)@153: {1}, {0}
    //#test_vector(void run()): java.util.Iterator:hasNext(...)@152: {0}, {1}
    //#test_vector(void run()): java.util.List:isEmpty(...)@149: {0}, {1}
                final List<ProgramError> errors = errorManager.getErrors();
    //#ErrorPanel.java:147: Warning: method not available - call not analyzed
    //#    call on List com.dmdirc.logger.ErrorManager:getErrors()
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.components.statusbar.ErrorPanel$1
    //#    method: void run()
    //#    unanalyzed callee: List com.dmdirc.logger.ErrorManager:getErrors()

                if (errors.isEmpty()) {
                    setVisible(false);
    //#ErrorPanel.java:150: Warning: method not available - call not analyzed
    //#    call on void com.dmdirc.addons.ui_swing.components.statusbar.ErrorPanel:setVisible(bool)
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.components.statusbar.ErrorPanel$1
    //#    method: void run()
    //#    unanalyzed callee: void com.dmdirc.addons.ui_swing.components.statusbar.ErrorPanel:setVisible(bool)
                } else {
                    for (ProgramError error : errors) {
                        if (errorLevel == null ||
    //#ErrorPanel.java:153: Warning: method not available - call not analyzed
    //#    call on ErrorLevel com.dmdirc.logger.ProgramError:getLevel()
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.components.statusbar.ErrorPanel$1
    //#    method: void run()
    //#    unanalyzed callee: ErrorLevel com.dmdirc.logger.ProgramError:getLevel()
    //#ErrorPanel.java:153: Warning: method not available - call not analyzed
    //#    call on bool com.dmdirc.logger.ErrorLevel:moreImportant(ErrorLevel)
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.components.statusbar.ErrorPanel$1
    //#    method: void run()
    //#    unanalyzed callee: bool com.dmdirc.logger.ErrorLevel:moreImportant(ErrorLevel)
                                !error.getLevel().moreImportant(errorLevel)) {
                            errorLevel = error.getLevel();
    //#ErrorPanel.java:155: Warning: method not available - call not analyzed
    //#    call on ErrorLevel com.dmdirc.logger.ProgramError:getLevel()
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.components.statusbar.ErrorPanel$1
    //#    method: void run()
    //#    unanalyzed callee: ErrorLevel com.dmdirc.logger.ProgramError:getLevel()
                            label.setIcon(errorLevel.getIcon());
    //#ErrorPanel.java:156: Warning: method not available - call not analyzed
    //#    call on Icon com.dmdirc.logger.ErrorLevel:getIcon()
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.components.statusbar.ErrorPanel$1
    //#    method: void run()
    //#    unanalyzed callee: Icon com.dmdirc.logger.ErrorLevel:getIcon()
                        }
                    }
                    setVisible(true);
    //#ErrorPanel.java:159: Warning: method not available - call not analyzed
    //#    call on void com.dmdirc.addons.ui_swing.components.statusbar.ErrorPanel:setVisible(bool)
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.components.statusbar.ErrorPanel$1
    //#    method: void run()
    //#    unanalyzed callee: void com.dmdirc.addons.ui_swing.components.statusbar.ErrorPanel:setVisible(bool)
                }
            }
    //#ErrorPanel.java:161: end of method: void com.dmdirc.addons.ui_swing.components.statusbar.ErrorPanel$1.run()
        });
    }
    //#ErrorPanel.java:163: end of method: void com.dmdirc.addons.ui_swing.components.statusbar.ErrorPanel.checkErrors()

    /** {@inheritDoc} */
    @Override
    public boolean isReady() {
        return statusBar.isValid();
    //#ErrorPanel.java:168: method: bool com.dmdirc.addons.ui_swing.components.statusbar.ErrorPanel.isReady()
    //#ErrorPanel.java:168: Warning: method not available - call not analyzed
    //#    call on bool com.dmdirc.addons.ui_swing.components.statusbar.SwingStatusBar:isValid()
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.components.statusbar.ErrorPanel
    //#    method: bool isReady()
    //#    unanalyzed callee: bool com.dmdirc.addons.ui_swing.components.statusbar.SwingStatusBar:isValid()
    //#input(bool isReady()): this
    //#input(bool isReady()): this.statusBar
    //#output(bool isReady()): return_value
    //#pre[2] (bool isReady()): this.statusBar != null
    //#post(bool isReady()): init'ed(return_value)
    //#ErrorPanel.java:168: end of method: bool com.dmdirc.addons.ui_swing.components.statusbar.ErrorPanel.isReady()
    }

    /**
     * {@inheritDoc}
     *
     * @param mouseEvent Mouse event
     */
    @Override
    public void mousePressed(final MouseEvent mouseEvent) {
        super.mousePressed(mouseEvent);
    //#ErrorPanel.java:178: method: void com.dmdirc.addons.ui_swing.components.statusbar.ErrorPanel.mousePressed(MouseEvent)
    //#input(void mousePressed(MouseEvent)): mouseEvent
    //#input(void mousePressed(MouseEvent)): this
    //#input(void mousePressed(MouseEvent)): this.menu
    //#pre[1] (void mousePressed(MouseEvent)): mouseEvent != null
    //#pre[3] (void mousePressed(MouseEvent)): (soft) this.menu != null
    //#unanalyzed(void mousePressed(MouseEvent)): Effects-of-calling:java.awt.event.MouseEvent:isPopupTrigger
    //#unanalyzed(void mousePressed(MouseEvent)): Effects-of-calling:java.awt.event.MouseEvent:getX
    //#unanalyzed(void mousePressed(MouseEvent)): Effects-of-calling:java.awt.event.MouseEvent:getY
    //#unanalyzed(void mousePressed(MouseEvent)): Effects-of-calling:javax.swing.JPopupMenu:show
        checkMouseEvent(mouseEvent);
    }
    //#ErrorPanel.java:180: end of method: void com.dmdirc.addons.ui_swing.components.statusbar.ErrorPanel.mousePressed(MouseEvent)

    /**
     * {@inheritDoc}
     *
     * @param mouseEvent Mouse event
     */
    @Override
    public void mouseReleased(final MouseEvent mouseEvent) {
        super.mouseReleased(mouseEvent);
    //#ErrorPanel.java:189: method: void com.dmdirc.addons.ui_swing.components.statusbar.ErrorPanel.mouseReleased(MouseEvent)
    //#input(void mouseReleased(MouseEvent)): mouseEvent
    //#input(void mouseReleased(MouseEvent)): this
    //#input(void mouseReleased(MouseEvent)): this.menu
    //#pre[1] (void mouseReleased(MouseEvent)): mouseEvent != null
    //#pre[3] (void mouseReleased(MouseEvent)): (soft) this.menu != null
    //#unanalyzed(void mouseReleased(MouseEvent)): Effects-of-calling:java.awt.event.MouseEvent:isPopupTrigger
    //#unanalyzed(void mouseReleased(MouseEvent)): Effects-of-calling:java.awt.event.MouseEvent:getX
    //#unanalyzed(void mouseReleased(MouseEvent)): Effects-of-calling:java.awt.event.MouseEvent:getY
    //#unanalyzed(void mouseReleased(MouseEvent)): Effects-of-calling:javax.swing.JPopupMenu:show
        checkMouseEvent(mouseEvent);
    }
    //#ErrorPanel.java:191: end of method: void com.dmdirc.addons.ui_swing.components.statusbar.ErrorPanel.mouseReleased(MouseEvent)

    /**
     * {@inheritDoc}
     *
     * @param mouseEvent Mouse event
     */
    @Override
    public void mouseEntered(final MouseEvent mouseEvent) {
        super.mouseEntered(mouseEvent);
    //#ErrorPanel.java:200: method: void com.dmdirc.addons.ui_swing.components.statusbar.ErrorPanel.mouseEntered(MouseEvent)
    //#ErrorPanel.java:200: Warning: suspicious precondition
    //#    The precondition for this.__Tag is not a contiguous range of values
    //#    severity: SUPPRESSED
    //#    class: com.dmdirc.addons.ui_swing.components.statusbar.ErrorPanel
    //#    method: void mouseEntered(MouseEvent)
    //#    suspicious precondition index: [4]
    //#input(void mouseEntered(MouseEvent)): " ago"._tainted
    //#input(void mouseEntered(MouseEvent)): __Dispatch_Table.getWindow()Lcom/dmdirc/addons/ui_swing/components/statusbar/StatusbarPopupWindow;
    //#input(void mouseEntered(MouseEvent)): com/dmdirc/addons/ui_swing/components/statusbar/ErrorPopup.__Dispatch_Table.initContent(Ljavax/swing/JPanel;)V
    //#input(void mouseEntered(MouseEvent)): com/dmdirc/addons/ui_swing/components/statusbar/ErrorPopup.__Dispatch_Table.setVisible(Z)V
    //#input(void mouseEntered(MouseEvent)): com/dmdirc/addons/ui_swing/components/statusbar/InviteLabel.__Dispatch_Table.getWindow()Lcom/dmdirc/addons/ui_swing/components/statusbar/StatusbarPopupWindow;
    //#input(void mouseEntered(MouseEvent)): com/dmdirc/addons/ui_swing/components/statusbar/InvitePopup.__Dispatch_Table.initContent(Ljavax/swing/JPanel;)V
    //#input(void mouseEntered(MouseEvent)): com/dmdirc/addons/ui_swing/components/statusbar/InvitePopup.__Dispatch_Table.setVisible(Z)V
    //#input(void mouseEntered(MouseEvent)): com/dmdirc/addons/ui_swing/components/statusbar/StatusbarPopupPanel.__Descendant_Table[com/dmdirc/addons/ui_swing/components/statusbar/ErrorPanel]
    //#input(void mouseEntered(MouseEvent)): com/dmdirc/addons/ui_swing/components/statusbar/StatusbarPopupPanel.__Descendant_Table[com/dmdirc/addons/ui_swing/components/statusbar/InviteLabel]
    //#input(void mouseEntered(MouseEvent)): com/dmdirc/addons/ui_swing/components/statusbar/StatusbarPopupPanel.__Descendant_Table[com/dmdirc/addons/ui_swing/components/statusbar/StatusbarPopupPanel]
    //#input(void mouseEntered(MouseEvent)): com/dmdirc/addons/ui_swing/components/statusbar/StatusbarPopupPanel.__Descendant_Table[others]
    //#input(void mouseEntered(MouseEvent)): com/dmdirc/addons/ui_swing/components/statusbar/StatusbarPopupPanel.__Dispatch_Table.getWindow()Lcom/dmdirc/addons/ui_swing/components/statusbar/StatusbarPopupWindow;
    //#input(void mouseEntered(MouseEvent)): com/dmdirc/addons/ui_swing/components/statusbar/StatusbarPopupWindow.__Descendant_Table[com/dmdirc/addons/ui_swing/components/statusbar/ErrorPopup]
    //#input(void mouseEntered(MouseEvent)): com/dmdirc/addons/ui_swing/components/statusbar/StatusbarPopupWindow.__Descendant_Table[com/dmdirc/addons/ui_swing/components/statusbar/InvitePopup]
    //#input(void mouseEntered(MouseEvent)): com/dmdirc/addons/ui_swing/components/statusbar/StatusbarPopupWindow.__Descendant_Table[com/dmdirc/addons/ui_swing/components/statusbar/StatusbarPopupWindow]
    //#input(void mouseEntered(MouseEvent)): com/dmdirc/addons/ui_swing/components/statusbar/StatusbarPopupWindow.__Descendant_Table[others]
    //#input(void mouseEntered(MouseEvent)): com/dmdirc/addons/ui_swing/components/statusbar/StatusbarPopupWindow.__Dispatch_Table.initContent(Ljavax/swing/JPanel;)V
    //#input(void mouseEntered(MouseEvent)): com/dmdirc/addons/ui_swing/components/statusbar/StatusbarPopupWindow.__Dispatch_Table.setVisible(Z)V
    //#input(void mouseEntered(MouseEvent)): com/dmdirc/addons/ui_swing/components/statusbar/StatusbarPopupWindow.java.awt.Dialog$ModalityType.MODELESS
    //#input(void mouseEntered(MouseEvent)): mouseEvent
    //#input(void mouseEntered(MouseEvent)): this
    //#input(void mouseEntered(MouseEvent)): this.__Tag
    //#input(void mouseEntered(MouseEvent)): this.dialog.__Tag
    //#input(void mouseEntered(MouseEvent)): this.dialog.parent
    //#input(void mouseEntered(MouseEvent)): this.dialog.server
    //#input(void mouseEntered(MouseEvent)): this.mainFrame
    //#input(void mouseEntered(MouseEvent)): this.menu
    //#output(void mouseEntered(MouseEvent)): new ErrorPopup(getWindow#1) num objects
    //#output(void mouseEntered(MouseEvent)): new ErrorPopup(getWindow#1).__Tag
    //#output(void mouseEntered(MouseEvent)): new ErrorPopup(getWindow#1).parent
    //#output(void mouseEntered(MouseEvent)): new ErrorPopup(getWindow#1).parentWindow
    //#output(void mouseEntered(MouseEvent)): new ErrorPopup(getWindow#1).server
    //#output(void mouseEntered(MouseEvent)): new InvitePopup(getWindow#1) num objects
    //#output(void mouseEntered(MouseEvent)): new InvitePopup(getWindow#1).__Tag
    //#output(void mouseEntered(MouseEvent)): new InvitePopup(getWindow#1).parent
    //#output(void mouseEntered(MouseEvent)): new InvitePopup(getWindow#1).parentWindow
    //#output(void mouseEntered(MouseEvent)): new InvitePopup(getWindow#1).server
    //#output(void mouseEntered(MouseEvent)): this.dialog
    //#new obj(void mouseEntered(MouseEvent)): new ErrorPopup(getWindow#1)
    //#new obj(void mouseEntered(MouseEvent)): new InvitePopup(getWindow#1)
    //#pre[1] (void mouseEntered(MouseEvent)): mouseEvent != null
    //#pre[4] (void mouseEntered(MouseEvent)): this.__Tag in {com/dmdirc/addons/ui_swing/components/statusbar/ErrorPanel, com/dmdirc/addons/ui_swing/components/statusbar/InviteLabel, com/dmdirc/addons/ui_swing/components/statusbar/StatusbarPopupPanel}
    //#pre[12] (void mouseEntered(MouseEvent)): (soft) this.menu != null
    //#post(void mouseEntered(MouseEvent)): this.dialog != null
    //#post(void mouseEntered(MouseEvent)): new ErrorPopup(getWindow#1) num objects <= 1
    //#post(void mouseEntered(MouseEvent)): init'ed(new ErrorPopup(getWindow#1).__Tag)
    //#post(void mouseEntered(MouseEvent)): init'ed(new ErrorPopup(getWindow#1).parent)
    //#post(void mouseEntered(MouseEvent)): init'ed(new ErrorPopup(getWindow#1).parentWindow)
    //#post(void mouseEntered(MouseEvent)): init'ed(new ErrorPopup(getWindow#1).server)
    //#post(void mouseEntered(MouseEvent)): new InvitePopup(getWindow#1) num objects <= 1
    //#post(void mouseEntered(MouseEvent)): init'ed(new InvitePopup(getWindow#1).__Tag)
    //#post(void mouseEntered(MouseEvent)): init'ed(new InvitePopup(getWindow#1).parent)
    //#post(void mouseEntered(MouseEvent)): possibly_updated(new InvitePopup(getWindow#1).parentWindow)
    //#post(void mouseEntered(MouseEvent)): possibly_updated(new InvitePopup(getWindow#1).server)
    //#unanalyzed(void mouseEntered(MouseEvent)): Effects-of-calling:com.dmdirc.addons.ui_swing.components.statusbar.StatusbarPopupPanel:setBorder
    //#unanalyzed(void mouseEntered(MouseEvent)): Effects-of-calling:com.dmdirc.addons.ui_swing.components.statusbar.StatusbarPopupWindow
    //#unanalyzed(void mouseEntered(MouseEvent)): Effects-of-calling:com.dmdirc.addons.ui_swing.components.StandardDialog
    //#unanalyzed(void mouseEntered(MouseEvent)): Effects-of-calling:com.dmdirc.addons.ui_swing.components.statusbar.StatusbarPopupWindow:setDefaultCloseOperation
    //#unanalyzed(void mouseEntered(MouseEvent)): Effects-of-calling:java.awt.event.MouseEvent:isPopupTrigger
    //#unanalyzed(void mouseEntered(MouseEvent)): Effects-of-calling:java.awt.event.MouseEvent:getX
    //#unanalyzed(void mouseEntered(MouseEvent)): Effects-of-calling:java.awt.event.MouseEvent:getY
    //#unanalyzed(void mouseEntered(MouseEvent)): Effects-of-calling:javax.swing.JPopupMenu:show
    //#unanalyzed(void mouseEntered(MouseEvent)): Effects-of-calling:javax.swing.UIManager:getColor
    //#unanalyzed(void mouseEntered(MouseEvent)): Effects-of-calling:com.dmdirc.addons.ui_swing.components.statusbar.StatusbarPopupPanel:setBackground
    //#unanalyzed(void mouseEntered(MouseEvent)): Effects-of-calling:com.dmdirc.addons.ui_swing.components.statusbar.StatusbarPopupPanel:setForeground
    //#unanalyzed(void mouseEntered(MouseEvent)): Effects-of-calling:javax.swing.border.EtchedBorder
    //#unanalyzed(void mouseEntered(MouseEvent)): Effects-of-calling:openDialog
    //#unanalyzed(void mouseEntered(MouseEvent)): Effects-of-calling:javax.swing.JPanel
    //#unanalyzed(void mouseEntered(MouseEvent)): Effects-of-calling:net.miginfocom.swing.MigLayout
    //#unanalyzed(void mouseEntered(MouseEvent)): Effects-of-calling:javax.swing.JPanel:setLayout
    //#unanalyzed(void mouseEntered(MouseEvent)): Effects-of-calling:javax.swing.JPanel:setBackground
    //#unanalyzed(void mouseEntered(MouseEvent)): Effects-of-calling:javax.swing.JPanel:setForeground
    //#unanalyzed(void mouseEntered(MouseEvent)): Effects-of-calling:initContent
    //#unanalyzed(void mouseEntered(MouseEvent)): Effects-of-calling:com.dmdirc.Server:getInvites
    //#unanalyzed(void mouseEntered(MouseEvent)): Effects-of-calling:java.util.List:iterator
    //#unanalyzed(void mouseEntered(MouseEvent)): Effects-of-calling:java.util.Iterator:hasNext
    //#unanalyzed(void mouseEntered(MouseEvent)): Effects-of-calling:java.util.Iterator:next
    //#unanalyzed(void mouseEntered(MouseEvent)): Effects-of-calling:com.dmdirc.Invite:getChannel
    //#unanalyzed(void mouseEntered(MouseEvent)): Effects-of-calling:javax.swing.JLabel
    //#unanalyzed(void mouseEntered(MouseEvent)): Effects-of-calling:javax.swing.JPanel:add
    //#unanalyzed(void mouseEntered(MouseEvent)): Effects-of-calling:com.dmdirc.Invite:getSource
    //#unanalyzed(void mouseEntered(MouseEvent)): Effects-of-calling:java.lang.StringBuilder
    //#unanalyzed(void mouseEntered(MouseEvent)): Effects-of-calling:java.lang.System:currentTimeMillis
    //#unanalyzed(void mouseEntered(MouseEvent)): Effects-of-calling:com.dmdirc.Invite:getTimestamp
    //#unanalyzed(void mouseEntered(MouseEvent)): Effects-of-calling:com.dmdirc.ui.messages.Formatter:formatDuration
    //#unanalyzed(void mouseEntered(MouseEvent)): Effects-of-calling:java.lang.StringBuilder:append
    //#unanalyzed(void mouseEntered(MouseEvent)): Effects-of-calling:java.lang.StringBuilder:toString
    //#unanalyzed(void mouseEntered(MouseEvent)): Effects-of-calling:com.dmdirc.logger.ErrorManager:getErrorManager
    //#unanalyzed(void mouseEntered(MouseEvent)): Effects-of-calling:com.dmdirc.logger.ErrorManager:getErrors
    //#unanalyzed(void mouseEntered(MouseEvent)): Effects-of-calling:com.dmdirc.util.MapList
    //#unanalyzed(void mouseEntered(MouseEvent)): Effects-of-calling:com.dmdirc.logger.ProgramError:getLevel
    //#unanalyzed(void mouseEntered(MouseEvent)): Effects-of-calling:com.dmdirc.util.MapList:add
    //#unanalyzed(void mouseEntered(MouseEvent)): Effects-of-calling:com.dmdirc.logger.ProgramError:getReportStatus
    //#unanalyzed(void mouseEntered(MouseEvent)): Effects-of-calling:javax.swing.JLabel:getFont
    //#unanalyzed(void mouseEntered(MouseEvent)): Effects-of-calling:java.awt.Font:deriveFont
    //#unanalyzed(void mouseEntered(MouseEvent)): Effects-of-calling:javax.swing.JLabel:setFont
    //#unanalyzed(void mouseEntered(MouseEvent)): Effects-of-calling:com.dmdirc.logger.ErrorLevel:values
    //#unanalyzed(void mouseEntered(MouseEvent)): Effects-of-calling:com.dmdirc.util.MapList:containsKey
    //#unanalyzed(void mouseEntered(MouseEvent)): Effects-of-calling:com.dmdirc.util.MapList:values
    //#unanalyzed(void mouseEntered(MouseEvent)): Effects-of-calling:java.util.Collection:size
    //#unanalyzed(void mouseEntered(MouseEvent)): Effects-of-calling:com.dmdirc.logger.ErrorLevel:toString
    //#unanalyzed(void mouseEntered(MouseEvent)): Effects-of-calling:com.dmdirc.logger.ErrorLevel:getIcon
    //#unanalyzed(void mouseEntered(MouseEvent)): Effects-of-calling:java.lang.String:valueOf
    //#unanalyzed(void mouseEntered(MouseEvent)): Effects-of-calling:javax.swing.JSeparator
    //#unanalyzed(void mouseEntered(MouseEvent)): Effects-of-calling:com.dmdirc.logger.ErrorReportStatus:values
    //#unanalyzed(void mouseEntered(MouseEvent)): Effects-of-calling:com.dmdirc.logger.ErrorReportStatus:toString
    //#unanalyzed(void mouseEntered(MouseEvent)): Effects-of-calling:com.dmdirc.addons.ui_swing.components.statusbar.StatusbarPopupWindow:add
    //#unanalyzed(void mouseEntered(MouseEvent)): Effects-of-calling:com.dmdirc.addons.ui_swing.components.statusbar.StatusbarPopupWindow:setUndecorated
    //#unanalyzed(void mouseEntered(MouseEvent)): Effects-of-calling:com.dmdirc.addons.ui_swing.components.statusbar.StatusbarPopupWindow:setFocusableWindowState
    //#unanalyzed(void mouseEntered(MouseEvent)): Effects-of-calling:com.dmdirc.addons.ui_swing.components.statusbar.StatusbarPopupWindow:setFocusable
    //#unanalyzed(void mouseEntered(MouseEvent)): Effects-of-calling:com.dmdirc.addons.ui_swing.components.statusbar.StatusbarPopupWindow:setResizable
    //#unanalyzed(void mouseEntered(MouseEvent)): Effects-of-calling:com.dmdirc.addons.ui_swing.components.statusbar.StatusbarPopupWindow:pack
    //#unanalyzed(void mouseEntered(MouseEvent)): Effects-of-calling:javax.swing.JPanel:getLocationOnScreen
    //#unanalyzed(void mouseEntered(MouseEvent)): Effects-of-calling:javax.swing.JPanel:getWidth
    //#unanalyzed(void mouseEntered(MouseEvent)): Effects-of-calling:com.dmdirc.addons.ui_swing.components.statusbar.StatusbarPopupWindow:getWidth
    //#unanalyzed(void mouseEntered(MouseEvent)): Effects-of-calling:com.dmdirc.addons.ui_swing.components.statusbar.StatusbarPopupWindow:getHeight
    //#unanalyzed(void mouseEntered(MouseEvent)): Effects-of-calling:java.awt.Point:translate
    //#unanalyzed(void mouseEntered(MouseEvent)): Effects-of-calling:java.awt.Window:getLocationOnScreen
    //#unanalyzed(void mouseEntered(MouseEvent)): Effects-of-calling:java.awt.Window:getWidth
    //#unanalyzed(void mouseEntered(MouseEvent)): Effects-of-calling:java.lang.Math:max
    //#unanalyzed(void mouseEntered(MouseEvent)): Effects-of-calling:java.lang.Math:min
    //#unanalyzed(void mouseEntered(MouseEvent)): Effects-of-calling:com.dmdirc.addons.ui_swing.components.statusbar.StatusbarPopupWindow:setLocation
    //#unanalyzed(void mouseEntered(MouseEvent)): Effects-of-calling:javax.swing.JPanel:setBorder
    //#unanalyzed(void mouseEntered(MouseEvent)): Effects-of-calling:com.dmdirc.addons.ui_swing.components.StandardDialog:setVisible
    //#unanalyzed(void mouseEntered(MouseEvent)): Effects-of-calling:java.lang.Throwable:__curr_excep_obj
    //#unanalyzed(void mouseEntered(MouseEvent)): Effects-of-calling:getWindow
        checkMouseEvent(mouseEvent);
    }
    //#ErrorPanel.java:202: end of method: void com.dmdirc.addons.ui_swing.components.statusbar.ErrorPanel.mouseEntered(MouseEvent)

    /**
     * {@inheritDoc}
     *
     * @param mouseEvent Mouse event
     */
    @Override
    public void mouseExited(final MouseEvent mouseEvent) {
        super.mouseExited(mouseEvent);
    //#ErrorPanel.java:211: method: void com.dmdirc.addons.ui_swing.components.statusbar.ErrorPanel.mouseExited(MouseEvent)
    //#ErrorPanel.java:211: Warning: suspicious precondition
    //#    The precondition for this.dialog.__Tag is not a contiguous range of values
    //#    severity: SUPPRESSED
    //#    class: com.dmdirc.addons.ui_swing.components.statusbar.ErrorPanel
    //#    method: void mouseExited(MouseEvent)
    //#    suspicious precondition index: [5]
    //#    Attribs:  Soft
    //#input(void mouseExited(MouseEvent)): " ago"._tainted
    //#input(void mouseExited(MouseEvent)): com/dmdirc/addons/ui_swing/components/statusbar/ErrorPopup.__Dispatch_Table.initContent(Ljavax/swing/JPanel;)V
    //#input(void mouseExited(MouseEvent)): com/dmdirc/addons/ui_swing/components/statusbar/ErrorPopup.__Dispatch_Table.setVisible(Z)V
    //#input(void mouseExited(MouseEvent)): com/dmdirc/addons/ui_swing/components/statusbar/InvitePopup.__Dispatch_Table.initContent(Ljavax/swing/JPanel;)V
    //#input(void mouseExited(MouseEvent)): com/dmdirc/addons/ui_swing/components/statusbar/InvitePopup.__Dispatch_Table.setVisible(Z)V
    //#input(void mouseExited(MouseEvent)): com/dmdirc/addons/ui_swing/components/statusbar/StatusbarPopupWindow.__Descendant_Table[com/dmdirc/addons/ui_swing/components/statusbar/ErrorPopup]
    //#input(void mouseExited(MouseEvent)): com/dmdirc/addons/ui_swing/components/statusbar/StatusbarPopupWindow.__Descendant_Table[com/dmdirc/addons/ui_swing/components/statusbar/InvitePopup]
    //#input(void mouseExited(MouseEvent)): com/dmdirc/addons/ui_swing/components/statusbar/StatusbarPopupWindow.__Descendant_Table[com/dmdirc/addons/ui_swing/components/statusbar/StatusbarPopupWindow]
    //#input(void mouseExited(MouseEvent)): com/dmdirc/addons/ui_swing/components/statusbar/StatusbarPopupWindow.__Descendant_Table[others]
    //#input(void mouseExited(MouseEvent)): com/dmdirc/addons/ui_swing/components/statusbar/StatusbarPopupWindow.__Dispatch_Table.initContent(Ljavax/swing/JPanel;)V
    //#input(void mouseExited(MouseEvent)): com/dmdirc/addons/ui_swing/components/statusbar/StatusbarPopupWindow.__Dispatch_Table.setVisible(Z)V
    //#input(void mouseExited(MouseEvent)): mouseEvent
    //#input(void mouseExited(MouseEvent)): this
    //#input(void mouseExited(MouseEvent)): this.dialog
    //#input(void mouseExited(MouseEvent)): this.dialog.__Tag
    //#input(void mouseExited(MouseEvent)): this.dialog.parent
    //#input(void mouseExited(MouseEvent)): this.dialog.parentWindow
    //#input(void mouseExited(MouseEvent)): this.dialog.server
    //#input(void mouseExited(MouseEvent)): this.menu
    //#output(void mouseExited(MouseEvent)): this.dialog
    //#pre[1] (void mouseExited(MouseEvent)): mouseEvent != null
    //#pre[2] (void mouseExited(MouseEvent)): init'ed(this.dialog)
    //#pre[5] (void mouseExited(MouseEvent)): (soft) this.dialog.__Tag in {com/dmdirc/addons/ui_swing/components/statusbar/ErrorPopup, com/dmdirc/addons/ui_swing/components/statusbar/InvitePopup, com/dmdirc/addons/ui_swing/components/statusbar/StatusbarPopupWindow}
    //#pre[6] (void mouseExited(MouseEvent)): (soft) this.dialog.parent != null
    //#pre[7] (void mouseExited(MouseEvent)): (soft) this.dialog.parentWindow != null
    //#pre[9] (void mouseExited(MouseEvent)): (soft) this.menu != null
    //#post(void mouseExited(MouseEvent)): this.dialog == null
    //#unanalyzed(void mouseExited(MouseEvent)): Effects-of-calling:com.dmdirc.addons.ui_swing.components.statusbar.StatusbarPopupPanel:setBorder
    //#unanalyzed(void mouseExited(MouseEvent)): Effects-of-calling:java.awt.event.MouseEvent:isPopupTrigger
    //#unanalyzed(void mouseExited(MouseEvent)): Effects-of-calling:java.awt.event.MouseEvent:getX
    //#unanalyzed(void mouseExited(MouseEvent)): Effects-of-calling:java.awt.event.MouseEvent:getY
    //#unanalyzed(void mouseExited(MouseEvent)): Effects-of-calling:javax.swing.JPopupMenu:show
    //#unanalyzed(void mouseExited(MouseEvent)): Effects-of-calling:com.dmdirc.addons.ui_swing.components.statusbar.StatusbarPopupPanel:setBackground
    //#unanalyzed(void mouseExited(MouseEvent)): Effects-of-calling:com.dmdirc.addons.ui_swing.components.statusbar.StatusbarPopupPanel:setForeground
    //#unanalyzed(void mouseExited(MouseEvent)): Effects-of-calling:javax.swing.JPanel
    //#unanalyzed(void mouseExited(MouseEvent)): Effects-of-calling:net.miginfocom.swing.MigLayout
    //#unanalyzed(void mouseExited(MouseEvent)): Effects-of-calling:javax.swing.JPanel:setLayout
    //#unanalyzed(void mouseExited(MouseEvent)): Effects-of-calling:javax.swing.UIManager:getColor
    //#unanalyzed(void mouseExited(MouseEvent)): Effects-of-calling:javax.swing.JPanel:setBackground
    //#unanalyzed(void mouseExited(MouseEvent)): Effects-of-calling:javax.swing.JPanel:setForeground
    //#unanalyzed(void mouseExited(MouseEvent)): Effects-of-calling:initContent
    //#unanalyzed(void mouseExited(MouseEvent)): Effects-of-calling:com.dmdirc.Server:getInvites
    //#unanalyzed(void mouseExited(MouseEvent)): Effects-of-calling:java.util.List:iterator
    //#unanalyzed(void mouseExited(MouseEvent)): Effects-of-calling:java.util.Iterator:hasNext
    //#unanalyzed(void mouseExited(MouseEvent)): Effects-of-calling:java.util.Iterator:next
    //#unanalyzed(void mouseExited(MouseEvent)): Effects-of-calling:com.dmdirc.Invite:getChannel
    //#unanalyzed(void mouseExited(MouseEvent)): Effects-of-calling:javax.swing.JLabel
    //#unanalyzed(void mouseExited(MouseEvent)): Effects-of-calling:javax.swing.JPanel:add
    //#unanalyzed(void mouseExited(MouseEvent)): Effects-of-calling:com.dmdirc.Invite:getSource
    //#unanalyzed(void mouseExited(MouseEvent)): Effects-of-calling:java.lang.StringBuilder
    //#unanalyzed(void mouseExited(MouseEvent)): Effects-of-calling:java.lang.System:currentTimeMillis
    //#unanalyzed(void mouseExited(MouseEvent)): Effects-of-calling:com.dmdirc.Invite:getTimestamp
    //#unanalyzed(void mouseExited(MouseEvent)): Effects-of-calling:com.dmdirc.ui.messages.Formatter:formatDuration
    //#unanalyzed(void mouseExited(MouseEvent)): Effects-of-calling:java.lang.StringBuilder:append
    //#unanalyzed(void mouseExited(MouseEvent)): Effects-of-calling:java.lang.StringBuilder:toString
    //#unanalyzed(void mouseExited(MouseEvent)): Effects-of-calling:com.dmdirc.logger.ErrorManager:getErrorManager
    //#unanalyzed(void mouseExited(MouseEvent)): Effects-of-calling:com.dmdirc.logger.ErrorManager:getErrors
    //#unanalyzed(void mouseExited(MouseEvent)): Effects-of-calling:com.dmdirc.util.MapList
    //#unanalyzed(void mouseExited(MouseEvent)): Effects-of-calling:com.dmdirc.logger.ProgramError:getLevel
    //#unanalyzed(void mouseExited(MouseEvent)): Effects-of-calling:com.dmdirc.util.MapList:add
    //#unanalyzed(void mouseExited(MouseEvent)): Effects-of-calling:com.dmdirc.logger.ProgramError:getReportStatus
    //#unanalyzed(void mouseExited(MouseEvent)): Effects-of-calling:javax.swing.JLabel:getFont
    //#unanalyzed(void mouseExited(MouseEvent)): Effects-of-calling:java.awt.Font:deriveFont
    //#unanalyzed(void mouseExited(MouseEvent)): Effects-of-calling:javax.swing.JLabel:setFont
    //#unanalyzed(void mouseExited(MouseEvent)): Effects-of-calling:com.dmdirc.logger.ErrorLevel:values
    //#unanalyzed(void mouseExited(MouseEvent)): Effects-of-calling:com.dmdirc.util.MapList:containsKey
    //#unanalyzed(void mouseExited(MouseEvent)): Effects-of-calling:com.dmdirc.util.MapList:values
    //#unanalyzed(void mouseExited(MouseEvent)): Effects-of-calling:java.util.Collection:size
    //#unanalyzed(void mouseExited(MouseEvent)): Effects-of-calling:com.dmdirc.logger.ErrorLevel:toString
    //#unanalyzed(void mouseExited(MouseEvent)): Effects-of-calling:com.dmdirc.logger.ErrorLevel:getIcon
    //#unanalyzed(void mouseExited(MouseEvent)): Effects-of-calling:java.lang.String:valueOf
    //#unanalyzed(void mouseExited(MouseEvent)): Effects-of-calling:javax.swing.JSeparator
    //#unanalyzed(void mouseExited(MouseEvent)): Effects-of-calling:com.dmdirc.logger.ErrorReportStatus:values
    //#unanalyzed(void mouseExited(MouseEvent)): Effects-of-calling:com.dmdirc.logger.ErrorReportStatus:toString
    //#unanalyzed(void mouseExited(MouseEvent)): Effects-of-calling:com.dmdirc.addons.ui_swing.components.statusbar.StatusbarPopupWindow:add
    //#unanalyzed(void mouseExited(MouseEvent)): Effects-of-calling:com.dmdirc.addons.ui_swing.components.statusbar.StatusbarPopupWindow:setUndecorated
    //#unanalyzed(void mouseExited(MouseEvent)): Effects-of-calling:com.dmdirc.addons.ui_swing.components.statusbar.StatusbarPopupWindow:setFocusableWindowState
    //#unanalyzed(void mouseExited(MouseEvent)): Effects-of-calling:com.dmdirc.addons.ui_swing.components.statusbar.StatusbarPopupWindow:setFocusable
    //#unanalyzed(void mouseExited(MouseEvent)): Effects-of-calling:com.dmdirc.addons.ui_swing.components.statusbar.StatusbarPopupWindow:setResizable
    //#unanalyzed(void mouseExited(MouseEvent)): Effects-of-calling:com.dmdirc.addons.ui_swing.components.statusbar.StatusbarPopupWindow:pack
    //#unanalyzed(void mouseExited(MouseEvent)): Effects-of-calling:javax.swing.JPanel:getLocationOnScreen
    //#unanalyzed(void mouseExited(MouseEvent)): Effects-of-calling:javax.swing.JPanel:getWidth
    //#unanalyzed(void mouseExited(MouseEvent)): Effects-of-calling:com.dmdirc.addons.ui_swing.components.statusbar.StatusbarPopupWindow:getWidth
    //#unanalyzed(void mouseExited(MouseEvent)): Effects-of-calling:com.dmdirc.addons.ui_swing.components.statusbar.StatusbarPopupWindow:getHeight
    //#unanalyzed(void mouseExited(MouseEvent)): Effects-of-calling:java.awt.Point:translate
    //#unanalyzed(void mouseExited(MouseEvent)): Effects-of-calling:java.awt.Window:getLocationOnScreen
    //#unanalyzed(void mouseExited(MouseEvent)): Effects-of-calling:java.awt.Window:getWidth
    //#unanalyzed(void mouseExited(MouseEvent)): Effects-of-calling:java.lang.Math:max
    //#unanalyzed(void mouseExited(MouseEvent)): Effects-of-calling:java.lang.Math:min
    //#unanalyzed(void mouseExited(MouseEvent)): Effects-of-calling:com.dmdirc.addons.ui_swing.components.statusbar.StatusbarPopupWindow:setLocation
    //#unanalyzed(void mouseExited(MouseEvent)): Effects-of-calling:javax.swing.border.EtchedBorder
    //#unanalyzed(void mouseExited(MouseEvent)): Effects-of-calling:javax.swing.JPanel:setBorder
    //#unanalyzed(void mouseExited(MouseEvent)): Effects-of-calling:com.dmdirc.addons.ui_swing.components.StandardDialog:setVisible
    //#unanalyzed(void mouseExited(MouseEvent)): Effects-of-calling:java.lang.Throwable:__curr_excep_obj
    //#unanalyzed(void mouseExited(MouseEvent)): Effects-of-calling:com.dmdirc.addons.ui_swing.components.statusbar.StatusbarPopupWindow:dispose
        checkMouseEvent(mouseEvent);
    }
    //#ErrorPanel.java:213: end of method: void com.dmdirc.addons.ui_swing.components.statusbar.ErrorPanel.mouseExited(MouseEvent)

    /**
     * {@inheritDoc}
     *
     * @param mouseEvent Mouse event
     */
    @Override
    public void mouseClicked(final MouseEvent mouseEvent) {
        super.mouseClicked(mouseEvent);
    //#ErrorPanel.java:222: method: void com.dmdirc.addons.ui_swing.components.statusbar.ErrorPanel.mouseClicked(MouseEvent)
    //#input(void mouseClicked(MouseEvent)): mouseEvent
    //#input(void mouseClicked(MouseEvent)): this
    //#input(void mouseClicked(MouseEvent)): this.controller
    //#input(void mouseClicked(MouseEvent)): this.menu
    //#pre[1] (void mouseClicked(MouseEvent)): mouseEvent != null
    //#pre[3] (void mouseClicked(MouseEvent)): (soft) this.controller != null
    //#pre[4] (void mouseClicked(MouseEvent)): (soft) this.menu != null
    //#unanalyzed(void mouseClicked(MouseEvent)): Effects-of-calling:java.awt.event.MouseEvent:isPopupTrigger
    //#unanalyzed(void mouseClicked(MouseEvent)): Effects-of-calling:java.awt.event.MouseEvent:getX
    //#unanalyzed(void mouseClicked(MouseEvent)): Effects-of-calling:java.awt.event.MouseEvent:getY
    //#unanalyzed(void mouseClicked(MouseEvent)): Effects-of-calling:javax.swing.JPopupMenu:show
    //#test_vector(void mouseClicked(MouseEvent)): java.awt.event.MouseEvent:getButton(...)@223: {-2_147_483_648..0, 2..4_294_967_295}, {1}
        if (mouseEvent.getButton() == MouseEvent.BUTTON1) {
            controller.showErrorDialog();
    //#ErrorPanel.java:224: Warning: method not available - call not analyzed
    //#    call on void com.dmdirc.addons.ui_swing.SwingController:showErrorDialog()
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.components.statusbar.ErrorPanel
    //#    method: void mouseClicked(MouseEvent)
    //#    unanalyzed callee: void com.dmdirc.addons.ui_swing.SwingController:showErrorDialog()
        }
        checkMouseEvent(mouseEvent);
    }
    //#ErrorPanel.java:227: end of method: void com.dmdirc.addons.ui_swing.components.statusbar.ErrorPanel.mouseClicked(MouseEvent)

    /**
     * Checks a mouse event for a popup trigger.
     *
     * @param e Mouse event
     */
    private void checkMouseEvent(MouseEvent e) {
        if (e.isPopupTrigger()) {
    //#ErrorPanel.java:235: method: void com.dmdirc.addons.ui_swing.components.statusbar.ErrorPanel.checkMouseEvent(MouseEvent)
    //#input(void checkMouseEvent(MouseEvent)): e
    //#input(void checkMouseEvent(MouseEvent)): this
    //#input(void checkMouseEvent(MouseEvent)): this.menu
    //#pre[1] (void checkMouseEvent(MouseEvent)): e != null
    //#pre[3] (void checkMouseEvent(MouseEvent)): (soft) this.menu != null
    //#test_vector(void checkMouseEvent(MouseEvent)): java.awt.event.MouseEvent:isPopupTrigger(...)@235: {0}, {1}
            menu.show(this, e.getX(), e.getY());
        }
    }
    //#ErrorPanel.java:238: end of method: void com.dmdirc.addons.ui_swing.components.statusbar.ErrorPanel.checkMouseEvent(MouseEvent)

    /**
     * {@inheritDoc}
     *
     * @param e Action event
     */
    @Override
    public void actionPerformed(final ActionEvent e) {
        if (e.getSource() == show) {
    //#ErrorPanel.java:247: method: void com.dmdirc.addons.ui_swing.components.statusbar.ErrorPanel.actionPerformed(ActionEvent)
    //#input(void actionPerformed(ActionEvent)): e
    //#input(void actionPerformed(ActionEvent)): this
    //#input(void actionPerformed(ActionEvent)): this.controller
    //#input(void actionPerformed(ActionEvent)): this.show
    //#pre[1] (void actionPerformed(ActionEvent)): e != null
    //#pre[3] (void actionPerformed(ActionEvent)): (soft) this.controller != null
    //#presumption(void actionPerformed(ActionEvent)): com.dmdirc.logger.ErrorManager:getErrorManager(...)@250 != null
    //#presumption(void actionPerformed(ActionEvent)): com.dmdirc.logger.ErrorManager:getErrorManager(...)@253 != null
    //#presumption(void actionPerformed(ActionEvent)): com.dmdirc.logger.ErrorManager:getErrors(...)@250 != null
    //#test_vector(void actionPerformed(ActionEvent)): java.util.Iterator:hasNext(...)@252: {0}, {1}
            controller.showErrorDialog();
    //#ErrorPanel.java:248: Warning: method not available - call not analyzed
    //#    call on void com.dmdirc.addons.ui_swing.SwingController:showErrorDialog()
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.components.statusbar.ErrorPanel
    //#    method: void actionPerformed(ActionEvent)
    //#    unanalyzed callee: void com.dmdirc.addons.ui_swing.SwingController:showErrorDialog()
        } else {
            final Collection<ProgramError> errors =
    //#ErrorPanel.java:250: Warning: method not available - call not analyzed
    //#    call on ErrorManager com.dmdirc.logger.ErrorManager:getErrorManager()
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.components.statusbar.ErrorPanel
    //#    method: void actionPerformed(ActionEvent)
    //#    unanalyzed callee: ErrorManager com.dmdirc.logger.ErrorManager:getErrorManager()
    //#ErrorPanel.java:250: Warning: method not available - call not analyzed
    //#    call on List com.dmdirc.logger.ErrorManager:getErrors()
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.components.statusbar.ErrorPanel
    //#    method: void actionPerformed(ActionEvent)
    //#    unanalyzed callee: List com.dmdirc.logger.ErrorManager:getErrors()
                    ErrorManager.getErrorManager().getErrors();
            for (ProgramError error : errors) {
                ErrorManager.getErrorManager().deleteError(error);
    //#ErrorPanel.java:253: Warning: method not available - call not analyzed
    //#    call on ErrorManager com.dmdirc.logger.ErrorManager:getErrorManager()
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.components.statusbar.ErrorPanel
    //#    method: void actionPerformed(ActionEvent)
    //#    unanalyzed callee: ErrorManager com.dmdirc.logger.ErrorManager:getErrorManager()
    //#ErrorPanel.java:253: Warning: method not available - call not analyzed
    //#    call on void com.dmdirc.logger.ErrorManager:deleteError(ProgramError)
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.components.statusbar.ErrorPanel
    //#    method: void actionPerformed(ActionEvent)
    //#    unanalyzed callee: void com.dmdirc.logger.ErrorManager:deleteError(ProgramError)
            }
        }
    }
    //#ErrorPanel.java:256: end of method: void com.dmdirc.addons.ui_swing.components.statusbar.ErrorPanel.actionPerformed(ActionEvent)

}
    //#output(com.dmdirc.addons.ui_swing.components.statusbar.ErrorPanel$1__static_init): __Descendant_Table[com/dmdirc/addons/ui_swing/components/statusbar/ErrorPanel$1]
    //#output(com.dmdirc.addons.ui_swing.components.statusbar.ErrorPanel$1__static_init): __Dispatch_Table.run()V
    //#post(com.dmdirc.addons.ui_swing.components.statusbar.ErrorPanel$1__static_init): __Descendant_Table[com/dmdirc/addons/ui_swing/components/statusbar/ErrorPanel$1] == &__Dispatch_Table
    //#post(com.dmdirc.addons.ui_swing.components.statusbar.ErrorPanel$1__static_init): __Dispatch_Table.run()V == &run
    //#ErrorPanel.java:: end of method: com.dmdirc.addons.ui_swing.components.statusbar.ErrorPanel$1.com.dmdirc.addons.ui_swing.components.statusbar.ErrorPanel$1__static_init
    //#ErrorPanel.java:: end of class: com.dmdirc.addons.ui_swing.components.statusbar.ErrorPanel$1
    //#ErrorPanel.java:: end of class: com.dmdirc.addons.ui_swing.components.statusbar.ErrorPanel
