//# 0 errors, 500 messages
//#
/*
    //#ActionsGroupPanel.java:1:1: class: com.dmdirc.addons.ui_swing.dialogs.actionsmanager.ActionsGroupPanel$2
    //#ActionsGroupPanel.java:1:1: method: com.dmdirc.addons.ui_swing.dialogs.actionsmanager.ActionsGroupPanel$2.com.dmdirc.addons.ui_swing.dialogs.actionsmanager.ActionsGroupPanel$2__static_init
    //#ActionsGroupPanel.java:1:1: class: com.dmdirc.addons.ui_swing.dialogs.actionsmanager.ActionsGroupPanel$1
    //#ActionsGroupPanel.java:1:1: method: com.dmdirc.addons.ui_swing.dialogs.actionsmanager.ActionsGroupPanel$1.com.dmdirc.addons.ui_swing.dialogs.actionsmanager.ActionsGroupPanel$1__static_init
    //#ActionsGroupPanel.java:1:1: class: com.dmdirc.addons.ui_swing.dialogs.actionsmanager.ActionsGroupPanel
    //#ActionsGroupPanel.java:1:1: method: com.dmdirc.addons.ui_swing.dialogs.actionsmanager.ActionsGroupPanel.com.dmdirc.addons.ui_swing.dialogs.actionsmanager.ActionsGroupPanel__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.actionsmanager;

import com.dmdirc.actions.Action;
import com.dmdirc.actions.ActionGroup;
import com.dmdirc.actions.ActionManager;
import com.dmdirc.addons.ui_swing.components.PackingTable;
import com.dmdirc.addons.ui_swing.components.renderers.ActionTypeTableCellRenderer;
import com.dmdirc.addons.ui_swing.components.renderers.ArrayCellRenderer;
import com.dmdirc.addons.ui_swing.dialogs.actioneditor.ActionEditorDialog;

import java.awt.Window;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.util.ArrayList;

import javax.swing.JButton;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.ListSelectionModel;
import javax.swing.event.ListSelectionEvent;
import javax.swing.event.ListSelectionListener;
import javax.swing.table.TableCellRenderer;

import net.miginfocom.swing.MigLayout;

/**
 * The actions group panel is the control displayed within the tabbed control
 * of the actions manager dialog. It shows the user all actions belonging to
 * a particular group.
 */
public final class ActionsGroupPanel extends JPanel implements ActionListener,
    //#ActionsGroupPanel.java:56: method: JButton com.dmdirc.addons.ui_swing.dialogs.actionsmanager.ActionsGroupPanel.access$000(ActionsGroupPanel)
    //#input(JButton access$000(ActionsGroupPanel)): x0
    //#input(JButton access$000(ActionsGroupPanel)): x0.edit
    //#output(JButton access$000(ActionsGroupPanel)): return_value
    //#pre[1] (JButton access$000(ActionsGroupPanel)): x0 != null
    //#pre[2] (JButton access$000(ActionsGroupPanel)): init'ed(x0.edit)
    //#post(JButton access$000(ActionsGroupPanel)): return_value == x0.edit
    //#post(JButton access$000(ActionsGroupPanel)): init'ed(return_value)
    //#ActionsGroupPanel.java:56: end of method: JButton com.dmdirc.addons.ui_swing.dialogs.actionsmanager.ActionsGroupPanel.access$000(ActionsGroupPanel)
        ListSelectionListener {

    /**
     * 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;
    /** Parent dialog. */
    private Window parent;
    /** Table scrollpane. */
    private JScrollPane scrollPane;
    /** Actions table. */
    private PackingTable table;
    /** Table mode. */
    private ActionTableModel model;
    /** Add button. */
    private JButton add;
    /** Edit button. */
    private JButton edit;
    /** Delete button. */
    private JButton delete;
    /** Action group. */
    private ActionGroup group;

    /** 
     * Creates a new instance of ActionsManagerDialog.
     * 
     * @param group Action group to display
     */
    public ActionsGroupPanel(final Window parent, final ActionGroup group) {
        super();
    //#ActionsGroupPanel.java:88: method: void com.dmdirc.addons.ui_swing.dialogs.actionsmanager.ActionsGroupPanel.com.dmdirc.addons.ui_swing.dialogs.actionsmanager.ActionsGroupPanel(Window, ActionGroup)
    //#input(void com.dmdirc.addons.ui_swing.dialogs.actionsmanager.ActionsGroupPanel(Window, ActionGroup)): group
    //#input(void com.dmdirc.addons.ui_swing.dialogs.actionsmanager.ActionsGroupPanel(Window, ActionGroup)): parent
    //#input(void com.dmdirc.addons.ui_swing.dialogs.actionsmanager.ActionsGroupPanel(Window, ActionGroup)): this
    //#output(void com.dmdirc.addons.ui_swing.dialogs.actionsmanager.ActionsGroupPanel(Window, ActionGroup)): new ActionTableModel(initComponents#2) num objects
    //#output(void com.dmdirc.addons.ui_swing.dialogs.actionsmanager.ActionsGroupPanel(Window, ActionGroup)): new ActionTableModel(initComponents#2).__Tag
    //#output(void com.dmdirc.addons.ui_swing.dialogs.actionsmanager.ActionsGroupPanel(Window, ActionGroup)): new ActionTableModel(initComponents#2).actions
    //#output(void com.dmdirc.addons.ui_swing.dialogs.actionsmanager.ActionsGroupPanel(Window, ActionGroup)): new ActionTypeTableCellRenderer(ActionsGroupPanel$1#1) num objects
    //#output(void com.dmdirc.addons.ui_swing.dialogs.actionsmanager.ActionsGroupPanel(Window, ActionGroup)): new ActionTypeTableCellRenderer(ActionsGroupPanel$1#1).__Tag
    //#output(void com.dmdirc.addons.ui_swing.dialogs.actionsmanager.ActionsGroupPanel(Window, ActionGroup)): new ActionsGroupPanel$1(initComponents#4) num objects
    //#output(void com.dmdirc.addons.ui_swing.dialogs.actionsmanager.ActionsGroupPanel(Window, ActionGroup)): new ActionsGroupPanel$1(initComponents#4).__Tag
    //#output(void com.dmdirc.addons.ui_swing.dialogs.actionsmanager.ActionsGroupPanel(Window, ActionGroup)): new ActionsGroupPanel$1(initComponents#4).arrayRenderer
    //#output(void com.dmdirc.addons.ui_swing.dialogs.actionsmanager.ActionsGroupPanel(Window, ActionGroup)): new ActionsGroupPanel$1(initComponents#4).this$0
    //#output(void com.dmdirc.addons.ui_swing.dialogs.actionsmanager.ActionsGroupPanel(Window, ActionGroup)): new ActionsGroupPanel$1(initComponents#4).typeRenderer
    //#output(void com.dmdirc.addons.ui_swing.dialogs.actionsmanager.ActionsGroupPanel(Window, ActionGroup)): new ArrayCellRenderer(ActionsGroupPanel$1#2) num objects
    //#output(void com.dmdirc.addons.ui_swing.dialogs.actionsmanager.ActionsGroupPanel(Window, ActionGroup)): new ArrayCellRenderer(ActionsGroupPanel$1#2).__Tag
    //#output(void com.dmdirc.addons.ui_swing.dialogs.actionsmanager.ActionsGroupPanel(Window, ActionGroup)): new ArrayList(ActionTableModel#1) num objects
    //#output(void com.dmdirc.addons.ui_swing.dialogs.actionsmanager.ActionsGroupPanel(Window, ActionGroup)): new ArrayList(initComponents#3) num objects
    //#output(void com.dmdirc.addons.ui_swing.dialogs.actionsmanager.ActionsGroupPanel(Window, ActionGroup)): new JButton(initComponents#6) num objects
    //#output(void com.dmdirc.addons.ui_swing.dialogs.actionsmanager.ActionsGroupPanel(Window, ActionGroup)): new JButton(initComponents#7) num objects
    //#output(void com.dmdirc.addons.ui_swing.dialogs.actionsmanager.ActionsGroupPanel(Window, ActionGroup)): new JButton(initComponents#8) num objects
    //#output(void com.dmdirc.addons.ui_swing.dialogs.actionsmanager.ActionsGroupPanel(Window, ActionGroup)): new JScrollPane(initComponents#1) num objects
    //#output(void com.dmdirc.addons.ui_swing.dialogs.actionsmanager.ActionsGroupPanel(Window, ActionGroup)): this.add
    //#output(void com.dmdirc.addons.ui_swing.dialogs.actionsmanager.ActionsGroupPanel(Window, ActionGroup)): this.delete
    //#output(void com.dmdirc.addons.ui_swing.dialogs.actionsmanager.ActionsGroupPanel(Window, ActionGroup)): this.edit
    //#output(void com.dmdirc.addons.ui_swing.dialogs.actionsmanager.ActionsGroupPanel(Window, ActionGroup)): this.group
    //#output(void com.dmdirc.addons.ui_swing.dialogs.actionsmanager.ActionsGroupPanel(Window, ActionGroup)): this.model
    //#output(void com.dmdirc.addons.ui_swing.dialogs.actionsmanager.ActionsGroupPanel(Window, ActionGroup)): this.parent
    //#output(void com.dmdirc.addons.ui_swing.dialogs.actionsmanager.ActionsGroupPanel(Window, ActionGroup)): this.scrollPane
    //#output(void com.dmdirc.addons.ui_swing.dialogs.actionsmanager.ActionsGroupPanel(Window, ActionGroup)): this.table
    //#new obj(void com.dmdirc.addons.ui_swing.dialogs.actionsmanager.ActionsGroupPanel(Window, ActionGroup)): new ActionTableModel(initComponents#2)
    //#new obj(void com.dmdirc.addons.ui_swing.dialogs.actionsmanager.ActionsGroupPanel(Window, ActionGroup)): new ActionTypeTableCellRenderer(ActionsGroupPanel$1#1)
    //#new obj(void com.dmdirc.addons.ui_swing.dialogs.actionsmanager.ActionsGroupPanel(Window, ActionGroup)): new ActionsGroupPanel$1(initComponents#4)
    //#new obj(void com.dmdirc.addons.ui_swing.dialogs.actionsmanager.ActionsGroupPanel(Window, ActionGroup)): new ArrayCellRenderer(ActionsGroupPanel$1#2)
    //#new obj(void com.dmdirc.addons.ui_swing.dialogs.actionsmanager.ActionsGroupPanel(Window, ActionGroup)): new ArrayList(ActionTableModel#1)
    //#new obj(void com.dmdirc.addons.ui_swing.dialogs.actionsmanager.ActionsGroupPanel(Window, ActionGroup)): new ArrayList(initComponents#3)
    //#new obj(void com.dmdirc.addons.ui_swing.dialogs.actionsmanager.ActionsGroupPanel(Window, ActionGroup)): new JButton(initComponents#6)
    //#new obj(void com.dmdirc.addons.ui_swing.dialogs.actionsmanager.ActionsGroupPanel(Window, ActionGroup)): new JButton(initComponents#7)
    //#new obj(void com.dmdirc.addons.ui_swing.dialogs.actionsmanager.ActionsGroupPanel(Window, ActionGroup)): new JButton(initComponents#8)
    //#new obj(void com.dmdirc.addons.ui_swing.dialogs.actionsmanager.ActionsGroupPanel(Window, ActionGroup)): new JScrollPane(initComponents#1)
    //#post(void com.dmdirc.addons.ui_swing.dialogs.actionsmanager.ActionsGroupPanel(Window, ActionGroup)): this.add == &new JButton(initComponents#6)
    //#post(void com.dmdirc.addons.ui_swing.dialogs.actionsmanager.ActionsGroupPanel(Window, ActionGroup)): this.delete == &new JButton(initComponents#8)
    //#post(void com.dmdirc.addons.ui_swing.dialogs.actionsmanager.ActionsGroupPanel(Window, ActionGroup)): this.edit == &new JButton(initComponents#7)
    //#post(void com.dmdirc.addons.ui_swing.dialogs.actionsmanager.ActionsGroupPanel(Window, ActionGroup)): this.group == group
    //#post(void com.dmdirc.addons.ui_swing.dialogs.actionsmanager.ActionsGroupPanel(Window, ActionGroup)): init'ed(this.group)
    //#post(void com.dmdirc.addons.ui_swing.dialogs.actionsmanager.ActionsGroupPanel(Window, ActionGroup)): this.model == &new ActionTableModel(initComponents#2)
    //#post(void com.dmdirc.addons.ui_swing.dialogs.actionsmanager.ActionsGroupPanel(Window, ActionGroup)): this.parent == parent
    //#post(void com.dmdirc.addons.ui_swing.dialogs.actionsmanager.ActionsGroupPanel(Window, ActionGroup)): init'ed(this.parent)
    //#post(void com.dmdirc.addons.ui_swing.dialogs.actionsmanager.ActionsGroupPanel(Window, ActionGroup)): this.scrollPane == &new JScrollPane(initComponents#1)
    //#post(void com.dmdirc.addons.ui_swing.dialogs.actionsmanager.ActionsGroupPanel(Window, ActionGroup)): this.table == &new ActionsGroupPanel$1(initComponents#4)
    //#post(void com.dmdirc.addons.ui_swing.dialogs.actionsmanager.ActionsGroupPanel(Window, ActionGroup)): new ActionTableModel(initComponents#2) num objects == 1
    //#post(void com.dmdirc.addons.ui_swing.dialogs.actionsmanager.ActionsGroupPanel(Window, ActionGroup)): new ActionTypeTableCellRenderer(ActionsGroupPanel$1#1) num objects == 1
    //#post(void com.dmdirc.addons.ui_swing.dialogs.actionsmanager.ActionsGroupPanel(Window, ActionGroup)): new ActionsGroupPanel$1(initComponents#4) num objects == 1
    //#post(void com.dmdirc.addons.ui_swing.dialogs.actionsmanager.ActionsGroupPanel(Window, ActionGroup)): new ArrayCellRenderer(ActionsGroupPanel$1#2) num objects == 1
    //#post(void com.dmdirc.addons.ui_swing.dialogs.actionsmanager.ActionsGroupPanel(Window, ActionGroup)): new JButton(initComponents#6) num objects == 1
    //#post(void com.dmdirc.addons.ui_swing.dialogs.actionsmanager.ActionsGroupPanel(Window, ActionGroup)): new JButton(initComponents#7) num objects == 1
    //#post(void com.dmdirc.addons.ui_swing.dialogs.actionsmanager.ActionsGroupPanel(Window, ActionGroup)): new JButton(initComponents#8) num objects == 1
    //#post(void com.dmdirc.addons.ui_swing.dialogs.actionsmanager.ActionsGroupPanel(Window, ActionGroup)): new JScrollPane(initComponents#1) num objects == 1
    //#post(void com.dmdirc.addons.ui_swing.dialogs.actionsmanager.ActionsGroupPanel(Window, ActionGroup)): new ActionTableModel(initComponents#2).__Tag == com/dmdirc/addons/ui_swing/dialogs/actionsmanager/ActionTableModel
    //#post(void com.dmdirc.addons.ui_swing.dialogs.actionsmanager.ActionsGroupPanel(Window, ActionGroup)): new ActionTableModel(initComponents#2).actions != null
    //#post(void com.dmdirc.addons.ui_swing.dialogs.actionsmanager.ActionsGroupPanel(Window, ActionGroup)): new ActionTypeTableCellRenderer(ActionsGroupPanel$1#1).__Tag == com/dmdirc/addons/ui_swing/components/renderers/ActionTypeTableCellRenderer
    //#post(void com.dmdirc.addons.ui_swing.dialogs.actionsmanager.ActionsGroupPanel(Window, ActionGroup)): new ActionsGroupPanel$1(initComponents#4).__Tag == com/dmdirc/addons/ui_swing/dialogs/actionsmanager/ActionsGroupPanel$1
    //#post(void com.dmdirc.addons.ui_swing.dialogs.actionsmanager.ActionsGroupPanel(Window, ActionGroup)): new ActionsGroupPanel$1(initComponents#4).arrayRenderer == &new ArrayCellRenderer(ActionsGroupPanel$1#2)
    //#post(void com.dmdirc.addons.ui_swing.dialogs.actionsmanager.ActionsGroupPanel(Window, ActionGroup)): new ActionsGroupPanel$1(initComponents#4).this$0 == this
    //#post(void com.dmdirc.addons.ui_swing.dialogs.actionsmanager.ActionsGroupPanel(Window, ActionGroup)): new ActionsGroupPanel$1(initComponents#4).this$0 != null
    //#post(void com.dmdirc.addons.ui_swing.dialogs.actionsmanager.ActionsGroupPanel(Window, ActionGroup)): new ActionsGroupPanel$1(initComponents#4).typeRenderer == &new ActionTypeTableCellRenderer(ActionsGroupPanel$1#1)
    //#post(void com.dmdirc.addons.ui_swing.dialogs.actionsmanager.ActionsGroupPanel(Window, ActionGroup)): new ArrayCellRenderer(ActionsGroupPanel$1#2).__Tag == com/dmdirc/addons/ui_swing/components/renderers/ArrayCellRenderer
    //#post(void com.dmdirc.addons.ui_swing.dialogs.actionsmanager.ActionsGroupPanel(Window, ActionGroup)): new ArrayList(ActionTableModel#1) num objects <= 1
    //#post(void com.dmdirc.addons.ui_swing.dialogs.actionsmanager.ActionsGroupPanel(Window, ActionGroup)): new ArrayList(initComponents#3) num objects <= 1
    //#unanalyzed(void com.dmdirc.addons.ui_swing.dialogs.actionsmanager.ActionsGroupPanel(Window, ActionGroup)): Effects-of-calling:javax.swing.JScrollPane
    //#unanalyzed(void com.dmdirc.addons.ui_swing.dialogs.actionsmanager.ActionsGroupPanel(Window, ActionGroup)): Effects-of-calling:java.util.ArrayList
    //#unanalyzed(void com.dmdirc.addons.ui_swing.dialogs.actionsmanager.ActionsGroupPanel(Window, ActionGroup)): Effects-of-calling:com.dmdirc.actions.ActionGroup:getActions
    //#unanalyzed(void com.dmdirc.addons.ui_swing.dialogs.actionsmanager.ActionsGroupPanel(Window, ActionGroup)): Effects-of-calling:javax.swing.table.AbstractTableModel
    //#unanalyzed(void com.dmdirc.addons.ui_swing.dialogs.actionsmanager.ActionsGroupPanel(Window, ActionGroup)): Effects-of-calling:com.dmdirc.addons.ui_swing.components.PackingTable
    //#unanalyzed(void com.dmdirc.addons.ui_swing.dialogs.actionsmanager.ActionsGroupPanel(Window, ActionGroup)): Effects-of-calling:javax.swing.table.DefaultTableCellRenderer
    //#unanalyzed(void com.dmdirc.addons.ui_swing.dialogs.actionsmanager.ActionsGroupPanel(Window, ActionGroup)): Effects-of-calling:java.awt.event.MouseAdapter
    //#unanalyzed(void com.dmdirc.addons.ui_swing.dialogs.actionsmanager.ActionsGroupPanel(Window, ActionGroup)): Effects-of-calling:com.dmdirc.addons.ui_swing.components.PackingTable:addMouseListener
    //#unanalyzed(void com.dmdirc.addons.ui_swing.dialogs.actionsmanager.ActionsGroupPanel(Window, ActionGroup)): Effects-of-calling:javax.swing.JButton
    //#unanalyzed(void com.dmdirc.addons.ui_swing.dialogs.actionsmanager.ActionsGroupPanel(Window, ActionGroup)): Effects-of-calling:javax.swing.JScrollPane:setViewportView
    //#unanalyzed(void com.dmdirc.addons.ui_swing.dialogs.actionsmanager.ActionsGroupPanel(Window, ActionGroup)): Effects-of-calling:com.dmdirc.addons.ui_swing.components.PackingTable:setAutoCreateRowSorter
    //#unanalyzed(void com.dmdirc.addons.ui_swing.dialogs.actionsmanager.ActionsGroupPanel(Window, ActionGroup)): Effects-of-calling:com.dmdirc.addons.ui_swing.components.PackingTable:setAutoCreateColumnsFromModel
    //#unanalyzed(void com.dmdirc.addons.ui_swing.dialogs.actionsmanager.ActionsGroupPanel(Window, ActionGroup)): Effects-of-calling:com.dmdirc.addons.ui_swing.components.PackingTable:setColumnSelectionAllowed
    //#unanalyzed(void com.dmdirc.addons.ui_swing.dialogs.actionsmanager.ActionsGroupPanel(Window, ActionGroup)): Effects-of-calling:com.dmdirc.addons.ui_swing.components.PackingTable:setCellSelectionEnabled
    //#unanalyzed(void com.dmdirc.addons.ui_swing.dialogs.actionsmanager.ActionsGroupPanel(Window, ActionGroup)): Effects-of-calling:com.dmdirc.addons.ui_swing.components.PackingTable:setFillsViewportHeight
    //#unanalyzed(void com.dmdirc.addons.ui_swing.dialogs.actionsmanager.ActionsGroupPanel(Window, ActionGroup)): Effects-of-calling:com.dmdirc.addons.ui_swing.components.PackingTable:setRowSelectionAllowed
    //#unanalyzed(void com.dmdirc.addons.ui_swing.dialogs.actionsmanager.ActionsGroupPanel(Window, ActionGroup)): Effects-of-calling:com.dmdirc.addons.ui_swing.components.PackingTable:setSelectionMode
    //#unanalyzed(void com.dmdirc.addons.ui_swing.dialogs.actionsmanager.ActionsGroupPanel(Window, ActionGroup)): Effects-of-calling:com.dmdirc.addons.ui_swing.components.PackingTable:getRowSorter
    //#unanalyzed(void com.dmdirc.addons.ui_swing.dialogs.actionsmanager.ActionsGroupPanel(Window, ActionGroup)): Effects-of-calling:javax.swing.RowSorter:toggleSortOrder
    //#unanalyzed(void com.dmdirc.addons.ui_swing.dialogs.actionsmanager.ActionsGroupPanel(Window, ActionGroup)): Effects-of-calling:javax.swing.JButton:setEnabled
    //#unanalyzed(void com.dmdirc.addons.ui_swing.dialogs.actionsmanager.ActionsGroupPanel(Window, ActionGroup)): Effects-of-calling:javax.swing.JButton:addActionListener
    //#unanalyzed(void com.dmdirc.addons.ui_swing.dialogs.actionsmanager.ActionsGroupPanel(Window, ActionGroup)): Effects-of-calling:com.dmdirc.addons.ui_swing.components.PackingTable:getSelectionModel
    //#unanalyzed(void com.dmdirc.addons.ui_swing.dialogs.actionsmanager.ActionsGroupPanel(Window, ActionGroup)): Effects-of-calling:javax.swing.ListSelectionModel:addListSelectionListener
    //#unanalyzed(void com.dmdirc.addons.ui_swing.dialogs.actionsmanager.ActionsGroupPanel(Window, ActionGroup)): Effects-of-calling:net.miginfocom.swing.MigLayout
    //#unanalyzed(void com.dmdirc.addons.ui_swing.dialogs.actionsmanager.ActionsGroupPanel(Window, ActionGroup)): Effects-of-calling:com.dmdirc.addons.ui_swing.dialogs.actionsmanager.ActionsGroupPanel:setLayout
    //#unanalyzed(void com.dmdirc.addons.ui_swing.dialogs.actionsmanager.ActionsGroupPanel(Window, ActionGroup)): Effects-of-calling:com.dmdirc.addons.ui_swing.dialogs.actionsmanager.ActionsGroupPanel:add

        this.parent = parent;
        this.group = group;

        initComponents();
        addListeners();
        layoutComponents();
    }
    //#ActionsGroupPanel.java:96: end of method: void com.dmdirc.addons.ui_swing.dialogs.actionsmanager.ActionsGroupPanel.com.dmdirc.addons.ui_swing.dialogs.actionsmanager.ActionsGroupPanel(Window, ActionGroup)

    /**
     * Updates or creates the new action.
     * 
     * @param action Action changed or created
     */
    public void actionChanged(final Action action) {
        if (model.contains(action)) {
    //#ActionsGroupPanel.java:104: method: void com.dmdirc.addons.ui_swing.dialogs.actionsmanager.ActionsGroupPanel.actionChanged(Action)
    //#input(void actionChanged(Action)): action
    //#input(void actionChanged(Action)): com/dmdirc/addons/ui_swing/dialogs/actionsmanager/ActionTableModel.__Descendant_Table[com/dmdirc/addons/ui_swing/dialogs/actionsmanager/ActionTableModel]
    //#input(void actionChanged(Action)): com/dmdirc/addons/ui_swing/dialogs/actionsmanager/ActionTableModel.__Descendant_Table[others]
    //#input(void actionChanged(Action)): com/dmdirc/addons/ui_swing/dialogs/actionsmanager/ActionTableModel.__Dispatch_Table.add(Lcom/dmdirc/actions/Action;)V
    //#input(void actionChanged(Action)): com/dmdirc/addons/ui_swing/dialogs/actionsmanager/ActionTableModel.__Dispatch_Table.contains(Lcom/dmdirc/actions/Action;)Z
    //#input(void actionChanged(Action)): com/dmdirc/addons/ui_swing/dialogs/actionsmanager/ActionTableModel.__Dispatch_Table.getAction(Lcom/dmdirc/actions/Action;)I
    //#input(void actionChanged(Action)): this
    //#input(void actionChanged(Action)): this.model
    //#input(void actionChanged(Action)): this.model.__Tag
    //#input(void actionChanged(Action)): this.model.actions
    //#pre[3] (void actionChanged(Action)): this.model != null
    //#pre[4] (void actionChanged(Action)): this.model.__Tag == com/dmdirc/addons/ui_swing/dialogs/actionsmanager/ActionTableModel
    //#pre[5] (void actionChanged(Action)): this.model.actions != null
    //#unanalyzed(void actionChanged(Action)): Effects-of-calling:java.lang.Throwable:__curr_excep_obj
    //#unanalyzed(void actionChanged(Action)): Effects-of-calling:java.util.List:indexOf
    //#unanalyzed(void actionChanged(Action)): Effects-of-calling:java.util.List:contains
    //#unanalyzed(void actionChanged(Action)): Effects-of-calling:java.util.List:size
    //#unanalyzed(void actionChanged(Action)): Effects-of-calling:java.util.List:add
    //#unanalyzed(void actionChanged(Action)): Effects-of-calling:com.dmdirc.addons.ui_swing.dialogs.actionsmanager.ActionTableModel:fireTableRowsInserted
    //#test_vector(void actionChanged(Action)): java.util.List:contains(...)@226: {0}, {1}
            final int row = model.getAction(action);
            model.fireTableCellUpdated(row, 0);
    //#ActionsGroupPanel.java:106: Warning: method not available - call not analyzed
    //#    call on void com.dmdirc.addons.ui_swing.dialogs.actionsmanager.ActionTableModel:fireTableCellUpdated(int, int)
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.dialogs.actionsmanager.ActionsGroupPanel
    //#    method: void actionChanged(Action)
    //#    unanalyzed callee: void com.dmdirc.addons.ui_swing.dialogs.actionsmanager.ActionTableModel:fireTableCellUpdated(int, int)
            model.fireTableCellUpdated(row, 1);
    //#ActionsGroupPanel.java:107: Warning: method not available - call not analyzed
    //#    call on void com.dmdirc.addons.ui_swing.dialogs.actionsmanager.ActionTableModel:fireTableCellUpdated(int, int)
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.dialogs.actionsmanager.ActionsGroupPanel
    //#    method: void actionChanged(Action)
    //#    unanalyzed callee: void com.dmdirc.addons.ui_swing.dialogs.actionsmanager.ActionTableModel:fireTableCellUpdated(int, int)
            model.fireTableCellUpdated(row, 2);
    //#ActionsGroupPanel.java:108: Warning: method not available - call not analyzed
    //#    call on void com.dmdirc.addons.ui_swing.dialogs.actionsmanager.ActionTableModel:fireTableCellUpdated(int, int)
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.dialogs.actionsmanager.ActionsGroupPanel
    //#    method: void actionChanged(Action)
    //#    unanalyzed callee: void com.dmdirc.addons.ui_swing.dialogs.actionsmanager.ActionTableModel:fireTableCellUpdated(int, int)
        } else {
            model.add(action);
        }
    }
    //#ActionsGroupPanel.java:112: end of method: void com.dmdirc.addons.ui_swing.dialogs.actionsmanager.ActionsGroupPanel.actionChanged(Action)

    /**
     * Deletes an action from the group.
     * 
     * @param name Name of the action
     */
    public void actionDeleted(final String name) {
        final int location = model.findAction(name);
    //#ActionsGroupPanel.java:120: method: void com.dmdirc.addons.ui_swing.dialogs.actionsmanager.ActionsGroupPanel.actionDeleted(String)
    //#input(void actionDeleted(String)): com/dmdirc/addons/ui_swing/dialogs/actionsmanager/ActionTableModel.__Descendant_Table[com/dmdirc/addons/ui_swing/dialogs/actionsmanager/ActionTableModel]
    //#input(void actionDeleted(String)): com/dmdirc/addons/ui_swing/dialogs/actionsmanager/ActionTableModel.__Descendant_Table[others]
    //#input(void actionDeleted(String)): com/dmdirc/addons/ui_swing/dialogs/actionsmanager/ActionTableModel.__Dispatch_Table.findAction(Ljava/lang/String;)I
    //#input(void actionDeleted(String)): com/dmdirc/addons/ui_swing/dialogs/actionsmanager/ActionTableModel.__Dispatch_Table.remove(I)V
    //#input(void actionDeleted(String)): name
    //#input(void actionDeleted(String)): this
    //#input(void actionDeleted(String)): this.model
    //#input(void actionDeleted(String)): this.model.__Tag
    //#input(void actionDeleted(String)): this.model.actions
    //#pre[3] (void actionDeleted(String)): this.model != null
    //#pre[4] (void actionDeleted(String)): this.model.__Tag == com/dmdirc/addons/ui_swing/dialogs/actionsmanager/ActionTableModel
    //#pre[5] (void actionDeleted(String)): this.model.actions != null
    //#unanalyzed(void actionDeleted(String)): Effects-of-calling:java.lang.Throwable:__curr_excep_obj
    //#unanalyzed(void actionDeleted(String)): Effects-of-calling:com.dmdirc.actions.Action:getName
    //#unanalyzed(void actionDeleted(String)): Effects-of-calling:java.util.List:indexOf
    //#unanalyzed(void actionDeleted(String)): Effects-of-calling:java.util.List:iterator
    //#unanalyzed(void actionDeleted(String)): Effects-of-calling:java.util.Iterator:hasNext
    //#unanalyzed(void actionDeleted(String)): Effects-of-calling:java.util.Iterator:next
    //#unanalyzed(void actionDeleted(String)): Effects-of-calling:java.lang.String:equals
    //#unanalyzed(void actionDeleted(String)): Effects-of-calling:java.util.List:remove
    //#unanalyzed(void actionDeleted(String)): Effects-of-calling:com.dmdirc.addons.ui_swing.dialogs.actionsmanager.ActionTableModel:fireTableRowsDeleted
        if (location != -1) {
            model.remove(location);
        }
    }
    //#ActionsGroupPanel.java:124: end of method: void com.dmdirc.addons.ui_swing.dialogs.actionsmanager.ActionsGroupPanel.actionDeleted(String)

    /**
     * Initialises the components.
     */
    private void initComponents() {
        scrollPane = new JScrollPane();
    //#ActionsGroupPanel.java:130: method: void com.dmdirc.addons.ui_swing.dialogs.actionsmanager.ActionsGroupPanel.initComponents()
    //#input(void initComponents()): this
    //#input(void initComponents()): this.group
    //#output(void initComponents()): new ActionTableModel(initComponents#2) num objects
    //#output(void initComponents()): this.model.__Tag
    //#output(void initComponents()): this.model.actions
    //#output(void initComponents()): new ActionTypeTableCellRenderer(ActionsGroupPanel$1#1) num objects
    //#output(void initComponents()): new ActionTypeTableCellRenderer(ActionsGroupPanel$1#1).__Tag
    //#output(void initComponents()): new ActionsGroupPanel$1(initComponents#4) num objects
    //#output(void initComponents()): this.table.__Tag
    //#output(void initComponents()): this.table.arrayRenderer
    //#output(void initComponents()): this.table.this$0
    //#output(void initComponents()): this.table.typeRenderer
    //#output(void initComponents()): new ArrayCellRenderer(ActionsGroupPanel$1#2) num objects
    //#output(void initComponents()): new ArrayCellRenderer(ActionsGroupPanel$1#2).__Tag
    //#output(void initComponents()): new ArrayList(ActionTableModel#1) num objects
    //#output(void initComponents()): new ArrayList(initComponents#3) num objects
    //#output(void initComponents()): new JButton(initComponents#6) num objects
    //#output(void initComponents()): new JButton(initComponents#7) num objects
    //#output(void initComponents()): new JButton(initComponents#8) num objects
    //#output(void initComponents()): new JScrollPane(initComponents#1) num objects
    //#output(void initComponents()): this.add
    //#output(void initComponents()): this.delete
    //#output(void initComponents()): this.edit
    //#output(void initComponents()): this.model
    //#output(void initComponents()): this.scrollPane
    //#output(void initComponents()): this.table
    //#new obj(void initComponents()): new ActionTableModel(initComponents#2)
    //#new obj(void initComponents()): new ActionTypeTableCellRenderer(ActionsGroupPanel$1#1)
    //#new obj(void initComponents()): new ActionsGroupPanel$1(initComponents#4)
    //#new obj(void initComponents()): new ArrayCellRenderer(ActionsGroupPanel$1#2)
    //#new obj(void initComponents()): new ArrayList(ActionTableModel#1)
    //#new obj(void initComponents()): new ArrayList(initComponents#3)
    //#new obj(void initComponents()): new JButton(initComponents#6)
    //#new obj(void initComponents()): new JButton(initComponents#7)
    //#new obj(void initComponents()): new JButton(initComponents#8)
    //#new obj(void initComponents()): new JScrollPane(initComponents#1)
    //#pre[2] (void initComponents()): init'ed(this.group)
    //#presumption(void initComponents()): com.dmdirc.addons.ui_swing.components.PackingTable:getRowSorter(...)@183 != null
    //#post(void initComponents()): this.add == &new JButton(initComponents#6)
    //#post(void initComponents()): this.delete == &new JButton(initComponents#8)
    //#post(void initComponents()): this.edit == &new JButton(initComponents#7)
    //#post(void initComponents()): this.model == &new ActionTableModel(initComponents#2)
    //#post(void initComponents()): this.scrollPane == &new JScrollPane(initComponents#1)
    //#post(void initComponents()): this.table == &new ActionsGroupPanel$1(initComponents#4)
    //#post(void initComponents()): new ActionTableModel(initComponents#2) num objects == 1
    //#post(void initComponents()): new ActionTypeTableCellRenderer(ActionsGroupPanel$1#1) num objects == 1
    //#post(void initComponents()): new ActionsGroupPanel$1(initComponents#4) num objects == 1
    //#post(void initComponents()): new ArrayCellRenderer(ActionsGroupPanel$1#2) num objects == 1
    //#post(void initComponents()): new JButton(initComponents#6) num objects == 1
    //#post(void initComponents()): new JButton(initComponents#7) num objects == 1
    //#post(void initComponents()): new JButton(initComponents#8) num objects == 1
    //#post(void initComponents()): new JScrollPane(initComponents#1) num objects == 1
    //#post(void initComponents()): this.model.__Tag == com/dmdirc/addons/ui_swing/dialogs/actionsmanager/ActionTableModel
    //#post(void initComponents()): this.model.actions != null
    //#post(void initComponents()): new ActionTypeTableCellRenderer(ActionsGroupPanel$1#1).__Tag == com/dmdirc/addons/ui_swing/components/renderers/ActionTypeTableCellRenderer
    //#post(void initComponents()): this.table.__Tag == com/dmdirc/addons/ui_swing/dialogs/actionsmanager/ActionsGroupPanel$1
    //#post(void initComponents()): this.table.arrayRenderer == &new ArrayCellRenderer(ActionsGroupPanel$1#2)
    //#post(void initComponents()): this.table.this$0 == this
    //#post(void initComponents()): this.table.this$0 != null
    //#post(void initComponents()): this.table.typeRenderer == &new ActionTypeTableCellRenderer(ActionsGroupPanel$1#1)
    //#post(void initComponents()): new ArrayCellRenderer(ActionsGroupPanel$1#2).__Tag == com/dmdirc/addons/ui_swing/components/renderers/ArrayCellRenderer
    //#post(void initComponents()): new ArrayList(ActionTableModel#1) num objects <= 1
    //#post(void initComponents()): new ArrayList(initComponents#3) num objects <= 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:com.dmdirc.addons.ui_swing.components.PackingTable
    //#unanalyzed(void initComponents()): Effects-of-calling:javax.swing.table.DefaultTableCellRenderer
    //#unanalyzed(void initComponents()): Effects-of-calling:java.awt.event.MouseAdapter
    //#test_vector(void initComponents()): this.group: Inverse{null}, Addr_Set{null}
        model = new ActionTableModel(group == null ? new ArrayList<Action>() : group.getActions());
    //#ActionsGroupPanel.java:131: Warning: method not available - call not analyzed
    //#    call on List com.dmdirc.actions.ActionGroup:getActions()
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.dialogs.actionsmanager.ActionsGroupPanel
    //#    method: void initComponents()
    //#    unanalyzed callee: List com.dmdirc.actions.ActionGroup:getActions()
        table = new PackingTable(model, false, scrollPane, false) {
    //#ActionsGroupPanel.java:132: method: void com.dmdirc.addons.ui_swing.dialogs.actionsmanager.ActionsGroupPanel$1.com.dmdirc.addons.ui_swing.dialogs.actionsmanager.ActionsGroupPanel$1(ActionsGroupPanel, TableModel, bool, JScrollPane, bool)
    //#ActionsGroupPanel.java:132: Warning: method not available - call not analyzed
    //#    call on void com.dmdirc.addons.ui_swing.components.PackingTable(TableModel, bool, JScrollPane, bool)
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.dialogs.actionsmanager.ActionsGroupPanel$1
    //#    method: void com.dmdirc.addons.ui_swing.dialogs.actionsmanager.ActionsGroupPanel$1(ActionsGroupPanel, TableModel, bool, JScrollPane, bool)
    //#    unanalyzed callee: void com.dmdirc.addons.ui_swing.components.PackingTable(TableModel, bool, JScrollPane, bool)
    //#input(void com.dmdirc.addons.ui_swing.dialogs.actionsmanager.ActionsGroupPanel$1(ActionsGroupPanel, TableModel, bool, JScrollPane, bool)): Param_1
    //#input(void com.dmdirc.addons.ui_swing.dialogs.actionsmanager.ActionsGroupPanel$1(ActionsGroupPanel, TableModel, bool, JScrollPane, bool)): this
    //#input(void com.dmdirc.addons.ui_swing.dialogs.actionsmanager.ActionsGroupPanel$1(ActionsGroupPanel, TableModel, bool, JScrollPane, bool)): x0
    //#input(void com.dmdirc.addons.ui_swing.dialogs.actionsmanager.ActionsGroupPanel$1(ActionsGroupPanel, TableModel, bool, JScrollPane, bool)): x1
    //#input(void com.dmdirc.addons.ui_swing.dialogs.actionsmanager.ActionsGroupPanel$1(ActionsGroupPanel, TableModel, bool, JScrollPane, bool)): x2
    //#input(void com.dmdirc.addons.ui_swing.dialogs.actionsmanager.ActionsGroupPanel$1(ActionsGroupPanel, TableModel, bool, JScrollPane, bool)): x3
    //#output(void com.dmdirc.addons.ui_swing.dialogs.actionsmanager.ActionsGroupPanel$1(ActionsGroupPanel, TableModel, bool, JScrollPane, bool)): new ActionTypeTableCellRenderer(ActionsGroupPanel$1#1) num objects
    //#output(void com.dmdirc.addons.ui_swing.dialogs.actionsmanager.ActionsGroupPanel$1(ActionsGroupPanel, TableModel, bool, JScrollPane, bool)): this.typeRenderer.__Tag
    //#output(void com.dmdirc.addons.ui_swing.dialogs.actionsmanager.ActionsGroupPanel$1(ActionsGroupPanel, TableModel, bool, JScrollPane, bool)): new ArrayCellRenderer(ActionsGroupPanel$1#2) num objects
    //#output(void com.dmdirc.addons.ui_swing.dialogs.actionsmanager.ActionsGroupPanel$1(ActionsGroupPanel, TableModel, bool, JScrollPane, bool)): this.arrayRenderer.__Tag
    //#output(void com.dmdirc.addons.ui_swing.dialogs.actionsmanager.ActionsGroupPanel$1(ActionsGroupPanel, TableModel, bool, JScrollPane, bool)): this.arrayRenderer
    //#output(void com.dmdirc.addons.ui_swing.dialogs.actionsmanager.ActionsGroupPanel$1(ActionsGroupPanel, TableModel, bool, JScrollPane, bool)): this.this$0
    //#output(void com.dmdirc.addons.ui_swing.dialogs.actionsmanager.ActionsGroupPanel$1(ActionsGroupPanel, TableModel, bool, JScrollPane, bool)): this.typeRenderer
    //#new obj(void com.dmdirc.addons.ui_swing.dialogs.actionsmanager.ActionsGroupPanel$1(ActionsGroupPanel, TableModel, bool, JScrollPane, bool)): new ActionTypeTableCellRenderer(ActionsGroupPanel$1#1)
    //#new obj(void com.dmdirc.addons.ui_swing.dialogs.actionsmanager.ActionsGroupPanel$1(ActionsGroupPanel, TableModel, bool, JScrollPane, bool)): new ArrayCellRenderer(ActionsGroupPanel$1#2)
    //#post(void com.dmdirc.addons.ui_swing.dialogs.actionsmanager.ActionsGroupPanel$1(ActionsGroupPanel, TableModel, bool, JScrollPane, bool)): this.arrayRenderer == &new ArrayCellRenderer(ActionsGroupPanel$1#2)
    //#post(void com.dmdirc.addons.ui_swing.dialogs.actionsmanager.ActionsGroupPanel$1(ActionsGroupPanel, TableModel, bool, JScrollPane, bool)): this.this$0 == Param_1
    //#post(void com.dmdirc.addons.ui_swing.dialogs.actionsmanager.ActionsGroupPanel$1(ActionsGroupPanel, TableModel, bool, JScrollPane, bool)): init'ed(this.this$0)
    //#post(void com.dmdirc.addons.ui_swing.dialogs.actionsmanager.ActionsGroupPanel$1(ActionsGroupPanel, TableModel, bool, JScrollPane, bool)): this.typeRenderer == &new ActionTypeTableCellRenderer(ActionsGroupPanel$1#1)
    //#post(void com.dmdirc.addons.ui_swing.dialogs.actionsmanager.ActionsGroupPanel$1(ActionsGroupPanel, TableModel, bool, JScrollPane, bool)): new ActionTypeTableCellRenderer(ActionsGroupPanel$1#1) num objects == 1
    //#post(void com.dmdirc.addons.ui_swing.dialogs.actionsmanager.ActionsGroupPanel$1(ActionsGroupPanel, TableModel, bool, JScrollPane, bool)): new ArrayCellRenderer(ActionsGroupPanel$1#2) num objects == 1
    //#post(void com.dmdirc.addons.ui_swing.dialogs.actionsmanager.ActionsGroupPanel$1(ActionsGroupPanel, TableModel, bool, JScrollPane, bool)): this.typeRenderer.__Tag == com/dmdirc/addons/ui_swing/components/renderers/ActionTypeTableCellRenderer
    //#post(void com.dmdirc.addons.ui_swing.dialogs.actionsmanager.ActionsGroupPanel$1(ActionsGroupPanel, TableModel, bool, JScrollPane, bool)): this.arrayRenderer.__Tag == com/dmdirc/addons/ui_swing/components/renderers/ArrayCellRenderer
    //#unanalyzed(void com.dmdirc.addons.ui_swing.dialogs.actionsmanager.ActionsGroupPanel$1(ActionsGroupPanel, TableModel, bool, JScrollPane, bool)): Effects-of-calling:javax.swing.table.DefaultTableCellRenderer

            /**
             * 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;
            /** Action type renderer. */
            private final ActionTypeTableCellRenderer typeRenderer =
                    new ActionTypeTableCellRenderer();
            /** Action response renrderer. */
            private final ArrayCellRenderer arrayRenderer =
    //#ActionsGroupPanel.java:144: end of method: void com.dmdirc.addons.ui_swing.dialogs.actionsmanager.ActionsGroupPanel$1.com.dmdirc.addons.ui_swing.dialogs.actionsmanager.ActionsGroupPanel$1(ActionsGroupPanel, TableModel, bool, JScrollPane, bool)
                    new ArrayCellRenderer();

            /** {@inheritDoc} */
            @Override
            public TableCellRenderer getCellRenderer(int row, int column) {
                switch (column) {
    //#ActionsGroupPanel.java:150: method: TableCellRenderer com.dmdirc.addons.ui_swing.dialogs.actionsmanager.ActionsGroupPanel$1.getCellRenderer(int, int)
    //#input(TableCellRenderer getCellRenderer(int, int)): column
    //#input(TableCellRenderer getCellRenderer(int, int)): row
    //#input(TableCellRenderer getCellRenderer(int, int)): this
    //#input(TableCellRenderer getCellRenderer(int, int)): this.arrayRenderer
    //#input(TableCellRenderer getCellRenderer(int, int)): this.typeRenderer
    //#output(TableCellRenderer getCellRenderer(int, int)): return_value
    //#post(TableCellRenderer getCellRenderer(int, int)): init'ed(return_value)
    //#test_vector(TableCellRenderer getCellRenderer(int, int)): column: {1}, {2}, {-2_147_483_648..0, 3..4_294_967_295}
                    case 1:
                        return typeRenderer;
                    case 2:
                        return arrayRenderer;
                    default:
                        return super.getCellRenderer(row, column);
    //#ActionsGroupPanel.java:156: Warning: method not available - call not analyzed
    //#    call on TableCellRenderer com.dmdirc.addons.ui_swing.components.PackingTable:getCellRenderer(int, int)
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.dialogs.actionsmanager.ActionsGroupPanel$1
    //#    method: TableCellRenderer getCellRenderer(int, int)
    //#    unanalyzed callee: TableCellRenderer com.dmdirc.addons.ui_swing.components.PackingTable:getCellRenderer(int, int)
    //#ActionsGroupPanel.java:156: end of method: TableCellRenderer com.dmdirc.addons.ui_swing.dialogs.actionsmanager.ActionsGroupPanel$1.getCellRenderer(int, int)
                }
            }
        };
        table.addMouseListener(new MouseAdapter() {
    //#ActionsGroupPanel.java:160: method: void com.dmdirc.addons.ui_swing.dialogs.actionsmanager.ActionsGroupPanel$2.com.dmdirc.addons.ui_swing.dialogs.actionsmanager.ActionsGroupPanel$2(ActionsGroupPanel)
    //#input(void com.dmdirc.addons.ui_swing.dialogs.actionsmanager.ActionsGroupPanel$2(ActionsGroupPanel)): Param_1
    //#input(void com.dmdirc.addons.ui_swing.dialogs.actionsmanager.ActionsGroupPanel$2(ActionsGroupPanel)): this
    //#output(void com.dmdirc.addons.ui_swing.dialogs.actionsmanager.ActionsGroupPanel$2(ActionsGroupPanel)): this.this$0
    //#post(void com.dmdirc.addons.ui_swing.dialogs.actionsmanager.ActionsGroupPanel$2(ActionsGroupPanel)): this.this$0 == Param_1
    //#post(void com.dmdirc.addons.ui_swing.dialogs.actionsmanager.ActionsGroupPanel$2(ActionsGroupPanel)): init'ed(this.this$0)
    //#ActionsGroupPanel.java:160: end of method: void com.dmdirc.addons.ui_swing.dialogs.actionsmanager.ActionsGroupPanel$2.com.dmdirc.addons.ui_swing.dialogs.actionsmanager.ActionsGroupPanel$2(ActionsGroupPanel)
    //#ActionsGroupPanel.java:160: Warning: method not available - call not analyzed
    //#    call on void com.dmdirc.addons.ui_swing.components.PackingTable:addMouseListener(MouseListener)
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.dialogs.actionsmanager.ActionsGroupPanel
    //#    method: void initComponents()
    //#    unanalyzed callee: void com.dmdirc.addons.ui_swing.components.PackingTable:addMouseListener(MouseListener)

            /** {@inheritDoc} */
            @Override
            public void mouseClicked(final MouseEvent e) {
                if (e.getClickCount() == 2) {
    //#ActionsGroupPanel.java:165: method: void com.dmdirc.addons.ui_swing.dialogs.actionsmanager.ActionsGroupPanel$2.mouseClicked(MouseEvent)
    //#input(void mouseClicked(MouseEvent)): e
    //#input(void mouseClicked(MouseEvent)): this
    //#input(void mouseClicked(MouseEvent)): this.this$0
    //#input(void mouseClicked(MouseEvent)): this.this$0.edit
    //#pre[1] (void mouseClicked(MouseEvent)): e != null
    //#pre[3] (void mouseClicked(MouseEvent)): (soft) this.this$0 != null
    //#pre[4] (void mouseClicked(MouseEvent)): (soft) this.edit != null
    //#test_vector(void mouseClicked(MouseEvent)): java.awt.event.MouseEvent:getClickCount(...)@165: {-2_147_483_648..1, 3..4_294_967_295}, {2}
                    edit.doClick();
                }
            }
    //#ActionsGroupPanel.java:168: end of method: void com.dmdirc.addons.ui_swing.dialogs.actionsmanager.ActionsGroupPanel$2.mouseClicked(MouseEvent)
        });
        add = new JButton("Add");
        edit = new JButton("Edit");
        delete = new JButton("Delete");

        scrollPane.setViewportView(table);

        table.setAutoCreateRowSorter(true);
    //#ActionsGroupPanel.java:176: Warning: method not available - call not analyzed
    //#    call on void com.dmdirc.addons.ui_swing.components.PackingTable:setAutoCreateRowSorter(bool)
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.dialogs.actionsmanager.ActionsGroupPanel
    //#    method: void initComponents()
    //#    unanalyzed callee: void com.dmdirc.addons.ui_swing.components.PackingTable:setAutoCreateRowSorter(bool)
        table.setAutoCreateColumnsFromModel(true);
    //#ActionsGroupPanel.java:177: Warning: method not available - call not analyzed
    //#    call on void com.dmdirc.addons.ui_swing.components.PackingTable:setAutoCreateColumnsFromModel(bool)
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.dialogs.actionsmanager.ActionsGroupPanel
    //#    method: void initComponents()
    //#    unanalyzed callee: void com.dmdirc.addons.ui_swing.components.PackingTable:setAutoCreateColumnsFromModel(bool)
        table.setColumnSelectionAllowed(false);
    //#ActionsGroupPanel.java:178: Warning: method not available - call not analyzed
    //#    call on void com.dmdirc.addons.ui_swing.components.PackingTable:setColumnSelectionAllowed(bool)
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.dialogs.actionsmanager.ActionsGroupPanel
    //#    method: void initComponents()
    //#    unanalyzed callee: void com.dmdirc.addons.ui_swing.components.PackingTable:setColumnSelectionAllowed(bool)
        table.setCellSelectionEnabled(false);
    //#ActionsGroupPanel.java:179: Warning: method not available - call not analyzed
    //#    call on void com.dmdirc.addons.ui_swing.components.PackingTable:setCellSelectionEnabled(bool)
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.dialogs.actionsmanager.ActionsGroupPanel
    //#    method: void initComponents()
    //#    unanalyzed callee: void com.dmdirc.addons.ui_swing.components.PackingTable:setCellSelectionEnabled(bool)
        table.setFillsViewportHeight(false);
    //#ActionsGroupPanel.java:180: Warning: method not available - call not analyzed
    //#    call on void com.dmdirc.addons.ui_swing.components.PackingTable:setFillsViewportHeight(bool)
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.dialogs.actionsmanager.ActionsGroupPanel
    //#    method: void initComponents()
    //#    unanalyzed callee: void com.dmdirc.addons.ui_swing.components.PackingTable:setFillsViewportHeight(bool)
        table.setRowSelectionAllowed(true);
    //#ActionsGroupPanel.java:181: Warning: method not available - call not analyzed
    //#    call on void com.dmdirc.addons.ui_swing.components.PackingTable:setRowSelectionAllowed(bool)
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.dialogs.actionsmanager.ActionsGroupPanel
    //#    method: void initComponents()
    //#    unanalyzed callee: void com.dmdirc.addons.ui_swing.components.PackingTable:setRowSelectionAllowed(bool)
        table.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
    //#ActionsGroupPanel.java:182: Warning: method not available - call not analyzed
    //#    call on void com.dmdirc.addons.ui_swing.components.PackingTable:setSelectionMode(int)
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.dialogs.actionsmanager.ActionsGroupPanel
    //#    method: void initComponents()
    //#    unanalyzed callee: void com.dmdirc.addons.ui_swing.components.PackingTable:setSelectionMode(int)
        table.getRowSorter().toggleSortOrder(0);
    //#ActionsGroupPanel.java:183: Warning: method not available - call not analyzed
    //#    call on RowSorter com.dmdirc.addons.ui_swing.components.PackingTable:getRowSorter()
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.dialogs.actionsmanager.ActionsGroupPanel
    //#    method: void initComponents()
    //#    unanalyzed callee: RowSorter com.dmdirc.addons.ui_swing.components.PackingTable:getRowSorter()

        edit.setEnabled(false);
        delete.setEnabled(false);
        add.setEnabled(group != null);
    }
    //#ActionsGroupPanel.java:188: end of method: void com.dmdirc.addons.ui_swing.dialogs.actionsmanager.ActionsGroupPanel.initComponents()

    /**
     * Adds listeners.
     */
    private void addListeners() {
        add.addActionListener(this);
    //#ActionsGroupPanel.java:194: method: void com.dmdirc.addons.ui_swing.dialogs.actionsmanager.ActionsGroupPanel.addListeners()
    //#input(void addListeners()): this
    //#input(void addListeners()): this.add
    //#input(void addListeners()): this.delete
    //#input(void addListeners()): this.edit
    //#input(void addListeners()): this.table
    //#pre[2] (void addListeners()): this.add != null
    //#pre[3] (void addListeners()): this.delete != null
    //#pre[4] (void addListeners()): this.edit != null
    //#pre[5] (void addListeners()): this.table != null
    //#presumption(void addListeners()): com.dmdirc.addons.ui_swing.components.PackingTable:getSelectionModel(...)@197 != null
        edit.addActionListener(this);
        delete.addActionListener(this);
        table.getSelectionModel().addListSelectionListener(this);
    //#ActionsGroupPanel.java:197: Warning: method not available - call not analyzed
    //#    call on ListSelectionModel com.dmdirc.addons.ui_swing.components.PackingTable:getSelectionModel()
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.dialogs.actionsmanager.ActionsGroupPanel
    //#    method: void addListeners()
    //#    unanalyzed callee: ListSelectionModel com.dmdirc.addons.ui_swing.components.PackingTable:getSelectionModel()
    }
    //#ActionsGroupPanel.java:198: end of method: void com.dmdirc.addons.ui_swing.dialogs.actionsmanager.ActionsGroupPanel.addListeners()

    /**
     * Lays out the components.
     */
    private void layoutComponents() {
        setLayout(new MigLayout("fill"));
    //#ActionsGroupPanel.java:204: method: void com.dmdirc.addons.ui_swing.dialogs.actionsmanager.ActionsGroupPanel.layoutComponents()
    //#ActionsGroupPanel.java:204: Warning: method not available - call not analyzed
    //#    call on void net.miginfocom.swing.MigLayout(String)
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.dialogs.actionsmanager.ActionsGroupPanel
    //#    method: void layoutComponents()
    //#    unanalyzed callee: void net.miginfocom.swing.MigLayout(String)
    //#ActionsGroupPanel.java:204: Warning: method not available - call not analyzed
    //#    call on void com.dmdirc.addons.ui_swing.dialogs.actionsmanager.ActionsGroupPanel:setLayout(LayoutManager)
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.dialogs.actionsmanager.ActionsGroupPanel
    //#    method: void layoutComponents()
    //#    unanalyzed callee: void com.dmdirc.addons.ui_swing.dialogs.actionsmanager.ActionsGroupPanel:setLayout(LayoutManager)
    //#input(void layoutComponents()): this
    //#input(void layoutComponents()): this.add
    //#input(void layoutComponents()): this.delete
    //#input(void layoutComponents()): this.edit
    //#input(void layoutComponents()): this.scrollPane
    //#pre[2] (void layoutComponents()): init'ed(this.add)
    //#pre[3] (void layoutComponents()): init'ed(this.delete)
    //#pre[4] (void layoutComponents()): init'ed(this.edit)
    //#pre[5] (void layoutComponents()): init'ed(this.scrollPane)

        add(scrollPane, "grow, push, span 3, wrap");
    //#ActionsGroupPanel.java:206: Warning: method not available - call not analyzed
    //#    call on void com.dmdirc.addons.ui_swing.dialogs.actionsmanager.ActionsGroupPanel:add(Component, Object)
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.dialogs.actionsmanager.ActionsGroupPanel
    //#    method: void layoutComponents()
    //#    unanalyzed callee: void com.dmdirc.addons.ui_swing.dialogs.actionsmanager.ActionsGroupPanel:add(Component, Object)
        add(add, "right, sgx button");
    //#ActionsGroupPanel.java:207: Warning: method not available - call not analyzed
    //#    call on void com.dmdirc.addons.ui_swing.dialogs.actionsmanager.ActionsGroupPanel:add(Component, Object)
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.dialogs.actionsmanager.ActionsGroupPanel
    //#    method: void layoutComponents()
    //#    unanalyzed callee: void com.dmdirc.addons.ui_swing.dialogs.actionsmanager.ActionsGroupPanel:add(Component, Object)
        add(edit, "right, sgx button");
    //#ActionsGroupPanel.java:208: Warning: method not available - call not analyzed
    //#    call on void com.dmdirc.addons.ui_swing.dialogs.actionsmanager.ActionsGroupPanel:add(Component, Object)
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.dialogs.actionsmanager.ActionsGroupPanel
    //#    method: void layoutComponents()
    //#    unanalyzed callee: void com.dmdirc.addons.ui_swing.dialogs.actionsmanager.ActionsGroupPanel:add(Component, Object)
        add(delete, "right, sgx button");
    //#ActionsGroupPanel.java:209: Warning: method not available - call not analyzed
    //#    call on void com.dmdirc.addons.ui_swing.dialogs.actionsmanager.ActionsGroupPanel:add(Component, Object)
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.dialogs.actionsmanager.ActionsGroupPanel
    //#    method: void layoutComponents()
    //#    unanalyzed callee: void com.dmdirc.addons.ui_swing.dialogs.actionsmanager.ActionsGroupPanel:add(Component, Object)
    }
    //#ActionsGroupPanel.java:210: end of method: void com.dmdirc.addons.ui_swing.dialogs.actionsmanager.ActionsGroupPanel.layoutComponents()

    /**
     * Sets the action group for the panel.
     * 
     * @param group New action group
     */
    public void setActionGroup(final ActionGroup group) {
        this.group = group;
    //#ActionsGroupPanel.java:218: method: void com.dmdirc.addons.ui_swing.dialogs.actionsmanager.ActionsGroupPanel.setActionGroup(ActionGroup)
    //#input(void setActionGroup(ActionGroup)): com/dmdirc/addons/ui_swing/dialogs/actionsmanager/ActionTableModel.__Descendant_Table[com/dmdirc/addons/ui_swing/dialogs/actionsmanager/ActionTableModel]
    //#input(void setActionGroup(ActionGroup)): com/dmdirc/addons/ui_swing/dialogs/actionsmanager/ActionTableModel.__Descendant_Table[others]
    //#input(void setActionGroup(ActionGroup)): com/dmdirc/addons/ui_swing/dialogs/actionsmanager/ActionTableModel.__Dispatch_Table.setActionGroup(Lcom/dmdirc/actions/ActionGroup;)V
    //#input(void setActionGroup(ActionGroup)): group
    //#input(void setActionGroup(ActionGroup)): this
    //#input(void setActionGroup(ActionGroup)): this.add
    //#input(void setActionGroup(ActionGroup)): this.model
    //#input(void setActionGroup(ActionGroup)): this.model.__Tag
    //#input(void setActionGroup(ActionGroup)): this.model.actions
    //#output(void setActionGroup(ActionGroup)): new ArrayList(setActionGroup#1*) num objects
    //#output(void setActionGroup(ActionGroup)): new ArrayList(setActionGroup#1*).__Lock
    //#output(void setActionGroup(ActionGroup)): this.group
    //#output(void setActionGroup(ActionGroup)): this.model.actions
    //#new obj(void setActionGroup(ActionGroup)): new ArrayList(setActionGroup#1*)
    //#pre[2] (void setActionGroup(ActionGroup)): init'ed(this.model.actions)
    //#pre[4] (void setActionGroup(ActionGroup)): this.add != null
    //#pre[5] (void setActionGroup(ActionGroup)): this.model != null
    //#pre[6] (void setActionGroup(ActionGroup)): this.model.__Tag == com/dmdirc/addons/ui_swing/dialogs/actionsmanager/ActionTableModel
    //#post(void setActionGroup(ActionGroup)): this.group == group
    //#post(void setActionGroup(ActionGroup)): init'ed(this.group)
    //#post(void setActionGroup(ActionGroup)): init'ed(this.model.actions)
    //#post(void setActionGroup(ActionGroup)): new ArrayList(setActionGroup#1*) num objects <= 1
    //#post(void setActionGroup(ActionGroup)): init'ed(new ArrayList(setActionGroup#1*).__Lock)
    //#unanalyzed(void setActionGroup(ActionGroup)): Effects-of-calling:java.util.ArrayList
    //#unanalyzed(void setActionGroup(ActionGroup)): Effects-of-calling:java.lang.Throwable:__curr_excep_obj
    //#unanalyzed(void setActionGroup(ActionGroup)): Effects-of-calling:com.dmdirc.actions.ActionGroup:getActions
    //#unanalyzed(void setActionGroup(ActionGroup)): Effects-of-calling:com.dmdirc.addons.ui_swing.dialogs.actionsmanager.ActionTableModel:fireTableDataChanged

        model.setActionGroup(group);
        add.setEnabled(group != null);
    }
    //#ActionsGroupPanel.java:222: end of method: void com.dmdirc.addons.ui_swing.dialogs.actionsmanager.ActionsGroupPanel.setActionGroup(ActionGroup)

    /** 
     * {@inheritDoc}
     * 
     * @param e Action event
     */
    @Override
    public void actionPerformed(final ActionEvent e) {
        if (e.getSource() == add) {
    //#ActionsGroupPanel.java:231: method: void com.dmdirc.addons.ui_swing.dialogs.actionsmanager.ActionsGroupPanel.actionPerformed(ActionEvent)
    //#input(void actionPerformed(ActionEvent)): "'?"._tainted
    //#input(void actionPerformed(ActionEvent)): "Are you sure you wish to delete the action '"._tainted
    //#input(void actionPerformed(ActionEvent)): com/dmdirc/addons/ui_swing/dialogs/actioneditor/ActionEditorDialog.__Class_Obj.__Lock
    //#input(void actionPerformed(ActionEvent)): com/dmdirc/addons/ui_swing/dialogs/actioneditor/ActionEditorDialog.java.awt.Dialog$ModalityType.DOCUMENT_MODAL
    //#input(void actionPerformed(ActionEvent)): com/dmdirc/addons/ui_swing/dialogs/actioneditor/ActionEditorDialog.me
    //#input(void actionPerformed(ActionEvent)): com/dmdirc/addons/ui_swing/dialogs/actionsmanager/ActionTableModel.__Descendant_Table[com/dmdirc/addons/ui_swing/dialogs/actionsmanager/ActionTableModel]
    //#input(void actionPerformed(ActionEvent)): com/dmdirc/addons/ui_swing/dialogs/actionsmanager/ActionTableModel.__Descendant_Table[others]
    //#input(void actionPerformed(ActionEvent)): com/dmdirc/addons/ui_swing/dialogs/actionsmanager/ActionTableModel.__Dispatch_Table.getAction(I)Lcom/dmdirc/actions/Action;
    //#input(void actionPerformed(ActionEvent)): e
    //#input(void actionPerformed(ActionEvent)): this
    //#input(void actionPerformed(ActionEvent)): this.add
    //#input(void actionPerformed(ActionEvent)): this.delete
    //#input(void actionPerformed(ActionEvent)): this.edit
    //#input(void actionPerformed(ActionEvent)): this.group
    //#input(void actionPerformed(ActionEvent)): this.model
    //#input(void actionPerformed(ActionEvent)): this.model.__Tag
    //#input(void actionPerformed(ActionEvent)): this.model.actions
    //#input(void actionPerformed(ActionEvent)): this.parent
    //#input(void actionPerformed(ActionEvent)): this.table
    //#output(void actionPerformed(ActionEvent)): com/dmdirc/addons/ui_swing/dialogs/actioneditor/ActionEditorDialog.me
    //#output(void actionPerformed(ActionEvent)): new ActionEditorDialog(getActionEditorDialog#1) num objects
    //#output(void actionPerformed(ActionEvent)): new ActionEditorDialog(getActionEditorDialog#1).__Tag
    //#output(void actionPerformed(ActionEvent)): new ActionEditorDialog(getActionEditorDialog#1).action
    //#output(void actionPerformed(ActionEvent)): new ActionEditorDialog(getActionEditorDialog#1).conditions
    //#output(void actionPerformed(ActionEvent)): new ActionEditorDialog(getActionEditorDialog#1).conditionsValid
    //#output(void actionPerformed(ActionEvent)): new ActionEditorDialog(getActionEditorDialog#1).group
    //#output(void actionPerformed(ActionEvent)): new ActionEditorDialog(getActionEditorDialog#1).name
    //#output(void actionPerformed(ActionEvent)): new ActionEditorDialog(getActionEditorDialog#1).nameValid
    //#output(void actionPerformed(ActionEvent)): new ActionEditorDialog(getActionEditorDialog#1).response
    //#output(void actionPerformed(ActionEvent)): new ActionEditorDialog(getActionEditorDialog#1).showSubstitutions
    //#output(void actionPerformed(ActionEvent)): new ActionEditorDialog(getActionEditorDialog#1).substitutions
    //#output(void actionPerformed(ActionEvent)): new ActionEditorDialog(getActionEditorDialog#1).triggers
    //#output(void actionPerformed(ActionEvent)): new ActionEditorDialog(getActionEditorDialog#1).triggersValid
    //#new obj(void actionPerformed(ActionEvent)): new ActionEditorDialog(getActionEditorDialog#1)
    //#pre[1] (void actionPerformed(ActionEvent)): e != null
    //#pre[4] (void actionPerformed(ActionEvent)): init'ed(this.add)
    //#pre[2] (void actionPerformed(ActionEvent)): (soft) init'ed(com/dmdirc/addons/ui_swing/dialogs/actioneditor/ActionEditorDialog.me)
    //#pre[5] (void actionPerformed(ActionEvent)): (soft) init'ed(this.delete)
    //#pre[6] (void actionPerformed(ActionEvent)): (soft) init'ed(this.edit)
    //#pre[7] (void actionPerformed(ActionEvent)): (soft) this.group != null
    //#pre[8] (void actionPerformed(ActionEvent)): (soft) this.model != null
    //#pre[9] (void actionPerformed(ActionEvent)): (soft) this.model.__Tag == com/dmdirc/addons/ui_swing/dialogs/actionsmanager/ActionTableModel
    //#pre[10] (void actionPerformed(ActionEvent)): (soft) this.model.actions != null
    //#pre[12] (void actionPerformed(ActionEvent)): (soft) init'ed(this.parent)
    //#pre[13] (void actionPerformed(ActionEvent)): (soft) this.table != null
    //#presumption(void actionPerformed(ActionEvent)): com.dmdirc.addons.ui_swing.components.PackingTable:getRowSorter(...)@234 != null
    //#presumption(void actionPerformed(ActionEvent)): com.dmdirc.addons.ui_swing.components.PackingTable:getRowSorter(...)@238 != null
    //#presumption(void actionPerformed(ActionEvent)): java.util.List:get(...)@143 != null
    //#post(void actionPerformed(ActionEvent)): com/dmdirc/addons/ui_swing/dialogs/actioneditor/ActionEditorDialog.me == One-of{old com/dmdirc/addons/ui_swing/dialogs/actioneditor/ActionEditorDialog.me, &new ActionEditorDialog(getActionEditorDialog#1)}
    //#post(void actionPerformed(ActionEvent)): init'ed(com/dmdirc/addons/ui_swing/dialogs/actioneditor/ActionEditorDialog.me)
    //#post(void actionPerformed(ActionEvent)): new ActionEditorDialog(getActionEditorDialog#1) num objects <= 1
    //#post(void actionPerformed(ActionEvent)): init'ed(new ActionEditorDialog(getActionEditorDialog#1).__Tag)
    //#post(void actionPerformed(ActionEvent)): init'ed(new ActionEditorDialog(getActionEditorDialog#1).action)
    //#post(void actionPerformed(ActionEvent)): init'ed(new ActionEditorDialog(getActionEditorDialog#1).conditions)
    //#post(void actionPerformed(ActionEvent)): init'ed(new ActionEditorDialog(getActionEditorDialog#1).conditionsValid)
    //#post(void actionPerformed(ActionEvent)): init'ed(new ActionEditorDialog(getActionEditorDialog#1).group)
    //#post(void actionPerformed(ActionEvent)): init'ed(new ActionEditorDialog(getActionEditorDialog#1).name)
    //#post(void actionPerformed(ActionEvent)): init'ed(new ActionEditorDialog(getActionEditorDialog#1).nameValid)
    //#post(void actionPerformed(ActionEvent)): init'ed(new ActionEditorDialog(getActionEditorDialog#1).response)
    //#post(void actionPerformed(ActionEvent)): init'ed(new ActionEditorDialog(getActionEditorDialog#1).showSubstitutions)
    //#post(void actionPerformed(ActionEvent)): init'ed(new ActionEditorDialog(getActionEditorDialog#1).substitutions)
    //#post(void actionPerformed(ActionEvent)): init'ed(new ActionEditorDialog(getActionEditorDialog#1).triggers)
    //#post(void actionPerformed(ActionEvent)): init'ed(new ActionEditorDialog(getActionEditorDialog#1).triggersValid)
    //#unanalyzed(void actionPerformed(ActionEvent)): Effects-of-calling:javax.swing.JButton:addActionListener
    //#unanalyzed(void actionPerformed(ActionEvent)): Effects-of-calling:com.dmdirc.addons.ui_swing.dialogs.actioneditor.ActionEditorDialog:getOkButton
    //#unanalyzed(void actionPerformed(ActionEvent)): Effects-of-calling:com.dmdirc.addons.ui_swing.dialogs.actioneditor.ActionEditorDialog:getCancelButton
    //#unanalyzed(void actionPerformed(ActionEvent)): Effects-of-calling:com.dmdirc.addons.ui_swing.dialogs.actioneditor.ActionNamePanel:addPropertyChangeListener
    //#unanalyzed(void actionPerformed(ActionEvent)): Effects-of-calling:com.dmdirc.addons.ui_swing.dialogs.actioneditor.ActionTriggersPanel:addPropertyChangeListener
    //#unanalyzed(void actionPerformed(ActionEvent)): Effects-of-calling:com.dmdirc.addons.ui_swing.dialogs.actioneditor.ActionConditionsPanel:addPropertyChangeListener
    //#unanalyzed(void actionPerformed(ActionEvent)): Effects-of-calling:java.awt.event.WindowAdapter
    //#unanalyzed(void actionPerformed(ActionEvent)): Effects-of-calling:com.dmdirc.addons.ui_swing.dialogs.actioneditor.ActionEditorDialog:addWindowListener
    //#unanalyzed(void actionPerformed(ActionEvent)): Effects-of-calling:java.awt.Dimension
    //#unanalyzed(void actionPerformed(ActionEvent)): Effects-of-calling:com.dmdirc.addons.ui_swing.dialogs.actioneditor.ActionEditorDialog:setMinimumSize
    //#unanalyzed(void actionPerformed(ActionEvent)): Effects-of-calling:net.miginfocom.swing.MigLayout
    //#unanalyzed(void actionPerformed(ActionEvent)): Effects-of-calling:com.dmdirc.addons.ui_swing.dialogs.actioneditor.ActionEditorDialog:setLayout
    //#unanalyzed(void actionPerformed(ActionEvent)): Effects-of-calling:com.dmdirc.addons.ui_swing.dialogs.actioneditor.ActionEditorDialog:add
    //#unanalyzed(void actionPerformed(ActionEvent)): Effects-of-calling:com.dmdirc.addons.ui_swing.dialogs.actioneditor.ActionEditorDialog:getLeftButton
    //#unanalyzed(void actionPerformed(ActionEvent)): Effects-of-calling:com.dmdirc.addons.ui_swing.dialogs.actioneditor.ActionEditorDialog:getRightButton
    //#unanalyzed(void actionPerformed(ActionEvent)): Effects-of-calling:java.lang.Throwable:__curr_excep_obj
    //#unanalyzed(void actionPerformed(ActionEvent)): Effects-of-calling:com.dmdirc.addons.ui_swing.components.StandardDialog
    //#unanalyzed(void actionPerformed(ActionEvent)): Effects-of-calling:com.dmdirc.addons.ui_swing.dialogs.actioneditor.ActionEditorDialog:setDefaultCloseOperation
    //#unanalyzed(void actionPerformed(ActionEvent)): Effects-of-calling:com.dmdirc.addons.ui_swing.dialogs.actioneditor.ActionEditorDialog:setTitle
    //#unanalyzed(void actionPerformed(ActionEvent)): Effects-of-calling:initComponents
    //#unanalyzed(void actionPerformed(ActionEvent)): Effects-of-calling:doComponents
    //#unanalyzed(void actionPerformed(ActionEvent)): Effects-of-calling:com.dmdirc.addons.ui_swing.dialogs.actioneditor.ActionEditorDialog:setResizable
    //#unanalyzed(void actionPerformed(ActionEvent)): Effects-of-calling:com.dmdirc.addons.ui_swing.dialogs.actioneditor.ActionEditorDialog:pack
    //#unanalyzed(void actionPerformed(ActionEvent)): Effects-of-calling:com.dmdirc.addons.ui_swing.dialogs.actioneditor.ActionEditorDialog:setLocationRelativeTo
    //#unanalyzed(void actionPerformed(ActionEvent)): Effects-of-calling:com.dmdirc.addons.ui_swing.dialogs.actioneditor.ActionEditorDialog:setVisible
    //#unanalyzed(void actionPerformed(ActionEvent)): Effects-of-calling:java.util.List:get
    //#test_vector(void actionPerformed(ActionEvent)): javax.swing.JOptionPane:showConfirmDialog(...)@241: {-2_147_483_648..-1, 1..4_294_967_295}, {0}
            ActionEditorDialog.showActionEditorDialog(parent, group.getName());
    //#ActionsGroupPanel.java:232: Warning: method not available - call not analyzed
    //#    call on String com.dmdirc.actions.ActionGroup:getName()
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.dialogs.actionsmanager.ActionsGroupPanel
    //#    method: void actionPerformed(ActionEvent)
    //#    unanalyzed callee: String com.dmdirc.actions.ActionGroup:getName()
        } else if (e.getSource() == edit) {
            ActionEditorDialog.showActionEditorDialog(parent, group.getName(),
    //#ActionsGroupPanel.java:234: Warning: method not available - call not analyzed
    //#    call on String com.dmdirc.actions.ActionGroup:getName()
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.dialogs.actionsmanager.ActionsGroupPanel
    //#    method: void actionPerformed(ActionEvent)
    //#    unanalyzed callee: String com.dmdirc.actions.ActionGroup:getName()
    //#ActionsGroupPanel.java:234: Warning: method not available - call not analyzed
    //#    call on RowSorter com.dmdirc.addons.ui_swing.components.PackingTable:getRowSorter()
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.dialogs.actionsmanager.ActionsGroupPanel
    //#    method: void actionPerformed(ActionEvent)
    //#    unanalyzed callee: RowSorter com.dmdirc.addons.ui_swing.components.PackingTable:getRowSorter()
    //#ActionsGroupPanel.java:234: Warning: method not available - call not analyzed
    //#    call on int com.dmdirc.addons.ui_swing.components.PackingTable:getSelectedRow()
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.dialogs.actionsmanager.ActionsGroupPanel
    //#    method: void actionPerformed(ActionEvent)
    //#    unanalyzed callee: int com.dmdirc.addons.ui_swing.components.PackingTable:getSelectedRow()
                    model.getAction(
                    table.getRowSorter().convertRowIndexToModel(table.getSelectedRow())));
        } else if (e.getSource() == delete) {
            final Action action =
    //#ActionsGroupPanel.java:238: Warning: method not available - call not analyzed
    //#    call on RowSorter com.dmdirc.addons.ui_swing.components.PackingTable:getRowSorter()
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.dialogs.actionsmanager.ActionsGroupPanel
    //#    method: void actionPerformed(ActionEvent)
    //#    unanalyzed callee: RowSorter com.dmdirc.addons.ui_swing.components.PackingTable:getRowSorter()
    //#ActionsGroupPanel.java:238: Warning: method not available - call not analyzed
    //#    call on int com.dmdirc.addons.ui_swing.components.PackingTable:getSelectedRow()
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.dialogs.actionsmanager.ActionsGroupPanel
    //#    method: void actionPerformed(ActionEvent)
    //#    unanalyzed callee: int com.dmdirc.addons.ui_swing.components.PackingTable:getSelectedRow()
                    model.getAction(
                    table.getRowSorter().convertRowIndexToModel(table.getSelectedRow()));
            final int response = JOptionPane.showConfirmDialog(this,
    //#ActionsGroupPanel.java:241: Warning: method not available - call not analyzed
    //#    call on String com.dmdirc.actions.Action:getName()
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.dialogs.actionsmanager.ActionsGroupPanel
    //#    method: void actionPerformed(ActionEvent)
    //#    unanalyzed callee: String com.dmdirc.actions.Action:getName()
                    "Are you sure you wish to delete the action '" +
                    action.getName() + "'?",
                    "Confirm deletion", JOptionPane.YES_NO_OPTION);
            if (response == JOptionPane.YES_OPTION) {
                ActionManager.deleteAction(action);
    //#ActionsGroupPanel.java:246: Warning: method not available - call not analyzed
    //#    call on void com.dmdirc.actions.ActionManager:deleteAction(Action)
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.dialogs.actionsmanager.ActionsGroupPanel
    //#    method: void actionPerformed(ActionEvent)
    //#    unanalyzed callee: void com.dmdirc.actions.ActionManager:deleteAction(Action)
            }
        }
    }
    //#ActionsGroupPanel.java:249: end of method: void com.dmdirc.addons.ui_swing.dialogs.actionsmanager.ActionsGroupPanel.actionPerformed(ActionEvent)

    /** {@inheritDoc} */
    @Override
    public void valueChanged(final ListSelectionEvent e) {
        if (e.getValueIsAdjusting()) {
    //#ActionsGroupPanel.java:254: method: void com.dmdirc.addons.ui_swing.dialogs.actionsmanager.ActionsGroupPanel.valueChanged(ListSelectionEvent)
    //#input(void valueChanged(ListSelectionEvent)): e
    //#input(void valueChanged(ListSelectionEvent)): this
    //#input(void valueChanged(ListSelectionEvent)): this.delete
    //#input(void valueChanged(ListSelectionEvent)): this.edit
    //#input(void valueChanged(ListSelectionEvent)): this.table
    //#pre[1] (void valueChanged(ListSelectionEvent)): e != null
    //#pre[3] (void valueChanged(ListSelectionEvent)): (soft) this.delete != null
    //#pre[4] (void valueChanged(ListSelectionEvent)): (soft) this.edit != null
    //#pre[5] (void valueChanged(ListSelectionEvent)): (soft) this.table != null
    //#test_vector(void valueChanged(ListSelectionEvent)): com.dmdirc.addons.ui_swing.components.PackingTable:getSelectedRow(...)@258: {-2_147_483_648..-2, 0..4_294_967_295}, {-1}
    //#test_vector(void valueChanged(ListSelectionEvent)): javax.swing.event.ListSelectionEvent:getValueIsAdjusting(...)@254: {0}, {1}
            return;
        }

        if (table.getSelectedRow() == -1) {
    //#ActionsGroupPanel.java:258: Warning: method not available - call not analyzed
    //#    call on int com.dmdirc.addons.ui_swing.components.PackingTable:getSelectedRow()
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.dialogs.actionsmanager.ActionsGroupPanel
    //#    method: void valueChanged(ListSelectionEvent)
    //#    unanalyzed callee: int com.dmdirc.addons.ui_swing.components.PackingTable:getSelectedRow()
            edit.setEnabled(false);
            delete.setEnabled(false);
        } else {
            edit.setEnabled(true);
            delete.setEnabled(true);
        }
    }
    //#ActionsGroupPanel.java:265: end of method: void com.dmdirc.addons.ui_swing.dialogs.actionsmanager.ActionsGroupPanel.valueChanged(ListSelectionEvent)
}
    //#output(com.dmdirc.addons.ui_swing.dialogs.actionsmanager.ActionsGroupPanel$2__static_init): __Descendant_Table[com/dmdirc/addons/ui_swing/dialogs/actionsmanager/ActionsGroupPanel$2]
    //#output(com.dmdirc.addons.ui_swing.dialogs.actionsmanager.ActionsGroupPanel$2__static_init): __Dispatch_Table.mouseClicked(Ljava/awt/event/MouseEvent;)V
    //#post(com.dmdirc.addons.ui_swing.dialogs.actionsmanager.ActionsGroupPanel$2__static_init): __Descendant_Table[com/dmdirc/addons/ui_swing/dialogs/actionsmanager/ActionsGroupPanel$2] == &__Dispatch_Table
    //#post(com.dmdirc.addons.ui_swing.dialogs.actionsmanager.ActionsGroupPanel$2__static_init): __Dispatch_Table.mouseClicked(Ljava/awt/event/MouseEvent;)V == &mouseClicked
    //#ActionsGroupPanel.java:: end of method: com.dmdirc.addons.ui_swing.dialogs.actionsmanager.ActionsGroupPanel$2.com.dmdirc.addons.ui_swing.dialogs.actionsmanager.ActionsGroupPanel$2__static_init
    //#ActionsGroupPanel.java:: end of class: com.dmdirc.addons.ui_swing.dialogs.actionsmanager.ActionsGroupPanel$2
    //#output(com.dmdirc.addons.ui_swing.dialogs.actionsmanager.ActionsGroupPanel$1__static_init): __Descendant_Table[com/dmdirc/addons/ui_swing/dialogs/actionsmanager/ActionsGroupPanel$1]
    //#output(com.dmdirc.addons.ui_swing.dialogs.actionsmanager.ActionsGroupPanel$1__static_init): __Dispatch_Table.getCellRenderer(II)Ljavax/swing/table/TableCellRenderer;
    //#post(com.dmdirc.addons.ui_swing.dialogs.actionsmanager.ActionsGroupPanel$1__static_init): __Descendant_Table[com/dmdirc/addons/ui_swing/dialogs/actionsmanager/ActionsGroupPanel$1] == &__Dispatch_Table
    //#post(com.dmdirc.addons.ui_swing.dialogs.actionsmanager.ActionsGroupPanel$1__static_init): __Dispatch_Table.getCellRenderer(II)Ljavax/swing/table/TableCellRenderer; == &getCellRenderer
    //#ActionsGroupPanel.java:: end of method: com.dmdirc.addons.ui_swing.dialogs.actionsmanager.ActionsGroupPanel$1.com.dmdirc.addons.ui_swing.dialogs.actionsmanager.ActionsGroupPanel$1__static_init
    //#ActionsGroupPanel.java:: end of class: com.dmdirc.addons.ui_swing.dialogs.actionsmanager.ActionsGroupPanel$1
    //#output(com.dmdirc.addons.ui_swing.dialogs.actionsmanager.ActionsGroupPanel__static_init): __Descendant_Table[com/dmdirc/addons/ui_swing/dialogs/actionsmanager/ActionsGroupPanel]
    //#output(com.dmdirc.addons.ui_swing.dialogs.actionsmanager.ActionsGroupPanel__static_init): __Dispatch_Table.actionChanged(Lcom/dmdirc/actions/Action;)V
    //#output(com.dmdirc.addons.ui_swing.dialogs.actionsmanager.ActionsGroupPanel__static_init): __Dispatch_Table.actionDeleted(Ljava/lang/String;)V
    //#output(com.dmdirc.addons.ui_swing.dialogs.actionsmanager.ActionsGroupPanel__static_init): __Dispatch_Table.actionPerformed(Ljava/awt/event/ActionEvent;)V
    //#output(com.dmdirc.addons.ui_swing.dialogs.actionsmanager.ActionsGroupPanel__static_init): __Dispatch_Table.addListeners()V
    //#output(com.dmdirc.addons.ui_swing.dialogs.actionsmanager.ActionsGroupPanel__static_init): __Dispatch_Table.initComponents()V
    //#output(com.dmdirc.addons.ui_swing.dialogs.actionsmanager.ActionsGroupPanel__static_init): __Dispatch_Table.layoutComponents()V
    //#output(com.dmdirc.addons.ui_swing.dialogs.actionsmanager.ActionsGroupPanel__static_init): __Dispatch_Table.setActionGroup(Lcom/dmdirc/actions/ActionGroup;)V
    //#output(com.dmdirc.addons.ui_swing.dialogs.actionsmanager.ActionsGroupPanel__static_init): __Dispatch_Table.valueChanged(Ljavax/swing/event/ListSelectionEvent;)V
    //#post(com.dmdirc.addons.ui_swing.dialogs.actionsmanager.ActionsGroupPanel__static_init): __Descendant_Table[com/dmdirc/addons/ui_swing/dialogs/actionsmanager/ActionsGroupPanel] == &__Dispatch_Table
    //#post(com.dmdirc.addons.ui_swing.dialogs.actionsmanager.ActionsGroupPanel__static_init): __Dispatch_Table.actionChanged(Lcom/dmdirc/actions/Action;)V == &actionChanged
    //#post(com.dmdirc.addons.ui_swing.dialogs.actionsmanager.ActionsGroupPanel__static_init): __Dispatch_Table.actionDeleted(Ljava/lang/String;)V == &actionDeleted
    //#post(com.dmdirc.addons.ui_swing.dialogs.actionsmanager.ActionsGroupPanel__static_init): __Dispatch_Table.actionPerformed(Ljava/awt/event/ActionEvent;)V == &actionPerformed
    //#post(com.dmdirc.addons.ui_swing.dialogs.actionsmanager.ActionsGroupPanel__static_init): __Dispatch_Table.addListeners()V == &addListeners
    //#post(com.dmdirc.addons.ui_swing.dialogs.actionsmanager.ActionsGroupPanel__static_init): __Dispatch_Table.initComponents()V == &initComponents
    //#post(com.dmdirc.addons.ui_swing.dialogs.actionsmanager.ActionsGroupPanel__static_init): __Dispatch_Table.layoutComponents()V == &layoutComponents
    //#post(com.dmdirc.addons.ui_swing.dialogs.actionsmanager.ActionsGroupPanel__static_init): __Dispatch_Table.setActionGroup(Lcom/dmdirc/actions/ActionGroup;)V == &setActionGroup
    //#post(com.dmdirc.addons.ui_swing.dialogs.actionsmanager.ActionsGroupPanel__static_init): __Dispatch_Table.valueChanged(Ljavax/swing/event/ListSelectionEvent;)V == &valueChanged
    //#ActionsGroupPanel.java:: end of method: com.dmdirc.addons.ui_swing.dialogs.actionsmanager.ActionsGroupPanel.com.dmdirc.addons.ui_swing.dialogs.actionsmanager.ActionsGroupPanel__static_init
    //#ActionsGroupPanel.java:: end of class: com.dmdirc.addons.ui_swing.dialogs.actionsmanager.ActionsGroupPanel
