In this lab, you will extend your Media Player to incorporate the following functionality:
A word of advice: These two functional elements sound conceptually simple, but the implementation is rather involved. Get started EARLY, and ask plenty of questions. It is important for you to properly interpret and correctly implement the code shown in the UML diagrams below.
MediaItem class is the fileName property that represents the audio file (.mp3, .wav, or .midi) containing the digitized music. Do not modify the MediaItem.java file for this assignment.MediaController class which will be responsible (for now) for loading and saving different playlists. Each playlist is a collection of several MediaItems. The MediaController class must use either an ArrayList or a LinkedList to store a collection of MediaItems. 
mediaItems attribute (declared as a List) should refer to an ArrayList or LinkedList object that contains the collection of MediaItem objects.mediaItems collection so that it is initially empty.add, remove, and save methods are used to implement the functionality for the Playlist Manager UI; that is, these methods are called by the Event Handler of the Playlist Manager UI.load, pause, play, and stop methods are used to implement the functionality for the Media Player UI; that is, these methods are called by the button Event Handler or the Media Player UI. Only the load needs to be implemented for this assignment. Just leave the bodies of the other methods blank for now.MediaPlayerUI class as follows:MediaController object reference as a field in the MediaPlayerUI class.MediaController object and assign it to the newly added field in the MediaPlayerUIs constructor.PlaylistManagerUI object so that it accepts a reference to the MediaController object created for the MediaPlayerUI object.MediaPlayerEventHandler) for the MediaPlayerUI, so that there are now two event handling classes namely MediaPlayerButtonEventHandler and MediaPlayerMenuEventHandler. As the names suggest, the MediaPlayerButtonEventHandler should be responsible for only handling the button events whereas the MediaPlayerMenuEventHandler class should handle all the menu events.MediaPlayerButtonEventHandler should be modified such that the appropriate methods from the MediaController object are called.PlaylistManagerUI class to use a JList object as the UI component for the list of media items; follow these steps:JTextArea that currently displays the playlist contents with a JScrollPane object.JList object within the JScrollPane.JList object needs to be passed a reference to a DefaultListModel.DefaultListModel class useful, as you'll find that you need to access the DefaultListModel contained by the JList to actually add and remove elements to and from the JList: addElement() and remove().PlaylistManagerUI class so that the Add button uses a JFileChooser dialog to allow the user to select a media file.PlaylistManagerUI class so that the Cancel button reverses the changes made to the playlist. This can be accomplished by removing all of the items in the DefaultListModel of the JList and then repopulating it with the filenames found in the MediaController object. The sequence diagram provided below clarifies the details. 
PlaylistManagerUI class so that the Save button uses a JFileChooser dialog to allow the user to save the playlist to a file using an ObjectOutputStream object. Please note that you would have to make your MediaController class Serializable to accomplish this. Instead of making the MediaController class Serializable, it is recommened that you instead just serialize the ArrayList or LinkedList collection within MediaController. Note: The event handling for the Save button must first update the mediaItems in the MediaController object with the list of file names found in the JList. A sequence diagram has also been provided (below).

MediaPlayerUI class so that the Open Playlist button uses a JFileChooser dialog to allow the user to open a previously saved playlist using an ObjectInputStream object 
This is a one week assignment. Submit your assignment, including a lab report, according to your instructor's directions.
You should indicate how much time (in minutes) you spend on this assignment in the FAST database. You are encouraged to log your activity as you work on the project. At a minimum, you should log all of the time spent on this assignment before the due date given above. All time spent on this assignment should be entered into the week 7 column (even if you worked on it in week 8).