Rearranged Abstract Factory pattern source to have a better class scope. Now clients cannot create gui elements directly. They can still create factories. :(
Some Javadoc for Abstract Factory pattern source.