badsha

Java

Feb 28th, 2013
168
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 13.84 KB | None | 0 0
  1. import java.awt.*;
  2. import java.awt.event.*;
  3. import javax.swing.*;
  4. import java.util.*;
  5. import java.awt.Graphics;
  6. import java.awt.image.BufferedImage;
  7. import java.io.File;
  8. import java.io.IOException;
  9. import javax.imageio.ImageIO;
  10. import javax.swing.JPanel;
  11.  
  12. public class JPod implements ActionListener{
  13.     Image albumart=null;
  14.     String COPYRIGHT  = "\u00a9";
  15.     int currentSongCount = 1;
  16.     JFrame jfrmJPod;
  17.     JLabel CurrentName;
  18.     JLabel CurrentArtist;
  19.     JLabel CurrentGenre;
  20.     JLabel jlbalbumArt;
  21.     DefaultListModel mdlAllSongs;
  22.     JList lstAllSongs;
  23.     DefaultListModel mdlPlaylist;
  24.     JList lstPlaylist;
  25.     JButton jbtnPrevSong, jbtnNextSong, jbtnAddSong, jbtnLoadSong, jbtnRandomSong;
  26.     ArrayList<Song>songList = new ArrayList<Song>(100);
  27.  
  28.     JPod() {
  29.         //initialize
  30.         jfrmJPod = new JFrame("JPod - Music Player");
  31.         jfrmJPod.setLayout(new BorderLayout());
  32.         jfrmJPod.setSize(700,620);
  33.         jfrmJPod.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  34.  
  35.         //sidebar
  36.         JPanel jpnlSidebar = new JPanel(new FlowLayout());
  37.         jpnlSidebar.setPreferredSize(new Dimension(284,550));
  38.         jpnlSidebar.setBorder(BorderFactory.createMatteBorder(0,0,0,1,Color.BLACK));
  39.         jpnlSidebar.setBackground(Color.WHITE);
  40.         jpnlSidebar.setDoubleBuffered(true);
  41.  
  42.  
  43.         //content
  44.         JPanel jpnlContent = new JPanel();
  45.         jpnlContent.setLayout(new BoxLayout(jpnlContent,BoxLayout.Y_AXIS));
  46.         jpnlContent.setPreferredSize(new Dimension(400,550));
  47.  
  48.         //menubar
  49.         JMenuBar jmbTop = new JMenuBar();
  50.         JMenu jm_file = new JMenu("File");
  51.         JMenu jm_help = new JMenu("Help");
  52.         JMenuItem exit = jm_file.add(new JMenuItem("Exit", 'e'));
  53.         JMenuItem about = jm_help.add(new JMenuItem("About", 'a'));
  54.         exit.addActionListener(this);
  55.         about.addActionListener(this);
  56.         jmbTop.add(jm_file);
  57.         jmbTop.add(jm_help);
  58.  
  59.         //SongList
  60.         mdlAllSongs = new DefaultListModel();
  61.     lstAllSongs = new JList(mdlAllSongs);
  62.     JScrollPane pnAllSongs = new JScrollPane(lstAllSongs);
  63.     pnAllSongs.setBorder(BorderFactory.createMatteBorder(0,10,0,0,Color.WHITE));
  64.     pnAllSongs.setPreferredSize(new Dimension(273,215));
  65.  
  66.         //PlayList
  67.         mdlPlaylist = new DefaultListModel();
  68.     lstPlaylist = new JList(mdlPlaylist);
  69.     JScrollPane pnPlaylist = new JScrollPane(lstPlaylist);
  70.     pnPlaylist.setBorder(BorderFactory.createMatteBorder(0,10,0,0,Color.WHITE));
  71.     pnPlaylist.setPreferredSize(new Dimension(273,215));
  72.  
  73.     //SongLabel
  74.     JLabel jlbAllSongs = new JLabel("All Songs");
  75.     jlbAllSongs.setPreferredSize(new Dimension(273,20));
  76.     jlbAllSongs.setBorder(BorderFactory.createMatteBorder(0,10,0,0,Color.WHITE));
  77.  
  78.     //PlaylistLabel
  79.     JLabel jlbPlayList = new JLabel("Current Playlist");
  80.     jlbPlayList.setPreferredSize(new Dimension(273,20));
  81.     jlbPlayList.setBorder(BorderFactory.createMatteBorder(0,10,0,0,Color.WHITE));
  82.  
  83.     //Album Art
  84.     jlbalbumArt = new JLabel("");
  85.     jlbalbumArt.setBorder(BorderFactory.createEmptyBorder(100,0,0,0));
  86.         jlbalbumArt.setAlignmentX(Component.CENTER_ALIGNMENT);
  87.         jlbalbumArt.setMinimumSize(new Dimension(200,200));
  88.  
  89.     //CurrentSongLabel
  90.     JLabel CurrentlyPlaying = new JLabel("Currently Playing:");
  91.     CurrentlyPlaying.setAlignmentX(Component.CENTER_ALIGNMENT);
  92.  
  93.     //CurrentName
  94.     CurrentName=new JLabel("No song selected");CurrentName.setAlignmentX(Component.CENTER_ALIGNMENT);
  95.     //Current Artist
  96.     CurrentArtist=new JLabel(" ");CurrentArtist.setAlignmentX(Component.CENTER_ALIGNMENT);
  97.     //CurrentGenre
  98.     CurrentGenre=new JLabel(" ");CurrentGenre.setAlignmentX(Component.CENTER_ALIGNMENT);
  99.  
  100.     //PreviousSong
  101.     jbtnPrevSong = new JButton("Previous Song");
  102.     jbtnPrevSong.setPreferredSize(new Dimension(120,27));
  103.     jbtnPrevSong.setEnabled(false);
  104.     jbtnPrevSong.repaint();
  105.     jbtnPrevSong.addActionListener(this);
  106.  
  107.     //NextSong
  108.     jbtnNextSong = new JButton("Next Song");
  109.     jbtnNextSong.setPreferredSize(new Dimension(120,27));
  110.     jbtnNextSong.setEnabled(false);
  111.     jbtnNextSong.repaint();
  112.     jbtnNextSong.addActionListener(this);
  113.  
  114.     //Add Song
  115.     jbtnAddSong = new JButton("Add Song");
  116.     jbtnAddSong.setPreferredSize(new Dimension(120,27));
  117.     jbtnAddSong.setEnabled(false);
  118.     jbtnAddSong.repaint();
  119.     jbtnAddSong.addActionListener(this);
  120.  
  121.     //Load Song
  122.     jbtnLoadSong = new JButton("Load Songs");
  123.     jbtnLoadSong.setPreferredSize(new Dimension(120,27));
  124.     jbtnLoadSong.addActionListener(this);
  125.  
  126.     //Random Song
  127.     jbtnRandomSong = new JButton("Random");
  128.     jbtnRandomSong.setPreferredSize(new Dimension(120,27));
  129.     jbtnRandomSong.setEnabled(false);
  130.     jbtnRandomSong.repaint();
  131.     jbtnRandomSong.addActionListener(this);
  132.  
  133.     //PanelControls
  134.     JPanel jpnlControlsTop = new JPanel(new FlowLayout());
  135.     JPanel jpnlControlsBottom = new JPanel(new FlowLayout());
  136.  
  137.  
  138.         //Final--------------------------------------
  139.         //Add two panels and menu
  140.         jfrmJPod.add(jmbTop, BorderLayout.PAGE_START);
  141.         jfrmJPod.add(jpnlSidebar,BorderLayout.LINE_START);
  142.         jfrmJPod.add(jpnlContent,BorderLayout.LINE_END);
  143.         //Add controls to content
  144.         jpnlContent.add(Box.createRigidArea(new Dimension(0,25)));
  145.         jpnlContent.add(jlbalbumArt, Component.CENTER_ALIGNMENT);
  146.         jpnlContent.add(Box.createRigidArea(new Dimension(0,10)));
  147.         jpnlContent.add(CurrentlyPlaying, Component.CENTER_ALIGNMENT);
  148.         jpnlContent.add(Box.createRigidArea(new Dimension(0,10)));
  149.         jpnlContent.add(CurrentName, Component.CENTER_ALIGNMENT);
  150.         jpnlContent.add(Box.createRigidArea(new Dimension(0,10)));
  151.         jpnlContent.add(CurrentArtist, Component.CENTER_ALIGNMENT);
  152.         jpnlContent.add(Box.createRigidArea(new Dimension(0,10)));
  153.         jpnlContent.add(CurrentGenre, Component.CENTER_ALIGNMENT);
  154.         jpnlContent.add(Box.createRigidArea(new Dimension(0,10)));
  155.         jpnlContent.add(jpnlControlsTop);
  156.         jpnlContent.add(jpnlControlsBottom,BorderLayout.SOUTH);
  157.  
  158.         jpnlControlsTop.add(jbtnLoadSong,BorderLayout.LINE_START);
  159.         jpnlControlsTop.add(jbtnAddSong,BorderLayout.LINE_START);
  160.         jpnlControlsTop.add(jbtnRandomSong,BorderLayout.LINE_START);
  161.  
  162.         jpnlControlsBottom.add(jbtnPrevSong,BorderLayout.LINE_START);
  163.         jpnlControlsBottom.add(jbtnNextSong,BorderLayout.LINE_END);
  164.  
  165.         //Add controls to sidebar
  166.         jpnlSidebar.add(jlbAllSongs);
  167.         jpnlSidebar.add(pnAllSongs);
  168.         jpnlSidebar.add(Box.createRigidArea(new Dimension(0,10)));
  169.         jpnlSidebar.add(jlbPlayList);
  170.         jpnlSidebar.add(pnPlaylist);
  171.  
  172.         jfrmJPod.setVisible(true);
  173.     }
  174.  
  175.     public void loadSongs() {
  176.         //Add songs
  177.         try { addSongsToArray(); } catch (IOException ioe){}
  178.         for(int tmp=0;tmp<songList.size();tmp++) { mdlAllSongs.addElement(songList.get(tmp).getName()); }
  179.         lstAllSongs.setSelectedIndex(0);
  180.         //album art
  181.         try { albumart = ImageIO.read(new File(getAlbumArt(songList.get(0).getName()))); }catch (IOException ioe) {}
  182.         System.out.println(getAlbumArt(songList.get(0).getName()));
  183.         jlbalbumArt.setIcon(new ImageIcon(albumart));
  184.         jlbalbumArt.setBorder(BorderFactory.createEmptyBorder(100,0,0,0));
  185.         jlbalbumArt.setAlignmentX(Component.CENTER_ALIGNMENT);
  186.         jlbalbumArt.setBorder(BorderFactory.createLineBorder(Color.BLACK));
  187.  
  188.         //CurrentName
  189.     CurrentName.setText(songList.get(0).getName());
  190.     //Current Artist
  191.     CurrentArtist.setText(songList.get(0).getArtist());
  192.     //CurrentGenre
  193.     CurrentGenre.setText(songList.get(0).getGenre());
  194.  
  195.     jbtnLoadSong.setEnabled(false);
  196.  
  197.     jbtnPrevSong.setEnabled(true);
  198.     jbtnPrevSong.repaint();
  199.     jbtnNextSong.setEnabled(true);
  200.     jbtnNextSong.repaint();
  201.     jbtnAddSong.setEnabled(true);
  202.     jbtnAddSong.repaint();
  203.     jbtnRandomSong.setEnabled(true);
  204.     jbtnRandomSong.repaint();
  205.     }
  206.  
  207.     public void switchToSong(ArrayList<Song> a, int songCount) {
  208.         CurrentName.setText(a.get(songCount).getName());
  209.         CurrentArtist.setText(a.get(songCount).getArtist());
  210.         CurrentGenre.setText(a.get(songCount).getGenre());
  211.     }
  212.  
  213.     public void actionPerformed(ActionEvent ae) {
  214.         String albumArtURL="";
  215.         if(ae.getActionCommand().equals("Exit")) { System.exit(0); }
  216.         if(ae.getActionCommand().equals("About")) { infoBox("Under Development - Saurabh Verma " + COPYRIGHT + " 2013", "About JPod"); }
  217.         if(ae.getActionCommand().equals("Previous Song")) {
  218.             if (currentSongCount==-1) {
  219.                 currentSongCount=songList.size()-1;
  220.                 switchToSong(songList,currentSongCount);
  221.                 lstAllSongs.setSelectedIndex(currentSongCount);
  222.                 albumArtURL=getAlbumArt(songList.get(currentSongCount).getName());
  223.  
  224.                 //album art
  225.                 try {
  226.                     albumart = ImageIO.read(new File(albumArtURL));
  227.                 }catch (IOException ioe) {}
  228.                 jlbalbumArt = new JLabel(new ImageIcon(albumart));
  229.                 jlbalbumArt.setBorder(BorderFactory.createEmptyBorder(100,0,0,0));
  230.                 jlbalbumArt.setAlignmentX(Component.CENTER_ALIGNMENT);
  231.                 jlbalbumArt.setBorder(BorderFactory.createLineBorder(Color.BLACK));
  232.             }
  233.             else {
  234.  
  235.                 switchToSong(songList,currentSongCount);
  236.                 lstAllSongs.setSelectedIndex(currentSongCount);
  237.                 albumArtURL=getAlbumArt(songList.get(currentSongCount).getName());
  238.                 System.out.println(albumArtURL + " -> " + currentSongCount);
  239.                 currentSongCount--;
  240.                 //album art
  241.                 try {
  242.                     albumart = ImageIO.read(new File(albumArtURL));
  243.                 }catch (IOException ioe) {}
  244.                 jlbalbumArt.setIcon(new ImageIcon(albumart));
  245.                 jlbalbumArt.setBorder(BorderFactory.createEmptyBorder(100,0,0,0));
  246.                 jlbalbumArt.setAlignmentX(Component.CENTER_ALIGNMENT);
  247.                 jlbalbumArt.setBorder(BorderFactory.createLineBorder(Color.BLACK));
  248.             }
  249.         }
  250.         if(ae.getActionCommand().equals("Next Song")) {
  251.             if (currentSongCount==songList.size()){
  252.                 currentSongCount=0;
  253.                 switchToSong(songList,currentSongCount);
  254.                 lstAllSongs.setSelectedIndex(currentSongCount);
  255.  
  256.                 //album art
  257.                 try {
  258.                     albumart = ImageIO.read(new File(albumArtURL));
  259.                 }catch (IOException ioe) {}
  260.                 jlbalbumArt.setIcon(new ImageIcon(albumart));
  261.                 jlbalbumArt.setBorder(BorderFactory.createEmptyBorder(100,0,0,0));
  262.                 jlbalbumArt.setAlignmentX(Component.CENTER_ALIGNMENT);
  263.                 jlbalbumArt.setBorder(BorderFactory.createLineBorder(Color.BLACK));
  264.             }
  265.             else {
  266.                 switchToSong(songList,currentSongCount);
  267.                 lstAllSongs.setSelectedIndex(currentSongCount);
  268.                 albumArtURL=getAlbumArt(songList.get(currentSongCount).getName());
  269.                 System.out.println(albumArtURL + " -> " + currentSongCount);
  270.                 currentSongCount++;
  271.                 //album art
  272.                 try {
  273.                     albumart = ImageIO.read(new File(albumArtURL));
  274.                 }catch (IOException ioe) {}
  275.                 jlbalbumArt.setIcon(new ImageIcon(albumart));
  276.                 jlbalbumArt.setBorder(BorderFactory.createEmptyBorder(100,0,0,0));
  277.                 jlbalbumArt.setAlignmentX(Component.CENTER_ALIGNMENT);
  278.                 jlbalbumArt.setBorder(BorderFactory.createLineBorder(Color.BLACK));
  279.             }
  280.         }
  281.         if(ae.getActionCommand().equals("Random")) {
  282.             for(int tmp=0;tmp<10;tmp++) {
  283.                 Random randomSong = new Random(songList.size());
  284.                 mdlPlaylist.addElement(songList.get(randomSong).getName());
  285.             }
  286.             lstPlaylist.setSelectedIndex(0);
  287.         }
  288.         if(ae.getActionCommand().equals("Load Songs")) {
  289.             if (songList.isEmpty()) { loadSongs(); }
  290.         }
  291.         if(ae.getActionCommand().equals("Add Song")) {
  292.  
  293.             JPanel jpnlAddSong = new JPanel(new FlowLayout());
  294.             JLabel jlbName = new JLabel("Name:");
  295.             JTextField name = new JTextField(10);
  296.             jlbName.setLabelFor(name);
  297.             jpnlAddSong.add(jlbName);
  298.             jpnlAddSong.add(name);
  299.  
  300.             JLabel jlbArtist = new JLabel("Artist:");
  301.             JTextField artist = new JTextField(10);
  302.             jlbArtist.setLabelFor(artist);
  303.             jpnlAddSong.add(jlbArtist);
  304.             jpnlAddSong.add(artist);
  305.  
  306.             JLabel jlbGenre = new JLabel("Genre:");
  307.             JTextField genre = new JTextField(10);
  308.             jlbGenre.setLabelFor(genre);
  309.             jpnlAddSong.add(jlbGenre);
  310.             jpnlAddSong.add(genre);
  311.  
  312.             int value = JOptionPane.showConfirmDialog(jfrmJPod, jpnlAddSong, "Enter text", JOptionPane.OK_CANCEL_OPTION);
  313.  
  314.             if (value==JOptionPane.OK_OPTION)
  315.             {
  316.                 addSongManually(name.getText(), artist.getText(), genre.getText());
  317.             }
  318.         }
  319.     }
  320.  
  321.     public void addSongManually(String name, String artist, String genre) {
  322.         Song newSong = new Song(name,artist,genre,getAlbumArt("unavailable"));
  323.     songList.add(newSong);
  324.     mdlAllSongs.addElement(songList.get(songList.size()-1).getName());
  325.     }
  326.  
  327.     public void updateList() {
  328.         for(int tmp=0;tmp<10;tmp++) { mdlAllSongs.addElement(songList.get(tmp).getName()); }
  329.         lstAllSongs.setSelectedIndex(0);
  330.     }
  331.  
  332.     public static void main(String args[]) {
  333.         SwingUtilities.invokeLater(new Runnable() { public void run() { new JPod(); } });
  334.     }
  335.     public static void infoBox(String infoMessage, String location) {
  336.         JOptionPane.showMessageDialog(null, infoMessage, location, JOptionPane.INFORMATION_MESSAGE);
  337.     }
  338.     public void addSongsToArray() throws IOException {
  339.         String name="",artist="",genre="",art="";
  340.         Integer songCount = 1;
  341.     File dataInpt = new File ("R:\\songs.txt");
  342.     Scanner inFile = new Scanner (dataInpt);
  343.  
  344.     while (inFile.hasNextLine()) //head loop, run till no song left
  345.     {
  346.         name=inFile.nextLine();
  347.         artist=inFile.nextLine();
  348.         genre=inFile.nextLine();
  349.         art="hello"; //getAlbumArt(songList.get(songCount).getName());
  350.  
  351.         Song newSong = new Song(name,artist,genre,art);
  352.         songList.add(newSong);
  353.  
  354.       //String newLine = inFile.nextLine();
  355.       songCount++;
  356.     }
  357.     }
  358.     public static String getAlbumArt(String input) {
  359.         String result = "";
  360.         switch (input.toLowerCase()) {
  361.             case "work hard, play hard": result="H:\\workhardplayhard.jpg";break;
  362.             case "take it to the head": result="H:\\takehead.jpg";break;
  363.             case "the show goes on": result="H:\\theshowgoeson.jpg";break;
  364.             case "young, wild and free": result="H:\\youngwildfree.jpg";break;
  365.             case "miss independent": result="H:\\missindependent.jpg";break;
  366.             case "when i'm gone": result="H:\\whenimgone.jpg";break;
  367.             case "michael": result="H:\\mjmichael.jpg";break;
  368.             case "mercy": result="H:\\mercy.jpg";break;
  369.             case "run this town": result="H:\\runthistown.jpg";break;
  370.             case "empire state of mind": result="H:\\empirestateofmind.jpg";break;
  371.             default: result="H:\\noalbumart.jpg";break;
  372.         }
  373.         return result;
  374.     }
  375. }
Advertisement
Add Comment
Please, Sign In to add comment