//# 0 errors, 195 messages
//#
/*
    //#ActionTableModel.java:1:1: class: com.dmdirc.addons.ui_swing.dialogs.actionsmanager.ActionTableModel
    //#ActionTableModel.java:1:1: method: com.dmdirc.addons.ui_swing.dialogs.actionsmanager.ActionTableModel.com.dmdirc.addons.ui_swing.dialogs.actionsmanager.ActionTableModel__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.interfaces.ActionType;

import java.util.ArrayList;
import java.util.List;

import javax.swing.table.AbstractTableModel;

/**
 * Action table model.
 */
public class ActionTableModel extends AbstractTableModel {

    /**
     * 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 list. */
    private List<Action> actions;

    /**
     * Instantiates a new table model.
     */
    public ActionTableModel() {
        this(new ArrayList<Action>());
    //#ActionTableModel.java:52: method: void com.dmdirc.addons.ui_swing.dialogs.actionsmanager.ActionTableModel.com.dmdirc.addons.ui_swing.dialogs.actionsmanager.ActionTableModel()
    //#input(void com.dmdirc.addons.ui_swing.dialogs.actionsmanager.ActionTableModel()): this
    //#output(void com.dmdirc.addons.ui_swing.dialogs.actionsmanager.ActionTableModel()): new ArrayList(ActionTableModel#1) num objects
    //#output(void com.dmdirc.addons.ui_swing.dialogs.actionsmanager.ActionTableModel()): this.actions
    //#new obj(void com.dmdirc.addons.ui_swing.dialogs.actionsmanager.ActionTableModel()): new ArrayList(ActionTableModel#1)
    //#post(void com.dmdirc.addons.ui_swing.dialogs.actionsmanager.ActionTableModel()): this.actions == &new ArrayList(ActionTableModel#1)
    //#post(void com.dmdirc.addons.ui_swing.dialogs.actionsmanager.ActionTableModel()): new ArrayList(ActionTableModel#1) num objects == 1
    //#post(void com.dmdirc.addons.ui_swing.dialogs.actionsmanager.ActionTableModel()): new ArrayList(ActionTableModel#1) num objects == 0
    //#unanalyzed(void com.dmdirc.addons.ui_swing.dialogs.actionsmanager.ActionTableModel()): Effects-of-calling:javax.swing.table.AbstractTableModel
    //#unanalyzed(void com.dmdirc.addons.ui_swing.dialogs.actionsmanager.ActionTableModel()): Effects-of-calling:java.util.ArrayList
    }
    //#ActionTableModel.java:53: end of method: void com.dmdirc.addons.ui_swing.dialogs.actionsmanager.ActionTableModel.com.dmdirc.addons.ui_swing.dialogs.actionsmanager.ActionTableModel()

    /**
     * Instantiates a new table model.
     * 
     * @param actions Actions to show
     */
    public ActionTableModel(final List<Action> actions) {
        super();
    //#ActionTableModel.java:61: method: void com.dmdirc.addons.ui_swing.dialogs.actionsmanager.ActionTableModel.com.dmdirc.addons.ui_swing.dialogs.actionsmanager.ActionTableModel(List)
    //#input(void com.dmdirc.addons.ui_swing.dialogs.actionsmanager.ActionTableModel(List)): actions
    //#input(void com.dmdirc.addons.ui_swing.dialogs.actionsmanager.ActionTableModel(List)): this
    //#output(void com.dmdirc.addons.ui_swing.dialogs.actionsmanager.ActionTableModel(List)): new ArrayList(ActionTableModel#1) num objects
    //#output(void com.dmdirc.addons.ui_swing.dialogs.actionsmanager.ActionTableModel(List)): this.actions
    //#new obj(void com.dmdirc.addons.ui_swing.dialogs.actionsmanager.ActionTableModel(List)): new ArrayList(ActionTableModel#1)
    //#post(void com.dmdirc.addons.ui_swing.dialogs.actionsmanager.ActionTableModel(List)): this.actions == One-of{&new ArrayList(ActionTableModel#1), actions}
    //#post(void com.dmdirc.addons.ui_swing.dialogs.actionsmanager.ActionTableModel(List)): this.actions != null
    //#post(void com.dmdirc.addons.ui_swing.dialogs.actionsmanager.ActionTableModel(List)): new ArrayList(ActionTableModel#1) num objects <= 1
    //#test_vector(void com.dmdirc.addons.ui_swing.dialogs.actionsmanager.ActionTableModel(List)): actions: Inverse{null}, Addr_Set{null}

        if (actions == null) {
            this.actions = new ArrayList<Action>();
        } else {
            this.actions = actions;
        }
    }
    //#ActionTableModel.java:68: end of method: void com.dmdirc.addons.ui_swing.dialogs.actionsmanager.ActionTableModel.com.dmdirc.addons.ui_swing.dialogs.actionsmanager.ActionTableModel(List)

    /** {@inheritDoc} */
    @Override
    public int getRowCount() {
        synchronized (actions) {
    //#ActionTableModel.java:73: method: int com.dmdirc.addons.ui_swing.dialogs.actionsmanager.ActionTableModel.getRowCount()
    //#input(int getRowCount()): this
    //#input(int getRowCount()): this.actions
    //#input(int getRowCount()): this.actions.__Lock
    //#output(int getRowCount()): return_value
    //#pre[2] (int getRowCount()): this.actions != null
    //#post(int getRowCount()): init'ed(return_value)
            return actions.size();
        }
    //#ActionTableModel.java:75: end of method: int com.dmdirc.addons.ui_swing.dialogs.actionsmanager.ActionTableModel.getRowCount()
    }

    /** {@inheritDoc} */
    @Override
    public int getColumnCount() {
        return 3;
    //#ActionTableModel.java:81: method: int com.dmdirc.addons.ui_swing.dialogs.actionsmanager.ActionTableModel.getColumnCount()
    //#output(int getColumnCount()): return_value
    //#post(int getColumnCount()): return_value == 3
    //#ActionTableModel.java:81: end of method: int com.dmdirc.addons.ui_swing.dialogs.actionsmanager.ActionTableModel.getColumnCount()
    }

    /** {@inheritDoc} */
    @Override
    public String getColumnName(final int columnIndex) {
        switch (columnIndex) {
    //#ActionTableModel.java:87: method: String com.dmdirc.addons.ui_swing.dialogs.actionsmanager.ActionTableModel.getColumnName(int)
    //#input(String getColumnName(int)): "Unknown column: "._tainted
    //#input(String getColumnName(int)): columnIndex
    //#output(String getColumnName(int)): return_value
    //#pre[1] (String getColumnName(int)): columnIndex in {0..2}
    //#post(String getColumnName(int)): return_value in Addr_Set{&"Name",&"Trigger",&"Response"}
    //#test_vector(String getColumnName(int)): columnIndex: {0}, {1}, {2}
            case 0:
                return "Name";
            case 1:
                return "Trigger";
            case 2:
                return "Response";
            default:
                throw new IllegalArgumentException("Unknown column: " +
    //#ActionTableModel.java:95: end of method: String com.dmdirc.addons.ui_swing.dialogs.actionsmanager.ActionTableModel.getColumnName(int)
                        columnIndex);
        }
    }

    /** {@inheritDoc} */
    @Override
    public Class<?> getColumnClass(final int columnIndex) {
        switch (columnIndex) {
    //#ActionTableModel.java:103: method: Class com.dmdirc.addons.ui_swing.dialogs.actionsmanager.ActionTableModel.getColumnClass(int)
    //#input(Class getColumnClass(int)): "Unknown column: "._tainted
    //#input(Class getColumnClass(int)): columnIndex
    //#output(Class getColumnClass(int)): return_value
    //#pre[1] (Class getColumnClass(int)): columnIndex in {0..2}
    //#post(Class getColumnClass(int)): return_value in Addr_Set{&java.lang.String.__Class_Obj,&com.dmdirc.actions.interfaces.ActionType.__Class_Obj,&[Ljava.lang.String;.__Class_Obj}
    //#test_vector(Class getColumnClass(int)): columnIndex: {0}, {1}, {2}
            case 0:
                return String.class;
            case 1:
                return ActionType.class;
            case 2:
                return String[].class;
            default:
                throw new IllegalArgumentException("Unknown column: " +
    //#ActionTableModel.java:111: end of method: Class com.dmdirc.addons.ui_swing.dialogs.actionsmanager.ActionTableModel.getColumnClass(int)
                        columnIndex);
        }
    }

    /** {@inheritDoc} */
    @Override
    public Object getValueAt(final int rowIndex, final int columnIndex) {
        synchronized (actions) {
    //#ActionTableModel.java:119: method: Object com.dmdirc.addons.ui_swing.dialogs.actionsmanager.ActionTableModel.getValueAt(int, int)
    //#input(Object getValueAt(int, int)): "Unknown column: "._tainted
    //#input(Object getValueAt(int, int)): columnIndex
    //#input(Object getValueAt(int, int)): rowIndex
    //#input(Object getValueAt(int, int)): this
    //#input(Object getValueAt(int, int)): this.actions
    //#input(Object getValueAt(int, int)): this.actions.__Lock
    //#output(Object getValueAt(int, int)): return_value
    //#pre[1] (Object getValueAt(int, int)): columnIndex in {0..2}
    //#pre[4] (Object getValueAt(int, int)): this.actions != null
    //#presumption(Object getValueAt(int, int)): com.dmdirc.actions.Action:getTriggers(...).length@124 >= 1
    //#presumption(Object getValueAt(int, int)): com.dmdirc.actions.Action:getTriggers(...)@124 != null
    //#presumption(Object getValueAt(int, int)): java.util.List:get(...)@122 != null
    //#presumption(Object getValueAt(int, int)): java.util.List:get(...)@124 != null
    //#presumption(Object getValueAt(int, int)): java.util.List:get(...)@126 != null
    //#post(Object getValueAt(int, int)): init'ed(return_value)
    //#test_vector(Object getValueAt(int, int)): columnIndex: {0}, {1}, {2}
            switch (columnIndex) {
                case 0:
                    return actions.get(rowIndex).getName();
    //#ActionTableModel.java:122: 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.ActionTableModel
    //#    method: Object getValueAt(int, int)
    //#    unanalyzed callee: String com.dmdirc.actions.Action:getName()
                case 1:
                    return actions.get(rowIndex).getTriggers()[0];
    //#ActionTableModel.java:124: Warning: method not available - call not analyzed
    //#    call on ActionType[] com.dmdirc.actions.Action:getTriggers()
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.dialogs.actionsmanager.ActionTableModel
    //#    method: Object getValueAt(int, int)
    //#    unanalyzed callee: ActionType[] com.dmdirc.actions.Action:getTriggers()
                case 2:
                    return actions.get(rowIndex).getResponse();
    //#ActionTableModel.java:126: Warning: method not available - call not analyzed
    //#    call on String[] com.dmdirc.actions.Action:getResponse()
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.dialogs.actionsmanager.ActionTableModel
    //#    method: Object getValueAt(int, int)
    //#    unanalyzed callee: String[] com.dmdirc.actions.Action:getResponse()
                default:
                    throw new IllegalArgumentException("Unknown column: " +
                            columnIndex);
            }
        }
    //#ActionTableModel.java:131: end of method: Object com.dmdirc.addons.ui_swing.dialogs.actionsmanager.ActionTableModel.getValueAt(int, int)
    }

    /**
     * Returns the action at the specified row.
     * 
     * @param rowIndex Row index
     * 
     * @return Action
     */
    public Action getAction(final int rowIndex) {
        synchronized (actions) {
    //#ActionTableModel.java:142: method: Action com.dmdirc.addons.ui_swing.dialogs.actionsmanager.ActionTableModel.getAction(int)
    //#input(Action getAction(int)): rowIndex
    //#input(Action getAction(int)): this
    //#input(Action getAction(int)): this.actions
    //#input(Action getAction(int)): this.actions.__Lock
    //#output(Action getAction(int)): return_value
    //#pre[3] (Action getAction(int)): this.actions != null
    //#post(Action getAction(int)): init'ed(return_value)
            return actions.get(rowIndex);
        }
    //#ActionTableModel.java:144: end of method: Action com.dmdirc.addons.ui_swing.dialogs.actionsmanager.ActionTableModel.getAction(int)
    }

    /**
     * Returns the row index of the specified index.
     * 
     * @param action Action to get
     * 
     * @return Action row index or -1 if not found.
     */
    public int getAction(final Action action) {
        synchronized (actions) {
    //#ActionTableModel.java:155: method: int com.dmdirc.addons.ui_swing.dialogs.actionsmanager.ActionTableModel.getAction(Action)
    //#input(int getAction(Action)): action
    //#input(int getAction(Action)): this
    //#input(int getAction(Action)): this.actions
    //#input(int getAction(Action)): this.actions.__Lock
    //#output(int getAction(Action)): return_value
    //#pre[3] (int getAction(Action)): this.actions != null
    //#post(int getAction(Action)): init'ed(return_value)
            return actions.indexOf(action);
        }
    //#ActionTableModel.java:157: end of method: int com.dmdirc.addons.ui_swing.dialogs.actionsmanager.ActionTableModel.getAction(Action)
    }

    /**
     * Replaces the model data with the specified action group.
     * 
     * @param group New Action group
     */
    public void setActionGroup(final ActionGroup group) {
        synchronized (actions) {
    //#ActionTableModel.java:166: method: void com.dmdirc.addons.ui_swing.dialogs.actionsmanager.ActionTableModel.setActionGroup(ActionGroup)
    //#input(void setActionGroup(ActionGroup)): group
    //#input(void setActionGroup(ActionGroup)): this
    //#input(void setActionGroup(ActionGroup)): this.actions
    //#input(void setActionGroup(ActionGroup)): this.actions.__Lock
    //#output(void setActionGroup(ActionGroup)): new ArrayList(setActionGroup#1) num objects
    //#output(void setActionGroup(ActionGroup)): new ArrayList(setActionGroup#1).__Lock
    //#output(void setActionGroup(ActionGroup)): this.actions
    //#new obj(void setActionGroup(ActionGroup)): new ArrayList(setActionGroup#1)
    //#pre[2] (void setActionGroup(ActionGroup)): init'ed(this.actions)
    //#post(void setActionGroup(ActionGroup)): init'ed(this.actions)
    //#post(void setActionGroup(ActionGroup)): new ArrayList(setActionGroup#1) num objects <= 1
    //#post(void setActionGroup(ActionGroup)): init'ed(new ArrayList(setActionGroup#1).__Lock)
    //#test_vector(void setActionGroup(ActionGroup)): group: Inverse{null}, Addr_Set{null}
            if (group == null) {
                actions = new ArrayList<Action>();
            } else {
                actions = group.getActions();
    //#ActionTableModel.java:170: 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.ActionTableModel
    //#    method: void setActionGroup(ActionGroup)
    //#    unanalyzed callee: List com.dmdirc.actions.ActionGroup:getActions()
            }
            fireTableDataChanged();
    //#ActionTableModel.java:172: Warning: method not available - call not analyzed
    //#    call on void com.dmdirc.addons.ui_swing.dialogs.actionsmanager.ActionTableModel:fireTableDataChanged()
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.dialogs.actionsmanager.ActionTableModel
    //#    method: void setActionGroup(ActionGroup)
    //#    unanalyzed callee: void com.dmdirc.addons.ui_swing.dialogs.actionsmanager.ActionTableModel:fireTableDataChanged()
        }
    }
    //#ActionTableModel.java:174: end of method: void com.dmdirc.addons.ui_swing.dialogs.actionsmanager.ActionTableModel.setActionGroup(ActionGroup)

    /**
     * Adds an action to the model.
     * 
     * @param action Action to add
     */
    public void add(final Action action) {
        synchronized (actions) {
    //#ActionTableModel.java:182: method: void com.dmdirc.addons.ui_swing.dialogs.actionsmanager.ActionTableModel.add(Action)
    //#input(void add(Action)): action
    //#input(void add(Action)): this
    //#input(void add(Action)): this.actions
    //#input(void add(Action)): this.actions.__Lock
    //#pre[3] (void add(Action)): (soft) this.actions != null
    //#presumption(void add(Action)): java.util.List:size(...)@187 >= -2_147_483_647
    //#presumption(void add(Action)): java.util.List:size(...)@187 >= -2_147_483_647
    //#test_vector(void add(Action)): action: Inverse{null}, Addr_Set{null}
            if (action == null) {
                return;
            }
            actions.add(action);
            fireTableRowsInserted(actions.size() - 1, actions.size() - 1);
    //#ActionTableModel.java:187: Warning: method not available - call not analyzed
    //#    call on void com.dmdirc.addons.ui_swing.dialogs.actionsmanager.ActionTableModel:fireTableRowsInserted(int, int)
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.dialogs.actionsmanager.ActionTableModel
    //#    method: void add(Action)
    //#    unanalyzed callee: void com.dmdirc.addons.ui_swing.dialogs.actionsmanager.ActionTableModel:fireTableRowsInserted(int, int)
        }
    }
    //#ActionTableModel.java:189: end of method: void com.dmdirc.addons.ui_swing.dialogs.actionsmanager.ActionTableModel.add(Action)

    /**
     * Removes an action from the model.
     * 
     * @param action Action to remove
     */
    public void remove(final Action action) {
        if (action == null) {
    //#ActionTableModel.java:197: method: void com.dmdirc.addons.ui_swing.dialogs.actionsmanager.ActionTableModel.remove(Action)
    //#input(void remove(Action)): __Descendant_Table[com/dmdirc/addons/ui_swing/dialogs/actionsmanager/ActionTableModel]
    //#input(void remove(Action)): __Descendant_Table[others]
    //#input(void remove(Action)): __Dispatch_Table.remove(I)V
    //#input(void remove(Action)): action
    //#input(void remove(Action)): this
    //#input(void remove(Action)): this.__Tag
    //#input(void remove(Action)): this.actions
    //#pre[3] (void remove(Action)): (soft) this.__Tag == com/dmdirc/addons/ui_swing/dialogs/actionsmanager/ActionTableModel
    //#pre[4] (void remove(Action)): (soft) this.actions != null
    //#unanalyzed(void remove(Action)): Effects-of-calling:java.lang.Throwable:__curr_excep_obj
    //#unanalyzed(void remove(Action)): Effects-of-calling:java.util.List:remove
    //#unanalyzed(void remove(Action)): Effects-of-calling:com.dmdirc.addons.ui_swing.dialogs.actionsmanager.ActionTableModel:fireTableRowsDeleted
    //#test_vector(void remove(Action)): action: Inverse{null}, Addr_Set{null}
            return;
        }
        remove(actions.indexOf(action));
    }
    //#ActionTableModel.java:201: end of method: void com.dmdirc.addons.ui_swing.dialogs.actionsmanager.ActionTableModel.remove(Action)

    /**
     * Removes an action from the model.
     * 
     * @param index Index of the action to remove
     */
    public void remove(final int index) {
        synchronized (actions) {
    //#ActionTableModel.java:209: method: void com.dmdirc.addons.ui_swing.dialogs.actionsmanager.ActionTableModel.remove(int)
    //#input(void remove(int)): index
    //#input(void remove(int)): this
    //#input(void remove(int)): this.actions
    //#input(void remove(int)): this.actions.__Lock
    //#pre[3] (void remove(int)): (soft) this.actions != null
            if (index != -1) {
                actions.remove(index);
                fireTableRowsDeleted(index, index);
    //#ActionTableModel.java:212: Warning: method not available - call not analyzed
    //#    call on void com.dmdirc.addons.ui_swing.dialogs.actionsmanager.ActionTableModel:fireTableRowsDeleted(int, int)
    //#    severity: INFORMATIONAL
    //#    class: com.dmdirc.addons.ui_swing.dialogs.actionsmanager.ActionTableModel
    //#    method: void remove(int)
    //#    unanalyzed callee: void com.dmdirc.addons.ui_swing.dialogs.actionsmanager.ActionTableModel:fireTableRowsDeleted(int, int)
            }
        }
    }
    //#ActionTableModel.java:215: end of method: void com.dmdirc.addons.ui_swing.dialogs.actionsmanager.ActionTableModel.remove(int)

