private void recursiveDir(String baseDir, ProgressWorker task)
	{
		recursiveCount++;
		if (!task.getCancelled())
		{
			task.setMessage("<html><body>Scanning Directory #" + recursiveCount + "<BR>" + (baseDir.length() < 70 ? baseDir : baseDir.substring(0, 70) + "...") + "</body></html>");

			File mediaDir = new File(baseDir);
			String[] entryList = mediaDir.list();
			List<String> fileList = new ArrayList<String>();
			List<String> dirList = new ArrayList<String>();
			StringBuilder s = new StringBuilder();

			if (entryList != null)
			{
				File tempFile = null;
				for (int i = 0; i < entryList.length; i++)
				{
					s.append(baseDir);
					if (!baseDir.endsWith(Constants.FS))
					{
						s.append(Constants.FS);
					}
					s.append(entryList[i]);
					tempFile = new File(s.toString());
					if (tempFile.isDirectory())
					{
						dirList.add(s.toString());
					}
					else
					{
						if (endsWithIndexedExtension(s.toString()))
						{
							fileList.add(s.toString());
						}
					}
					s.setLength(0);
				}
			}

			Collections.sort(fileList);
			Collections.sort(dirList);

			for (String file : fileList)
			{
				thisFileList.add(file);
			}

			for (String dir : dirList)
			{
				thisDirList.add(dir);
				recursiveDir(dir, task);
			}

			fileList.clear();
			dirList.clear();
		}
		else
		{
			return;
		}
	}