More Swing Tic Tac Toe

This project is designed to give you practice using a List ADT to implement a Stack ADT, and reworking
an existing application.

Recall from the previous Swing Tic-Tac-Toe project that we specified a "Back" button, but left it inactive. You will now implement the "Back" button functionality in your Swing GUI, using a stack. You must also define a JUnit unit test to test your stack, and demonstrate that it works, apart from the GUI application.

The required functionality is this:

  1. If a player presses the "Back" button, the game should revert to the state as of the previous move.
  2. When a game is started, the "Back" button should be activated only after the first move is made.
  3. The "Back" button should be active only if there are previous moves to revert to, and inactive otherwise.

This behavior essentially describes a stack of states or moves. So:

  1. You must implement a stack to hold previous states or moves.
  2. To implement a Stack ADT for this project:
  3. If you use your previous List ADT, simply adding push and pop methods to your List ADT is not permitted--you must define separate ADTs, in which one clearly uses the other.
  4. Whichever implementation you choose, you must explain and defend your choice of implmentation in your Javadoc comments.