private void insertArgument(int row) {
        // Get the argument name
        String argumentName = (String) JOptionPane.showInputDialog(
                this, // owner
                "Enter unique macro argument label", // Message
                "Macro Builder", // Title
                JOptionPane.PLAIN_MESSAGE);
        
        if(argumentName != null) {
            argumentName = argumentName.trim();
            
            // Check if valid - i.e one word made from characters
            if(!argumentName.matches("[a-z|A-Z]+")) {
                UIUtilities.showErrorDialog(this,
                        "Invalid argument label.  Use characters only");
                
                // Test failed - restart argument entry
                insertArgument(row);
                return;
            }
            
            // Check that the given argument is not already in the table
            for(int i = 0; i < argumentTable.getRowCount(); i++) {
                if(argumentName.equalsIgnoreCase((String) argumentTable.getValueAt(i, 1))) {
                    UIUtilities.showErrorDialog(this, "Duplicate argument label name entered");
                    
                    // Test failed - restart argument entry
                    insertArgument(row);
                    return;
                }
            }
            
            // All test passed - add the argument
            MacroArgumentTableModel tableModel = (MacroArgumentTableModel) argumentTable.getModel();
            
            // If the given row is bigger than the current table size, a new row is added
            if(row > argumentTable.getRowCount()) {
                tableModel.addRow(new String[] { "", argumentName});
            }else {
                tableModel.insertRow(row, new String[] { "", argumentName});
            }
        }     
    }