This is quite a long class to digest. It needs more comments. Can you put comments for methods explaining:
1) When the method is called if it's a method that performs something after a user action.
2) What it does.