    /**
     * Checks if this model contains the specified action.
     * 
     * @param action Action to check for
     * 
     * @return true if the action exists
     */
    public boolean contains(final Action action) {
        synchronized (actions) {
    //#ActionTableModel.java:225: method: bool com.dmdirc.addons.ui_swing.dialogs.actionsmanager.ActionTableModel.contains(Action)
    //#input(bool contains(Action)): action
    //#input(bool contains(Action)): this
    //#input(bool contains(Action)): this.actions
    //#input(bool contains(Action)): this.actions.__Lock
    //#output(bool contains(Action)): return_value
    //#pre[3] (bool contains(Action)): this.actions != null
    //#post(bool contains(Action)): init'ed(return_value)
            return actions.contains(action);
        }
    //#ActionTableModel.java:227: end of method: bool com.dmdirc.addons.ui_swing.dialogs.actionsmanager.ActionTableModel.contains(Action)
    }
    
    public int findAction(final String name) {
        int location = -1;
    //#ActionTableModel.java:231: method: int com.dmdirc.addons.ui_swing.dialogs.actionsmanager.ActionTableModel.findAction(String)
    //#input(int findAction(String)): name
    //#input(int findAction(String)): this
    //#input(int findAction(String)): this.actions
    //#input(int findAction(String)): this.actions.__Lock
    //#output(int findAction(String)): return_value
    //#pre[3] (int findAction(String)): this.actions != null
    //#presumption(int findAction(String)): com.dmdirc.actions.Action:getName(...)@234 != null
    //#presumption(int findAction(String)): java.util.Iterator:next(...)@233 != null
    //#post(int findAction(String)): init'ed(return_value)
    //#test_vector(int findAction(String)): java.lang.String:equals(...)@234: {0}, {1}
    //#test_vector(int findAction(String)): java.util.Iterator:hasNext(...)@233: {1}, {0}
        synchronized (actions) {
            for(Action action : actions) {
                if (action.getName().equals(name)) {
    //#ActionTableModel.java:234: 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.ActionTableModel
    //#    method: int findAction(String)
    //#    unanalyzed callee: String com.dmdirc.actions.Action:getName()
                    location = actions.indexOf(action);
                }
            }
        }
        return location;
    //#ActionTableModel.java:239: end of method: int com.dmdirc.addons.ui_swing.dialogs.actionsmanager.ActionTableModel.findAction(String)
    }
}
    //#output(com.dmdirc.addons.ui_swing.dialogs.actionsmanager.ActionTableModel__static_init): __Descendant_Table[com/dmdirc/addons/ui_swing/dialogs/actionsmanager/ActionTableModel]
    //#output(com.dmdirc.addons.ui_swing.dialogs.actionsmanager.ActionTableModel__static_init): __Dispatch_Table.add(Lcom/dmdirc/actions/Action;)V
    //#output(com.dmdirc.addons.ui_swing.dialogs.actionsmanager.ActionTableModel__static_init): __Dispatch_Table.contains(Lcom/dmdirc/actions/Action;)Z
    //#output(com.dmdirc.addons.ui_swing.dialogs.actionsmanager.ActionTableModel__static_init): __Dispatch_Table.findAction(Ljava/lang/String;)I
    //#output(com.dmdirc.addons.ui_swing.dialogs.actionsmanager.ActionTableModel__static_init): __Dispatch_Table.getAction(I)Lcom/dmdirc/actions/Action;
    //#output(com.dmdirc.addons.ui_swing.dialogs.actionsmanager.ActionTableModel__static_init): __Dispatch_Table.getAction(Lcom/dmdirc/actions/Action;)I
    //#output(com.dmdirc.addons.ui_swing.dialogs.actionsmanager.ActionTableModel__static_init): __Dispatch_Table.getColumnClass(I)Ljava/lang/Class;
    //#output(com.dmdirc.addons.ui_swing.dialogs.actionsmanager.ActionTableModel__static_init): __Dispatch_Table.getColumnCount()I
    //#output(com.dmdirc.addons.ui_swing.dialogs.actionsmanager.ActionTableModel__static_init): __Dispatch_Table.getColumnName(I)Ljava/lang/String;
    //#output(com.dmdirc.addons.ui_swing.dialogs.actionsmanager.ActionTableModel__static_init): __Dispatch_Table.getRowCount()I
    //#output(com.dmdirc.addons.ui_swing.dialogs.actionsmanager.ActionTableModel__static_init): __Dispatch_Table.getValueAt(II)Ljava/lang/Object;
    //#output(com.dmdirc.addons.ui_swing.dialogs.actionsmanager.ActionTableModel__static_init): __Dispatch_Table.remove(I)V
    //#output(com.dmdirc.addons.ui_swing.dialogs.actionsmanager.ActionTableModel__static_init): __Dispatch_Table.remove(Lcom/dmdirc/actions/Action;)V
    //#output(com.dmdirc.addons.ui_swing.dialogs.actionsmanager.ActionTableModel__static_init): __Dispatch_Table.setActionGroup(Lcom/dmdirc/actions/ActionGroup;)V
    //#post(com.dmdirc.addons.ui_swing.dialogs.actionsmanager.ActionTableModel__static_init): __Descendant_Table[com/dmdirc/addons/ui_swing/dialogs/actionsmanager/ActionTableModel] == &__Dispatch_Table
    //#post(com.dmdirc.addons.ui_swing.dialogs.actionsmanager.ActionTableModel__static_init): __Dispatch_Table.add(Lcom/dmdirc/actions/Action;)V == &add
    //#post(com.dmdirc.addons.ui_swing.dialogs.actionsmanager.ActionTableModel__static_init): __Dispatch_Table.contains(Lcom/dmdirc/actions/Action;)Z == &contains
    //#post(com.dmdirc.addons.ui_swing.dialogs.actionsmanager.ActionTableModel__static_init): __Dispatch_Table.findAction(Ljava/lang/String;)I == &findAction
    //#post(com.dmdirc.addons.ui_swing.dialogs.actionsmanager.ActionTableModel__static_init): __Dispatch_Table.getAction(I)Lcom/dmdirc/actions/Action; == &getAction
    //#post(com.dmdirc.addons.ui_swing.dialogs.actionsmanager.ActionTableModel__static_init): __Dispatch_Table.getAction(Lcom/dmdirc/actions/Action;)I == &getAction
    //#post(com.dmdirc.addons.ui_swing.dialogs.actionsmanager.ActionTableModel__static_init): __Dispatch_Table.getColumnClass(I)Ljava/lang/Class; == &getColumnClass
    //#post(com.dmdirc.addons.ui_swing.dialogs.actionsmanager.ActionTableModel__static_init): __Dispatch_Table.getColumnCount()I == &getColumnCount
    //#post(com.dmdirc.addons.ui_swing.dialogs.actionsmanager.ActionTableModel__static_init): __Dispatch_Table.getColumnName(I)Ljava/lang/String; == &getColumnName
    //#post(com.dmdirc.addons.ui_swing.dialogs.actionsmanager.ActionTableModel__static_init): __Dispatch_Table.getRowCount()I == &getRowCount
    //#post(com.dmdirc.addons.ui_swing.dialogs.actionsmanager.ActionTableModel__static_init): __Dispatch_Table.getValueAt(II)Ljava/lang/Object; == &getValueAt
    //#post(com.dmdirc.addons.ui_swing.dialogs.actionsmanager.ActionTableModel__static_init): __Dispatch_Table.remove(I)V == &remove
    //#post(com.dmdirc.addons.ui_swing.dialogs.actionsmanager.ActionTableModel__static_init): __Dispatch_Table.remove(Lcom/dmdirc/actions/Action;)V == &remove
    //#post(com.dmdirc.addons.ui_swing.dialogs.actionsmanager.ActionTableModel__static_init): __Dispatch_Table.setActionGroup(Lcom/dmdirc/actions/ActionGroup;)V == &setActionGroup
    //#ActionTableModel.java:: end of method: com.dmdirc.addons.ui_swing.dialogs.actionsmanager.ActionTableModel.com.dmdirc.addons.ui_swing.dialogs.actionsmanager.ActionTableModel__static_init
    //#ActionTableModel.java:: end of class: com.dmdirc.addons.ui_swing.dialogs.actionsmanager.ActionTableModel
