moved AiType enum into MultiAi class
renamed abstr package to abstrakt
moved Ai interface into same package as MultiAi
removed < 9 recommendation since we can now cancel a move
got rid of AiType enum
GameBoard now pushes an update notification to GameView when a counter
is placed
MVC refactor - model pushes update notifications to view, controller
updates view on its calculation timeline and view then pulls data
required to update itself from controller/model (also added MVC
interfaces and populated code with them)
now protects against the case where the time constraint doesn't allow
the AI to choose a col and we can't default to the first col since it's
full
added tooltips
moved setLimit from AbstractAi into derived class AbstractLimitedAi
now all UI updates in public UI notification methods (eg: on...) are
made on the event-dispatch thread in GameView. Implemented using
SwingUtilities.invokeLater
Game instance is now created on the EDT
added executeOnEdt method called by UI update notification handlers (eg:
on...)
changed ComponentListener to ComponentAdapter
made UI updates executing on EDT synchronous
refactored Ai inheritance hierarchy