Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import java.awt.*;
- import java.awt.event.*;
- import javax.swing.*;
- import java.util.*;
- import java.awt.Graphics;
- import java.awt.image.BufferedImage;
- import java.io.File;
- import java.io.IOException;
- import javax.imageio.ImageIO;
- import javax.swing.JPanel;
- public class JPod implements ActionListener{
- Image albumart=null;
- String COPYRIGHT = "\u00a9";
- int currentSongCount = 1;
- JFrame jfrmJPod;
- JLabel CurrentName;
- JLabel CurrentArtist;
- JLabel CurrentGenre;
- JLabel jlbalbumArt;
- DefaultListModel mdlAllSongs;
- JList lstAllSongs;
- DefaultListModel mdlPlaylist;
- JList lstPlaylist;
- JButton jbtnPrevSong, jbtnNextSong, jbtnAddSong, jbtnLoadSong, jbtnRandomSong;
- ArrayList<Song>songList = new ArrayList<Song>(100);
- JPod() {
- //initialize
- jfrmJPod = new JFrame("JPod - Music Player");
- jfrmJPod.setLayout(new BorderLayout());
- jfrmJPod.setSize(700,620);
- jfrmJPod.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
- //sidebar
- JPanel jpnlSidebar = new JPanel(new FlowLayout());
- jpnlSidebar.setPreferredSize(new Dimension(284,550));
- jpnlSidebar.setBorder(BorderFactory.createMatteBorder(0,0,0,1,Color.BLACK));
- jpnlSidebar.setBackground(Color.WHITE);
- jpnlSidebar.setDoubleBuffered(true);
- //content
- JPanel jpnlContent = new JPanel();
- jpnlContent.setLayout(new BoxLayout(jpnlContent,BoxLayout.Y_AXIS));
- jpnlContent.setPreferredSize(new Dimension(400,550));
- //menubar
- JMenuBar jmbTop = new JMenuBar();
- JMenu jm_file = new JMenu("File");
- JMenu jm_help = new JMenu("Help");
- JMenuItem exit = jm_file.add(new JMenuItem("Exit", 'e'));
- JMenuItem about = jm_help.add(new JMenuItem("About", 'a'));
- exit.addActionListener(this);
- about.addActionListener(this);
- jmbTop.add(jm_file);
- jmbTop.add(jm_help);
- //SongList
- mdlAllSongs = new DefaultListModel();
- lstAllSongs = new JList(mdlAllSongs);
- JScrollPane pnAllSongs = new JScrollPane(lstAllSongs);
- pnAllSongs.setBorder(BorderFactory.createMatteBorder(0,10,0,0,Color.WHITE));
- pnAllSongs.setPreferredSize(new Dimension(273,215));
- //PlayList
- mdlPlaylist = new DefaultListModel();
- lstPlaylist = new JList(mdlPlaylist);
- JScrollPane pnPlaylist = new JScrollPane(lstPlaylist);
- pnPlaylist.setBorder(BorderFactory.createMatteBorder(0,10,0,0,Color.WHITE));
- pnPlaylist.setPreferredSize(new Dimension(273,215));
- //SongLabel
- JLabel jlbAllSongs = new JLabel("All Songs");
- jlbAllSongs.setPreferredSize(new Dimension(273,20));
- jlbAllSongs.setBorder(BorderFactory.createMatteBorder(0,10,0,0,Color.WHITE));
- //PlaylistLabel
- JLabel jlbPlayList = new JLabel("Current Playlist");
- jlbPlayList.setPreferredSize(new Dimension(273,20));
- jlbPlayList.setBorder(BorderFactory.createMatteBorder(0,10,0,0,Color.WHITE));
- //Album Art
- jlbalbumArt = new JLabel("");
- jlbalbumArt.setBorder(BorderFactory.createEmptyBorder(100,0,0,0));
- jlbalbumArt.setAlignmentX(Component.CENTER_ALIGNMENT);
- jlbalbumArt.setMinimumSize(new Dimension(200,200));
- //CurrentSongLabel
- JLabel CurrentlyPlaying = new JLabel("Currently Playing:");
- CurrentlyPlaying.setAlignmentX(Component.CENTER_ALIGNMENT);
- //CurrentName
- CurrentName=new JLabel("No song selected");CurrentName.setAlignmentX(Component.CENTER_ALIGNMENT);
- //Current Artist
- CurrentArtist=new JLabel(" ");CurrentArtist.setAlignmentX(Component.CENTER_ALIGNMENT);
- //CurrentGenre
- CurrentGenre=new JLabel(" ");CurrentGenre.setAlignmentX(Component.CENTER_ALIGNMENT);
- //PreviousSong
- jbtnPrevSong = new JButton("Previous Song");
- jbtnPrevSong.setPreferredSize(new Dimension(120,27));
- jbtnPrevSong.setEnabled(false);
- jbtnPrevSong.repaint();
- jbtnPrevSong.addActionListener(this);
- //NextSong
- jbtnNextSong = new JButton("Next Song");
- jbtnNextSong.setPreferredSize(new Dimension(120,27));
- jbtnNextSong.setEnabled(false);
- jbtnNextSong.repaint();
- jbtnNextSong.addActionListener(this);
- //Add Song
- jbtnAddSong = new JButton("Add Song");
- jbtnAddSong.setPreferredSize(new Dimension(120,27));
- jbtnAddSong.setEnabled(false);
- jbtnAddSong.repaint();
- jbtnAddSong.addActionListener(this);
- //Load Song
- jbtnLoadSong = new JButton("Load Songs");
- jbtnLoadSong.setPreferredSize(new Dimension(120,27));
- jbtnLoadSong.addActionListener(this);
- //Random Song
- jbtnRandomSong = new JButton("Random");
- jbtnRandomSong.setPreferredSize(new Dimension(120,27));
- jbtnRandomSong.setEnabled(false);
- jbtnRandomSong.repaint();
- jbtnRandomSong.addActionListener(this);
- //PanelControls
- JPanel jpnlControlsTop = new JPanel(new FlowLayout());
- JPanel jpnlControlsBottom = new JPanel(new FlowLayout());
- //Final--------------------------------------
- //Add two panels and menu
- jfrmJPod.add(jmbTop, BorderLayout.PAGE_START);
- jfrmJPod.add(jpnlSidebar,BorderLayout.LINE_START);
- jfrmJPod.add(jpnlContent,BorderLayout.LINE_END);
- //Add controls to content
- jpnlContent.add(Box.createRigidArea(new Dimension(0,25)));
- jpnlContent.add(jlbalbumArt, Component.CENTER_ALIGNMENT);
- jpnlContent.add(Box.createRigidArea(new Dimension(0,10)));
- jpnlContent.add(CurrentlyPlaying, Component.CENTER_ALIGNMENT);
- jpnlContent.add(Box.createRigidArea(new Dimension(0,10)));
- jpnlContent.add(CurrentName, Component.CENTER_ALIGNMENT);
- jpnlContent.add(Box.createRigidArea(new Dimension(0,10)));
- jpnlContent.add(CurrentArtist, Component.CENTER_ALIGNMENT);
- jpnlContent.add(Box.createRigidArea(new Dimension(0,10)));
- jpnlContent.add(CurrentGenre, Component.CENTER_ALIGNMENT);
- jpnlContent.add(Box.createRigidArea(new Dimension(0,10)));
- jpnlContent.add(jpnlControlsTop);
- jpnlContent.add(jpnlControlsBottom,BorderLayout.SOUTH);
- jpnlControlsTop.add(jbtnLoadSong,BorderLayout.LINE_START);
- jpnlControlsTop.add(jbtnAddSong,BorderLayout.LINE_START);
- jpnlControlsTop.add(jbtnRandomSong,BorderLayout.LINE_START);
- jpnlControlsBottom.add(jbtnPrevSong,BorderLayout.LINE_START);
- jpnlControlsBottom.add(jbtnNextSong,BorderLayout.LINE_END);
- //Add controls to sidebar
- jpnlSidebar.add(jlbAllSongs);
- jpnlSidebar.add(pnAllSongs);
- jpnlSidebar.add(Box.createRigidArea(new Dimension(0,10)));
- jpnlSidebar.add(jlbPlayList);
- jpnlSidebar.add(pnPlaylist);
- jfrmJPod.setVisible(true);
- }
- public void loadSongs() {
- //Add songs
- try { addSongsToArray(); } catch (IOException ioe){}
- for(int tmp=0;tmp<songList.size();tmp++) { mdlAllSongs.addElement(songList.get(tmp).getName()); }
- lstAllSongs.setSelectedIndex(0);
- //album art
- try { albumart = ImageIO.read(new File(getAlbumArt(songList.get(0).getName()))); }catch (IOException ioe) {}
- System.out.println(getAlbumArt(songList.get(0).getName()));
- jlbalbumArt.setIcon(new ImageIcon(albumart));
- jlbalbumArt.setBorder(BorderFactory.createEmptyBorder(100,0,0,0));
- jlbalbumArt.setAlignmentX(Component.CENTER_ALIGNMENT);
- jlbalbumArt.setBorder(BorderFactory.createLineBorder(Color.BLACK));
- //CurrentName
- CurrentName.setText(songList.get(0).getName());
- //Current Artist
- CurrentArtist.setText(songList.get(0).getArtist());
- //CurrentGenre
- CurrentGenre.setText(songList.get(0).getGenre());
- jbtnLoadSong.setEnabled(false);
- jbtnPrevSong.setEnabled(true);
- jbtnPrevSong.repaint();
- jbtnNextSong.setEnabled(true);
- jbtnNextSong.repaint();
- jbtnAddSong.setEnabled(true);
- jbtnAddSong.repaint();
- jbtnRandomSong.setEnabled(true);
- jbtnRandomSong.repaint();
- }
- public void switchToSong(ArrayList<Song> a, int songCount) {
- CurrentName.setText(a.get(songCount).getName());
- CurrentArtist.setText(a.get(songCount).getArtist());
- CurrentGenre.setText(a.get(songCount).getGenre());
- }
- public void actionPerformed(ActionEvent ae) {
- String albumArtURL="";
- if(ae.getActionCommand().equals("Exit")) { System.exit(0); }
- if(ae.getActionCommand().equals("About")) { infoBox("Under Development - Saurabh Verma " + COPYRIGHT + " 2013", "About JPod"); }
- if(ae.getActionCommand().equals("Previous Song")) {
- if (currentSongCount==-1) {
- currentSongCount=songList.size()-1;
- switchToSong(songList,currentSongCount);
- lstAllSongs.setSelectedIndex(currentSongCount);
- albumArtURL=getAlbumArt(songList.get(currentSongCount).getName());
- //album art
- try {
- albumart = ImageIO.read(new File(albumArtURL));
- }catch (IOException ioe) {}
- jlbalbumArt = new JLabel(new ImageIcon(albumart));
- jlbalbumArt.setBorder(BorderFactory.createEmptyBorder(100,0,0,0));
- jlbalbumArt.setAlignmentX(Component.CENTER_ALIGNMENT);
- jlbalbumArt.setBorder(BorderFactory.createLineBorder(Color.BLACK));
- }
- else {
- switchToSong(songList,currentSongCount);
- lstAllSongs.setSelectedIndex(currentSongCount);
- albumArtURL=getAlbumArt(songList.get(currentSongCount).getName());
- System.out.println(albumArtURL + " -> " + currentSongCount);
- currentSongCount--;
- //album art
- try {
- albumart = ImageIO.read(new File(albumArtURL));
- }catch (IOException ioe) {}
- jlbalbumArt.setIcon(new ImageIcon(albumart));
- jlbalbumArt.setBorder(BorderFactory.createEmptyBorder(100,0,0,0));
- jlbalbumArt.setAlignmentX(Component.CENTER_ALIGNMENT);
- jlbalbumArt.setBorder(BorderFactory.createLineBorder(Color.BLACK));
- }
- }
- if(ae.getActionCommand().equals("Next Song")) {
- if (currentSongCount==songList.size()){
- currentSongCount=0;
- switchToSong(songList,currentSongCount);
- lstAllSongs.setSelectedIndex(currentSongCount);
- //album art
- try {
- albumart = ImageIO.read(new File(albumArtURL));
- }catch (IOException ioe) {}
- jlbalbumArt.setIcon(new ImageIcon(albumart));
- jlbalbumArt.setBorder(BorderFactory.createEmptyBorder(100,0,0,0));
- jlbalbumArt.setAlignmentX(Component.CENTER_ALIGNMENT);
- jlbalbumArt.setBorder(BorderFactory.createLineBorder(Color.BLACK));
- }
- else {
- switchToSong(songList,currentSongCount);
- lstAllSongs.setSelectedIndex(currentSongCount);
- albumArtURL=getAlbumArt(songList.get(currentSongCount).getName());
- System.out.println(albumArtURL + " -> " + currentSongCount);
- currentSongCount++;
- //album art
- try {
- albumart = ImageIO.read(new File(albumArtURL));
- }catch (IOException ioe) {}
- jlbalbumArt.setIcon(new ImageIcon(albumart));
- jlbalbumArt.setBorder(BorderFactory.createEmptyBorder(100,0,0,0));
- jlbalbumArt.setAlignmentX(Component.CENTER_ALIGNMENT);
- jlbalbumArt.setBorder(BorderFactory.createLineBorder(Color.BLACK));
- }
- }
- if(ae.getActionCommand().equals("Random")) {
- for(int tmp=0;tmp<10;tmp++) {
- Random randomSong = new Random(songList.size());
- mdlPlaylist.addElement(songList.get(randomSong).getName());
- }
- lstPlaylist.setSelectedIndex(0);
- }
- if(ae.getActionCommand().equals("Load Songs")) {
- if (songList.isEmpty()) { loadSongs(); }
- }
- if(ae.getActionCommand().equals("Add Song")) {
- JPanel jpnlAddSong = new JPanel(new FlowLayout());
- JLabel jlbName = new JLabel("Name:");
- JTextField name = new JTextField(10);
- jlbName.setLabelFor(name);
- jpnlAddSong.add(jlbName);
- jpnlAddSong.add(name);
- JLabel jlbArtist = new JLabel("Artist:");
- JTextField artist = new JTextField(10);
- jlbArtist.setLabelFor(artist);
- jpnlAddSong.add(jlbArtist);
- jpnlAddSong.add(artist);
- JLabel jlbGenre = new JLabel("Genre:");
- JTextField genre = new JTextField(10);
- jlbGenre.setLabelFor(genre);
- jpnlAddSong.add(jlbGenre);
- jpnlAddSong.add(genre);
- int value = JOptionPane.showConfirmDialog(jfrmJPod, jpnlAddSong, "Enter text", JOptionPane.OK_CANCEL_OPTION);
- if (value==JOptionPane.OK_OPTION)
- {
- addSongManually(name.getText(), artist.getText(), genre.getText());
- }
- }
- }
- public void addSongManually(String name, String artist, String genre) {
- Song newSong = new Song(name,artist,genre,getAlbumArt("unavailable"));
- songList.add(newSong);
- mdlAllSongs.addElement(songList.get(songList.size()-1).getName());
- }
- public void updateList() {
- for(int tmp=0;tmp<10;tmp++) { mdlAllSongs.addElement(songList.get(tmp).getName()); }
- lstAllSongs.setSelectedIndex(0);
- }
- public static void main(String args[]) {
- SwingUtilities.invokeLater(new Runnable() { public void run() { new JPod(); } });
- }
- public static void infoBox(String infoMessage, String location) {
- JOptionPane.showMessageDialog(null, infoMessage, location, JOptionPane.INFORMATION_MESSAGE);
- }
- public void addSongsToArray() throws IOException {
- String name="",artist="",genre="",art="";
- Integer songCount = 1;
- File dataInpt = new File ("R:\\songs.txt");
- Scanner inFile = new Scanner (dataInpt);
- while (inFile.hasNextLine()) //head loop, run till no song left
- {
- name=inFile.nextLine();
- artist=inFile.nextLine();
- genre=inFile.nextLine();
- art="hello"; //getAlbumArt(songList.get(songCount).getName());
- Song newSong = new Song(name,artist,genre,art);
- songList.add(newSong);
- //String newLine = inFile.nextLine();
- songCount++;
- }
- }
- public static String getAlbumArt(String input) {
- String result = "";
- switch (input.toLowerCase()) {
- case "work hard, play hard": result="H:\\workhardplayhard.jpg";break;
- case "take it to the head": result="H:\\takehead.jpg";break;
- case "the show goes on": result="H:\\theshowgoeson.jpg";break;
- case "young, wild and free": result="H:\\youngwildfree.jpg";break;
- case "miss independent": result="H:\\missindependent.jpg";break;
- case "when i'm gone": result="H:\\whenimgone.jpg";break;
- case "michael": result="H:\\mjmichael.jpg";break;
- case "mercy": result="H:\\mercy.jpg";break;
- case "run this town": result="H:\\runthistown.jpg";break;
- case "empire state of mind": result="H:\\empirestateofmind.jpg";break;
- default: result="H:\\noalbumart.jpg";break;
- }
- return result;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment