private void processFileList(File[] inFiles, boolean inFirstDir, boolean inDescend)
	{
		if (inFiles == null) return;
		// Loop over elements in array
		for (int i=0; i<inFiles.length && !_cancelled; i++)
		{
			File file = inFiles[i];
			if (file.exists() && file.canRead())
			{
				// Check whether it's a file or a directory
				if (file.isFile())
				{
					processFile(file);
				}
				else if (file.isDirectory() && (inFirstDir || inDescend))
				{
					// Always process first directory,
					// only process subdirectories if checkbox selected
					File[] files = file.listFiles();
					processFileList(files, false, inDescend);
				}
			}
			// if file doesn't exist or isn't readable - ignore
		}
	}