GUI mostly done

Here's the project with the skeleton of the GUI pretty much finished.  I'll need the code for sorting the files before I can do more on that I think.
use the singleton pattern here. (you need to synchronize) 
also strive to write methods that return a useful value to client and not a value (like null) that has been checked by the client before use. Methods that sometime return null are fragile because often the caller forgets to check and the result is a NPE (the most common error in Java programming). In this case, if an instance can't be returned, it would be more appropriate to throw an exception.