You may work with a partner on this assignment if you wish. If you work with a partner, make sure that both your names are included on everything submitted. No late assignments will be accepted!

Implement a graphical driver, PartyPlannerGUIDriver, to exercise the PartyPlanner class (and supporting classes/interfaces) developed in Program 3. You will be adding the capability to add parties from an input file and to write all parties to an output file. This will involve writing an extra constructor for Party and overloading the add method in PartyPlanner. You should write a method in Party that returns a String containing all instance variables separated by commas (EXCEPT for isPaid, whosInvited, whosAttending, and whosNotAttending). The instance variables should NOT be formatted in the method. The PartyPlanner class will need additional methods to add data from a specified file and to write data to a specified file. The graphical driver will have a PartyPlanner object as an instance variable and will direct that object to perform various tasks. Your program should be as robust as possible (handle bad input from the user by catching exceptions).

Use inner classes to detect all events.

Program Specification:
Creation of appropriate listener classes. Correct use of listeners to detect user actions. Use of panels and layout managers to create an intuitive user interface. Use of buttons and text boxes to display information and accept user input. Proper use of text files to read in and store concert information. Use of exception handling for IO and user input.

Program Documentation:
Refer to the documentation guidelines discussed in class and in the text.