//# 1 errors, 205 messages
//#
/*
    //#UpdateConfigPanel.java:1:1: class: com.dmdirc.addons.ui_swing.dialogs.prefs.UpdateConfigPanel
    //#UpdateConfigPanel.java:1:1: method: com.dmdirc.addons.ui_swing.dialogs.prefs.UpdateConfigPanel.com.dmdirc.addons.ui_swing.dialogs.prefs.UpdateConfigPanel__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.prefs;

import com.dmdirc.config.ConfigManager;
import com.dmdirc.config.Identity;
import com.dmdirc.config.IdentityManager;
import com.dmdirc.config.prefs.PreferencesInterface;
import com.dmdirc.addons.ui_swing.components.PackingTable;
import com.dmdirc.updater.UpdateChecker;

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

import javax.swing.JButton;
import javax.swing.JCheckBox;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JScrollPane;

import net.miginfocom.swing.MigLayout;

/**
 * Updates configuration UI.
 */
public class UpdateConfigPanel extends JPanel implements ActionListener,
        PreferencesInterface {

    /**
     * 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 = 1;
    /** Global checkbox. */
    private JCheckBox enable;
    /** Table scroll pane, */
    private JScrollPane scrollPane;
    /** Component table model. */
    private UpdateTableModel tableModel;
    /** Component table. */
    private PackingTable table;
    /** Check now button. */
    private JButton checkNow;

    /**
     * Instantiates a new update config panel.
     */
    public UpdateConfigPanel() {
    //#UpdateConfigPanel.java:69: method: void com.dmdirc.addons.ui_swing.dialogs.prefs.UpdateConfigPanel.com.dmdirc.addons.ui_swing.dialogs.prefs.UpdateConfigPanel()
    //#input(void com.dmdirc.addons.ui_swing.dialogs.prefs.UpdateConfigPanel()): "fillx, ins 0, hmax "._tainted
    //#input(void com.dmdirc.addons.ui_swing.dialogs.prefs.UpdateConfigPanel()): com/dmdirc/addons/ui_swing/dialogs/prefs/SwingPreferencesDialog.CLIENT_HEIGHT
    //#input(void com.dmdirc.addons.ui_swing.dialogs.prefs.UpdateConfigPanel()): this
    //#output(void com.dmdirc.addons.ui_swing.dialogs.prefs.UpdateConfigPanel()): new ArrayList(UpdateTableModel#1) num objects
    //#output(void com.dmdirc.addons.ui_swing.dialogs.prefs.UpdateConfigPanel()): new HashMap(UpdateTableModel#2) num objects
    //#output(void com.dmdirc.addons.ui_swing.dialogs.prefs.UpdateConfigPanel()): new JButton(initComponents#5) num objects
    //#output(void com.dmdirc.addons.ui_swing.dialogs.prefs.UpdateConfigPanel()): new JCheckBox(initComponents#1) num objects
    //#output(void com.dmdirc.addons.ui_swing.dialogs.prefs.UpdateConfigPanel()): new JScrollPane(initComponents#2) num objects
    //#output(void com.dmdirc.addons.ui_swing.dialogs.prefs.UpdateConfigPanel()): new PackingTable(initComponents#4) num objects
    //#output(void com.dmdirc.addons.ui_swing.dialogs.prefs.UpdateConfigPanel()): new UpdateTableModel(initComponents#3) num objects
    //#output(void com.dmdirc.addons.ui_swing.dialogs.prefs.UpdateConfigPanel()): new UpdateTableModel(initComponents#3).__Tag
    //#output(void com.dmdirc.addons.ui_swing.dialogs.prefs.UpdateConfigPanel()): new UpdateTableModel(initComponents#3).enabled
    //#output(void com.dmdirc.addons.ui_swing.dialogs.prefs.UpdateConfigPanel()): new UpdateTableModel(initComponents#3).updates
    //#output(void com.dmdirc.addons.ui_swing.dialogs.prefs.UpdateConfigPanel()): this.checkNow
    //#output(void com.dmdirc.addons.ui_swing.dialogs.prefs.UpdateConfigPanel()): this.enable
    //#output(void com.dmdirc.addons.ui_swing.dialogs.prefs.UpdateConfigPanel()): this.scrollPane
    //#output(void com.dmdirc.addons.ui_swing.dialogs.prefs.UpdateConfigPanel()): this.table
    //#output(void com.dmdirc.addons.ui_swing.dialogs.prefs.UpdateConfigPanel()): this.tableModel
    //#new obj(void com.dmdirc.addons.ui_swing.dialogs.prefs.UpdateConfigPanel()): new ArrayList(UpdateTableModel#1)
    //#new obj(void com.dmdirc.addons.ui_swing.dialogs.prefs.UpdateConfigPanel()): new HashMap(UpdateTableModel#2)
    //#new obj(void com.dmdirc.addons.ui_swing.dialogs.prefs.UpdateConfigPanel()): new JButton(initComponents#5)
    //#new obj(void com.dmdirc.addons.ui_swing.dialogs.prefs.UpdateConfigPanel()): new JCheckBox(initComponents#1)
    //#new obj(void com.dmdirc.addons.ui_swing.dialogs.prefs.UpdateConfigPanel()): new JScrollPane(initComponents#2)
    //#new obj(void com.dmdirc.addons.ui_swing.dialogs.prefs.UpdateConfigPanel()): new PackingTable(initComponents#4)
    //#new obj(void com.dmdirc.addons.ui_swing.dialogs.prefs.UpdateConfigPanel()): new UpdateTableModel(initComponents#3)
    //#pre[1] (void com.dmdirc.addons.ui_swing.dialogs.prefs.UpdateConfigPanel()): init'ed(com/dmdirc/addons/ui_swing/dialogs/prefs/SwingPreferencesDialog.CLIENT_HEIGHT)
    //#post(void com.dmdirc.addons.ui_swing.dialogs.prefs.UpdateConfigPanel()): this.checkNow == &new JButton(initComponents#5)
    //#post(void com.dmdirc.addons.ui_swing.dialogs.prefs.UpdateConfigPanel()): this.enable == &new JCheckBox(initComponents#1)
    //#post(void com.dmdirc.addons.ui_swing.dialogs.prefs.UpdateConfigPanel()): this.scrollPane == &new JScrollPane(initComponents#2)
    //#post(void com.dmdirc.addons.ui_swing.dialogs.prefs.UpdateConfigPanel()): this.table == &new PackingTable(initComponents#4)
    //#post(void com.dmdirc.addons.ui_swing.dialogs.prefs.UpdateConfigPanel()): this.tableModel == &new UpdateTableModel(initComponents#3)
    //#post(void com.dmdirc.addons.ui_swing.dialogs.prefs.UpdateConfigPanel()): new ArrayList(UpdateTableModel#1) num objects == 1
    //#post(void com.dmdirc.addons.ui_swing.dialogs.prefs.UpdateConfigPanel()): new HashMap(UpdateTableModel#2) num objects == 1
    //#post(void com.dmdirc.addons.ui_swing.dialogs.prefs.UpdateConfigPanel()): new JButton(initComponents#5) num objects == 1
    //#post(void com.dmdirc.addons.ui_swing.dialogs.prefs.UpdateConfigPanel()): new JCheckBox(initComponents#1) num objects == 1
    //#post(void com.dmdirc.addons.ui_swing.dialogs.prefs.UpdateConfigPanel()): new JScrollPane(initComponents#2) num objects == 1
    //#post(void com.dmdirc.addons.ui_swing.dialogs.prefs.UpdateConfigPanel()): new PackingTable(initComponents#4) num objects == 1
    //#post(void com.dmdirc.addons.ui_swing.dialogs.prefs.UpdateConfigPanel()): new UpdateTableModel(initComponents#3) num objects == 1
    //#post(void com.dmdirc.addons.ui_swing.dialogs.prefs.UpdateConfigPanel()): new UpdateTableModel(initComponents#3).__Tag == com/dmdirc/addons/ui_swing/dialogs/prefs/UpdateTableModel
    //#post(void com.dmdirc.addons.ui_swing.dialogs.prefs.UpdateConfigPanel()): new UpdateTableModel(initComponents#3).enabled == &new HashMap(UpdateTableModel#2)
    //#post(void com.dmdirc.addons.ui_swing.dialogs.prefs.UpdateConfigPanel()): new UpdateTableModel(initComponents#3).updates == &new ArrayList(UpdateTableModel#1)
    //#unanalyzed(void com.dmdirc.addons.ui_swing.dialogs.prefs.UpdateConfigPanel()): Effects-of-calling:com.dmdirc.config.IdentityManager:getGlobalConfig
    //#unanalyzed(void com.dmdirc.addons.ui_swing.dialogs.prefs.UpdateConfigPanel()): Effects-of-calling:javax.swing.JCheckBox
    //#unanalyzed(void com.dmdirc.addons.ui_swing.dialogs.prefs.UpdateConfigPanel()): Effects-of-calling:javax.swing.JScrollPane
    //#unanalyzed(void com.dmdirc.addons.ui_swing.dialogs.prefs.UpdateConfigPanel()): Effects-of-calling:com.dmdirc.updater.UpdateChecker:getComponents
    //#unanalyzed(void com.dmdirc.addons.ui_swing.dialogs.prefs.UpdateConfigPanel()): Effects-of-calling:javax.swing.table.AbstractTableModel
    //#unanalyzed(void com.dmdirc.addons.ui_swing.dialogs.prefs.UpdateConfigPanel()): Effects-of-calling:java.util.ArrayList
    //#unanalyzed(void com.dmdirc.addons.ui_swing.dialogs.prefs.UpdateConfigPanel()): Effects-of-calling:java.util.HashMap
    //#unanalyzed(void com.dmdirc.addons.ui_swing.dialogs.prefs.UpdateConfigPanel()): Effects-of-calling:java.util.List:iterator
    //#unanalyzed(void com.dmdirc.addons.ui_swing.dialogs.prefs.UpdateConfigPanel()): Effects-of-calling:java.util.Iterator:hasNext
    //#unanalyzed(void com.dmdirc.addons.ui_swing.dialogs.prefs.UpdateConfigPanel()): Effects-of-calling:java.util.Iterator:next
    //#unanalyzed(void com.dmdirc.addons.ui_swing.dialogs.prefs.UpdateConfigPanel()): Effects-of-calling:com.dmdirc.updater.UpdateChecker:isEnabled
    //#unanalyzed(void com.dmdirc.addons.ui_swing.dialogs.prefs.UpdateConfigPanel()): Effects-of-calling:java.lang.Boolean:valueOf
    //#unanalyzed(void com.dmdirc.addons.ui_swing.dialogs.prefs.UpdateConfigPanel()): Effects-of-calling:java.util.Map:put
    //#unanalyzed(void com.dmdirc.addons.ui_swing.dialogs.prefs.UpdateConfigPanel()): Effects-of-calling:com.dmdirc.addons.ui_swing.components.PackingTable
    //#unanalyzed(void com.dmdirc.addons.ui_swing.dialogs.prefs.UpdateConfigPanel()): Effects-of-calling:javax.swing.JButton
    //#unanalyzed(void com.dmdirc.addons.ui_swing.dialogs.prefs.UpdateConfigPanel()): Effects-of-calling:com.dmdirc.config.ConfigManager:getOptionBool
    //#unanalyzed(void com.dmdirc.addons.ui_swing.dialogs.prefs.UpdateConfigPanel()): Effects-of-calling:javax.swing.JCheckBox:setSelected
    //#unanalyzed(void com.dmdirc.addons.ui_swing.dialogs.prefs.UpdateConfigPanel()): Effects-of-calling:javax.swing.JScrollPane:setViewportView
    //#unanalyzed(void com.dmdirc.addons.ui_swing.dialogs.prefs.UpdateConfigPanel()): Effects-of-calling:javax.swing.JButton:addActionListener
    //#unanalyzed(void com.dmdirc.addons.ui_swing.dialogs.prefs.UpdateConfigPanel()): Effects-of-calling:java.lang.StringBuilder
    //#unanalyzed(void com.dmdirc.addons.ui_swing.dialogs.prefs.UpdateConfigPanel()): Effects-of-calling:java.lang.StringBuilder:append
    //#unanalyzed(void com.dmdirc.addons.ui_swing.dialogs.prefs.UpdateConfigPanel()): Effects-of-calling:java.lang.StringBuilder:toString
    //#unanalyzed(void com.dmdirc.addons.ui_swing.dialogs.prefs.UpdateConfigPanel()): Effects-of-calling:net.miginfocom.swing.MigLayout
    //#unanalyzed(void com.dmdirc.addons.ui_swing.dialogs.prefs.UpdateConfigPanel()): Effects-of-calling:com.dmdirc.addons.ui_swing.dialogs.prefs.UpdateConfigPanel:setLayout
    //#unanalyzed(void com.dmdirc.addons.ui_swing.dialogs.prefs.UpdateConfigPanel()): Effects-of-calling:javax.swing.JLabel
    //#unanalyzed(void com.dmdirc.addons.ui_swing.dialogs.prefs.UpdateConfigPanel()): Effects-of-calling:com.dmdirc.addons.ui_swing.dialogs.prefs.UpdateConfigPanel:add
        initComponents();
        addListeners();
        layoutComponents();
    }
    //#UpdateConfigPanel.java:73: end of method: void com.dmdirc.addons.ui_swing.dialogs.prefs.UpdateConfigPanel.com.dmdirc.addons.ui_swing.dialogs.prefs.UpdateConfigPanel()

    /** {@inheritDoc} */
    @Override
    public void save() {
        final Identity identity = IdentityManager.getConfigIdentity();
    //#UpdateConfigPanel.java:78: method: void com.dmdirc.addons.ui_swing.dialogs.prefs.UpdateConfigPanel.save()
    //#UpdateConfigPanel.java:78: Warning: method not available - call not analyzed
    //#    call on Identity com.dmdirc.config.IdentityManager:getConfigIdentity()
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.dialogs.prefs.UpdateConfigPanel
    //#    method: void save()
    //#    unanalyzed callee: Identity com.dmdirc.config.IdentityManager:getConfigIdentity()
    //#input(void save()): " >= "._tainted
    //#input(void save()): "Unknown column: "._tainted
    //#input(void save()): "enable-"._tainted
    //#input(void save()): com/dmdirc/addons/ui_swing/dialogs/prefs/UpdateTableModel.__Descendant_Table[com/dmdirc/addons/ui_swing/dialogs/prefs/UpdateTableModel]
    //#input(void save()): com/dmdirc/addons/ui_swing/dialogs/prefs/UpdateTableModel.__Descendant_Table[others]
    //#input(void save()): com/dmdirc/addons/ui_swing/dialogs/prefs/UpdateTableModel.__Dispatch_Table.getRowCount()I
    //#input(void save()): com/dmdirc/addons/ui_swing/dialogs/prefs/UpdateTableModel.__Dispatch_Table.getValueAt(II)Ljava/lang/Object;
    //#input(void save()): this
    //#input(void save()): this.enable
    //#input(void save()): this.tableModel
    //#input(void save()): this.tableModel.__Tag
    //#input(void save()): this.tableModel.enabled
    //#input(void save()): this.tableModel.updates
    //#pre[2] (void save()): this.enable != null
    //#pre[3] (void save()): this.tableModel != null
    //#pre[4] (void save()): this.tableModel.__Tag == com/dmdirc/addons/ui_swing/dialogs/prefs/UpdateTableModel
    //#pre[6] (void save()): this.tableModel.updates != null
    //#pre[5] (void save()): (soft) this.tableModel.enabled != null
    //#presumption(void save()): com.dmdirc.config.IdentityManager:getConfigIdentity(...)@78 != null
    //#unanalyzed(void save()): Effects-of-calling:java.util.List:size
    //#unanalyzed(void save()): Effects-of-calling:java.lang.Throwable:__curr_excep_obj
    //#unanalyzed(void save()): Effects-of-calling:java.lang.StringBuilder
    //#unanalyzed(void save()): Effects-of-calling:java.lang.StringBuilder:append
    //#unanalyzed(void save()): Effects-of-calling:java.lang.StringBuilder:toString
    //#unanalyzed(void save()): Effects-of-calling:java.lang.IllegalArgumentException
    //#unanalyzed(void save()): Effects-of-calling:java.lang.IndexOutOfBoundsException
    //#unanalyzed(void save()): Effects-of-calling:java.util.List:get
    //#unanalyzed(void save()): Effects-of-calling:com.dmdirc.updater.UpdateComponent:getFriendlyName
    //#unanalyzed(void save()): Effects-of-calling:java.util.Map:get
    //#unanalyzed(void save()): Effects-of-calling:com.dmdirc.updater.UpdateComponent:getFriendlyVersion
    //#test_vector(void save()): java.lang.Boolean:booleanValue(...)@87: {0}, {1}
    //#test_vector(void save()): javax.swing.JCheckBox:isSelected(...)@79: {0}, {1}
        if (enable.isSelected()) {
            identity.setOption("updater", "enable", true);
    //#UpdateConfigPanel.java:80: Warning: method not available - call not analyzed
    //#    call on void com.dmdirc.config.Identity:setOption(String, String, bool)
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.dialogs.prefs.UpdateConfigPanel
    //#    method: void save()
    //#    unanalyzed callee: void com.dmdirc.config.Identity:setOption(String, String, bool)
        } else {
            identity.setOption("updater", "enable", false);
    //#UpdateConfigPanel.java:82: Warning: method not available - call not analyzed
    //#    call on void com.dmdirc.config.Identity:setOption(String, String, bool)
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.dialogs.prefs.UpdateConfigPanel
    //#    method: void save()
    //#    unanalyzed callee: void com.dmdirc.config.Identity:setOption(String, String, bool)
        }

        for (int i = 0; i < tableModel.getRowCount(); i++) {
            final String componentName = (String) tableModel.getValueAt(i, 0);
            if ((Boolean) tableModel.getValueAt(i, 1)) {
    //#UpdateConfigPanel.java:87: ?null dereference
    //#    getValueAt(...) != null
    //#    severity: MEDIUM
    //#    class: com.dmdirc.addons.ui_swing.dialogs.prefs.UpdateConfigPanel
    //#    method: void save()
    //#    basic block: bb_6
    //#    assertion: getValueAt(...) != null
    //#    VN: getValueAt(...)
    //#    Expected: Inverse{null} or Invalid
    //#    Bad: Addr_Set{null}
    //#    Attribs:  Ptr  null in Bad
                identity.unsetOption("updater", "enable-" + componentName);
    //#UpdateConfigPanel.java:88: Warning: method not available - call not analyzed
    //#    call on void com.dmdirc.config.Identity:unsetOption(String, String)
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.dialogs.prefs.UpdateConfigPanel
    //#    method: void save()
    //#    unanalyzed callee: void com.dmdirc.config.Identity:unsetOption(String, String)
            } else {
                identity.setOption("updater", "enable-" + componentName, false);
    //#UpdateConfigPanel.java:90: Warning: method not available - call not analyzed
    //#    call on void com.dmdirc.config.Identity:setOption(String, String, bool)
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.dialogs.prefs.UpdateConfigPanel
    //#    method: void save()
    //#    unanalyzed callee: void com.dmdirc.config.Identity:setOption(String, String, bool)
            }
        }
    }
    //#UpdateConfigPanel.java:93: end of method: void com.dmdirc.addons.ui_swing.dialogs.prefs.UpdateConfigPanel.save()

    /**
     * Initialises the components.
     */
    private void initComponents() {
        final ConfigManager config = IdentityManager.getGlobalConfig();
    //#UpdateConfigPanel.java:99: method: void com.dmdirc.addons.ui_swing.dialogs.prefs.UpdateConfigPanel.initComponents()
    //#UpdateConfigPanel.java:99: Warning: method not available - call not analyzed
    //#    call on ConfigManager com.dmdirc.config.IdentityManager:getGlobalConfig()
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.dialogs.prefs.UpdateConfigPanel
    //#    method: void initComponents()
    //#    unanalyzed callee: ConfigManager com.dmdirc.config.IdentityManager:getGlobalConfig()
    //#input(void initComponents()): this
    //#output(void initComponents()): new ArrayList(UpdateTableModel#1) num objects
    //#output(void initComponents()): new HashMap(UpdateTableModel#2) num objects
    //#output(void initComponents()): new JButton(initComponents#5) num objects
    //#output(void initComponents()): new JCheckBox(initComponents#1) num objects
    //#output(void initComponents()): new JScrollPane(initComponents#2) num objects
    //#output(void initComponents()): new PackingTable(initComponents#4) num objects
    //#output(void initComponents()): new UpdateTableModel(initComponents#3) num objects
    //#output(void initComponents()): this.tableModel.__Tag
    //#output(void initComponents()): this.tableModel.enabled
    //#output(void initComponents()): this.tableModel.updates
    //#output(void initComponents()): this.checkNow
    //#output(void initComponents()): this.enable
    //#output(void initComponents()): this.scrollPane
    //#output(void initComponents()): this.table
    //#output(void initComponents()): this.tableModel
    //#new obj(void initComponents()): new ArrayList(UpdateTableModel#1)
    //#new obj(void initComponents()): new HashMap(UpdateTableModel#2)
    //#new obj(void initComponents()): new JButton(initComponents#5)
    //#new obj(void initComponents()): new JCheckBox(initComponents#1)
    //#new obj(void initComponents()): new JScrollPane(initComponents#2)
    //#new obj(void initComponents()): new PackingTable(initComponents#4)
    //#new obj(void initComponents()): new UpdateTableModel(initComponents#3)
    //#presumption(void initComponents()): com.dmdirc.config.IdentityManager:getGlobalConfig(...)@99 != null
    //#post(void initComponents()): this.checkNow == &new JButton(initComponents#5)
    //#post(void initComponents()): this.enable == &new JCheckBox(initComponents#1)
    //#post(void initComponents()): this.scrollPane == &new JScrollPane(initComponents#2)
    //#post(void initComponents()): this.table == &new PackingTable(initComponents#4)
    //#post(void initComponents()): this.tableModel == &new UpdateTableModel(initComponents#3)
    //#post(void initComponents()): new ArrayList(UpdateTableModel#1) num objects == 1
    //#post(void initComponents()): new HashMap(UpdateTableModel#2) num objects == 1
    //#post(void initComponents()): new JButton(initComponents#5) num objects == 1
    //#post(void initComponents()): new JCheckBox(initComponents#1) num objects == 1
    //#post(void initComponents()): new JScrollPane(initComponents#2) num objects == 1
    //#post(void initComponents()): new PackingTable(initComponents#4) num objects == 1
    //#post(void initComponents()): new UpdateTableModel(initComponents#3) num objects == 1
    //#post(void initComponents()): this.tableModel.__Tag == com/dmdirc/addons/ui_swing/dialogs/prefs/UpdateTableModel
    //#post(void initComponents()): this.tableModel.enabled == &new HashMap(UpdateTableModel#2)
    //#post(void initComponents()): this.tableModel.updates == &new ArrayList(UpdateTableModel#1)
    //#unanalyzed(void initComponents()): Effects-of-calling:javax.swing.table.AbstractTableModel
    //#unanalyzed(void initComponents()): Effects-of-calling:java.util.ArrayList
    //#unanalyzed(void initComponents()): Effects-of-calling:java.util.HashMap
    //#unanalyzed(void initComponents()): Effects-of-calling:java.util.List:iterator
    //#unanalyzed(void initComponents()): Effects-of-calling:java.util.Iterator:hasNext
    //#unanalyzed(void initComponents()): Effects-of-calling:java.util.Iterator:next
    //#unanalyzed(void initComponents()): Effects-of-calling:com.dmdirc.updater.UpdateChecker:isEnabled
    //#unanalyzed(void initComponents()): Effects-of-calling:java.lang.Boolean:valueOf
    //#unanalyzed(void initComponents()): Effects-of-calling:java.util.Map:put
        enable = new JCheckBox();
        scrollPane = new JScrollPane();
        tableModel = new UpdateTableModel(UpdateChecker.getComponents());
    //#UpdateConfigPanel.java:102: Warning: method not available - call not analyzed
    //#    call on List com.dmdirc.updater.UpdateChecker:getComponents()
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.dialogs.prefs.UpdateConfigPanel
    //#    method: void initComponents()
    //#    unanalyzed callee: List com.dmdirc.updater.UpdateChecker:getComponents()
        table = new PackingTable(tableModel, false, scrollPane);
    //#UpdateConfigPanel.java:103: Warning: method not available - call not analyzed
    //#    call on void com.dmdirc.addons.ui_swing.components.PackingTable(TableModel, bool, JScrollPane)
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.dialogs.prefs.UpdateConfigPanel
    //#    method: void initComponents()
    //#    unanalyzed callee: void com.dmdirc.addons.ui_swing.components.PackingTable(TableModel, bool, JScrollPane)
        checkNow = new JButton("Check now");

        enable.setSelected(config.getOptionBool("updater", "enable"));
    //#UpdateConfigPanel.java:106: Warning: method not available - call not analyzed
    //#    call on bool com.dmdirc.config.ConfigManager:getOptionBool(String, String)
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.dialogs.prefs.UpdateConfigPanel
    //#    method: void initComponents()
    //#    unanalyzed callee: bool com.dmdirc.config.ConfigManager:getOptionBool(String, String)
        scrollPane.setViewportView(table);
    }
    //#UpdateConfigPanel.java:108: end of method: void com.dmdirc.addons.ui_swing.dialogs.prefs.UpdateConfigPanel.initComponents()

    /**
     * Adds the listeners.
     */
    private void addListeners() {
        checkNow.addActionListener(this);
    //#UpdateConfigPanel.java:114: method: void com.dmdirc.addons.ui_swing.dialogs.prefs.UpdateConfigPanel.addListeners()
    //#input(void addListeners()): this
    //#input(void addListeners()): this.checkNow
    //#pre[2] (void addListeners()): this.checkNow != null
    }
    //#UpdateConfigPanel.java:115: end of method: void com.dmdirc.addons.ui_swing.dialogs.prefs.UpdateConfigPanel.addListeners()

    /**
     * Lays out the components.
     */
    private void layoutComponents() {
        setLayout(new MigLayout("fillx, ins 0, hmax " +
    //#UpdateConfigPanel.java:121: method: void com.dmdirc.addons.ui_swing.dialogs.prefs.UpdateConfigPanel.layoutComponents()
    //#UpdateConfigPanel.java:121: Warning: method not available - call not analyzed
    //#    call on void net.miginfocom.swing.MigLayout(String)
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.dialogs.prefs.UpdateConfigPanel
    //#    method: void layoutComponents()
    //#    unanalyzed callee: void net.miginfocom.swing.MigLayout(String)
    //#UpdateConfigPanel.java:121: Warning: method not available - call not analyzed
    //#    call on void com.dmdirc.addons.ui_swing.dialogs.prefs.UpdateConfigPanel:setLayout(LayoutManager)
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.dialogs.prefs.UpdateConfigPanel
    //#    method: void layoutComponents()
    //#    unanalyzed callee: void com.dmdirc.addons.ui_swing.dialogs.prefs.UpdateConfigPanel:setLayout(LayoutManager)
    //#input(void layoutComponents()): "fillx, ins 0, hmax "._tainted
    //#input(void layoutComponents()): com/dmdirc/addons/ui_swing/dialogs/prefs/SwingPreferencesDialog.CLIENT_HEIGHT
    //#input(void layoutComponents()): this
    //#input(void layoutComponents()): this.checkNow
    //#input(void layoutComponents()): this.enable
    //#input(void layoutComponents()): this.scrollPane
    //#pre[1] (void layoutComponents()): init'ed(com/dmdirc/addons/ui_swing/dialogs/prefs/SwingPreferencesDialog.CLIENT_HEIGHT)
    //#pre[3] (void layoutComponents()): init'ed(this.checkNow)
    //#pre[4] (void layoutComponents()): init'ed(this.enable)
    //#pre[5] (void layoutComponents()): init'ed(this.scrollPane)
                SwingPreferencesDialog.CLIENT_HEIGHT));

        add(new JLabel("Update checking:"), "split");
    //#UpdateConfigPanel.java:124: Warning: method not available - call not analyzed
    //#    call on void com.dmdirc.addons.ui_swing.dialogs.prefs.UpdateConfigPanel:add(Component, Object)
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.dialogs.prefs.UpdateConfigPanel
    //#    method: void layoutComponents()
    //#    unanalyzed callee: void com.dmdirc.addons.ui_swing.dialogs.prefs.UpdateConfigPanel:add(Component, Object)
        add(enable, "growx, pushx, wrap");
    //#UpdateConfigPanel.java:125: Warning: method not available - call not analyzed
    //#    call on void com.dmdirc.addons.ui_swing.dialogs.prefs.UpdateConfigPanel:add(Component, Object)
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.dialogs.prefs.UpdateConfigPanel
    //#    method: void layoutComponents()
    //#    unanalyzed callee: void com.dmdirc.addons.ui_swing.dialogs.prefs.UpdateConfigPanel:add(Component, Object)
        add(scrollPane, "wrap");
    //#UpdateConfigPanel.java:126: Warning: method not available - call not analyzed
    //#    call on void com.dmdirc.addons.ui_swing.dialogs.prefs.UpdateConfigPanel:add(Component, Object)
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.dialogs.prefs.UpdateConfigPanel
    //#    method: void layoutComponents()
    //#    unanalyzed callee: void com.dmdirc.addons.ui_swing.dialogs.prefs.UpdateConfigPanel:add(Component, Object)
        add(checkNow, "right");
    //#UpdateConfigPanel.java:127: Warning: method not available - call not analyzed
    //#    call on void com.dmdirc.addons.ui_swing.dialogs.prefs.UpdateConfigPanel:add(Component, Object)
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.dialogs.prefs.UpdateConfigPanel
    //#    method: void layoutComponents()
    //#    unanalyzed callee: void com.dmdirc.addons.ui_swing.dialogs.prefs.UpdateConfigPanel:add(Component, Object)
    }
    //#UpdateConfigPanel.java:128: end of method: void com.dmdirc.addons.ui_swing.dialogs.prefs.UpdateConfigPanel.layoutComponents()

    /** 
     * {@inheritDoc}
     * 
     * @param e Action event
     */
    @Override
    public void actionPerformed(final ActionEvent e) {
        UpdateChecker.checkNow();
    //#UpdateConfigPanel.java:137: method: void com.dmdirc.addons.ui_swing.dialogs.prefs.UpdateConfigPanel.actionPerformed(ActionEvent)
    //#UpdateConfigPanel.java:137: Warning: method not available - call not analyzed
    //#    call on void com.dmdirc.updater.UpdateChecker:checkNow()
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.dialogs.prefs.UpdateConfigPanel
    //#    method: void actionPerformed(ActionEvent)
    //#    unanalyzed callee: void com.dmdirc.updater.UpdateChecker:checkNow()
    }
    //#UpdateConfigPanel.java:138: end of method: void com.dmdirc.addons.ui_swing.dialogs.prefs.UpdateConfigPanel.actionPerformed(ActionEvent)
}
    //#output(com.dmdirc.addons.ui_swing.dialogs.prefs.UpdateConfigPanel__static_init): __Descendant_Table[com/dmdirc/addons/ui_swing/dialogs/prefs/UpdateConfigPanel]
    //#output(com.dmdirc.addons.ui_swing.dialogs.prefs.UpdateConfigPanel__static_init): __Dispatch_Table.actionPerformed(Ljava/awt/event/ActionEvent;)V
    //#output(com.dmdirc.addons.ui_swing.dialogs.prefs.UpdateConfigPanel__static_init): __Dispatch_Table.addListeners()V
    //#output(com.dmdirc.addons.ui_swing.dialogs.prefs.UpdateConfigPanel__static_init): __Dispatch_Table.initComponents()V
    //#output(com.dmdirc.addons.ui_swing.dialogs.prefs.UpdateConfigPanel__static_init): __Dispatch_Table.layoutComponents()V
    //#output(com.dmdirc.addons.ui_swing.dialogs.prefs.UpdateConfigPanel__static_init): __Dispatch_Table.save()V
    //#post(com.dmdirc.addons.ui_swing.dialogs.prefs.UpdateConfigPanel__static_init): __Descendant_Table[com/dmdirc/addons/ui_swing/dialogs/prefs/UpdateConfigPanel] == &__Dispatch_Table
    //#post(com.dmdirc.addons.ui_swing.dialogs.prefs.UpdateConfigPanel__static_init): __Dispatch_Table.actionPerformed(Ljava/awt/event/ActionEvent;)V == &actionPerformed
    //#post(com.dmdirc.addons.ui_swing.dialogs.prefs.UpdateConfigPanel__static_init): __Dispatch_Table.addListeners()V == &addListeners
    //#post(com.dmdirc.addons.ui_swing.dialogs.prefs.UpdateConfigPanel__static_init): __Dispatch_Table.initComponents()V == &initComponents
    //#post(com.dmdirc.addons.ui_swing.dialogs.prefs.UpdateConfigPanel__static_init): __Dispatch_Table.layoutComponents()V == &layoutComponents
    //#post(com.dmdirc.addons.ui_swing.dialogs.prefs.UpdateConfigPanel__static_init): __Dispatch_Table.save()V == &save
    //#UpdateConfigPanel.java:: end of method: com.dmdirc.addons.ui_swing.dialogs.prefs.UpdateConfigPanel.com.dmdirc.addons.ui_swing.dialogs.prefs.UpdateConfigPanel__static_init
    //#UpdateConfigPanel.java:: end of class: com.dmdirc.addons.ui_swing.dialogs.prefs.UpdateConfigPanel
