//# 0 errors, 474 messages
//#
/*
    //#ErrorListDialog.java:1:1: class: com.dmdirc.addons.ui_swing.dialogs.error.ErrorListDialog
    //#ErrorListDialog.java:1:1: method: com.dmdirc.addons.ui_swing.dialogs.error.ErrorListDialog.com.dmdirc.addons.ui_swing.dialogs.error.ErrorListDialog__static_init
 * Copyright (c) 2006-2009 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.dialogs.error;

import com.dmdirc.addons.ui_swing.MainFrame;
import com.dmdirc.addons.ui_swing.components.StandardDialog;
import com.dmdirc.logger.ErrorManager;
import com.dmdirc.logger.ErrorReportStatus;
import com.dmdirc.logger.ProgramError;

import java.awt.Dimension;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import java.util.concurrent.atomic.AtomicInteger;
import javax.swing.JButton;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JSplitPane;
import javax.swing.event.ListSelectionEvent;
import javax.swing.event.ListSelectionListener;
import javax.swing.event.TableModelEvent;
import javax.swing.event.TableModelListener;

import net.miginfocom.layout.PlatformDefaults;
import net.miginfocom.swing.MigLayout;

/**
 * Error list dialog.
 */
public final class ErrorListDialog extends StandardDialog implements
        ActionListener, ListSelectionListener, TableModelListener {

    /**
     * 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 = 5;
    /** Table model. */
    private final ErrorTableModel tableModel;
    /** Table scrollpane. */
    private JScrollPane scrollPane;
    /** Error table. */
    private ErrorTable table;
    /** Error detail panel. */
    private ErrorDetailPanel errorDetails;
    /** Send button. */
    private JButton sendButton;
    /** Delete button. */
    private JButton deleteButton;
    /** Delete all button. */
    private JButton deleteAllButton;
    /** Selected row. */
    private final AtomicInteger selectedRow = new AtomicInteger(-1);
    /** Row being deleted. */
    private boolean rowBeingDeleted = false;

    /** 
     * Creates a new instance of ErrorListDialog. 
     * 
     * @param mainFrame Main frame
     */
    public ErrorListDialog(final MainFrame mainFrame) {
        super(mainFrame, ModalityType.MODELESS);
    //#ErrorListDialog.java:85: method: void com.dmdirc.addons.ui_swing.dialogs.error.ErrorListDialog.com.dmdirc.addons.ui_swing.dialogs.error.ErrorListDialog(MainFrame)
    //#ErrorListDialog.java:85: Warning: method not available - call not analyzed
    //#    call on void com.dmdirc.addons.ui_swing.components.StandardDialog(Window, Dialog$ModalityType)
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.dialogs.error.ErrorListDialog
    //#    method: void com.dmdirc.addons.ui_swing.dialogs.error.ErrorListDialog(MainFrame)
    //#    unanalyzed callee: void com.dmdirc.addons.ui_swing.components.StandardDialog(Window, Dialog$ModalityType)
    //#input(void com.dmdirc.addons.ui_swing.dialogs.error.ErrorListDialog(MainFrame)): java.awt.Dialog$ModalityType.MODELESS
    //#input(void com.dmdirc.addons.ui_swing.dialogs.error.ErrorListDialog(MainFrame)): mainFrame
    //#input(void com.dmdirc.addons.ui_swing.dialogs.error.ErrorListDialog(MainFrame)): this
    //#output(void com.dmdirc.addons.ui_swing.dialogs.error.ErrorListDialog(MainFrame)): new AtomicInteger(ErrorListDialog#1) num objects
    //#output(void com.dmdirc.addons.ui_swing.dialogs.error.ErrorListDialog(MainFrame)): new ErrorDetailPanel(initComponents#4) num objects
    //#output(void com.dmdirc.addons.ui_swing.dialogs.error.ErrorListDialog(MainFrame)): new ErrorDetailPanel(initComponents#4).__Tag
    //#output(void com.dmdirc.addons.ui_swing.dialogs.error.ErrorListDialog(MainFrame)): new ErrorDetailPanel(initComponents#4).date
    //#output(void com.dmdirc.addons.ui_swing.dialogs.error.ErrorListDialog(MainFrame)): new ErrorDetailPanel(initComponents#4).details
    //#output(void com.dmdirc.addons.ui_swing.dialogs.error.ErrorListDialog(MainFrame)): new ErrorDetailPanel(initComponents#4).error
    //#output(void com.dmdirc.addons.ui_swing.dialogs.error.ErrorListDialog(MainFrame)): new ErrorDetailPanel(initComponents#4).errorStatus
    //#output(void com.dmdirc.addons.ui_swing.dialogs.error.ErrorListDialog(MainFrame)): new ErrorDetailPanel(initComponents#4).id
    //#output(void com.dmdirc.addons.ui_swing.dialogs.error.ErrorListDialog(MainFrame)): new ErrorDetailPanel(initComponents#4).level
    //#output(void com.dmdirc.addons.ui_swing.dialogs.error.ErrorListDialog(MainFrame)): new ErrorDetailPanel(initComponents#4).reportStatus
    //#output(void com.dmdirc.addons.ui_swing.dialogs.error.ErrorListDialog(MainFrame)): new ErrorDetailPanel(initComponents#4).scrollPane
    //#output(void com.dmdirc.addons.ui_swing.dialogs.error.ErrorListDialog(MainFrame)): new ErrorTable(initComponents#2) num objects
    //#output(void com.dmdirc.addons.ui_swing.dialogs.error.ErrorListDialog(MainFrame)): new ErrorTable(initComponents#2).__Tag
    //#output(void com.dmdirc.addons.ui_swing.dialogs.error.ErrorListDialog(MainFrame)): new ErrorTableModel(ErrorListDialog#2) num objects
    //#output(void com.dmdirc.addons.ui_swing.dialogs.error.ErrorListDialog(MainFrame)): this.tableModel.__Tag
    //#output(void com.dmdirc.addons.ui_swing.dialogs.error.ErrorListDialog(MainFrame)): this.tableModel.errors
    //#output(void com.dmdirc.addons.ui_swing.dialogs.error.ErrorListDialog(MainFrame)): new JButton(initButtons#3) num objects
    //#output(void com.dmdirc.addons.ui_swing.dialogs.error.ErrorListDialog(MainFrame)): new JButton(initButtons#4) num objects
    //#output(void com.dmdirc.addons.ui_swing.dialogs.error.ErrorListDialog(MainFrame)): new JButton(initButtons#5) num objects
    //#output(void com.dmdirc.addons.ui_swing.dialogs.error.ErrorListDialog(MainFrame)): new JScrollPane(initComponents#1) num objects
    //#output(void com.dmdirc.addons.ui_swing.dialogs.error.ErrorListDialog(MainFrame)): new JScrollPane(initComponents#7) num objects
    //#output(void com.dmdirc.addons.ui_swing.dialogs.error.ErrorListDialog(MainFrame)): new JTextArea(initComponents#6) num objects
    //#output(void com.dmdirc.addons.ui_swing.dialogs.error.ErrorListDialog(MainFrame)): new JTextField(initComponents#1) num objects
    //#output(void com.dmdirc.addons.ui_swing.dialogs.error.ErrorListDialog(MainFrame)): new JTextField(initComponents#2) num objects
    //#output(void com.dmdirc.addons.ui_swing.dialogs.error.ErrorListDialog(MainFrame)): new JTextField(initComponents#3) num objects
    //#output(void com.dmdirc.addons.ui_swing.dialogs.error.ErrorListDialog(MainFrame)): new JTextField(initComponents#4) num objects
    //#output(void com.dmdirc.addons.ui_swing.dialogs.error.ErrorListDialog(MainFrame)): new JTextField(initComponents#5) num objects
    //#output(void com.dmdirc.addons.ui_swing.dialogs.error.ErrorListDialog(MainFrame)): this.deleteAllButton
    //#output(void com.dmdirc.addons.ui_swing.dialogs.error.ErrorListDialog(MainFrame)): this.deleteButton
    //#output(void com.dmdirc.addons.ui_swing.dialogs.error.ErrorListDialog(MainFrame)): this.errorDetails
    //#output(void com.dmdirc.addons.ui_swing.dialogs.error.ErrorListDialog(MainFrame)): this.rowBeingDeleted
    //#output(void com.dmdirc.addons.ui_swing.dialogs.error.ErrorListDialog(MainFrame)): this.scrollPane
    //#output(void com.dmdirc.addons.ui_swing.dialogs.error.ErrorListDialog(MainFrame)): this.selectedRow
    //#output(void com.dmdirc.addons.ui_swing.dialogs.error.ErrorListDialog(MainFrame)): this.sendButton
    //#output(void com.dmdirc.addons.ui_swing.dialogs.error.ErrorListDialog(MainFrame)): this.table
    //#output(void com.dmdirc.addons.ui_swing.dialogs.error.ErrorListDialog(MainFrame)): this.tableModel
    //#new obj(void com.dmdirc.addons.ui_swing.dialogs.error.ErrorListDialog(MainFrame)): new AtomicInteger(ErrorListDialog#1)
    //#new obj(void com.dmdirc.addons.ui_swing.dialogs.error.ErrorListDialog(MainFrame)): new ErrorDetailPanel(initComponents#4)
    //#new obj(void com.dmdirc.addons.ui_swing.dialogs.error.ErrorListDialog(MainFrame)): new ErrorTable(initComponents#2)
    //#new obj(void com.dmdirc.addons.ui_swing.dialogs.error.ErrorListDialog(MainFrame)): new ErrorTableModel(ErrorListDialog#2)
    //#new obj(void com.dmdirc.addons.ui_swing.dialogs.error.ErrorListDialog(MainFrame)): new JButton(initButtons#3)
    //#new obj(void com.dmdirc.addons.ui_swing.dialogs.error.ErrorListDialog(MainFrame)): new JButton(initButtons#4)
    //#new obj(void com.dmdirc.addons.ui_swing.dialogs.error.ErrorListDialog(MainFrame)): new JButton(initButtons#5)
    //#new obj(void com.dmdirc.addons.ui_swing.dialogs.error.ErrorListDialog(MainFrame)): new JScrollPane(initComponents#1)
    //#new obj(void com.dmdirc.addons.ui_swing.dialogs.error.ErrorListDialog(MainFrame)): new JScrollPane(initComponents#7)
    //#new obj(void com.dmdirc.addons.ui_swing.dialogs.error.ErrorListDialog(MainFrame)): new JTextArea(initComponents#6)
    //#new obj(void com.dmdirc.addons.ui_swing.dialogs.error.ErrorListDialog(MainFrame)): new JTextField(initComponents#1)
    //#new obj(void com.dmdirc.addons.ui_swing.dialogs.error.ErrorListDialog(MainFrame)): new JTextField(initComponents#2)
    //#new obj(void com.dmdirc.addons.ui_swing.dialogs.error.ErrorListDialog(MainFrame)): new JTextField(initComponents#3)
    //#new obj(void com.dmdirc.addons.ui_swing.dialogs.error.ErrorListDialog(MainFrame)): new JTextField(initComponents#4)
    //#new obj(void com.dmdirc.addons.ui_swing.dialogs.error.ErrorListDialog(MainFrame)): new JTextField(initComponents#5)
    //#presumption(void com.dmdirc.addons.ui_swing.dialogs.error.ErrorListDialog(MainFrame)): com.dmdirc.logger.ErrorManager:getErrors(...)@54 != null
    //#presumption(void com.dmdirc.addons.ui_swing.dialogs.error.ErrorListDialog(MainFrame)): init'ed(java.awt.Dialog$ModalityType.MODELESS)
    //#post(void com.dmdirc.addons.ui_swing.dialogs.error.ErrorListDialog(MainFrame)): this.deleteAllButton == &new JButton(initButtons#5)
    //#post(void com.dmdirc.addons.ui_swing.dialogs.error.ErrorListDialog(MainFrame)): this.deleteButton == &new JButton(initButtons#4)
    //#post(void com.dmdirc.addons.ui_swing.dialogs.error.ErrorListDialog(MainFrame)): this.errorDetails == &new ErrorDetailPanel(initComponents#4)
    //#post(void com.dmdirc.addons.ui_swing.dialogs.error.ErrorListDialog(MainFrame)): init'ed(this.rowBeingDeleted)
    //#post(void com.dmdirc.addons.ui_swing.dialogs.error.ErrorListDialog(MainFrame)): this.scrollPane == &new JScrollPane(initComponents#1)
    //#post(void com.dmdirc.addons.ui_swing.dialogs.error.ErrorListDialog(MainFrame)): this.selectedRow == &new AtomicInteger(ErrorListDialog#1)
    //#post(void com.dmdirc.addons.ui_swing.dialogs.error.ErrorListDialog(MainFrame)): this.sendButton == &new JButton(initButtons#3)
    //#post(void com.dmdirc.addons.ui_swing.dialogs.error.ErrorListDialog(MainFrame)): this.table == &new ErrorTable(initComponents#2)
    //#post(void com.dmdirc.addons.ui_swing.dialogs.error.ErrorListDialog(MainFrame)): this.tableModel == &new ErrorTableModel(ErrorListDialog#2)
    //#post(void com.dmdirc.addons.ui_swing.dialogs.error.ErrorListDialog(MainFrame)): new AtomicInteger(ErrorListDialog#1) num objects == 1
    //#post(void com.dmdirc.addons.ui_swing.dialogs.error.ErrorListDialog(MainFrame)): new ErrorDetailPanel(initComponents#4) num objects == 1
    //#post(void com.dmdirc.addons.ui_swing.dialogs.error.ErrorListDialog(MainFrame)): new ErrorTable(initComponents#2) num objects == 1
    //#post(void com.dmdirc.addons.ui_swing.dialogs.error.ErrorListDialog(MainFrame)): new ErrorTableModel(ErrorListDialog#2) num objects == 1
    //#post(void com.dmdirc.addons.ui_swing.dialogs.error.ErrorListDialog(MainFrame)): new JButton(initButtons#3) num objects == 1
    //#post(void com.dmdirc.addons.ui_swing.dialogs.error.ErrorListDialog(MainFrame)): new JButton(initButtons#4) num objects == 1
    //#post(void com.dmdirc.addons.ui_swing.dialogs.error.ErrorListDialog(MainFrame)): new JButton(initButtons#5) num objects == 1
    //#post(void com.dmdirc.addons.ui_swing.dialogs.error.ErrorListDialog(MainFrame)): new JScrollPane(initComponents#1) num objects == 1
    //#post(void com.dmdirc.addons.ui_swing.dialogs.error.ErrorListDialog(MainFrame)): new JScrollPane(initComponents#7) num objects == 1
    //#post(void com.dmdirc.addons.ui_swing.dialogs.error.ErrorListDialog(MainFrame)): new JTextArea(initComponents#6) num objects == 1
    //#post(void com.dmdirc.addons.ui_swing.dialogs.error.ErrorListDialog(MainFrame)): new JTextField(initComponents#1) num objects == 1
    //#post(void com.dmdirc.addons.ui_swing.dialogs.error.ErrorListDialog(MainFrame)): new JTextField(initComponents#2) num objects == 1
    //#post(void com.dmdirc.addons.ui_swing.dialogs.error.ErrorListDialog(MainFrame)): new JTextField(initComponents#3) num objects == 1
    //#post(void com.dmdirc.addons.ui_swing.dialogs.error.ErrorListDialog(MainFrame)): new JTextField(initComponents#4) num objects == 1
    //#post(void com.dmdirc.addons.ui_swing.dialogs.error.ErrorListDialog(MainFrame)): new JTextField(initComponents#5) num objects == 1
    //#post(void com.dmdirc.addons.ui_swing.dialogs.error.ErrorListDialog(MainFrame)): new ErrorDetailPanel(initComponents#4).__Tag == com/dmdirc/addons/ui_swing/dialogs/error/ErrorDetailPanel
    //#post(void com.dmdirc.addons.ui_swing.dialogs.error.ErrorListDialog(MainFrame)): new ErrorDetailPanel(initComponents#4).date == &new JTextField(initComponents#2)
    //#post(void com.dmdirc.addons.ui_swing.dialogs.error.ErrorListDialog(MainFrame)): new ErrorDetailPanel(initComponents#4).details == &new JTextArea(initComponents#6)
    //#post(void com.dmdirc.addons.ui_swing.dialogs.error.ErrorListDialog(MainFrame)): init'ed(new ErrorDetailPanel(initComponents#4).error)
    //#post(void com.dmdirc.addons.ui_swing.dialogs.error.ErrorListDialog(MainFrame)): new ErrorDetailPanel(initComponents#4).errorStatus == &new JTextField(initComponents#5)
    //#post(void com.dmdirc.addons.ui_swing.dialogs.error.ErrorListDialog(MainFrame)): new ErrorDetailPanel(initComponents#4).id == &new JTextField(initComponents#1)
    //#post(void com.dmdirc.addons.ui_swing.dialogs.error.ErrorListDialog(MainFrame)): new ErrorDetailPanel(initComponents#4).level == &new JTextField(initComponents#3)
    //#post(void com.dmdirc.addons.ui_swing.dialogs.error.ErrorListDialog(MainFrame)): new ErrorDetailPanel(initComponents#4).reportStatus == &new JTextField(initComponents#4)
    //#post(void com.dmdirc.addons.ui_swing.dialogs.error.ErrorListDialog(MainFrame)): new ErrorDetailPanel(initComponents#4).scrollPane == &new JScrollPane(initComponents#7)
    //#post(void com.dmdirc.addons.ui_swing.dialogs.error.ErrorListDialog(MainFrame)): new ErrorTable(initComponents#2).__Tag == com/dmdirc/addons/ui_swing/dialogs/error/ErrorTable
    //#post(void com.dmdirc.addons.ui_swing.dialogs.error.ErrorListDialog(MainFrame)): this.tableModel.__Tag == com/dmdirc/addons/ui_swing/dialogs/error/ErrorTableModel
    //#post(void com.dmdirc.addons.ui_swing.dialogs.error.ErrorListDialog(MainFrame)): this.tableModel.errors != null
    //#unanalyzed(void com.dmdirc.addons.ui_swing.dialogs.error.ErrorListDialog(MainFrame)): Effects-of-calling:javax.swing.JButton
    //#unanalyzed(void com.dmdirc.addons.ui_swing.dialogs.error.ErrorListDialog(MainFrame)): Effects-of-calling:com.dmdirc.addons.ui_swing.dialogs.error.ErrorListDialog:orderButtons
    //#unanalyzed(void com.dmdirc.addons.ui_swing.dialogs.error.ErrorListDialog(MainFrame)): Effects-of-calling:com.dmdirc.addons.ui_swing.dialogs.error.ErrorListDialog:getCancelButton
    //#unanalyzed(void com.dmdirc.addons.ui_swing.dialogs.error.ErrorListDialog(MainFrame)): Effects-of-calling:javax.swing.JButton:setText
    //#unanalyzed(void com.dmdirc.addons.ui_swing.dialogs.error.ErrorListDialog(MainFrame)): Effects-of-calling:javax.swing.JButton:setEnabled
    //#unanalyzed(void com.dmdirc.addons.ui_swing.dialogs.error.ErrorListDialog(MainFrame)): Effects-of-calling:java.util.List:size
    //#unanalyzed(void com.dmdirc.addons.ui_swing.dialogs.error.ErrorListDialog(MainFrame)): Effects-of-calling:java.lang.Throwable:__curr_excep_obj
    //#unanalyzed(void com.dmdirc.addons.ui_swing.dialogs.error.ErrorListDialog(MainFrame)): Effects-of-calling:javax.swing.JScrollPane
    //#unanalyzed(void com.dmdirc.addons.ui_swing.dialogs.error.ErrorListDialog(MainFrame)): Effects-of-calling:com.dmdirc.addons.ui_swing.components.PackingTable
    //#unanalyzed(void com.dmdirc.addons.ui_swing.dialogs.error.ErrorListDialog(MainFrame)): Effects-of-calling:com.dmdirc.addons.ui_swing.dialogs.error.ErrorTable:setAutoCreateRowSorter
    //#unanalyzed(void com.dmdirc.addons.ui_swing.dialogs.error.ErrorListDialog(MainFrame)): Effects-of-calling:com.dmdirc.addons.ui_swing.dialogs.error.ErrorTable:setAutoCreateColumnsFromModel
    //#unanalyzed(void com.dmdirc.addons.ui_swing.dialogs.error.ErrorListDialog(MainFrame)): Effects-of-calling:com.dmdirc.addons.ui_swing.dialogs.error.ErrorTable:setColumnSelectionAllowed
    //#unanalyzed(void com.dmdirc.addons.ui_swing.dialogs.error.ErrorListDialog(MainFrame)): Effects-of-calling:com.dmdirc.addons.ui_swing.dialogs.error.ErrorTable:setCellSelectionEnabled
    //#unanalyzed(void com.dmdirc.addons.ui_swing.dialogs.error.ErrorListDialog(MainFrame)): Effects-of-calling:com.dmdirc.addons.ui_swing.dialogs.error.ErrorTable:setDragEnabled
    //#unanalyzed(void com.dmdirc.addons.ui_swing.dialogs.error.ErrorListDialog(MainFrame)): Effects-of-calling:com.dmdirc.addons.ui_swing.dialogs.error.ErrorTable:setFillsViewportHeight
    //#unanalyzed(void com.dmdirc.addons.ui_swing.dialogs.error.ErrorListDialog(MainFrame)): Effects-of-calling:com.dmdirc.addons.ui_swing.dialogs.error.ErrorTable:setRowSelectionAllowed
    //#unanalyzed(void com.dmdirc.addons.ui_swing.dialogs.error.ErrorListDialog(MainFrame)): Effects-of-calling:com.dmdirc.addons.ui_swing.dialogs.error.ErrorTable:setSelectionMode
    //#unanalyzed(void com.dmdirc.addons.ui_swing.dialogs.error.ErrorListDialog(MainFrame)): Effects-of-calling:com.dmdirc.addons.ui_swing.dialogs.error.ErrorTable:getRowSorter
    //#unanalyzed(void com.dmdirc.addons.ui_swing.dialogs.error.ErrorListDialog(MainFrame)): Effects-of-calling:javax.swing.RowSorter:toggleSortOrder
    //#unanalyzed(void com.dmdirc.addons.ui_swing.dialogs.error.ErrorListDialog(MainFrame)): Effects-of-calling:com.dmdirc.addons.ui_swing.dialogs.error.ErrorTable:getTableHeader
    //#unanalyzed(void com.dmdirc.addons.ui_swing.dialogs.error.ErrorListDialog(MainFrame)): Effects-of-calling:javax.swing.table.JTableHeader:setReorderingAllowed
    //#unanalyzed(void com.dmdirc.addons.ui_swing.dialogs.error.ErrorListDialog(MainFrame)): Effects-of-calling:java.awt.Dimension
    //#unanalyzed(void com.dmdirc.addons.ui_swing.dialogs.error.ErrorListDialog(MainFrame)): Effects-of-calling:com.dmdirc.addons.ui_swing.dialogs.error.ErrorTable:setPreferredScrollableViewportSize
    //#unanalyzed(void com.dmdirc.addons.ui_swing.dialogs.error.ErrorListDialog(MainFrame)): Effects-of-calling:javax.swing.JScrollPane:setViewportView
    //#unanalyzed(void com.dmdirc.addons.ui_swing.dialogs.error.ErrorListDialog(MainFrame)): Effects-of-calling:javax.swing.JTextField
    //#unanalyzed(void com.dmdirc.addons.ui_swing.dialogs.error.ErrorListDialog(MainFrame)): Effects-of-calling:javax.swing.JTextArea
    //#unanalyzed(void com.dmdirc.addons.ui_swing.dialogs.error.ErrorListDialog(MainFrame)): Effects-of-calling:javax.swing.JTextField:setEditable
    //#unanalyzed(void com.dmdirc.addons.ui_swing.dialogs.error.ErrorListDialog(MainFrame)): Effects-of-calling:javax.swing.JTextArea:setEditable
    //#unanalyzed(void com.dmdirc.addons.ui_swing.dialogs.error.ErrorListDialog(MainFrame)): Effects-of-calling:javax.swing.JTextArea:setRows
    //#unanalyzed(void com.dmdirc.addons.ui_swing.dialogs.error.ErrorListDialog(MainFrame)): Effects-of-calling:javax.swing.JTextArea:setWrapStyleWord
    //#unanalyzed(void com.dmdirc.addons.ui_swing.dialogs.error.ErrorListDialog(MainFrame)): Effects-of-calling:com.dmdirc.logger.ErrorManager:getErrorManager
    //#unanalyzed(void com.dmdirc.addons.ui_swing.dialogs.error.ErrorListDialog(MainFrame)): Effects-of-calling:com.dmdirc.logger.ErrorManager:addErrorListener
    //#unanalyzed(void com.dmdirc.addons.ui_swing.dialogs.error.ErrorListDialog(MainFrame)): Effects-of-calling:javax.swing.SwingUtilities:invokeLater
    //#unanalyzed(void com.dmdirc.addons.ui_swing.dialogs.error.ErrorListDialog(MainFrame)): Effects-of-calling:net.miginfocom.swing.MigLayout
    //#unanalyzed(void com.dmdirc.addons.ui_swing.dialogs.error.ErrorListDialog(MainFrame)): Effects-of-calling:com.dmdirc.addons.ui_swing.dialogs.error.ErrorDetailPanel:setLayout
    //#unanalyzed(void com.dmdirc.addons.ui_swing.dialogs.error.ErrorListDialog(MainFrame)): Effects-of-calling:javax.swing.JLabel
    //#unanalyzed(void com.dmdirc.addons.ui_swing.dialogs.error.ErrorListDialog(MainFrame)): Effects-of-calling:com.dmdirc.addons.ui_swing.dialogs.error.ErrorDetailPanel:add
    //#unanalyzed(void com.dmdirc.addons.ui_swing.dialogs.error.ErrorListDialog(MainFrame)): Effects-of-calling:javax.swing.JPanel
    //#unanalyzed(void com.dmdirc.addons.ui_swing.dialogs.error.ErrorListDialog(MainFrame)): Effects-of-calling:javax.swing.JSplitPane
    //#unanalyzed(void com.dmdirc.addons.ui_swing.dialogs.error.ErrorListDialog(MainFrame)): Effects-of-calling:javax.swing.JPanel:setLayout
    //#unanalyzed(void com.dmdirc.addons.ui_swing.dialogs.error.ErrorListDialog(MainFrame)): Effects-of-calling:javax.swing.JPanel:add
    //#unanalyzed(void com.dmdirc.addons.ui_swing.dialogs.error.ErrorListDialog(MainFrame)): Effects-of-calling:javax.swing.JSplitPane:setTopComponent
    //#unanalyzed(void com.dmdirc.addons.ui_swing.dialogs.error.ErrorListDialog(MainFrame)): Effects-of-calling:javax.swing.JSplitPane:setBottomComponent
    //#unanalyzed(void com.dmdirc.addons.ui_swing.dialogs.error.ErrorListDialog(MainFrame)): Effects-of-calling:net.miginfocom.layout.PlatformDefaults:getPanelInsets
    //#unanalyzed(void com.dmdirc.addons.ui_swing.dialogs.error.ErrorListDialog(MainFrame)): Effects-of-calling:net.miginfocom.layout.UnitValue:getValue
    //#unanalyzed(void com.dmdirc.addons.ui_swing.dialogs.error.ErrorListDialog(MainFrame)): Effects-of-calling:javax.swing.JSplitPane:setDividerSize
    //#unanalyzed(void com.dmdirc.addons.ui_swing.dialogs.error.ErrorListDialog(MainFrame)): Effects-of-calling:com.dmdirc.addons.ui_swing.dialogs.error.ErrorListDialog:getContentPane
    //#unanalyzed(void com.dmdirc.addons.ui_swing.dialogs.error.ErrorListDialog(MainFrame)): Effects-of-calling:java.awt.Container:add
    //#unanalyzed(void com.dmdirc.addons.ui_swing.dialogs.error.ErrorListDialog(MainFrame)): Effects-of-calling:com.dmdirc.addons.ui_swing.dialogs.error.ErrorTableModel:addTableModelListener
    //#unanalyzed(void com.dmdirc.addons.ui_swing.dialogs.error.ErrorListDialog(MainFrame)): Effects-of-calling:com.dmdirc.addons.ui_swing.dialogs.error.ErrorTable:getSelectionModel
    //#unanalyzed(void com.dmdirc.addons.ui_swing.dialogs.error.ErrorListDialog(MainFrame)): Effects-of-calling:javax.swing.ListSelectionModel:addListSelectionListener
    //#unanalyzed(void com.dmdirc.addons.ui_swing.dialogs.error.ErrorListDialog(MainFrame)): Effects-of-calling:javax.swing.JButton:addActionListener
    //#unanalyzed(void com.dmdirc.addons.ui_swing.dialogs.error.ErrorListDialog(MainFrame)): Effects-of-calling:com.dmdirc.addons.ui_swing.dialogs.error.ErrorListDialog:getOkButton
    //#unanalyzed(void com.dmdirc.addons.ui_swing.dialogs.error.ErrorListDialog(MainFrame)): Effects-of-calling:javax.swing.table.AbstractTableModel
    //#unanalyzed(void com.dmdirc.addons.ui_swing.dialogs.error.ErrorListDialog(MainFrame)): Effects-of-calling:com.dmdirc.logger.ErrorManager:getErrors

        setTitle("DMDirc: Error list");
    //#ErrorListDialog.java:87: Warning: method not available - call not analyzed
    //#    call on void com.dmdirc.addons.ui_swing.dialogs.error.ErrorListDialog:setTitle(String)
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.dialogs.error.ErrorListDialog
    //#    method: void com.dmdirc.addons.ui_swing.dialogs.error.ErrorListDialog(MainFrame)
    //#    unanalyzed callee: void com.dmdirc.addons.ui_swing.dialogs.error.ErrorListDialog:setTitle(String)

        tableModel = new ErrorTableModel();

        initComponents();
        layoutComponents();
        initListeners();

        selectedRow.set(table.getSelectedRow());
    //#ErrorListDialog.java:95: Warning: method not available - call not analyzed
    //#    call on int com.dmdirc.addons.ui_swing.dialogs.error.ErrorTable:getSelectedRow()
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.dialogs.error.ErrorListDialog
    //#    method: void com.dmdirc.addons.ui_swing.dialogs.error.ErrorListDialog(MainFrame)
    //#    unanalyzed callee: int com.dmdirc.addons.ui_swing.dialogs.error.ErrorTable:getSelectedRow()

        pack();
    //#ErrorListDialog.java:97: Warning: method not available - call not analyzed
    //#    call on void com.dmdirc.addons.ui_swing.dialogs.error.ErrorListDialog:pack()
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.dialogs.error.ErrorListDialog
    //#    method: void com.dmdirc.addons.ui_swing.dialogs.error.ErrorListDialog(MainFrame)
    //#    unanalyzed callee: void com.dmdirc.addons.ui_swing.dialogs.error.ErrorListDialog:pack()
    }
    //#ErrorListDialog.java:98: end of method: void com.dmdirc.addons.ui_swing.dialogs.error.ErrorListDialog.com.dmdirc.addons.ui_swing.dialogs.error.ErrorListDialog(MainFrame)

    /** Initialises the components. */
    private void initComponents() {
        initButtons();
    //#ErrorListDialog.java:102: method: void com.dmdirc.addons.ui_swing.dialogs.error.ErrorListDialog.initComponents()
    //#input(void initComponents()): this
    //#input(void initComponents()): this.tableModel
    //#input(void initComponents()): this.tableModel.errors
    //#output(void initComponents()): new ErrorDetailPanel(initComponents#4) num objects
    //#output(void initComponents()): this.errorDetails.__Tag
    //#output(void initComponents()): this.errorDetails.date
    //#output(void initComponents()): this.errorDetails.details
    //#output(void initComponents()): this.errorDetails.error
    //#output(void initComponents()): this.errorDetails.errorStatus
    //#output(void initComponents()): this.errorDetails.id
    //#output(void initComponents()): this.errorDetails.level
    //#output(void initComponents()): this.errorDetails.reportStatus
    //#output(void initComponents()): this.errorDetails.scrollPane
    //#output(void initComponents()): new ErrorTable(initComponents#2) num objects
    //#output(void initComponents()): this.table.__Tag
    //#output(void initComponents()): new JButton(initButtons#3) num objects
    //#output(void initComponents()): new JButton(initButtons#4) num objects
    //#output(void initComponents()): new JButton(initButtons#5) num objects
    //#output(void initComponents()): new JScrollPane(initComponents#1) num objects
    //#output(void initComponents()): new JScrollPane(initComponents#7) num objects
    //#output(void initComponents()): new JTextArea(initComponents#6) num objects
    //#output(void initComponents()): new JTextField(initComponents#1) num objects
    //#output(void initComponents()): new JTextField(initComponents#2) num objects
    //#output(void initComponents()): new JTextField(initComponents#3) num objects
    //#output(void initComponents()): new JTextField(initComponents#4) num objects
    //#output(void initComponents()): new JTextField(initComponents#5) num objects
    //#output(void initComponents()): this.deleteAllButton
    //#output(void initComponents()): this.deleteButton
    //#output(void initComponents()): this.errorDetails
    //#output(void initComponents()): this.scrollPane
    //#output(void initComponents()): this.sendButton
    //#output(void initComponents()): this.table
    //#new obj(void initComponents()): new ErrorDetailPanel(initComponents#4)
    //#new obj(void initComponents()): new ErrorTable(initComponents#2)
    //#new obj(void initComponents()): new JButton(initButtons#3)
    //#new obj(void initComponents()): new JButton(initButtons#4)
    //#new obj(void initComponents()): new JButton(initButtons#5)
    //#new obj(void initComponents()): new JScrollPane(initComponents#1)
    //#new obj(void initComponents()): new JScrollPane(initComponents#7)
    //#new obj(void initComponents()): new JTextArea(initComponents#6)
    //#new obj(void initComponents()): new JTextField(initComponents#1)
    //#new obj(void initComponents()): new JTextField(initComponents#2)
    //#new obj(void initComponents()): new JTextField(initComponents#3)
    //#new obj(void initComponents()): new JTextField(initComponents#4)
    //#new obj(void initComponents()): new JTextField(initComponents#5)
    //#pre[2] (void initComponents()): this.tableModel != null
    //#pre[3] (void initComponents()): this.tableModel.errors != null
    //#post(void initComponents()): this.deleteAllButton == &new JButton(initButtons#5)
    //#post(void initComponents()): this.deleteButton == &new JButton(initButtons#4)
    //#post(void initComponents()): this.errorDetails == &new ErrorDetailPanel(initComponents#4)
    //#post(void initComponents()): this.scrollPane == &new JScrollPane(initComponents#1)
    //#post(void initComponents()): this.sendButton == &new JButton(initButtons#3)
    //#post(void initComponents()): this.table == &new ErrorTable(initComponents#2)
    //#post(void initComponents()): new ErrorDetailPanel(initComponents#4) num objects == 1
    //#post(void initComponents()): new ErrorTable(initComponents#2) num objects == 1
    //#post(void initComponents()): new JButton(initButtons#3) num objects == 1
    //#post(void initComponents()): new JButton(initButtons#4) num objects == 1
    //#post(void initComponents()): new JButton(initButtons#5) num objects == 1
    //#post(void initComponents()): new JScrollPane(initComponents#1) num objects == 1
    //#post(void initComponents()): new JScrollPane(initComponents#7) num objects == 1
    //#post(void initComponents()): new JTextArea(initComponents#6) num objects == 1
    //#post(void initComponents()): new JTextField(initComponents#1) num objects == 1
    //#post(void initComponents()): new JTextField(initComponents#2) num objects == 1
    //#post(void initComponents()): new JTextField(initComponents#3) num objects == 1
    //#post(void initComponents()): new JTextField(initComponents#4) num objects == 1
    //#post(void initComponents()): new JTextField(initComponents#5) num objects == 1
    //#post(void initComponents()): this.errorDetails.__Tag == com/dmdirc/addons/ui_swing/dialogs/error/ErrorDetailPanel
    //#post(void initComponents()): this.errorDetails.date == &new JTextField(initComponents#2)
    //#post(void initComponents()): this.errorDetails.details == &new JTextArea(initComponents#6)
    //#post(void initComponents()): this.errorDetails.error == null
    //#post(void initComponents()): this.errorDetails.errorStatus == &new JTextField(initComponents#5)
    //#post(void initComponents()): this.errorDetails.id == &new JTextField(initComponents#1)
    //#post(void initComponents()): this.errorDetails.level == &new JTextField(initComponents#3)
    //#post(void initComponents()): this.errorDetails.reportStatus == &new JTextField(initComponents#4)
    //#post(void initComponents()): this.errorDetails.scrollPane == &new JScrollPane(initComponents#7)
    //#post(void initComponents()): this.table.__Tag == com/dmdirc/addons/ui_swing/dialogs/error/ErrorTable
    //#unanalyzed(void initComponents()): Effects-of-calling:javax.swing.JButton
    //#unanalyzed(void initComponents()): Effects-of-calling:com.dmdirc.addons.ui_swing.dialogs.error.ErrorListDialog:orderButtons
    //#unanalyzed(void initComponents()): Effects-of-calling:com.dmdirc.addons.ui_swing.dialogs.error.ErrorListDialog:getCancelButton
    //#unanalyzed(void initComponents()): Effects-of-calling:javax.swing.JButton:setText
    //#unanalyzed(void initComponents()): Effects-of-calling:javax.swing.JButton:setEnabled
    //#unanalyzed(void initComponents()): Effects-of-calling:java.util.List:size
    //#unanalyzed(void initComponents()): Effects-of-calling:java.lang.Throwable:__curr_excep_obj
    //#unanalyzed(void initComponents()): Effects-of-calling:com.dmdirc.addons.ui_swing.components.PackingTable
    //#unanalyzed(void initComponents()): Effects-of-calling:com.dmdirc.addons.ui_swing.dialogs.error.ErrorTable:setAutoCreateRowSorter
    //#unanalyzed(void initComponents()): Effects-of-calling:com.dmdirc.addons.ui_swing.dialogs.error.ErrorTable:setAutoCreateColumnsFromModel
    //#unanalyzed(void initComponents()): Effects-of-calling:com.dmdirc.addons.ui_swing.dialogs.error.ErrorTable:setColumnSelectionAllowed
    //#unanalyzed(void initComponents()): Effects-of-calling:com.dmdirc.addons.ui_swing.dialogs.error.ErrorTable:setCellSelectionEnabled
    //#unanalyzed(void initComponents()): Effects-of-calling:com.dmdirc.addons.ui_swing.dialogs.error.ErrorTable:setDragEnabled
    //#unanalyzed(void initComponents()): Effects-of-calling:com.dmdirc.addons.ui_swing.dialogs.error.ErrorTable:setFillsViewportHeight
    //#unanalyzed(void initComponents()): Effects-of-calling:com.dmdirc.addons.ui_swing.dialogs.error.ErrorTable:setRowSelectionAllowed
    //#unanalyzed(void initComponents()): Effects-of-calling:com.dmdirc.addons.ui_swing.dialogs.error.ErrorTable:setSelectionMode
    //#unanalyzed(void initComponents()): Effects-of-calling:com.dmdirc.addons.ui_swing.dialogs.error.ErrorTable:getRowSorter
    //#unanalyzed(void initComponents()): Effects-of-calling:javax.swing.RowSorter:toggleSortOrder
    //#unanalyzed(void initComponents()): Effects-of-calling:com.dmdirc.addons.ui_swing.dialogs.error.ErrorTable:getTableHeader
    //#unanalyzed(void initComponents()): Effects-of-calling:javax.swing.table.JTableHeader:setReorderingAllowed
    //#unanalyzed(void initComponents()): Effects-of-calling:javax.swing.JTextField
    //#unanalyzed(void initComponents()): Effects-of-calling:javax.swing.JTextArea
    //#unanalyzed(void initComponents()): Effects-of-calling:javax.swing.JScrollPane
    //#unanalyzed(void initComponents()): Effects-of-calling:javax.swing.JTextField:setEditable
    //#unanalyzed(void initComponents()): Effects-of-calling:javax.swing.JTextArea:setEditable
    //#unanalyzed(void initComponents()): Effects-of-calling:javax.swing.JTextArea:setRows
    //#unanalyzed(void initComponents()): Effects-of-calling:javax.swing.JTextArea:setWrapStyleWord
    //#unanalyzed(void initComponents()): Effects-of-calling:com.dmdirc.logger.ErrorManager:getErrorManager
    //#unanalyzed(void initComponents()): Effects-of-calling:com.dmdirc.logger.ErrorManager:addErrorListener
    //#unanalyzed(void initComponents()): Effects-of-calling:javax.swing.SwingUtilities:invokeLater
    //#unanalyzed(void initComponents()): Effects-of-calling:net.miginfocom.swing.MigLayout
    //#unanalyzed(void initComponents()): Effects-of-calling:com.dmdirc.addons.ui_swing.dialogs.error.ErrorDetailPanel:setLayout
    //#unanalyzed(void initComponents()): Effects-of-calling:javax.swing.JLabel
    //#unanalyzed(void initComponents()): Effects-of-calling:com.dmdirc.addons.ui_swing.dialogs.error.ErrorDetailPanel:add
    //#unanalyzed(void initComponents()): Effects-of-calling:javax.swing.JPanel

        scrollPane = new JScrollPane();

        table = new ErrorTable(tableModel, scrollPane);

        table.setPreferredScrollableViewportSize(new Dimension(600, 150));
    //#ErrorListDialog.java:108: Warning: method not available - call not analyzed
    //#    call on void com.dmdirc.addons.ui_swing.dialogs.error.ErrorTable:setPreferredScrollableViewportSize(Dimension)
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.dialogs.error.ErrorListDialog
    //#    method: void initComponents()
    //#    unanalyzed callee: void com.dmdirc.addons.ui_swing.dialogs.error.ErrorTable:setPreferredScrollableViewportSize(Dimension)

        scrollPane.setViewportView(table);

        errorDetails = new ErrorDetailPanel();
    }
    //#ErrorListDialog.java:113: end of method: void com.dmdirc.addons.ui_swing.dialogs.error.ErrorListDialog.initComponents()

    /** Initialises the buttons. */
    private void initButtons() {
        orderButtons(new JButton(), new JButton());
    //#ErrorListDialog.java:117: method: void com.dmdirc.addons.ui_swing.dialogs.error.ErrorListDialog.initButtons()
    //#ErrorListDialog.java:117: Warning: method not available - call not analyzed
    //#    call on void com.dmdirc.addons.ui_swing.dialogs.error.ErrorListDialog:orderButtons(JButton, JButton)
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.dialogs.error.ErrorListDialog
    //#    method: void initButtons()
    //#    unanalyzed callee: void com.dmdirc.addons.ui_swing.dialogs.error.ErrorListDialog:orderButtons(JButton, JButton)
    //#input(void initButtons()): this
    //#input(void initButtons()): this.tableModel
    //#input(void initButtons()): this.tableModel.errors
    //#output(void initButtons()): new JButton(initButtons#3) num objects
    //#output(void initButtons()): new JButton(initButtons#4) num objects
    //#output(void initButtons()): new JButton(initButtons#5) num objects
    //#output(void initButtons()): this.deleteAllButton
    //#output(void initButtons()): this.deleteButton
    //#output(void initButtons()): this.sendButton
    //#new obj(void initButtons()): new JButton(initButtons#3)
    //#new obj(void initButtons()): new JButton(initButtons#4)
    //#new obj(void initButtons()): new JButton(initButtons#5)
    //#pre[2] (void initButtons()): this.tableModel != null
    //#pre[3] (void initButtons()): this.tableModel.errors != null
    //#presumption(void initButtons()): com.dmdirc.addons.ui_swing.dialogs.error.ErrorListDialog:getCancelButton(...)@119 != null
    //#post(void initButtons()): this.deleteAllButton == &new JButton(initButtons#5)
    //#post(void initButtons()): this.deleteButton == &new JButton(initButtons#4)
    //#post(void initButtons()): this.sendButton == &new JButton(initButtons#3)
    //#post(void initButtons()): new JButton(initButtons#3) num objects == 1
    //#post(void initButtons()): new JButton(initButtons#4) num objects == 1
    //#post(void initButtons()): new JButton(initButtons#5) num objects == 1
    //#unanalyzed(void initButtons()): Effects-of-calling:java.util.List:size
    //#unanalyzed(void initButtons()): Effects-of-calling:java.lang.Throwable:__curr_excep_obj
    //#test_vector(void initButtons()): java.util.List:size(...)@86: {-2_147_483_648..0}, {1..4_294_967_295}

        getCancelButton().setText("Close");
    //#ErrorListDialog.java:119: Warning: method not available - call not analyzed
    //#    call on JButton com.dmdirc.addons.ui_swing.dialogs.error.ErrorListDialog:getCancelButton()
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.dialogs.error.ErrorListDialog
    //#    method: void initButtons()
    //#    unanalyzed callee: JButton com.dmdirc.addons.ui_swing.dialogs.error.ErrorListDialog:getCancelButton()
        sendButton = new JButton("Send");
        deleteButton = new JButton("Delete");
        deleteAllButton = new JButton("Delete All");

        sendButton.setEnabled(false);
        deleteButton.setEnabled(false);
        if (tableModel.getRowCount() > 0) {
            deleteAllButton.setEnabled(true);
        } else {
            deleteAllButton.setEnabled(false);
        }
    }
    //#ErrorListDialog.java:131: end of method: void com.dmdirc.addons.ui_swing.dialogs.error.ErrorListDialog.initButtons()

    /** Initialises the listeners. */
    private void initListeners() {
        tableModel.addTableModelListener(this);
    //#ErrorListDialog.java:135: method: void com.dmdirc.addons.ui_swing.dialogs.error.ErrorListDialog.initListeners()
    //#ErrorListDialog.java:135: Warning: method not available - call not analyzed
    //#    call on void com.dmdirc.addons.ui_swing.dialogs.error.ErrorTableModel:addTableModelListener(TableModelListener)
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.dialogs.error.ErrorListDialog
    //#    method: void initListeners()
    //#    unanalyzed callee: void com.dmdirc.addons.ui_swing.dialogs.error.ErrorTableModel:addTableModelListener(TableModelListener)
    //#input(void initListeners()): this
    //#input(void initListeners()): this.deleteAllButton
    //#input(void initListeners()): this.deleteButton
    //#input(void initListeners()): this.sendButton
    //#input(void initListeners()): this.table
    //#input(void initListeners()): this.tableModel
    //#pre[2] (void initListeners()): this.deleteAllButton != null
    //#pre[3] (void initListeners()): this.deleteButton != null
    //#pre[4] (void initListeners()): this.sendButton != null
    //#pre[5] (void initListeners()): this.table != null
    //#pre[6] (void initListeners()): this.tableModel != null
    //#presumption(void initListeners()): com.dmdirc.addons.ui_swing.dialogs.error.ErrorListDialog:getCancelButton(...)@141 != null
    //#presumption(void initListeners()): com.dmdirc.addons.ui_swing.dialogs.error.ErrorListDialog:getOkButton(...)@140 != null
    //#presumption(void initListeners()): com.dmdirc.addons.ui_swing.dialogs.error.ErrorTable:getSelectionModel(...)@136 != null
        table.getSelectionModel().addListSelectionListener(this);
    //#ErrorListDialog.java:136: Warning: method not available - call not analyzed
    //#    call on ListSelectionModel com.dmdirc.addons.ui_swing.dialogs.error.ErrorTable:getSelectionModel()
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.dialogs.error.ErrorListDialog
    //#    method: void initListeners()
    //#    unanalyzed callee: ListSelectionModel com.dmdirc.addons.ui_swing.dialogs.error.ErrorTable:getSelectionModel()
        sendButton.addActionListener(this);
        deleteButton.addActionListener(this);
        deleteAllButton.addActionListener(this);
        getOkButton().addActionListener(this);
    //#ErrorListDialog.java:140: Warning: method not available - call not analyzed
    //#    call on JButton com.dmdirc.addons.ui_swing.dialogs.error.ErrorListDialog:getOkButton()
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.dialogs.error.ErrorListDialog
    //#    method: void initListeners()
    //#    unanalyzed callee: JButton com.dmdirc.addons.ui_swing.dialogs.error.ErrorListDialog:getOkButton()
        getCancelButton().addActionListener(this);
    //#ErrorListDialog.java:141: Warning: method not available - call not analyzed
    //#    call on JButton com.dmdirc.addons.ui_swing.dialogs.error.ErrorListDialog:getCancelButton()
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.dialogs.error.ErrorListDialog
    //#    method: void initListeners()
    //#    unanalyzed callee: JButton com.dmdirc.addons.ui_swing.dialogs.error.ErrorListDialog:getCancelButton()
    }
    //#ErrorListDialog.java:142: end of method: void com.dmdirc.addons.ui_swing.dialogs.error.ErrorListDialog.initListeners()

    /** Lays out the components. */
    private void layoutComponents() {
        final JSplitPane splitPane = new JSplitPane(JSplitPane.VERTICAL_SPLIT,
    //#ErrorListDialog.java:146: method: void com.dmdirc.addons.ui_swing.dialogs.error.ErrorListDialog.layoutComponents()
    //#input(void layoutComponents()): this
    //#input(void layoutComponents()): this.deleteAllButton
    //#input(void layoutComponents()): this.deleteButton
    //#input(void layoutComponents()): this.errorDetails
    //#input(void layoutComponents()): this.scrollPane
    //#input(void layoutComponents()): this.sendButton
    //#pre[2] (void layoutComponents()): init'ed(this.deleteAllButton)
    //#pre[3] (void layoutComponents()): init'ed(this.deleteButton)
    //#pre[4] (void layoutComponents()): init'ed(this.errorDetails)
    //#pre[5] (void layoutComponents()): init'ed(this.scrollPane)
    //#pre[6] (void layoutComponents()): init'ed(this.sendButton)
    //#presumption(void layoutComponents()): (int) (net.miginfocom.layout.UnitValue:getValue(...)@161) in {-2_147_483_648..4_294_967_295}
    //#presumption(void layoutComponents()): com.dmdirc.addons.ui_swing.dialogs.error.ErrorListDialog:getContentPane(...)@164 != null
    //#presumption(void layoutComponents()): net.miginfocom.layout.PlatformDefaults:getPanelInsets(...)@161 != null
                true);
        final JPanel panel = new JPanel();

        panel.setLayout(new MigLayout("fill"));
    //#ErrorListDialog.java:150: Warning: method not available - call not analyzed
    //#    call on void net.miginfocom.swing.MigLayout(String)
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.dialogs.error.ErrorListDialog
    //#    method: void layoutComponents()
    //#    unanalyzed callee: void net.miginfocom.swing.MigLayout(String)

        panel.add(errorDetails, "wrap, grow, push");
        panel.add(deleteAllButton, "split 4, tag left, sgx button");
        panel.add(deleteButton, "tag other, sgx button");
        panel.add(sendButton, "tag other, sgx button");
        panel.add(getCancelButton(), "tag ok, sgx button");
    //#ErrorListDialog.java:156: Warning: method not available - call not analyzed
    //#    call on JButton com.dmdirc.addons.ui_swing.dialogs.error.ErrorListDialog:getCancelButton()
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.dialogs.error.ErrorListDialog
    //#    method: void layoutComponents()
    //#    unanalyzed callee: JButton com.dmdirc.addons.ui_swing.dialogs.error.ErrorListDialog:getCancelButton()

        splitPane.setTopComponent(scrollPane);
        splitPane.setBottomComponent(panel);

        splitPane.setDividerSize((int) PlatformDefaults.getPanelInsets(0).
    //#ErrorListDialog.java:161: Warning: method not available - call not analyzed
    //#    call on UnitValue net.miginfocom.layout.PlatformDefaults:getPanelInsets(int)
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.dialogs.error.ErrorListDialog
    //#    method: void layoutComponents()
    //#    unanalyzed callee: UnitValue net.miginfocom.layout.PlatformDefaults:getPanelInsets(int)
    //#ErrorListDialog.java:161: Warning: method not available - call not analyzed
    //#    call on float net.miginfocom.layout.UnitValue:getValue()
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.dialogs.error.ErrorListDialog
    //#    method: void layoutComponents()
    //#    unanalyzed callee: float net.miginfocom.layout.UnitValue:getValue()
                getValue());

        getContentPane().add(splitPane);
    //#ErrorListDialog.java:164: Warning: method not available - call not analyzed
    //#    call on Container com.dmdirc.addons.ui_swing.dialogs.error.ErrorListDialog:getContentPane()
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.dialogs.error.ErrorListDialog
    //#    method: void layoutComponents()
    //#    unanalyzed callee: Container com.dmdirc.addons.ui_swing.dialogs.error.ErrorListDialog:getContentPane()
    }
    //#ErrorListDialog.java:165: end of method: void com.dmdirc.addons.ui_swing.dialogs.error.ErrorListDialog.layoutComponents()

    /** {@inheritDoc}. */
    @Override
    public void valueChanged(final ListSelectionEvent e) {
        if (!e.getValueIsAdjusting()) {
    //#ErrorListDialog.java:170: method: void com.dmdirc.addons.ui_swing.dialogs.error.ErrorListDialog.valueChanged(ListSelectionEvent)
    //#input(void valueChanged(ListSelectionEvent)): com.dmdirc.logger.ErrorReportStatus.FINISHED
    //#input(void valueChanged(ListSelectionEvent)): com.dmdirc.logger.ErrorReportStatus.NOT_APPLICABLE
    //#input(void valueChanged(ListSelectionEvent)): e
    //#input(void valueChanged(ListSelectionEvent)): this
    //#input(void valueChanged(ListSelectionEvent)): this.deleteButton
    //#input(void valueChanged(ListSelectionEvent)): this.errorDetails
    //#input(void valueChanged(ListSelectionEvent)): this.rowBeingDeleted
    //#input(void valueChanged(ListSelectionEvent)): this.selectedRow
    //#input(void valueChanged(ListSelectionEvent)): this.selectedRow.__Lock
    //#input(void valueChanged(ListSelectionEvent)): this.sendButton
    //#input(void valueChanged(ListSelectionEvent)): this.table
    //#input(void valueChanged(ListSelectionEvent)): this.tableModel
    //#input(void valueChanged(ListSelectionEvent)): this.tableModel.errors
    //#output(void valueChanged(ListSelectionEvent)): this.errorDetails.error
    //#output(void valueChanged(ListSelectionEvent)): this.rowBeingDeleted
    //#pre[1] (void valueChanged(ListSelectionEvent)): e != null
    //#pre[3] (void valueChanged(ListSelectionEvent)): (soft) init'ed(this.rowBeingDeleted)
    //#pre[5] (void valueChanged(ListSelectionEvent)): (soft) this.deleteButton != null
    //#pre[6] (void valueChanged(ListSelectionEvent)): (soft) this.errorDetails != null
    //#pre[7] (void valueChanged(ListSelectionEvent)): (soft) this.selectedRow != null
    //#pre[8] (void valueChanged(ListSelectionEvent)): (soft) this.sendButton != null
    //#pre[9] (void valueChanged(ListSelectionEvent)): (soft) this.table != null
    //#pre[10] (void valueChanged(ListSelectionEvent)): (soft) this.tableModel != null
    //#pre[11] (void valueChanged(ListSelectionEvent)): (soft) this.tableModel.errors != null
    //#presumption(void valueChanged(ListSelectionEvent)): com.dmdirc.addons.ui_swing.dialogs.error.ErrorTable:getRowSorter(...)@173 != null
    //#presumption(void valueChanged(ListSelectionEvent)): com.dmdirc.addons.ui_swing.dialogs.error.ErrorTable:getSelectionModel(...)@190 != null
    //#presumption(void valueChanged(ListSelectionEvent)): init'ed(com.dmdirc.logger.ErrorReportStatus.FINISHED)
    //#presumption(void valueChanged(ListSelectionEvent)): init'ed(com.dmdirc.logger.ErrorReportStatus.NOT_APPLICABLE)
    //#presumption(void valueChanged(ListSelectionEvent)): java.util.List:get(...)@194 != null
    //#post(void valueChanged(ListSelectionEvent)): possibly_updated(this.errorDetails.error)
    //#post(void valueChanged(ListSelectionEvent)): init'ed(this.rowBeingDeleted)
    //#unanalyzed(void valueChanged(ListSelectionEvent)): Effects-of-calling:java.lang.Throwable:__curr_excep_obj
    //#unanalyzed(void valueChanged(ListSelectionEvent)): Effects-of-calling:javax.swing.SwingUtilities:invokeLater
    //#unanalyzed(void valueChanged(ListSelectionEvent)): Effects-of-calling:java.util.List:get
    //#test_vector(void valueChanged(ListSelectionEvent)): this.rowBeingDeleted: {0}, {1}
    //#test_vector(void valueChanged(ListSelectionEvent)): com.dmdirc.addons.ui_swing.dialogs.error.ErrorTable:getSelectedRow(...)@171: {-2_147_483_648..-1}, {0..4_294_967_295}
    //#test_vector(void valueChanged(ListSelectionEvent)): javax.swing.event.ListSelectionEvent:getValueIsAdjusting(...)@170: {1}, {0}
            final int localRow = table.getSelectedRow();
    //#ErrorListDialog.java:171: Warning: method not available - call not analyzed
    //#    call on int com.dmdirc.addons.ui_swing.dialogs.error.ErrorTable:getSelectedRow()
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.dialogs.error.ErrorListDialog
    //#    method: void valueChanged(ListSelectionEvent)
    //#    unanalyzed callee: int com.dmdirc.addons.ui_swing.dialogs.error.ErrorTable:getSelectedRow()
            if (localRow > -1) {
                final ProgramError error = tableModel.getError(
    //#ErrorListDialog.java:173: Warning: method not available - call not analyzed
    //#    call on RowSorter com.dmdirc.addons.ui_swing.dialogs.error.ErrorTable:getRowSorter()
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.dialogs.error.ErrorListDialog
    //#    method: void valueChanged(ListSelectionEvent)
    //#    unanalyzed callee: RowSorter com.dmdirc.addons.ui_swing.dialogs.error.ErrorTable:getRowSorter()
                        table.getRowSorter().convertRowIndexToModel(localRow));
                errorDetails.setError(error);
                deleteButton.setEnabled(true);
                if (error.getReportStatus() == ErrorReportStatus.NOT_APPLICABLE ||
    //#ErrorListDialog.java:177: Warning: method not available - call not analyzed
    //#    call on ErrorReportStatus com.dmdirc.logger.ProgramError:getReportStatus()
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.dialogs.error.ErrorListDialog
    //#    method: void valueChanged(ListSelectionEvent)
    //#    unanalyzed callee: ErrorReportStatus com.dmdirc.logger.ProgramError:getReportStatus()
                        error.getReportStatus() == ErrorReportStatus.FINISHED) {
                    sendButton.setEnabled(false);
                } else {
                    sendButton.setEnabled(true);
                }
            } else {
                errorDetails.setError(null);
                deleteButton.setEnabled(false);
                sendButton.setEnabled(false);
            }
            synchronized (selectedRow) {
                if (rowBeingDeleted) {
                    table.getSelectionModel().setSelectionInterval(selectedRow.
    //#ErrorListDialog.java:190: Warning: method not available - call not analyzed
    //#    call on ListSelectionModel com.dmdirc.addons.ui_swing.dialogs.error.ErrorTable:getSelectionModel()
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.dialogs.error.ErrorListDialog
    //#    method: void valueChanged(ListSelectionEvent)
    //#    unanalyzed callee: ListSelectionModel com.dmdirc.addons.ui_swing.dialogs.error.ErrorTable:getSelectionModel()
                            get(), selectedRow.get());
                    rowBeingDeleted = false;
                }
                selectedRow.set(localRow);
            }
        }
    }
    //#ErrorListDialog.java:197: end of method: void com.dmdirc.addons.ui_swing.dialogs.error.ErrorListDialog.valueChanged(ListSelectionEvent)

    /** 
     * {@inheritDoc}.
     * 
     * @param e Action event
     */
    @Override
    public void actionPerformed(final ActionEvent e) {
        if (e.getSource() == getCancelButton()) {
    //#ErrorListDialog.java:206: method: void com.dmdirc.addons.ui_swing.dialogs.error.ErrorListDialog.actionPerformed(ActionEvent)
    //#ErrorListDialog.java:206: Warning: method not available - call not analyzed
    //#    call on JButton com.dmdirc.addons.ui_swing.dialogs.error.ErrorListDialog:getCancelButton()
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.dialogs.error.ErrorListDialog
    //#    method: void actionPerformed(ActionEvent)
    //#    unanalyzed callee: JButton com.dmdirc.addons.ui_swing.dialogs.error.ErrorListDialog:getCancelButton()
    //#input(void actionPerformed(ActionEvent)): e
    //#input(void actionPerformed(ActionEvent)): this
    //#input(void actionPerformed(ActionEvent)): this.deleteAllButton
    //#input(void actionPerformed(ActionEvent)): this.deleteButton
    //#input(void actionPerformed(ActionEvent)): this.selectedRow
    //#input(void actionPerformed(ActionEvent)): this.selectedRow.__Lock
    //#input(void actionPerformed(ActionEvent)): this.sendButton
    //#input(void actionPerformed(ActionEvent)): this.table
    //#input(void actionPerformed(ActionEvent)): this.tableModel
    //#input(void actionPerformed(ActionEvent)): this.tableModel.errors
    //#pre[1] (void actionPerformed(ActionEvent)): e != null
    //#pre[3] (void actionPerformed(ActionEvent)): (soft) init'ed(this.deleteAllButton)
    //#pre[4] (void actionPerformed(ActionEvent)): (soft) init'ed(this.deleteButton)
    //#pre[6] (void actionPerformed(ActionEvent)): (soft) init'ed(this.sendButton)
    //#pre[7] (void actionPerformed(ActionEvent)): (soft) this.table != null
    //#pre[8] (void actionPerformed(ActionEvent)): (soft) this.tableModel != null
    //#pre[9] (void actionPerformed(ActionEvent)): (soft) this.tableModel.errors != null
    //#presumption(void actionPerformed(ActionEvent)): com.dmdirc.addons.ui_swing.dialogs.error.ErrorTable:getRowSorter(...)@210 != null
    //#presumption(void actionPerformed(ActionEvent)): com.dmdirc.addons.ui_swing.dialogs.error.ErrorTable:getRowSorter(...)@216 != null
    //#presumption(void actionPerformed(ActionEvent)): com.dmdirc.logger.ErrorManager:getErrorManager(...)@210 != null
    //#presumption(void actionPerformed(ActionEvent)): com.dmdirc.logger.ErrorManager:getErrorManager(...)@216 != null
    //#presumption(void actionPerformed(ActionEvent)): com.dmdirc.logger.ErrorManager:getErrorManager(...)@221 != null
    //#unanalyzed(void actionPerformed(ActionEvent)): Effects-of-calling:java.lang.Throwable:__curr_excep_obj
    //#unanalyzed(void actionPerformed(ActionEvent)): Effects-of-calling:java.util.List:get
            setVisible(false);
    //#ErrorListDialog.java:207: Warning: method not available - call not analyzed
    //#    call on void com.dmdirc.addons.ui_swing.dialogs.error.ErrorListDialog:setVisible(bool)
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.dialogs.error.ErrorListDialog
    //#    method: void actionPerformed(ActionEvent)
    //#    unanalyzed callee: void com.dmdirc.addons.ui_swing.dialogs.error.ErrorListDialog:setVisible(bool)
        } else if (e.getSource() == deleteButton) {
            synchronized (selectedRow) {
                ErrorManager.getErrorManager().deleteError(tableModel.getError(
    //#ErrorListDialog.java:210: Warning: method not available - call not analyzed
    //#    call on ErrorManager com.dmdirc.logger.ErrorManager:getErrorManager()
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.dialogs.error.ErrorListDialog
    //#    method: void actionPerformed(ActionEvent)
    //#    unanalyzed callee: ErrorManager com.dmdirc.logger.ErrorManager:getErrorManager()
    //#ErrorListDialog.java:210: Warning: method not available - call not analyzed
    //#    call on RowSorter com.dmdirc.addons.ui_swing.dialogs.error.ErrorTable:getRowSorter()
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.dialogs.error.ErrorListDialog
    //#    method: void actionPerformed(ActionEvent)
    //#    unanalyzed callee: RowSorter com.dmdirc.addons.ui_swing.dialogs.error.ErrorTable:getRowSorter()
    //#ErrorListDialog.java:210: Warning: method not available - call not analyzed
    //#    call on int com.dmdirc.addons.ui_swing.dialogs.error.ErrorTable:getSelectedRow()
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.dialogs.error.ErrorListDialog
    //#    method: void actionPerformed(ActionEvent)
    //#    unanalyzed callee: int com.dmdirc.addons.ui_swing.dialogs.error.ErrorTable:getSelectedRow()
    //#ErrorListDialog.java:210: Warning: method not available - call not analyzed
    //#    call on void com.dmdirc.logger.ErrorManager:deleteError(ProgramError)
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.dialogs.error.ErrorListDialog
    //#    method: void actionPerformed(ActionEvent)
    //#    unanalyzed callee: void com.dmdirc.logger.ErrorManager:deleteError(ProgramError)
                        table.getRowSorter().convertRowIndexToModel(
                        table.getSelectedRow())));
            }
        } else if (e.getSource() == sendButton) {
            synchronized (selectedRow) {
                ErrorManager.getErrorManager().sendError(tableModel.getError(
    //#ErrorListDialog.java:216: Warning: method not available - call not analyzed
    //#    call on ErrorManager com.dmdirc.logger.ErrorManager:getErrorManager()
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.dialogs.error.ErrorListDialog
    //#    method: void actionPerformed(ActionEvent)
    //#    unanalyzed callee: ErrorManager com.dmdirc.logger.ErrorManager:getErrorManager()
    //#ErrorListDialog.java:216: Warning: method not available - call not analyzed
    //#    call on RowSorter com.dmdirc.addons.ui_swing.dialogs.error.ErrorTable:getRowSorter()
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.dialogs.error.ErrorListDialog
    //#    method: void actionPerformed(ActionEvent)
    //#    unanalyzed callee: RowSorter com.dmdirc.addons.ui_swing.dialogs.error.ErrorTable:getRowSorter()
    //#ErrorListDialog.java:216: Warning: method not available - call not analyzed
    //#    call on int com.dmdirc.addons.ui_swing.dialogs.error.ErrorTable:getSelectedRow()
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.dialogs.error.ErrorListDialog
    //#    method: void actionPerformed(ActionEvent)
    //#    unanalyzed callee: int com.dmdirc.addons.ui_swing.dialogs.error.ErrorTable:getSelectedRow()
    //#ErrorListDialog.java:216: Warning: method not available - call not analyzed
    //#    call on void com.dmdirc.logger.ErrorManager:sendError(ProgramError)
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.dialogs.error.ErrorListDialog
    //#    method: void actionPerformed(ActionEvent)
    //#    unanalyzed callee: void com.dmdirc.logger.ErrorManager:sendError(ProgramError)
                        table.getRowSorter().convertRowIndexToModel(
                        table.getSelectedRow())));
            }
        } else if (e.getSource() == deleteAllButton) {
            ErrorManager.getErrorManager().deleteAll();
    //#ErrorListDialog.java:221: Warning: method not available - call not analyzed
    //#    call on ErrorManager com.dmdirc.logger.ErrorManager:getErrorManager()
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.dialogs.error.ErrorListDialog
    //#    method: void actionPerformed(ActionEvent)
    //#    unanalyzed callee: ErrorManager com.dmdirc.logger.ErrorManager:getErrorManager()
    //#ErrorListDialog.java:221: Warning: method not available - call not analyzed
    //#    call on void com.dmdirc.logger.ErrorManager:deleteAll()
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.dialogs.error.ErrorListDialog
    //#    method: void actionPerformed(ActionEvent)
    //#    unanalyzed callee: void com.dmdirc.logger.ErrorManager:deleteAll()
        }
    }
    //#ErrorListDialog.java:223: end of method: void com.dmdirc.addons.ui_swing.dialogs.error.ErrorListDialog.actionPerformed(ActionEvent)

    /**
     * {@inheritDoc}
     *
     * @param e Table model event
     */
    @Override
    public void tableChanged(final TableModelEvent e) {
        switch (e.getType()) {
    //#ErrorListDialog.java:232: method: void com.dmdirc.addons.ui_swing.dialogs.error.ErrorListDialog.tableChanged(TableModelEvent)
    //#input(void tableChanged(TableModelEvent)): com.dmdirc.logger.ErrorReportStatus.FINISHED
    //#input(void tableChanged(TableModelEvent)): com.dmdirc.logger.ErrorReportStatus.NOT_APPLICABLE
    //#input(void tableChanged(TableModelEvent)): e
    //#input(void tableChanged(TableModelEvent)): this
    //#input(void tableChanged(TableModelEvent)): this.deleteAllButton
    //#input(void tableChanged(TableModelEvent)): this.selectedRow
    //#input(void tableChanged(TableModelEvent)): this.selectedRow.__Lock
    //#input(void tableChanged(TableModelEvent)): this.sendButton
    //#input(void tableChanged(TableModelEvent)): this.table
    //#input(void tableChanged(TableModelEvent)): this.tableModel
    //#input(void tableChanged(TableModelEvent)): this.tableModel.errors
    //#output(void tableChanged(TableModelEvent)): this.rowBeingDeleted
    //#pre[1] (void tableChanged(TableModelEvent)): e != null
    //#pre[4] (void tableChanged(TableModelEvent)): this.deleteAllButton != null
    //#pre[8] (void tableChanged(TableModelEvent)): this.tableModel != null
    //#pre[9] (void tableChanged(TableModelEvent)): this.tableModel.errors != null
    //#pre[5] (void tableChanged(TableModelEvent)): (soft) this.selectedRow != null
    //#pre[6] (void tableChanged(TableModelEvent)): (soft) this.sendButton != null
    //#pre[7] (void tableChanged(TableModelEvent)): (soft) this.table != null
    //#presumption(void tableChanged(TableModelEvent)): com.dmdirc.addons.ui_swing.dialogs.error.ErrorTable:getSelectionModel(...)@238 != null
    //#presumption(void tableChanged(TableModelEvent)): com.dmdirc.addons.ui_swing.dialogs.error.ErrorTable:getSelectionModel(...)@246 != null
    //#presumption(void tableChanged(TableModelEvent)): init'ed(com.dmdirc.logger.ErrorReportStatus.FINISHED)
    //#presumption(void tableChanged(TableModelEvent)): init'ed(com.dmdirc.logger.ErrorReportStatus.NOT_APPLICABLE)
    //#presumption(void tableChanged(TableModelEvent)): java.util.List:get(...)@194 != null
    //#presumption(void tableChanged(TableModelEvent)): java.util.List:size(...)@86 >= -2_147_483_647
    //#post(void tableChanged(TableModelEvent)): possibly_updated(this.rowBeingDeleted)
    //#unanalyzed(void tableChanged(TableModelEvent)): Effects-of-calling:java.util.List:size
    //#unanalyzed(void tableChanged(TableModelEvent)): Effects-of-calling:java.lang.Throwable:__curr_excep_obj
    //#unanalyzed(void tableChanged(TableModelEvent)): Effects-of-calling:java.util.List:get
    //#test_vector(void tableChanged(TableModelEvent)): java.util.List:size(...)@86: {-2_147_483_648..0}, {1..4_294_967_295}
    //#test_vector(void tableChanged(TableModelEvent)): javax.swing.event.TableModelEvent:getType(...)@232: {-1}, {0}, {1}, {-2_147_483_648..-2, 2..4_294_967_295}
            case TableModelEvent.DELETE:
                synchronized (selectedRow) {
                    if (selectedRow.get() >= tableModel.getRowCount()) {
                        selectedRow.set(tableModel.getRowCount() - 1);
                    }
                    table.getSelectionModel().setSelectionInterval(selectedRow.
    //#ErrorListDialog.java:238: Warning: method not available - call not analyzed
    //#    call on ListSelectionModel com.dmdirc.addons.ui_swing.dialogs.error.ErrorTable:getSelectionModel()
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.dialogs.error.ErrorListDialog
    //#    method: void tableChanged(TableModelEvent)
    //#    unanalyzed callee: ListSelectionModel com.dmdirc.addons.ui_swing.dialogs.error.ErrorTable:getSelectionModel()
                            get(),
                            selectedRow.get());
                    rowBeingDeleted = true;
                }
                break;
            case TableModelEvent.INSERT:
                synchronized (selectedRow) {
                    table.getSelectionModel().setSelectionInterval(selectedRow.
    //#ErrorListDialog.java:246: Warning: method not available - call not analyzed
    //#    call on ListSelectionModel com.dmdirc.addons.ui_swing.dialogs.error.ErrorTable:getSelectionModel()
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.dialogs.error.ErrorListDialog
    //#    method: void tableChanged(TableModelEvent)
    //#    unanalyzed callee: ListSelectionModel com.dmdirc.addons.ui_swing.dialogs.error.ErrorTable:getSelectionModel()
                            get(),
                            selectedRow.get());
                }
                break;
            case TableModelEvent.UPDATE:
                final int errorRow = e.getFirstRow();
                final ProgramError error = tableModel.getError(errorRow);
                if (errorRow == table.getSelectedRow()) {
    //#ErrorListDialog.java:254: Warning: method not available - call not analyzed
    //#    call on int com.dmdirc.addons.ui_swing.dialogs.error.ErrorTable:getSelectedRow()
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.dialogs.error.ErrorListDialog
    //#    method: void tableChanged(TableModelEvent)
    //#    unanalyzed callee: int com.dmdirc.addons.ui_swing.dialogs.error.ErrorTable:getSelectedRow()
                    if (error.getReportStatus() ==
    //#ErrorListDialog.java:255: Warning: method not available - call not analyzed
    //#    call on ErrorReportStatus com.dmdirc.logger.ProgramError:getReportStatus()
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.dialogs.error.ErrorListDialog
    //#    method: void tableChanged(TableModelEvent)
    //#    unanalyzed callee: ErrorReportStatus com.dmdirc.logger.ProgramError:getReportStatus()
                            ErrorReportStatus.NOT_APPLICABLE ||
                            error.getReportStatus() ==
                            ErrorReportStatus.FINISHED) {
                        sendButton.setEnabled(false);
                    } else {
                        sendButton.setEnabled(true);
                    }
                }
                break;
        }
        if (tableModel.getRowCount() > 0) {
            deleteAllButton.setEnabled(true);
        } else {
            deleteAllButton.setEnabled(false);
        }
    }
    //#ErrorListDialog.java:271: end of method: void com.dmdirc.addons.ui_swing.dialogs.error.ErrorListDialog.tableChanged(TableModelEvent)
}
    //#output(com.dmdirc.addons.ui_swing.dialogs.error.ErrorListDialog__static_init): __Descendant_Table[com/dmdirc/addons/ui_swing/dialogs/error/ErrorListDialog]
    //#output(com.dmdirc.addons.ui_swing.dialogs.error.ErrorListDialog__static_init): __Dispatch_Table.actionPerformed(Ljava/awt/event/ActionEvent;)V
    //#output(com.dmdirc.addons.ui_swing.dialogs.error.ErrorListDialog__static_init): __Dispatch_Table.initButtons()V
    //#output(com.dmdirc.addons.ui_swing.dialogs.error.ErrorListDialog__static_init): __Dispatch_Table.initComponents()V
    //#output(com.dmdirc.addons.ui_swing.dialogs.error.ErrorListDialog__static_init): __Dispatch_Table.initListeners()V
    //#output(com.dmdirc.addons.ui_swing.dialogs.error.ErrorListDialog__static_init): __Dispatch_Table.layoutComponents()V
    //#output(com.dmdirc.addons.ui_swing.dialogs.error.ErrorListDialog__static_init): __Dispatch_Table.tableChanged(Ljavax/swing/event/TableModelEvent;)V
    //#output(com.dmdirc.addons.ui_swing.dialogs.error.ErrorListDialog__static_init): __Dispatch_Table.valueChanged(Ljavax/swing/event/ListSelectionEvent;)V
    //#post(com.dmdirc.addons.ui_swing.dialogs.error.ErrorListDialog__static_init): __Descendant_Table[com/dmdirc/addons/ui_swing/dialogs/error/ErrorListDialog] == &__Dispatch_Table
    //#post(com.dmdirc.addons.ui_swing.dialogs.error.ErrorListDialog__static_init): __Dispatch_Table.actionPerformed(Ljava/awt/event/ActionEvent;)V == &actionPerformed
    //#post(com.dmdirc.addons.ui_swing.dialogs.error.ErrorListDialog__static_init): __Dispatch_Table.initButtons()V == &initButtons
    //#post(com.dmdirc.addons.ui_swing.dialogs.error.ErrorListDialog__static_init): __Dispatch_Table.initComponents()V == &initComponents
    //#post(com.dmdirc.addons.ui_swing.dialogs.error.ErrorListDialog__static_init): __Dispatch_Table.initListeners()V == &initListeners
    //#post(com.dmdirc.addons.ui_swing.dialogs.error.ErrorListDialog__static_init): __Dispatch_Table.layoutComponents()V == &layoutComponents
    //#post(com.dmdirc.addons.ui_swing.dialogs.error.ErrorListDialog__static_init): __Dispatch_Table.tableChanged(Ljavax/swing/event/TableModelEvent;)V == &tableChanged
    //#post(com.dmdirc.addons.ui_swing.dialogs.error.ErrorListDialog__static_init): __Dispatch_Table.valueChanged(Ljavax/swing/event/ListSelectionEvent;)V == &valueChanged
    //#ErrorListDialog.java:: end of method: com.dmdirc.addons.ui_swing.dialogs.error.ErrorListDialog.com.dmdirc.addons.ui_swing.dialogs.error.ErrorListDialog__static_init
    //#ErrorListDialog.java:: end of class: com.dmdirc.addons.ui_swing.dialogs.error.ErrorListDialog
