/**
 * ListPanel.java
 *
 * Caitlin Ross
 * 100735219
 */

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import javax.swing.event.*;

public class ListPanel extends JPanel{
	
	private JLabel listLabel;
	private JList list;
	private Mp3Frame frame;
	private ListType whichType;

    public ListPanel(Mp3Frame aFrame, ListType aType) {
    	frame = aFrame;
    	whichType = aType;
    	GridBagLayout layout = new GridBagLayout();
    	GridBagConstraints constraints = new GridBagConstraints();
    	setLayout(layout);
    	if(whichType == ListType.ARTIST)
    		listLabel = new JLabel("Artists");
    	else if(whichType == ListType.SONG)
    		listLabel = new JLabel("Songs");
    	constraints.gridx = 0;
    	constraints.gridy = 0;
    	constraints.gridwidth = 1;
    	constraints.gridheight = 1;
    	constraints.fill = GridBagConstraints.NONE;
    	constraints.weightx = 50;
    	constraints.weighty = 0;
    	constraints.anchor = GridBagConstraints.SOUTHWEST;
    	constraints.insets = new Insets(5, 10, 5, 10);
    	layout.setConstraints(listLabel, constraints);
    	add(listLabel);
        
        list = new JList();
    	list.setPrototypeCellValue("xxxxxxxxxxxxxxxxxxxxxxxxxx");
    	JScrollPane scrollPane = new JScrollPane(list,
              ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS,
              ScrollPaneConstants.HORIZONTAL_SCROLLBAR_AS_NEEDED);
    	constraints.gridx = 0;
    	constraints.gridy = 1;
    	constraints.gridwidth = 2;
    	constraints.gridheight = 1;
    	constraints.fill = GridBagConstraints.BOTH;
    	constraints.weightx = 100;
    	constraints.weighty = 100;
    	constraints.insets = new Insets(5, 10, 5, 10);
    	layout.setConstraints(scrollPane, constraints);
    	add(scrollPane);
    	list.addListSelectionListener(new ListSelectionListener() {
            public void valueChanged(ListSelectionEvent e) {
            	if(whichType == ListType.ARTIST){
            		try{
            			frame.artistSelected(list.getModel().getElementAt(list.getSelectedIndex()));
            		}
                	catch(NullPointerException ex){
            			//just in case
            		}
            		catch(ArrayIndexOutOfBoundsException ex){
            			//just in case
            		}
            	}
                else if(whichType == ListType.SONG){
                	try{
            			frame.songSelected(list.getModel().getElementAt(list.getSelectedIndex()));
            		}
                	catch(NullPointerException ex){
            			//just in case
            		}
            		catch(ArrayIndexOutOfBoundsException ex){
            			//just in case
            		}
                }
            }
        });
    }
    
    public void setData(String[] dataList){
    	list.setListData(dataList);
    }
    
}