Many changes: Enable DataDisplayerTableCubes to change view mode and response to key pressed.
Use observer pattern let DataDisplayerTableCubes listen to changes on viewMode of WindowProjector.
Add onKeyPressed method to IDataDisplayer, let DataDisplayerTableCubes can change cross view positions
when pressing 'j' or 'k'.
Though listening to viewMode can also be implemented by adding method to IDataDisplayer,
I prefer observer pattern because it visualizes information flow in the large structure (class diagram), and viewMode
is a clear information, only one version exists through out the program, every others who want to access it has to ask
WindowProjector (well, actually not in observer pattern), thus it fit the intent of the pattern.
I'll think again whether the implementation now is good enough and if there are better choices.