PK E8 META-INF/PK E8HjMETA-INF/MANIFEST.MFManifest-Version: 1.0 Ant-Version: Apache Ant 1.7.0 Created-By: 10.0-b22 (Sun Microsystems Inc.) Main-Class: MusicPlayerJFrame Class-Path: lib/jl1.0.jar lib/AbsoluteLayout.jar X-COMMENT: Main-Class will be added automatically by build PK E81j4 Music.gifGIF89aWX1Nҝndig8{и! NETSCAPE2.0!2,WX0I8ͻ`(tE+PpuEqļ7S*zH و*1I-4r5@6gT$2\hrVK09Xsppfs'u^gM?&|dqYLY]D_Ay  WerZm VOMa qfYv?{1 ²9^R=±s;0骃$3jSӧ#ytρ"2q_(Q)KC,HK˗Qa^a$Kb'3\ʄI 9qwe*(ZA.ݙ/?JD8@/ַ>5@*Z/6;Ҥe +@{D{K iZ Zg\; ^PK b3<-ɸFkdZ ~<0#h7ӊ#};*!c8[9,J흇 (>շbܓֿ $y@$]')W` F[VHi@j~)G{qY!ŘblQV'3fqJ8"Mv<"1 RɠHeɝT @Z^p+<%q''N1zҼCS5pygN)P٦ R꫰B\4 0G:  뱱ngAWFJ8)JvawJJ@J~N@̕;`R"sx&ЋldvAlhn8lE&HKvKP޵nw.ps[s01#<;!3̀nj1ۥjp8z-@֯*7[ݝ-̭%lÊо,ʡ\-k$ _ڀR.f֣=,%<˦i`Sjڝ{>fm9#Џnv:q1_G 4|}d>Mdkшg3}PF\Jk;\& NdT&;5H4w~R[!M6Eڲg (*&:ްAl}2pp _1.- @<$ |wC-l)A==SQ~ ,pMUYS:P()UM[l< q{y5ϜxPN,xbbx $K! DƎȁ"*ё. U"1"2/T8 ~R #<`AD Q Xb4$(*ŪjH2' 4MeDD! e)&/JQ̀,%8%>TO Wb)(7~"'˙OX'6^&\4Pl%9](`,Q!* d?f1 G~$I/v8 G} C''sR t(JۡѕHRO3pA!Ϩ.J*I UmT1DHznVHg\9@׶:k h@Ӫt&=jX <#%*FVȎ`,ye7Z!2,VU0I`(d`Kۮ|em@+ޠјݎ<^/ l^J;(Q{pI@e3TgYFqGLvw /f+gi m5s?z}~m3\9)zz Lf'oÞʕЫō}ۤ  rF/AUI H,A|")sV9CsB\<sRvsˡ~f3jp nÏ+4{2  wJ:^"$PO/Fn"A0ьPYxn1Wb80%Z^ @e? ITs޼')ͶLA֨rwd(ĉ,( ; 6)͸sl8b/LUo iN'`.}KB츨'1dđN73Q!ZKaR *%)L2J$At) (uCjD/[407fJ/=g*U \A4ÏNւRT`75d?sB?G[̐!pa!D@5`wEKPlX wje}8i1E#lsCqCrFb m(VD1.R7)'`"J=9Z`БG0)ܝxw#8ϘIÝ9S|\S2]12z 8(߁؀?i 9l=5㱱bhA?,KC鮼r@2K2d";\0@Ck@[@V'y;_Ǫ/ [- `+hfFc K" +frJZ1(r܌ Ć- h½\Bl3s-o-p[ ]-ԼbM K͡ }Xo{m@}B!  kl\>x&|fjxBL|L0|wF9ɢ.u' :S`,f|+Vڪ+Ұ4t:@ ekɫ Y R{z0R7&ʾgh,;)m*#+ :Fఇ(Qz(bU3 _V(~P6-F#v#+N ?pG9@) Gш\0ɡ3Du)|C)sIRCA$XK7H%tp͍c}@t:2źtkcZwf1 hETQ>\ܕTKA.~T:dS3DR<ٌ$ k"G-r}Klf,+v65 ,"1aQMf=a( `yATYQN!参DH i驚)e/ &i<#APQt&Pxӌ)FVBU;;ifS,W>i _z#(A2I\3I4Ҧ:ENQ0F%SbDGš>^P)HUX\f5fCdFF #4OJS-S8EPXʥ^$m&⟭k*jU ڰ X[Q՚!>N+0bYcEl Y*Ci4vR4* ?2/`ilY.!NcB= n!2,VV0I8ͻ!"`Ej`zd\h7$ϦVokB1= :<Р jj- Aqp iapG vdF{^&?''fF FGz X+N4^C6qGVi{R $C`vѧ$X8Ędž jѽnZ(P`жm4Qj߾~ؽTLx "t v8y ]V8v,x0SG> BHs*NlgiK_[&S J7S,\,& fHWOf4gU[7ՔlpTKK[U?AQ*ť3JyS/% k'#@t f"0aa[ f{fAėBu[9jcx3hzReHt:{ A;%>$Δʾㆩ`&܂ )`PfX|!+׸5Rg<>mw|@eذ @RHpTtTe}Yf&} !aV-RFQX[g V@%φ@\. 7MBiu0 SUPZvhg'd)J[yØmA''*J@]wȅ[rY(j@L87W ,Ъ&Y聞 *63:ۀQR(fJ < ,Ltv J e.%}b L-Bm SArj7 +@ Gӧe}xrŲ.d1a@Y@,3P,B?L$?0r;C&A ]"}ܴ`M-\Z}5CisYS2mb[rs28kBJT`wԚM]r=A{_Ţ^dy9 }XݭpKwsj/ ;T:GFthf/v+*ȿ>.奔kBJ_hϲ6)V*ϭB R7-Fd؅zN P('y}5pӒuy /2bt`}G@ @ʶ$p|(I˞() BQ 44W܄V~|(, 8 l0 Dፆ`Bp9XSU,FTB0b $`SX$%&PωaaL(fEW0rŨ" c̤E 02i,'4KقcEaT@I!&10pQsPѶm%wÒ#$ԑ/F[Ѓ6-)%[Mm1i'2@$x!)BBQ~/UEAW3;NZ`~ i/`Uv6]jt$ZH%T*!Q (h D@umx08B4˴-AOe}+,º6n`YV jRUVm\Z.;PK E8j=GooMusicFilter.class1D & '( )* +,- '. +/ +0 +1 +2345()VCodeLineNumberTableLocalVariableTablethis LMusicFilter;accept(Ljava/io/File;)ZfLjava/io/File; extensionLjava/lang/String; getExtension"(Ljava/io/File;)Ljava/lang/String;extsiIgetDescription()Ljava/lang/String; SourceFileMusicFilter.java 6 78 wav9 :;mp3 <# => ?@ AB C# Music files MusicFilter"javax/swing/filechooser/FileFilter java/io/File isDirectory()Zjava/lang/Stringequals(Ljava/lang/Object;)ZgetName lastIndexOf(I)Ilength()I substring(I)Ljava/lang/String; toLowerCase! /*  ,++M,,,*  &(*! ,,)L*M,.>, d,` L+&'(*+'-*)'" !"#- 1 $%PK E8cݭMusicFilter.java /** * File filter to show only music files in a file select popup. * * @author Bob Hayes * @version 15 June 2008 */ import java.io.File; import javax.swing.filechooser.*; public class MusicFilter extends FileFilter { // Accept all directories and all .wav. .mp3 files public boolean accept (File f) { if (f.isDirectory ()) { return true; } String extension = getExtension (f); if (extension != null) { if (extension.equals ("wav")) { return true; } else if (extension.equals ("mp3")) { return true; } else { return false; } } return false; } static String getExtension (File f) { String ext = null; String s = f.getName (); int i = s.lastIndexOf ('.'); if (i > 0 && i < s.length () - 1) { ext = s.substring (i + 1).toLowerCase (); } return ext; } // The description of this filter public String getDescription () { return "Music files"; } } // end, MusicFilter PK E8RsUUMusicPlayer$1.class1W + , - ). /0 12 /3 /4 /5 /6 /78 9:; <= <>?@val$myMusicWaiterLWaiter;this$0 LMusicPlayer;(LMusicPlayer;LWaiter;)VCodeLineNumberTableLocalVariableTablethis InnerClassesLMusicPlayer$1;run()VeLjava/lang/Exception; SourceFileMusicPlayer.javaEnclosingMethodA B   # CDE F#G HI JK L# M# N# O#java/lang/ExceptionP QRProblem playing wav fileS TU TV MusicPlayer$1java/lang/Thread MusicPlayer(Ljava/io/File;)V access$000()Ljavax/sound/sampled/Clip;javax/sound/sampled/ClipstartWaiterWait(J)V isRunning()Zstopflushdrainclosejava/lang/SystemoutLjava/io/PrintStream;java/io/PrintStreamprintln(Ljava/lang/String;)V(Ljava/lang/Object;)V 9*+*,*; !"#d*YL*+çM+, ݸ    YL+    &N    -!.Q.Qa^?ABC#D.K6L>MFNNOQFRGZHaKiLqMyNOKLMNPR$%!&'()* PK E8abMusicPlayer$2.class1L ( ) * &+ ,-. /01 *2 3 45 6 789: val$musicFileLjava/io/File;this$0 LMusicPlayer;(LMusicPlayer;Ljava/io/File;)VCodeLineNumberTableLocalVariableTablethis InnerClassesLMusicPlayer$2;run()VeLjava/lang/Exception; SourceFileMusicPlayer.javaEnclosingMethod; <    =>? @ java/lang/ExceptionA BCjava/lang/StringBuilderException while playing file DE DF : GHI JK MusicPlayer$2java/lang/Thread MusicPlayer(Ljava/io/File;)V access$100.()Ljavazoom/jl/player/advanced/AdvancedPlayer;*javazoom/jl/player/advanced/AdvancedPlayerplayjava/lang/SystemoutLjava/io/PrintStream;append-(Ljava/lang/String;)Ljava/lang/StringBuilder;-(Ljava/lang/Object;)Ljava/lang/StringBuilder;toString()Ljava/lang/String;java/io/PrintStreamprintln(Ljava/lang/String;)V 9*+*,*_  |0)LY  *  +  cg e f/h %!"0#$%&' PK E8oSMusicPlayer.class1 9o 9p :qr q 9st uv 9w 9xy z{ z| }~  q      9 9 # 9 & ) 9 } } } } # u u u ubisLjava/io/BufferedInputStream;fisLjava/io/FileInputStream;player,Ljavazoom/jl/player/advanced/AdvancedPlayer; mp3ThreadLjava/lang/Thread; wavThreadmusicFileIsMP3ZmusicFileIsWav myMusicClipLjavax/sound/sampled/Clip;(Ljava/io/File;)VCodeLineNumberTableLocalVariableTablee3Ljavax/sound/sampled/UnsupportedAudioFileException;Ljava/io/IOException;.Ljavax/sound/sampled/LineUnavailableException;Ljava/lang/Exception;this LMusicPlayer; musicFileLjava/io/File;myMusic&Ljavax/sound/sampled/AudioInputStream; myMusicWaiterLWaiter;start()Vstop isRunning()Z getExtension"(Ljava/io/File;)Ljava/lang/String;fextLjava/lang/String;siI access$000()Ljavax/sound/sampled/Clip; access$100.()Ljavazoom/jl/player/advanced/AdvancedPlayer; SourceFileMusicPlayer.java ?@ GH I\Waiter `awav FE DEmp3 i 1javax/sound/sampled/UnsupportedAudioFileException java/lang/StringBuilderProblem playing wav file  java/io/IOException,javax/sound/sampled/LineUnavailableExceptionjava/lang/ExceptionProblem playing wav file MusicPlayer$1 InnerClasses I CBjava/io/FileInputStream IJ =>java/io/BufferedInputStream I ;<*javazoom/jl/player/advanced/AdvancedPlayerException while playing file  MusicPlayer$2 I AB [\ ]\ \ \ \ \ _  MusicPlayerjava/lang/Objectjava/lang/Stringequals(Ljava/lang/Object;)Zjavax/sound/sampled/AudioSystemgetAudioInputStream6(Ljava/io/File;)Ljavax/sound/sampled/AudioInputStream;getClipjavax/sound/sampled/Clipopen)(Ljavax/sound/sampled/AudioInputStream;)Vjava/lang/SystemoutLjava/io/PrintStream;append-(Ljava/lang/String;)Ljava/lang/StringBuilder;-(Ljava/lang/Object;)Ljava/lang/StringBuilder;toString()Ljava/lang/String;java/io/PrintStreamprintln(Ljava/lang/String;)V(Ljava/lang/Object;)V(LMusicPlayer;LWaiter;)V(Ljava/io/InputStream;)V(LMusicPlayer;Ljava/io/File;)Vjava/lang/Threadflushdrainclose interruptisAlive java/io/FilegetName lastIndexOf(I)Ilength()I substring(I)Ljava/lang/String; toLowerCase!9:;<=> ?@ AB CBDEFE GHIJKU*MYN*+  *+    + M ,:Y+:Y+:Y+:Y+Y*-` Z Y+!"#Y"$%&Y%'&:Y(+)Y*+*+AUXAU|AUAU"%L)&37;A"F#L$U9X&Z's({)|+~,-.01235678;SVWX"]%Z'[@\H_TkM\ Z"NO~"NP"NQ"NR'!NRUSTUUVOWXGYZ [\KD , +,Lnoqrt ]\KF ,-./01 %2K+15;>L* xyz{|&}/5?EM ?NR ^_KD 3 +3L `aK-M+4N-.56-6d-`78M,L+M4-ST-bV+cd&edfghiKLjkKLl\KLmn)PK E84MusicPlayer.java/* * To change this template, choose Tools | Templates * and open the template in the editor. */ /** * * @author Bob Hayes */ import javax.sound.sampled.*; import java.io.*; import javazoom.jl.player.advanced.*; public class MusicPlayer { MusicPlayer (final File musicFile) { AudioInputStream myMusic = null; final Waiter myMusicWaiter = new Waiter (); if (getExtension (musicFile).equals ("wav")) { musicFileIsWav = true; musicFileIsMP3 = false; } else if (getExtension (musicFile).equals ("mp3")) { musicFileIsMP3 = true; musicFileIsWav = false; } if (musicFileIsWav) { try { myMusic = AudioSystem.getAudioInputStream (musicFile); myMusicClip = AudioSystem.getClip (); myMusicClip.open (myMusic); } catch (javax.sound.sampled.UnsupportedAudioFileException e) { System.out.println ("Problem playing wav file " + musicFile); System.out.println (e); return; } catch (java.io.IOException e) { System.out.println ("Problem playing wav file " + musicFile); System.out.println (e); return; } catch (LineUnavailableException e) { System.out.println ("Problem playing wav file " + musicFile); System.out.println (e); return; } catch (Exception e) { System.out.println ("Problem playing wav file" + musicFile); System.out.println (e); return; } wavThread = new Thread () { public void run () { try { myMusicClip.start (); do { synchronized (myMusicWaiter) { // Use synchronized statement to get ownership of the wait object monitor (lock) myMusicWaiter.Wait (5); } } while (myMusicClip.isRunning ()); } catch (Exception e) { System.out.println ("Problem playing wav file"); System.out.println (e); } finally { myMusicClip.stop (); myMusicClip.flush (); myMusicClip.drain (); myMusicClip.close (); } } }; } else if (musicFileIsMP3) { try { fis = new FileInputStream (musicFile); bis = new BufferedInputStream (fis); player = new AdvancedPlayer (bis); } catch (Exception e) { System.out.println ("Exception while playing file " + musicFile); System.out.println (e); } mp3Thread = new Thread () { public void run () { try { player.play (); } catch (Exception e) { System.out.println ("Exception while playing file " + musicFile + " : " + e); } } }; } } // end, MusicFile constructor public static void start () { if (musicFileIsWav) { wavThread.start (); } else if (musicFileIsMP3) { mp3Thread.start (); } } // end, start public static void stop () { if (musicFileIsWav) { myMusicClip.stop (); myMusicClip.flush (); myMusicClip.drain (); myMusicClip.close (); wavThread.interrupt (); } else if (musicFileIsMP3) { try {bis.close();} catch (Exception e) {} mp3Thread.interrupt (); } } // end, stop public static boolean isRunning () { if (musicFileIsWav) { return wavThread.isAlive (); } else if (musicFileIsMP3) { return mp3Thread.isAlive (); } else { return false; } } // end, isRunning String getExtension (File f) { String ext = null; String s = f.getName (); int i = s.lastIndexOf ('.'); if (i > 0 && i < s.length () - 1) { ext = s.substring (i + 1).toLowerCase (); } return ext; } // end, getExtension static BufferedInputStream bis; static FileInputStream fis; static private AdvancedPlayer player; static private Thread mp3Thread; static private Thread wavThread; static boolean musicFileIsMP3; static boolean musicFileIsWav; static private Clip myMusicClip = null; } // end, class MusicPlayer PK E8'@BMusicPlayerJFrame$1.class1&    this$0LMusicPlayerJFrame;(LMusicPlayerJFrame;)VCodeLineNumberTableLocalVariableTablethis InnerClassesLMusicPlayerJFrame$1;itemStateChanged(Ljava/awt/event/ItemEvent;)VevtLjava/awt/event/ItemEvent; SourceFileMusicPlayerJFrame.javaEnclosingMethod! "#  # $%MusicPlayerJFrame$1java/lang/Objectjava/awt/event/ItemListenerMusicPlayerJFrameinitComponents()V access$0000(LMusicPlayerJFrame;Ljava/awt/event/ItemEvent;)V   4 *+* h   A *+ jk    PK E8(wMusicPlayerJFrame$2.class1&    this$0LMusicPlayerJFrame;(LMusicPlayerJFrame;)VCodeLineNumberTableLocalVariableTablethis InnerClassesLMusicPlayerJFrame$2;actionPerformed(Ljava/awt/event/ActionEvent;)VevtLjava/awt/event/ActionEvent; SourceFileMusicPlayerJFrame.javaEnclosingMethod! "#  # $%MusicPlayerJFrame$2java/lang/Objectjava/awt/event/ActionListenerMusicPlayerJFrameinitComponents()V access$1002(LMusicPlayerJFrame;Ljava/awt/event/ActionEvent;)V   4 *+* p   A *+ rs    PK E8(wKMusicPlayerJFrame$3.class1&    this$0LMusicPlayerJFrame;(LMusicPlayerJFrame;)VCodeLineNumberTableLocalVariableTablethis InnerClassesLMusicPlayerJFrame$3;actionPerformed(Ljava/awt/event/ActionEvent;)VevtLjava/awt/event/ActionEvent; SourceFileMusicPlayerJFrame.javaEnclosingMethod! "#  # $%MusicPlayerJFrame$3java/lang/Objectjava/awt/event/ActionListenerMusicPlayerJFrameinitComponents()V access$2002(LMusicPlayerJFrame;Ljava/awt/event/ActionEvent;)V   4 *+* x   A *+ z{    PK E82MusicPlayerJFrame$4.class1&    this$0LMusicPlayerJFrame;(LMusicPlayerJFrame;)VCodeLineNumberTableLocalVariableTablethis InnerClassesLMusicPlayerJFrame$4;actionPerformed(Ljava/awt/event/ActionEvent;)VevtLjava/awt/event/ActionEvent; SourceFileMusicPlayerJFrame.javaEnclosingMethod! "#  # $%MusicPlayerJFrame$4java/lang/Objectjava/awt/event/ActionListenerMusicPlayerJFrameinitComponents()V access$3002(LMusicPlayerJFrame;Ljava/awt/event/ActionEvent;)V   4 *+*    A *+     PK E86TMusicPlayerJFrame$5.class1&    this$0LMusicPlayerJFrame;(LMusicPlayerJFrame;)VCodeLineNumberTableLocalVariableTablethis InnerClassesLMusicPlayerJFrame$5;actionPerformed(Ljava/awt/event/ActionEvent;)VevtLjava/awt/event/ActionEvent; SourceFileMusicPlayerJFrame.javaEnclosingMethod! "#  # $%MusicPlayerJFrame$5java/lang/Objectjava/awt/event/ActionListenerMusicPlayerJFrameinitComponents()V access$4002(LMusicPlayerJFrame;Ljava/awt/event/ActionEvent;)V   4 *+*    A *+     PK E8ƊnMusicPlayerJFrame$6.class1&    this$0LMusicPlayerJFrame;(LMusicPlayerJFrame;)VCodeLineNumberTableLocalVariableTablethis InnerClassesLMusicPlayerJFrame$6;actionPerformed(Ljava/awt/event/ActionEvent;)VevtLjava/awt/event/ActionEvent; SourceFileMusicPlayerJFrame.javaEnclosingMethod! "#  # $%MusicPlayerJFrame$6java/lang/Objectjava/awt/event/ActionListenerMusicPlayerJFrameinitComponents()V access$5002(LMusicPlayerJFrame;Ljava/awt/event/ActionEvent;)V   4 *+*    A *+     PK E8s,J J MusicPlayerJFrame$7.class1 )D *E BF GH BI JK BLM E NO PQ RS RTUV WX YZ [\ B] B^ _` a *bc d Be Bfg Eh i j k [l Bm n Bopqthis$0LMusicPlayerJFrame;(LMusicPlayerJFrame;)VCodeLineNumberTableLocalVariableTablethis InnerClassesLMusicPlayerJFrame$7;run()VeLjava/lang/Exception; Ljava/lang/InterruptedException;fLjava/io/File;i$Ljava/util/Iterator; SourceFileMusicPlayerJFrame.javaEnclosingMethodr st +, -7 uvw xy z{| }~ java/util/Random   ~  java/io/File MusicPlayer -java/lang/Exception   7 java/lang/InterruptedException 7 java/lang/StringBuilderSkipping file . ~ {MusicPlayerJFrame$7java/lang/ThreadMusicPlayerJFramePlayStopItemStateChanged(Ljava/awt/event/ItemEvent;)V access$600)(LMusicPlayerJFrame;)Ljavax/swing/JLabel;javax/swing/JLabel setVisible(Z)V access$700,(LMusicPlayerJFrame;)Ljavax/swing/JCheckBox;javax/swing/JCheckBox isSelected()Z access$800%(LMusicPlayerJFrame;)Ljava/util/List;java/util/Collectionsshuffle%(Ljava/util/List;Ljava/util/Random;)Vjava/util/Listiterator()Ljava/util/Iterator;java/util/IteratorhasNextnext()Ljava/lang/Object;(Ljava/io/File;)Vjava/lang/SystemoutLjava/io/PrintStream;java/io/PrintStreamprintln(Ljava/lang/Object;)V access$1000-(LMusicPlayerJFrame;)Ljavax/swing/JTextField; access$9005(LMusicPlayerJFrame;Ljava/io/File;)Ljava/lang/String;javax/swing/JTextFieldsetText(Ljava/lang/String;)Vstartsleep(J)Vstop access$1100(LMusicPlayerJFrame;)Z access$1102(LMusicPlayerJFrame;Z)Zappend-(Ljava/lang/String;)Ljava/lang/StringBuilder;-(Ljava/lang/Object;)Ljava/lang/StringBuilder;toString()Ljava/lang/String; access$1200 isRunning access$1300 )*+,-./4 *+*0$1  2567/***Y * L+ + MY,WN-**,EN-*(*WY !",#$% *&'p*(8 L+*&IRUu{~0v( *+)-I0R5U2V3]4`7r8u<{J~>?@ABCDGHKNRPQTU1>V 89A8:I};<6=>8925?@ABC4 )PK E8h8YRRMusicPlayerJFrame$8.class1W ( ) &*+ ,- ,. ,/ &0 1. &2 &3 &45 6- 6. &7 &8 9:;<=this$0LMusicPlayerJFrame;(LMusicPlayerJFrame;)VCodeLineNumberTableLocalVariableTablethis InnerClassesLMusicPlayerJFrame$8;run()V SourceFileMusicPlayerJFrame.javaEnclosingMethod> ?"  " @APlayB CD EF GF HIJ KL MI NO P QR STU VFMusicPlayerJFrame$8java/lang/Objectjava/lang/RunnableMusicPlayerJFrame finishMusic access$14000(LMusicPlayerJFrame;)Ljavax/swing/JToggleButton;javax/swing/JToggleButtonsetText(Ljava/lang/String;)V setEnabled(Z)V setSelected access$1500*(LMusicPlayerJFrame;)Ljavax/swing/JButton;javax/swing/JButton access$1102(LMusicPlayerJFrame;Z)Z access$1600 access$1000-(LMusicPlayerJFrame;)Ljavax/swing/JTextField;javax/swing/JTextField setCursor(Ljava/awt/Cursor;)V access$600)(LMusicPlayerJFrame;)Ljavax/swing/JLabel;javax/swing/JLabel setVisible 4 *+*   !"l**** * W*  *  * **.  "-6AMX`k l #$%&' PK E8gMusicPlayerJFrame$9.class1,       !()VCodeLineNumberTableLocalVariableTablethis InnerClassesLMusicPlayerJFrame$9;run SourceFileMusicPlayerJFrame.javaEnclosingMethod "# MusicPlayerJFrame $% &' () *+MusicPlayerJFrame$9java/lang/Objectjava/lang/Runnablemain([Ljava/lang/String;)V access$1702((LMusicPlayerJFrame;)LMusicPlayerJFrame; access$1700()LMusicPlayerJFrame;setLocationRelativeTo(Ljava/awt/Component;)V setVisible(Z)V0    /*   PYW   PK E8X;;MusicPlayerJFrame.class1                          ' ', 1 1 $  '       / 1  4 6 8  ;  >    $ $ $ $ $ I  L ' ' R  W ' $      / / h / 1 n 1 s 4 6 6 6 6$ 1 ~! ; >  > ; 8#                                 /  !"#  $%  &'  () * ++ , -. / 0 1  ! 2 3 4 5 6 78 9: 7; / <= <> ? @ ABCD  E FG FH IJ KL  FM FNO P Q R ST  UV WX  Y Z[ \] ^ _ ` ab cd efg _ h ij k a $l $m $n o musicImageLjava/awt/Image;skipZ PlayerThreadLjava/lang/Thread;player LMusicPlayer; musicFiles[Ljava/io/File;currentDirectoryPathLjava/lang/String;musicFileIsMP3musicFileIsWav myMusicClipLjavax/sound/sampled/Clip;frameLMusicPlayerJFrame; MusicFilesLjava/util/List; Signature Ljava/util/List; AboutDialogLjavax/swing/JDialog; AboutMenuItemLjavax/swing/JMenuItem; AnimatedGIFLjavax/swing/JLabel;CurrentLjavax/swing/JTextField;ExitFileLjavax/swing/JMenu;HelpLoopLjavax/swing/JCheckBox;PlayStopLjavax/swing/JToggleButton;QuitLjavax/swing/JButton; RandomizedSelectSkipjLabel1jLabel2jLabel3jLabel4jLabel5jLabel6 jMenuBar1Ljavax/swing/JMenuBar;()VCodeLineNumberTableLocalVariableTablethisiiLjavax/swing/ImageIcon;initComponentslayoutLjavax/swing/GroupLayout;SelectActionPerformed(Ljava/awt/event/ActionEvent;)VevtLjava/awt/event/ActionEvent;fcLjavax/swing/JFileChooser;Ljavax/swing/JFrame;sQuitActionPerformedPlayStopItemStateChanged(Ljava/awt/event/ItemEvent;)Ve Ljava/lang/InterruptedException; musicWaiterLWaiter;Ljava/awt/event/ItemEvent; getMusicName"(Ljava/io/File;)Ljava/lang/String;fLjava/io/File;nameiI finishMusicsaveCurrentDirectoryoutLjava/io/FileOutputStream;Ljava/io/IOException; outputFileb[BoutputFileNamegetCurrentDirectory()Ljava/lang/String;inLjava/io/FileInputStream;bt inputFile inputFileNameSkipActionPerformedAboutMenuItemActionPerformedExitActionPerformedmain([Ljava/lang/String;)Vargs[Ljava/lang/String; access$0000(LMusicPlayerJFrame;Ljava/awt/event/ItemEvent;)Vx0x1 access$1002(LMusicPlayerJFrame;Ljava/awt/event/ActionEvent;)V access$200 access$300 access$400 access$500 access$600)(LMusicPlayerJFrame;)Ljavax/swing/JLabel; access$700,(LMusicPlayerJFrame;)Ljavax/swing/JCheckBox; access$800%(LMusicPlayerJFrame;)Ljava/util/List; access$9005(LMusicPlayerJFrame;Ljava/io/File;)Ljava/lang/String; access$1000-(LMusicPlayerJFrame;)Ljavax/swing/JTextField; access$1100(LMusicPlayerJFrame;)Z access$1102(LMusicPlayerJFrame;Z)Z access$1200(LMusicPlayerJFrame;)V access$1300 access$14000(LMusicPlayerJFrame;)Ljavax/swing/JToggleButton; access$1500*(LMusicPlayerJFrame;)Ljavax/swing/JButton; access$1600 access$1702((LMusicPlayerJFrame;)LMusicPlayerJFrame; access$1700()LMusicPlayerJFrame; SourceFileMusicPlayerJFrame.java  +) ,) &' $% W6   PQ  *%  hA iA gA HA @A IJ 56 user.homehomep qr   java/util/ArrayList =6javax/swing/ImageIcon C:/Music.gif 5s tu vw xs yzjavax/swing/JDialog javax/swing/JLabel - . / 0 1 2javax/swing/JToggleButtonjavax/swing/JButton ()javax/swing/JCheckBoxjavax/swing/JTextFieldjavax/swing/JMenuBar 34javax/swing/JMenu !"javax/swing/JMenuItem   #" About Music Player {s |u }u ~u (org/netbeans/lib/awtextra/AbsoluteLayout  java/awt/FontTahoma 5 Java Music Player-org/netbeans/lib/awtextra/AbsoluteConstraints 5 Java Fundamentals ClassBob Hayes, Instructorjava/awt/Color 5 Raytheon Spring 2008hayes@raytheon.com    Music Player MusicPlayer sPlay uMusicPlayerJFrame$1 InnerClasses 5  Select MusicSelect music files to be played sMusicPlayerJFrame$2 QUITStop music and quitMusicPlayerJFrame$3Randomized play u u%Skip the currently playing music fileMusicPlayerJFrame$4MusicPlayerJFrame$5  AboutMusicPlayerJFrame$6 javax/swing/GroupLayout 5                     s 6javax/swing/JFrame Music select `ajavax/swing/JFileChooser  MusicFilter Select a music file s u s sjava/awt/Dimension 5       ` a 6   z 6 X6  StopMusicPlayerJFrame$7  6 6  Waiter z java/lang/InterruptedException a   aMusicPlayerJFrame$8  java/lang/StringBuilder   MusicPathname.txt a java/io/Filejava/io/FileOutputStream 5  6java/io/IOException YCannot access   sjava/io/FileInputStream    java/lang/String 5  MusicPlayerJFrame$9MusicPlayerJFramejava/lang/System getProperty8(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;(Ljava/lang/String;)V setVisible(Z)VsetIcon(Ljavax/swing/Icon;)VsetTextrequestFocusInWindow()ZsetTitlesetAlwaysOnTopsetModal setResizablegetContentPane()Ljava/awt/Container;java/awt/Container setLayout(Ljava/awt/LayoutManager;)V(Ljava/lang/String;II)VsetFont(Ljava/awt/Font;)V(IIII)Vadd)(Ljava/awt/Component;Ljava/lang/Object;)V(III)V setForeground(Ljava/awt/Color;)VgetAccessibleContext)()Ljavax/accessibility/AccessibleContext;%javax/accessibility/AccessibleContextsetAccessibleParent#(Ljavax/accessibility/Accessible;)VsetDefaultCloseOperation(I)VsetName setEnabledaddItemListener (Ljava/awt/event/ItemListener;)VsetToolTipTextaddActionListener"(Ljava/awt/event/ActionListener;)V setEditable setFocusable0(Ljavax/swing/JMenuItem;)Ljavax/swing/JMenuItem;((Ljavax/swing/JMenu;)Ljavax/swing/JMenu; setJMenuBar(Ljavax/swing/JMenuBar;)V(Ljava/awt/Container;)V!javax/swing/GroupLayout$Alignment AlignmentLEADING#Ljavax/swing/GroupLayout$Alignment;createParallelGroup ParallelGroupL(Ljavax/swing/GroupLayout$Alignment;)Ljavax/swing/GroupLayout$ParallelGroup;TRAILINGcreateSequentialGroupSequentialGroup+()Ljavax/swing/GroupLayout$SequentialGroup;'javax/swing/GroupLayout$SequentialGroupaddContainerGap-(II)Ljavax/swing/GroupLayout$SequentialGroup; addComponent?(Ljava/awt/Component;)Ljavax/swing/GroupLayout$SequentialGroup;%javax/swing/GroupLayout$ParallelGroupaddGroupGroupk(Ljavax/swing/GroupLayout$Alignment;Ljavax/swing/GroupLayout$Group;)Ljavax/swing/GroupLayout$ParallelGroup;addGap.(III)Ljavax/swing/GroupLayout$SequentialGroup;=(Ljava/awt/Component;)Ljavax/swing/GroupLayout$ParallelGroup;J(Ljavax/swing/GroupLayout$Group;)Ljavax/swing/GroupLayout$SequentialGroup;@(Ljava/awt/Component;III)Ljavax/swing/GroupLayout$ParallelGroup;H(Ljavax/swing/GroupLayout$Group;)Ljavax/swing/GroupLayout$ParallelGroup;B(Ljava/awt/Component;III)Ljavax/swing/GroupLayout$SequentialGroup;setHorizontalGroup"(Ljavax/swing/GroupLayout$Group;)V*javax/swing/LayoutStyle$ComponentPlacementComponentPlacementRELATED,Ljavax/swing/LayoutStyle$ComponentPlacement;addPreferredGapY(Ljavax/swing/LayoutStyle$ComponentPlacement;II)Ljavax/swing/GroupLayout$SequentialGroup;BASELINEW(Ljavax/swing/LayoutStyle$ComponentPlacement;)Ljavax/swing/GroupLayout$SequentialGroup;setVerticalGroupsetAccessibleNamepacksetFileSelectionModeaddChoosableFileFilter'(Ljavax/swing/filechooser/FileFilter;)VsetDialogTitlesetMultiSelectionEnabledsetApproveButtonTextsetApproveButtonToolTipText(II)VsetPreferredSize(Ljava/awt/Dimension;)V*(Ljava/awt/Component;)Ljava/awt/Component;showOpenDialog(Ljava/awt/Component;)IgetSelectedFiles()[Ljava/io/File;()Ljava/io/File;getPathjava/util/Listclearjava/util/ArraysasList%([Ljava/lang/Object;)Ljava/util/List;addAll(Ljava/util/Collection;)Z isRunningstopexitjava/awt/event/ItemEventgetStateChange()Ijava/lang/Threadstart interruptjava/awt/CursorgetPredefinedCursor(I)Ljava/awt/Cursor; setCursor(Ljava/awt/Cursor;)VisAlivesleep(J)VgetName lastIndexOf(I)I substring(II)Ljava/lang/String; toLowerCasejava/awt/EventQueue invokeLater(Ljava/lang/Runnable;)VgetBytes()[Bappend-(Ljava/lang/String;)Ljava/lang/StringBuilder; separatortoString(Ljava/io/File;)Vwrite([B)VcloseLjava/io/PrintStream;java/io/PrintStreamprintlnlength()Jread([B)IsetSizesetLocationRelativeTo(Ljava/awt/Component;)Vjavax/swing/GroupLayout$Groupjavax/swing/LayoutStyle!        !"#"$%&'()*%+),)-./01234!567T*****Y *YL* * + *!"*#W82  $(2:B K!S#9T:2";<=67 j*$Y%&*'Y()*'Y(**'Y(+*'Y(,*'Y(-*'Y(.*/Y0*1Y2*1Y23*4Y5 *6Y7*4Y5*1Y2*'Y( *8Y9:*;Y<=*>Y?@*;Y<A*>Y?B*&CD*&E*&F*&G*&HIYJK*)LYMNO*)PQ*&H*)RYFST**LYMNO**UQ*&H**RYZ<ST*+VQ*&H*+RYdZST*,LYMNO*,WY33XY*,ZQ*&H*,RYST*-[Q*&H*-RYST*.\Q*&H*.RYdnST*&]*B^*_*`a*bc*d*ef*g*hY*ij*k"*lm*nY*op*3q"*3rm*3sY*tp* uv*w*LYMNx*y*z*{v*|m*}*~Y*p* Q*=*@*@Y**=*@W*:*=W*A*B*BY**A*BW*:*AW**:Y*L*+K+++*3+vvv+* *+*c*+:++*+*+ʶ* X+++* U6+**+** ***3**8NS. /0!1,273B4M5X6c7n8y9:;<=>?@ACDEFGI!J*KEMXNaO|QRTUVWYZ\]8_FaKbQcWd\fegmh|nopvwx~ $-6EQ]fo~Yei9j:>?@A7bYN*: *Y*M,,Y,,,,,YX -,W--,-*,*,öĵ* * *¸ƹW*g*W8^ ',7=BHN_ejnv~ 94:BC'DE FG HA7Və*̱8   9:BCIJ7+:*ζf*}*}*y*Y*е*ѶҧF+>*Ѷ*ԶջYM*ѶؙٸۧN** hnq8N !!")$5Z?]GaNcVd^fhhnkqjrkunyos9*rKL^$MN:BOPQ7!M+N-.6-߶M,8wxy{|~94!:!RST G UVW67: Y*8  9  :X67iL*MY+WNY-LY+:,:Y-5JM8.  ,5?EJMOh9>? YZOK[i:g\S _]^,=_ `a7yLMY+WNY-LY+:+:WYM:Y-,/Y\86 &/9BJTY\^w9H9 bcBd^^K[y:weSuG &Sf gA7I **Ѷӱ8 9 : BChA7g'*&YEܷ*&*&8&9':'BCiA7Nə̱8  9:BC jk79 Y8  9  lmno7:*+89pqOrs7:*+89pqCts7:*+89pqCus7:*+89pqCvs7:*+89pqCws7:*+ 89pqCxy7/* 89 pz{7/* 89 p|}7/* 89 p~7:*+ 89pqS7/*89 p7/*89 p7;*Z89pq7/*89 p{7/*89 p7/*89 p7/*89 p7/*89 p70*Y89 p78rhns~@ @PK E8|N:N:MusicPlayerJFrame.form
PK E8eΌC``MusicPlayerJFrame.jarPK 8 META-INF/PK 8x$>META-INF/MANIFEST.MFManifest-Version: 1.0 Ant-Version: Apache Ant 1.7.0 Created-By: 10.0-b22 (Sun Microsystems Inc.) Main-Class: MusicPlayerJFrame Class-Path: lib/jl1.0.jar X-COMMENT: Main-Class will be added automatically by build PK 8j=GooMusicFilter.class1D & '( )* +,- '. +/ +0 +1 +2345()VCodeLineNumberTableLocalVariableTablethis LMusicFilter;accept(Ljava/io/File;)ZfLjava/io/File; extensionLjava/lang/String; getExtension"(Ljava/io/File;)Ljava/lang/String;extsiIgetDescription()Ljava/lang/String; SourceFileMusicFilter.java 6 78 wav9 :;mp3 <# => ?@ AB C# Music files MusicFilter"javax/swing/filechooser/FileFilter java/io/File isDirectory()Zjava/lang/Stringequals(Ljava/lang/Object;)ZgetName lastIndexOf(I)Ilength()I substring(I)Ljava/lang/String; toLowerCase! /*  ,++M,,,*  &(*! ,,)L*M,.>, d,` L+&'(*+'-*)'" !"#- 1 $%PK 8cݭMusicFilter.java /** * File filter to show only music files in a file select popup. * * @author Bob Hayes * @version 15 June 2008 */ import java.io.File; import javax.swing.filechooser.*; public class MusicFilter extends FileFilter { // Accept all directories and all .wav. .mp3 files public boolean accept (File f) { if (f.isDirectory ()) { return true; } String extension = getExtension (f); if (extension != null) { if (extension.equals ("wav")) { return true; } else if (extension.equals ("mp3")) { return true; } else { return false; } } return false; } static String getExtension (File f) { String ext = null; String s = f.getName (); int i = s.lastIndexOf ('.'); if (i > 0 && i < s.length () - 1) { ext = s.substring (i + 1).toLowerCase (); } return ext; } // The description of this filter public String getDescription () { return "Music files"; } } // end, MusicFilter PK 8RsUUMusicPlayer$1.class1W + , - ). /0 12 /3 /4 /5 /6 /78 9:; <= <>?@val$myMusicWaiterLWaiter;this$0 LMusicPlayer;(LMusicPlayer;LWaiter;)VCodeLineNumberTableLocalVariableTablethis InnerClassesLMusicPlayer$1;run()VeLjava/lang/Exception; SourceFileMusicPlayer.javaEnclosingMethodA B   # CDE F#G HI JK L# M# N# O#java/lang/ExceptionP QRProblem playing wav fileS TU TV MusicPlayer$1java/lang/Thread MusicPlayer(Ljava/io/File;)V access$000()Ljavax/sound/sampled/Clip;javax/sound/sampled/ClipstartWaiterWait(J)V isRunning()Zstopflushdrainclosejava/lang/SystemoutLjava/io/PrintStream;java/io/PrintStreamprintln(Ljava/lang/String;)V(Ljava/lang/Object;)V 9*+*,*; !"#d*YL*+çM+, ݸ    YL+    &N    -!.Q.Qa^?ABC#D.K6L>MFNNOQFRGZHaKiLqMyNOKLMNPR$%!&'()* PK 8S{*°MusicPlayer$2.class1; ! " #$% &'( )* )+,-this$0 LMusicPlayer;(LMusicPlayer;)VCodeLineNumberTableLocalVariableTablethis InnerClassesLMusicPlayer$2;run()VeLjava/lang/Exception; SourceFileMusicPlayer.javaEnclosingMethod. /  012 3java/lang/Exception4 56Problem playing mp3 file7 89 8: MusicPlayer$2java/lang/Thread MusicPlayer(Ljava/io/File;)V access$100.()Ljavazoom/jl/player/advanced/AdvancedPlayer;*javazoom/jl/player/advanced/AdvancedPlayerplayjava/lang/SystemoutLjava/io/PrintStream;java/io/PrintStreamprintln(Ljava/lang/String;)V(Ljava/lang/Object;)V  4 *+*_  jL+  ch e fgi   PK 8tÙMusicPlayer.class1 9o 9p :qr q 9st uv 9w 9xy z{ z| }~  q      9 9 # 9 & ) 9 } } } } # u u u ubisLjava/io/BufferedInputStream;fisLjava/io/FileInputStream;player,Ljavazoom/jl/player/advanced/AdvancedPlayer; mp3ThreadLjava/lang/Thread; wavThreadmusicFileIsMP3ZmusicFileIsWav myMusicClipLjavax/sound/sampled/Clip;(Ljava/io/File;)VCodeLineNumberTableLocalVariableTablee3Ljavax/sound/sampled/UnsupportedAudioFileException;Ljava/io/IOException;.Ljavax/sound/sampled/LineUnavailableException;Ljava/lang/Exception;this LMusicPlayer; musicFileLjava/io/File;myMusic&Ljavax/sound/sampled/AudioInputStream; myMusicWaiterLWaiter;start()Vstop isRunning()Z getExtension"(Ljava/io/File;)Ljava/lang/String;fextLjava/lang/String;siI access$000()Ljavax/sound/sampled/Clip; access$100.()Ljavazoom/jl/player/advanced/AdvancedPlayer; SourceFileMusicPlayer.java ?@ GH I\Waiter `awav FE DEmp3 i 1javax/sound/sampled/UnsupportedAudioFileException java/lang/StringBuilderProblem playing wav file  java/io/IOException,javax/sound/sampled/LineUnavailableExceptionjava/lang/ExceptionProblem playing wav file MusicPlayer$1 InnerClasses I CBjava/io/FileInputStream IJ =>java/io/BufferedInputStream I ;<*javazoom/jl/player/advanced/AdvancedPlayerProblem playing file  MusicPlayer$2 I AB [\ ]\ \ \ \ \ _  MusicPlayerjava/lang/Objectjava/lang/Stringequals(Ljava/lang/Object;)Zjavax/sound/sampled/AudioSystemgetAudioInputStream6(Ljava/io/File;)Ljavax/sound/sampled/AudioInputStream;getClipjavax/sound/sampled/Clipopen)(Ljavax/sound/sampled/AudioInputStream;)Vjava/lang/SystemoutLjava/io/PrintStream;append-(Ljava/lang/String;)Ljava/lang/StringBuilder;-(Ljava/lang/Object;)Ljava/lang/StringBuilder;toString()Ljava/lang/String;java/io/PrintStreamprintln(Ljava/lang/String;)V(Ljava/lang/Object;)V(LMusicPlayer;LWaiter;)V(Ljava/io/InputStream;)V(LMusicPlayer;)Vjava/lang/Threadflushdrainclose interruptisAlive java/io/FilegetName lastIndexOf(I)Ilength()I substring(I)Ljava/lang/String; toLowerCase!9:;<=> ?@ AB CBDEFE GHIJKT*MYN*+  *+    + M ,:Y+:Y+:Y+:Y+Y*-_ Y Y+!"#Y"$%&Y%'&:Y(+)Y**+AUXAU|AUAU"%L)&37;A"F#L$U9X&Z's({)|+~,-.01235678;SVWX"]%Z'[@\H_SlM\ Z"NO~"NP"NQ"NR'!NRTSTTUVNWXFYZ [\KD , +,Loprsu ]\KF ,-./01 %2K+15;>L* yz{|}&~/5?EM ?NR ^_KD 3 +3L `aK-M+4N-.56-6d-`78M,L+M4-ST-bV+cd&edfghiKLjkKLl\KLmn)PK 8"[MusicPlayer.java/* * To change this template, choose Tools | Templates * and open the template in the editor. */ /** * * @author Bob Hayes */ import javax.sound.sampled.*; import java.io.*; import javazoom.jl.player.advanced.*; public class MusicPlayer { MusicPlayer (File musicFile) { AudioInputStream myMusic = null; final Waiter myMusicWaiter = new Waiter (); if (getExtension (musicFile).equals ("wav")) { musicFileIsWav = true; musicFileIsMP3 = false; } else if (getExtension (musicFile).equals ("mp3")) { musicFileIsMP3 = true; musicFileIsWav = false; } if (musicFileIsWav) { try { myMusic = AudioSystem.getAudioInputStream (musicFile); myMusicClip = AudioSystem.getClip (); myMusicClip.open (myMusic); } catch (javax.sound.sampled.UnsupportedAudioFileException e) { System.out.println ("Problem playing wav file " + musicFile); System.out.println (e); return; } catch (java.io.IOException e) { System.out.println ("Problem playing wav file " + musicFile); System.out.println (e); return; } catch (LineUnavailableException e) { System.out.println ("Problem playing wav file " + musicFile); System.out.println (e); return; } catch (Exception e) { System.out.println ("Problem playing wav file" + musicFile); System.out.println (e); return; } wavThread = new Thread () { public void run () { try { myMusicClip.start (); do { synchronized (myMusicWaiter) { // Use synchronized statement to get ownership of the wait object monitor (lock) myMusicWaiter.Wait (5); } } while (myMusicClip.isRunning ()); } catch (Exception e) { System.out.println ("Problem playing wav file"); System.out.println (e); } finally { myMusicClip.stop (); myMusicClip.flush (); myMusicClip.drain (); myMusicClip.close (); } } }; } else if (musicFileIsMP3) { try { fis = new FileInputStream (musicFile); bis = new BufferedInputStream (fis); player = new AdvancedPlayer (bis); } catch (Exception e) { System.out.println ("Problem playing file " + musicFile); System.out.println (e); } mp3Thread = new Thread () { public void run () { try { player.play (); } catch (Exception e) { System.out.println ("Problem playing mp3 file"); System.out.println (e); } } }; } } // end, MusicFile constructor public static void start () { if (musicFileIsWav) { wavThread.start (); } else if (musicFileIsMP3) { mp3Thread.start (); } } public static void stop () { if (musicFileIsWav) { myMusicClip.stop (); myMusicClip.flush (); myMusicClip.drain (); myMusicClip.close (); wavThread.interrupt (); } else if (musicFileIsMP3) { try {bis.close();} catch (Exception e) {} mp3Thread.interrupt (); } } // end, stop public static boolean isRunning () { if (musicFileIsWav) { return wavThread.isAlive (); } else if (musicFileIsMP3) { return mp3Thread.isAlive (); } else { return false; } } // end, isRunning String getExtension (File f) { String ext = null; String s = f.getName (); int i = s.lastIndexOf ('.'); if (i > 0 && i < s.length () - 1) { ext = s.substring (i + 1).toLowerCase (); } return ext; } // end, getExtension static BufferedInputStream bis; static FileInputStream fis; static private AdvancedPlayer player; static private Thread mp3Thread; static private Thread wavThread; static boolean musicFileIsMP3; static boolean musicFileIsWav; static private Clip myMusicClip = null; } // end, class MusicPlayer PK 8}MusicPlayerJFrame$1.class1&    this$0LMusicPlayerJFrame;(LMusicPlayerJFrame;)VCodeLineNumberTableLocalVariableTablethis InnerClassesLMusicPlayerJFrame$1;itemStateChanged(Ljava/awt/event/ItemEvent;)VevtLjava/awt/event/ItemEvent; SourceFileMusicPlayerJFrame.javaEnclosingMethod! "#  # $%MusicPlayerJFrame$1java/lang/Objectjava/awt/event/ItemListenerMusicPlayerJFrameinitComponents()V access$0000(LMusicPlayerJFrame;Ljava/awt/event/ItemEvent;)V   4 *+* 9   A *+ ;<    PK 8u MusicPlayerJFrame$2.class1&    this$0LMusicPlayerJFrame;(LMusicPlayerJFrame;)VCodeLineNumberTableLocalVariableTablethis InnerClassesLMusicPlayerJFrame$2;actionPerformed(Ljava/awt/event/ActionEvent;)VevtLjava/awt/event/ActionEvent; SourceFileMusicPlayerJFrame.javaEnclosingMethod! "#  # $%MusicPlayerJFrame$2java/lang/Objectjava/awt/event/ActionListenerMusicPlayerJFrameinitComponents()V access$1002(LMusicPlayerJFrame;Ljava/awt/event/ActionEvent;)V   4 *+* @   A *+ BC    PK 8MusicPlayerJFrame$3.class1&    this$0LMusicPlayerJFrame;(LMusicPlayerJFrame;)VCodeLineNumberTableLocalVariableTablethis InnerClassesLMusicPlayerJFrame$3;actionPerformed(Ljava/awt/event/ActionEvent;)VevtLjava/awt/event/ActionEvent; SourceFileMusicPlayerJFrame.javaEnclosingMethod! "#  # $%MusicPlayerJFrame$3java/lang/Objectjava/awt/event/ActionListenerMusicPlayerJFrameinitComponents()V access$2002(LMusicPlayerJFrame;Ljava/awt/event/ActionEvent;)V   4 *+* H   A *+ JK    PK 8 __MusicPlayerJFrame$4.class1 : ; 8< => ?@ ?ABC DE FG HI 8J K LM N O PQ 8RS TM 8U VWX 8Y Z[ TW\]this$0LMusicPlayerJFrame;(LMusicPlayerJFrame;)VCodeLineNumberTableLocalVariableTablethis InnerClassesLMusicPlayerJFrame$4;run()VeLjava/lang/Exception; Ljava/lang/InterruptedException;fLjava/io/File;i$Ljava/util/Iterator; SourceFileMusicPlayerJFrame.javaEnclosingMethod^ _` !" #- abc def gh ij java/io/File MusicPlayer #kjava/lang/Exceptionl mno pq rs tuv wx y- z{ |hjava/lang/InterruptedException }~Play    hMusicPlayerJFrame$4java/lang/ThreadMusicPlayerJFramePlayStopItemStateChanged(Ljava/awt/event/ItemEvent;)V MusicFilesLjava/util/List;java/util/Listiterator()Ljava/util/Iterator;java/util/IteratorhasNext()Znext()Ljava/lang/Object;(Ljava/io/File;)Vjava/lang/SystemoutLjava/io/PrintStream;java/io/PrintStreamprintln(Ljava/lang/Object;)V access$300-(LMusicPlayerJFrame;)Ljavax/swing/JTextField;getName()Ljava/lang/String;javax/swing/JTextFieldsetText(Ljava/lang/String;)Vstartsleep(J)V isRunning access$4000(LMusicPlayerJFrame;)Ljavax/swing/JToggleButton;javax/swing/JToggleButton access$500*(LMusicPlayerJFrame;)Ljavax/swing/JButton;javax/swing/JButton setEnabled(Z)V access$600,(LMusicPlayerJFrame;)Ljavax/swing/JCheckBox;javax/swing/JCheckBox isSelected  !"#$%4 *+*&'  (+,-%*L+o+MY, W N - * ,1N*** *t L + ****  ), QWZ~  &^ ),-4BEKQWZ[gr~'>-./[$.0 _12 u34./(+56789* PK 8P2OOMusicPlayerJFrame$5.class1$    ()VCodeLineNumberTableLocalVariableTablethis InnerClassesLMusicPlayerJFrame$5;run SourceFileMusicPlayerJFrame.javaEnclosingMethod  MusicPlayerJFrame ! "#MusicPlayerJFrame$5java/lang/Objectjava/lang/Runnablemain([Ljava/lang/String;)VframeLMusicPlayerJFrame; setVisible(Z)V0  /*    DY    PK 8H _+!+!MusicPlayerJFrame.class1 W                  )   .   4      >     >   >            >   ! " ># $%& W'() Z' Z*+ ^ Z,- Z. Z/ Z0 Z1 W2 W W$ Z3 Z4 5 67 68 9: 9; <= >?@  AB v CDE y FG HI JK ~ FLMN OPQplayer LMusicPlayer; musicFiles[Ljava/io/File;musicFileIsMP3ZmusicFileIsWav myMusicClipLjavax/sound/sampled/Clip;frameLMusicPlayerJFrame; MusicFilesLjava/util/List; Signature Ljava/util/List;CurrentLjavax/swing/JTextField;LoopLjavax/swing/JCheckBox;PlayStopLjavax/swing/JToggleButton;QuitLjavax/swing/JButton; RandomizedSelectjLabel1Ljavax/swing/JLabel;jLabel2()VCodeLineNumberTableLocalVariableTablethisinitComponentslayoutLjavax/swing/GroupLayout;SelectActionPerformed(Ljava/awt/event/ActionEvent;)ViIevtLjava/awt/event/ActionEvent;fcLjavax/swing/JFileChooser;Ljavax/swing/JFrame;QuitActionPerformedPlayStopItemStateChanged(Ljava/awt/event/ItemEvent;)V PlayerThreadLjava/lang/Thread;e Ljava/lang/InterruptedException; musicWaiterLWaiter;Ljava/awt/event/ItemEvent;main([Ljava/lang/String;)Vargs[Ljava/lang/String; access$0000(LMusicPlayerJFrame;Ljava/awt/event/ItemEvent;)Vx0x1 access$1002(LMusicPlayerJFrame;Ljava/awt/event/ActionEvent;)V access$200 access$300-(LMusicPlayerJFrame;)Ljavax/swing/JTextField; access$4000(LMusicPlayerJFrame;)Ljavax/swing/JToggleButton; access$500*(LMusicPlayerJFrame;)Ljavax/swing/JButton; access$600,(LMusicPlayerJFrame;)Ljavax/swing/JCheckBox; SourceFileMusicPlayerJFrame.java java/util/ArrayList javax/swing/JLabel javax/swing/JToggleButtonjavax/swing/JButton javax/swing/JCheckBox javax/swing/JTextField RS Music Player TU VW java/awt/FontArial X YZ [U \WPlay ]WMusicPlayerJFrame$1 InnerClasses ^ _` Select MusicMusicPlayerJFrame$2 abQUITStop music and quit cUMusicPlayerJFrame$3Randomized play dW Music file Now playingjavax/swing/GroupLayout ef gh ijk mn oq rn suv wx yz {| wu} ~ y ~   y ~  n y   javax/swing/JFrame Music select Ujavax/swing/JFileChooserC:\Music S MusicFilter Select a music file U W U U         S Stop java/util/Random MusicPlayerJFrame$4   Waiter java/lang/InterruptedExceptionMusicPlayerJFrame$5 MusicPlayerJFramesetDefaultCloseOperation(I)VsetTitle(Ljava/lang/String;)V setResizable(Z)V(Ljava/lang/String;II)VsetFont(Ljava/awt/Font;)VsetText setFocusable setEnabled(LMusicPlayerJFrame;)VaddItemListener (Ljava/awt/event/ItemListener;)VaddActionListener"(Ljava/awt/event/ActionListener;)VsetToolTipText setEditablegetContentPane()Ljava/awt/Container;(Ljava/awt/Container;)Vjava/awt/Container setLayout(Ljava/awt/LayoutManager;)V!javax/swing/GroupLayout$Alignment AlignmentLEADING#Ljavax/swing/GroupLayout$Alignment;createParallelGroup ParallelGroupL(Ljavax/swing/GroupLayout$Alignment;)Ljavax/swing/GroupLayout$ParallelGroup;TRAILINGcreateSequentialGroupSequentialGroup+()Ljavax/swing/GroupLayout$SequentialGroup;'javax/swing/GroupLayout$SequentialGroupaddContainerGap-(II)Ljavax/swing/GroupLayout$SequentialGroup; addComponent?(Ljava/awt/Component;)Ljavax/swing/GroupLayout$SequentialGroup;addGap.(III)Ljavax/swing/GroupLayout$SequentialGroup;%javax/swing/GroupLayout$ParallelGroupaddGroupGroupk(Ljavax/swing/GroupLayout$Alignment;Ljavax/swing/GroupLayout$Group;)Ljavax/swing/GroupLayout$ParallelGroup;B(Ljava/awt/Component;III)Ljavax/swing/GroupLayout$SequentialGroup;H(Ljavax/swing/GroupLayout$Group;)Ljavax/swing/GroupLayout$ParallelGroup;*javax/swing/LayoutStyle$ComponentPlacementComponentPlacementRELATED,Ljavax/swing/LayoutStyle$ComponentPlacement;addPreferredGapY(Ljavax/swing/LayoutStyle$ComponentPlacement;II)Ljavax/swing/GroupLayout$SequentialGroup;=(Ljava/awt/Component;)Ljavax/swing/GroupLayout$ParallelGroup;J(Ljavax/swing/GroupLayout$Group;)Ljavax/swing/GroupLayout$SequentialGroup;setHorizontalGroup"(Ljavax/swing/GroupLayout$Group;)VBASELINE@(Ljava/awt/Component;III)Ljavax/swing/GroupLayout$ParallelGroup;W(Ljavax/swing/LayoutStyle$ComponentPlacement;)Ljavax/swing/GroupLayout$SequentialGroup;setVerticalGrouppacksetFileSelectionModeaddChoosableFileFilter'(Ljavax/swing/filechooser/FileFilter;)VsetDialogTitlesetMultiSelectionEnabledsetApproveButtonTextsetApproveButtonToolTipTextadd*(Ljava/awt/Component;)Ljava/awt/Component;showOpenDialog(Ljava/awt/Component;)IgetSelectedFiles()[Ljava/io/File;java/util/Listclear(Ljava/lang/Object;)Z MusicPlayer isRunning()Zstopjava/lang/Systemexitjava/awt/event/ItemEventgetStateChange()I isSelectedjava/util/Collectionsshuffle%(Ljava/util/List;Ljava/util/Random;)Vjava/lang/Threadstartjava/awt/CursorgetPredefinedCursor(I)Ljava/awt/Cursor; setCursor(Ljava/awt/Cursor;)Vsleep(J)Vjava/awt/EventQueue invokeLater(Ljava/lang/Runnable;)Vjavax/swing/GroupLayout$Groupjavax/swing/LayoutStyle!W S** * Y *     *Y*Y*Y*Y*Y*Y*Y*Y**** Y!$"#*$*%*&'*(*)Y**+*,-*.Y*/0*1-*23*4Y*50*67*8*9:*;*<$*=7>Y*?@L*?+A++BCD+EF*GH*GIJ+EH*KQFL+EeeeH+BCD+EMN*GHJ+E$$$H+BC*O*OP+BC+EH*cKL+EH*GLPLPFLQ++BC+E>>>H*G(((H+RC*S*OPH+RC*O*OPMNN*KMT+RC*O*OPILU*V"& '(!),*7+B,M-X/]0c1h3{45789?@FGHNPQRTVX%Y-Z;{%2WYXYNZY[\M,],^Y_`,ab,c,de,af-,gW-h-i,-j*,kl* m6*l* *l2nW*(R $*/5;AFJR]^gt4j! Jopq X+r<*s'*t*u* vYwxyY*zM,{ip*|}~YMoN*}*&'*t*:>*l*lS* mZ`cR#1:>ADLTZglu} >:dTS 9 Y    :*+:*+:*+/* /* /* /* R ).4y >l@>p>t>@PK 8BXqqMusicPlayerJFrame.form
PK 8w28/,/,MusicPlayerJFrame.java/* * MusicPlayerJFrame.java * * Created on July 6, 2008, 5:04 AM */ import javax.sound.sampled.*; import java.io.*; import java.awt.*; import java.awt.event.*; import javax.swing.*; import java.lang.Object.*; import java.util.*; import static java.util.Collections.*; import static java.lang.Math.*; import java.util.List; // So we can use "List" to mean java.util.List without including the package name. /** * * @author Bob Hayes */ public class MusicPlayerJFrame extends javax.swing.JFrame { /** Creates new form MusicPlayerJFrame */ public MusicPlayerJFrame() { initComponents(); } /** This method is called from within the constructor to * initialize the form. * WARNING: Do NOT modify this code. The content of this method is * always regenerated by the Form Editor. */ @SuppressWarnings("unchecked") // //GEN-BEGIN:initComponents private void initComponents() { jLabel1 = new javax.swing.JLabel(); PlayStop = new javax.swing.JToggleButton(); Select = new javax.swing.JButton(); Quit = new javax.swing.JButton(); Randomized = new javax.swing.JCheckBox(); Current = new javax.swing.JTextField(); jLabel2 = new javax.swing.JLabel(); Loop = new javax.swing.JCheckBox(); setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE); setTitle("Music Player"); setResizable(false); jLabel1.setFont(new java.awt.Font("Arial", 0, 36)); jLabel1.setText("Music Player"); jLabel1.setFocusable(false); PlayStop.setText("Play"); PlayStop.setEnabled(false); PlayStop.addItemListener(new java.awt.event.ItemListener() { public void itemStateChanged(java.awt.event.ItemEvent evt) { PlayStopItemStateChanged(evt); } }); Select.setText("Select Music"); Select.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { SelectActionPerformed(evt); } }); Quit.setText("QUIT"); Quit.setToolTipText("Stop music and quit"); Quit.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { QuitActionPerformed(evt); } }); Randomized.setText("Randomized play"); Current.setEditable(false); Current.setText("Music file"); Current.setFocusable(false); jLabel2.setText("Now playing"); Loop.setText("Loop"); javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane()); getContentPane().setLayout(layout); layout.setHorizontalGroup( layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup() .addContainerGap(199, Short.MAX_VALUE) .addComponent(jLabel2) .addGap(174, 174, 174) .addComponent(Quit) .addContainerGap()) .addGroup(layout.createSequentialGroup() .addGap(25, 25, 25) .addComponent(Current, javax.swing.GroupLayout.PREFERRED_SIZE, 411, javax.swing.GroupLayout.PREFERRED_SIZE) .addContainerGap(81, Short.MAX_VALUE)) .addGroup(layout.createSequentialGroup() .addGap(101, 101, 101) .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup() .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 22, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(jLabel1) .addGap(22, 22, 22)) .addGroup(layout.createSequentialGroup() .addGap(36, 36, 36) .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addComponent(Select) .addComponent(Randomized)) .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(layout.createSequentialGroup() .addGap(23, 23, 23) .addComponent(PlayStop, javax.swing.GroupLayout.PREFERRED_SIZE, 99, javax.swing.GroupLayout.PREFERRED_SIZE)) .addGroup(layout.createSequentialGroup() .addGap(18, 18, 18) .addComponent(Loop))))) .addContainerGap(135, Short.MAX_VALUE)) ); layout.setVerticalGroup( layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(layout.createSequentialGroup() .addGap(62, 62, 62) .addComponent(jLabel1) .addGap(40, 40, 40) .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(PlayStop, javax.swing.GroupLayout.PREFERRED_SIZE, 25, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(Select)) .addGap(18, 18, 18) .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(Randomized) .addComponent(Loop)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 78, Short.MAX_VALUE) .addComponent(Current, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(jLabel2) .addComponent(Quit)) .addContainerGap()) ); pack(); }// //GEN-END:initComponents private void SelectActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_SelectActionPerformed JFileChooser fc; // Set up JFileChooser to get music files JFrame frame = new JFrame ("Music select"); fc = new JFileChooser ("C:\\Music"); fc.setFileSelectionMode (JFileChooser.FILES_AND_DIRECTORIES); fc.addChoosableFileFilter (new MusicFilter ()); fc.setDialogTitle ("Select a music file"); fc.setMultiSelectionEnabled (true); fc.setApproveButtonText ("Select"); fc.setApproveButtonToolTipText ("Select a music file"); frame.add (fc); frame.setDefaultCloseOperation (JFrame.DISPOSE_ON_CLOSE); frame.pack (); if (fc.showOpenDialog (frame) == JFileChooser.APPROVE_OPTION) { musicFiles = fc.getSelectedFiles (); } else { return; } MusicFiles.clear (); for (int i = 0; i < musicFiles.length; i++) { MusicFiles.add (musicFiles[i]); } PlayStop.setEnabled (true); }//GEN-LAST:event_SelectActionPerformed private void QuitActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_QuitActionPerformed if (MusicPlayer.isRunning ()) MusicPlayer.stop (); System.exit (0); }//GEN-LAST:event_QuitActionPerformed private void PlayStopItemStateChanged(java.awt.event.ItemEvent evt) {//GEN-FIRST:event_PlayStopItemStateChanged if (evt.getStateChange () == ItemEvent.SELECTED) { // User wants to play music. Change label to Stop. PlayStop.setText ("Stop"); Select.setEnabled (false); if (Randomized.isSelected()) { shuffle (MusicFiles, new Random ()); } Thread PlayerThread = new Thread () { public void run () { try { do { for (File f : MusicFiles) { try { new MusicPlayer (f); } catch (Exception e) { System.out.println (e); } Current.setText (f.getName ()); MusicPlayer.start(); Thread.sleep (1000); while (MusicPlayer.isRunning()) { try {Thread.sleep (1000);} catch (InterruptedException e) { PlayStop.setText ("Play"); Select.setEnabled (true); Current.setText (" "); return; } } } } while (Loop.isSelected()); } catch (Exception e) { System.out.println (e); } PlayStop.setText ("Play"); PlayStop.setEnabled (false); Select.setEnabled (true); Current.setText (" "); } // end, run () }; PlayerThread.start(); } else { MusicPlayer.stop(); setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR)); Waiter musicWaiter = new Waiter(); while (MusicPlayer.isRunning ()) { try {Thread.sleep (1000);} catch (InterruptedException e){} } setCursor (null); PlayStop.setText ("Play"); Select.setEnabled (true); Current.setText (""); for (int i = 0; i < musicFiles.length; i++) musicFiles[i] = null; MusicFiles.clear (); } }//GEN-LAST:event_PlayStopItemStateChanged /** * @param args the command line arguments */ public static void main(String args[]) { java.awt.EventQueue.invokeLater(new Runnable() { public void run() { frame = new MusicPlayerJFrame(); frame.setVisible(true); } }); } private MusicPlayer player; File musicFiles[]; boolean musicFileIsMP3; boolean musicFileIsWav; Clip myMusicClip = null; static MusicPlayerJFrame frame; List MusicFiles = new ArrayList (); // create an ArrayList to hold the shapes, use the List interface // Variables declaration - do not modify//GEN-BEGIN:variables private javax.swing.JTextField Current; private javax.swing.JCheckBox Loop; private javax.swing.JToggleButton PlayStop; private javax.swing.JButton Quit; private javax.swing.JCheckBox Randomized; private javax.swing.JButton Select; private javax.swing.JLabel jLabel1; private javax.swing.JLabel jLabel2; // End of variables declaration//GEN-END:variables } PK 8U, Waiter.class1  ()VCodeLineNumberTableLocalVariableTablethisLWaiter;Wait(J)Ve Ljava/lang/InterruptedException;secondsJ SourceFile Waiter.java  java/lang/InterruptedExceptionWaiterjava/lang/Objectwait!  /*    e*iN        PK 8kt Waiter.java /** * Simple class to provide a sleep or delay capability using object.wait(); * * @Bob Hayes * @30 November 2006 */ public class Waiter { /** * @Wait method. * * @param seconds number of seconds to wait * */ void Wait (long seconds) { try { wait (1000 * seconds); } catch (InterruptedException e) { return; } } } // end, class Waiter PK 8 AMETA-INF/PK 8x$>+META-INF/MANIFEST.MFPK 8j=Goo9MusicFilter.classPK 8cݭMusicFilter.javaPK 8RsUU MusicPlayer$1.classPK 8S{*°MusicPlayer$2.classPK 8tÙMusicPlayer.classPK 8"[#MusicPlayer.javaPK 8}7MusicPlayerJFrame$1.classPK 8u :MusicPlayerJFrame$2.classPK 8=MusicPlayerJFrame$3.classPK 8 __AMusicPlayerJFrame$4.classPK 8P2OOIMusicPlayerJFrame$5.classPK 8H _+!+!6LMusicPlayerJFrame.classPK 8BXqqmMusicPlayerJFrame.formPK 8w28/,/,;MusicPlayerJFrame.javaPK 8U, Waiter.classPK 8kt Waiter.javaPKPK E8tKtKMusicPlayerJFrame.java/* * MusicPlayerJFrame.java * * Created on July 6, 2008, 5:04 AM */ import javax.sound.sampled.*; import java.io.*; import java.awt.*; import java.awt.event.*; import javax.swing.*; import java.lang.Object.*; import java.util.*; import static java.util.Collections.*; import java.util.List; // So we can use "List" to mean java.util.List without including the package name. import javax.swing.ImageIcon; /** * * @author Bob Hayes */ public class MusicPlayerJFrame extends javax.swing.JFrame { /** Creates new form MusicPlayerJFrame */ public MusicPlayerJFrame () { initComponents (); ImageIcon ii = new ImageIcon ("C:/Music.gif"); AnimatedGIF.setVisible (false); AnimatedGIF.setIcon (ii); Skip.setText ("Skip"); Select.requestFocusInWindow(); } /** This method is called from within the constructor to * initialize the form. * WARNING: Do NOT modify this code. The content of this method is * always regenerated by the Form Editor. */ @SuppressWarnings("unchecked") // //GEN-BEGIN:initComponents private void initComponents() { AboutDialog = new javax.swing.JDialog(); jLabel1 = new javax.swing.JLabel(); jLabel2 = new javax.swing.JLabel(); jLabel3 = new javax.swing.JLabel(); jLabel4 = new javax.swing.JLabel(); jLabel5 = new javax.swing.JLabel(); jLabel6 = new javax.swing.JLabel(); PlayStop = new javax.swing.JToggleButton(); Select = new javax.swing.JButton(); Quit = new javax.swing.JButton(); Randomized = new javax.swing.JCheckBox(); Current = new javax.swing.JTextField(); Loop = new javax.swing.JCheckBox(); Skip = new javax.swing.JButton(); AnimatedGIF = new javax.swing.JLabel(); jMenuBar1 = new javax.swing.JMenuBar(); File = new javax.swing.JMenu(); Exit = new javax.swing.JMenuItem(); Help = new javax.swing.JMenu(); AboutMenuItem = new javax.swing.JMenuItem(); AboutDialog.setTitle("About Music Player"); AboutDialog.setAlwaysOnTop(true); AboutDialog.setModal(true); AboutDialog.setResizable(false); AboutDialog.getContentPane().setLayout(new org.netbeans.lib.awtextra.AbsoluteLayout()); jLabel1.setFont(new java.awt.Font("Tahoma", 0, 24)); jLabel1.setText("Java Music Player"); AboutDialog.getContentPane().add(jLabel1, new org.netbeans.lib.awtextra.AbsoluteConstraints(70, 20, -1, -1)); jLabel2.setFont(new java.awt.Font("Tahoma", 0, 14)); jLabel2.setText("Java Fundamentals Class"); AboutDialog.getContentPane().add(jLabel2, new org.netbeans.lib.awtextra.AbsoluteConstraints(90, 60, -1, -1)); jLabel3.setText("Bob Hayes, Instructor"); AboutDialog.getContentPane().add(jLabel3, new org.netbeans.lib.awtextra.AbsoluteConstraints(100, 90, -1, -1)); jLabel4.setFont(new java.awt.Font("Tahoma", 0, 24)); jLabel4.setForeground(new java.awt.Color(255, 51, 51)); jLabel4.setText("Raytheon"); AboutDialog.getContentPane().add(jLabel4, new org.netbeans.lib.awtextra.AbsoluteConstraints(210, 150, -1, -1)); jLabel5.setText("Spring 2008"); AboutDialog.getContentPane().add(jLabel5, new org.netbeans.lib.awtextra.AbsoluteConstraints(130, 130, -1, -1)); jLabel6.setText("hayes@raytheon.com"); AboutDialog.getContentPane().add(jLabel6, new org.netbeans.lib.awtextra.AbsoluteConstraints(100, 110, -1, -1)); AboutDialog.getAccessibleContext().setAccessibleParent(AboutMenuItem); setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE); setTitle("Music Player"); setName("MusicPlayer"); // NOI18N setResizable(false); PlayStop.setText("Play"); PlayStop.setEnabled(false); PlayStop.addItemListener(new java.awt.event.ItemListener() { public void itemStateChanged(java.awt.event.ItemEvent evt) { PlayStopItemStateChanged(evt); } }); Select.setText("Select Music"); Select.setToolTipText("Select music files to be played"); Select.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { SelectActionPerformed(evt); } }); Quit.setText("QUIT"); Quit.setToolTipText("Stop music and quit"); Quit.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { QuitActionPerformed(evt); } }); Randomized.setText("Randomized play"); Current.setEditable(false); Current.setFont(new java.awt.Font("Tahoma", 0, 18)); Current.setEnabled(false); Current.setFocusable(false); Loop.setText("Loop"); Skip.setToolTipText("Skip the currently playing music file"); Skip.setEnabled(false); Skip.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { SkipActionPerformed(evt); } }); AnimatedGIF.setText("AnimatedGIF"); File.setText("File"); Exit.setText("Exit"); Exit.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { ExitActionPerformed(evt); } }); File.add(Exit); jMenuBar1.add(File); Help.setText("Help"); AboutMenuItem.setText("About"); AboutMenuItem.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { AboutMenuItemActionPerformed(evt); } }); Help.add(AboutMenuItem); jMenuBar1.add(Help); setJMenuBar(jMenuBar1); javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane()); getContentPane().setLayout(layout); layout.setHorizontalGroup( layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup() .addContainerGap(428, Short.MAX_VALUE) .addComponent(Quit) .addContainerGap()) .addGroup(layout.createSequentialGroup() .addGap(118, 118, 118) .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addComponent(Randomized) .addComponent(Select)) .addGap(23, 23, 23) .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addComponent(PlayStop, javax.swing.GroupLayout.PREFERRED_SIZE, 99, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(Loop)) .addContainerGap(140, Short.MAX_VALUE)) .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup() .addContainerGap(58, Short.MAX_VALUE) .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(layout.createSequentialGroup() .addComponent(Current, javax.swing.GroupLayout.PREFERRED_SIZE, 431, javax.swing.GroupLayout.PREFERRED_SIZE) .addContainerGap()) .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup() .addComponent(Skip) .addGap(410, 410, 410)))) .addGroup(layout.createSequentialGroup() .addGap(202, 202, 202) .addComponent(AnimatedGIF, javax.swing.GroupLayout.PREFERRED_SIZE, 88, javax.swing.GroupLayout.PREFERRED_SIZE) .addContainerGap(213, Short.MAX_VALUE)) ); layout.setVerticalGroup( layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup() .addGap(26, 26, 26) .addComponent(AnimatedGIF, javax.swing.GroupLayout.PREFERRED_SIZE, 85, javax.swing.GroupLayout.PREFERRED_SIZE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 54, Short.MAX_VALUE) .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(PlayStop, javax.swing.GroupLayout.PREFERRED_SIZE, 25, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(Select)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addComponent(Loop) .addComponent(Randomized)) .addGap(30, 30, 30) .addComponent(Current, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(Skip) .addGap(18, 18, 18) .addComponent(Quit) .addGap(7, 7, 7)) ); PlayStop.getAccessibleContext().setAccessibleName(""); pack(); }// //GEN-END:initComponents private void SelectActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_SelectActionPerformed JFileChooser fc; // Set up JFileChooser to get music files JFrame frame = new JFrame ("Music select"); String s = getCurrentDirectory(); if (s != null) currentDirectoryPath = s; fc = new JFileChooser (currentDirectoryPath); fc.setFileSelectionMode (JFileChooser.FILES_ONLY); fc.addChoosableFileFilter (new MusicFilter ()); fc.setDialogTitle ("Select a music file"); fc.setMultiSelectionEnabled (true); fc.setApproveButtonText ("Select"); fc.setApproveButtonToolTipText ("Select a music file"); fc.setPreferredSize (new Dimension (600, 800)); frame.add (fc); frame.setDefaultCloseOperation (JFrame.DISPOSE_ON_CLOSE); frame.pack (); if (fc.showOpenDialog (frame) == JFileChooser.APPROVE_OPTION) { musicFiles = fc.getSelectedFiles (); currentDirectoryPath = fc.getCurrentDirectory().getPath (); } else { return; } MusicFiles.clear (); MusicFiles.addAll (Arrays.asList (musicFiles)); PlayStop.setEnabled (true); PlayStop.requestFocusInWindow(); }//GEN-LAST:event_SelectActionPerformed private void QuitActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_QuitActionPerformed if (MusicPlayer.isRunning ()) { MusicPlayer.stop (); } // Save current directory of file chooser. saveCurrentDirectory(); System.exit (0); }//GEN-LAST:event_QuitActionPerformed private void PlayStopItemStateChanged(java.awt.event.ItemEvent evt) {//GEN-FIRST:event_PlayStopItemStateChanged if (evt.getStateChange () == ItemEvent.SELECTED) { // comes in as deselected in error case // User wants to play music. Change label to Stop. PlayStop.setText ("Stop"); Select.setEnabled (false); Skip.setEnabled (true); Current.setEnabled (true); PlayerThread = new Thread () { public void run () { try { AnimatedGIF.setVisible (true); do { if (Randomized.isSelected ()) { shuffle (MusicFiles, new Random ()); } for (File f : MusicFiles) { try { new MusicPlayer (f); } catch (Exception e) { System.out.println (e); continue; // try the next file, if any } Current.setText (getMusicName (f)); MusicPlayer.start (); do { try { Thread.sleep (2000); } catch (InterruptedException e) { System.out.println (e); MusicPlayer.stop (); if (skip) { skip = false; System.out.println ("Skipping file " + f); continue; // try the next file, if any } else { finishMusic (); return; // PlayerThread will die here. } } } while (MusicPlayer.isRunning ()); } // end, for (f : MusicFiles) } while (Loop.isSelected ()); } catch (Exception e) { System.out.println (e); } finishMusic (); return; } // end, run () PlayerThread dies here. }; PlayerThread.start (); // fire up PlayerThread and back to GUI } else if (evt.getStateChange () == ItemEvent.DESELECTED) { // User wants to stop music. Interrupt the player thread. PlayerThread.interrupt (); setCursor (Cursor.getPredefinedCursor (Cursor.WAIT_CURSOR)); Waiter musicWaiter = new Waiter (); while (PlayerThread.isAlive ()) { try { Thread.sleep (1000); } catch (InterruptedException e) { } } finishMusic (); MusicFiles.clear (); } }//GEN-LAST:event_PlayStopItemStateChanged private String getMusicName (File f) { String name = null; String s = f.getName (); int i = s.lastIndexOf ('.'); if (i > 0) { name = s.substring (0, i).toLowerCase (); } return name; } // end, getExtension private void finishMusic () { java.awt.EventQueue.invokeLater (new Runnable () { public void run () { PlayStop.setText ("Play"); PlayStop.setEnabled (false); PlayStop.setSelected (false); Skip.setEnabled (false); skip = false; Select.setEnabled (true); Current.setText (" "); Current.setEnabled (false); setCursor (null); // in case we're hour-glassed AnimatedGIF.setVisible (false); } }); } // end, finishMusic private void saveCurrentDirectory () { File outputFile = null; byte b[] = currentDirectoryPath.getBytes(); String outputFileName = System.getProperty("user.home", "home") + outputFile.separator + "MusicPathname.txt"; outputFile = new File(outputFileName); try { FileOutputStream out = new FileOutputStream(outputFile); out.write(b); out.close(); } catch (java.io.IOException e) { System.out.println("Cannot access " + outputFileName); } } // end, saveCurrentDirectory private String getCurrentDirectory () { File inputFile = null; String s = null; String inputFileName = System.getProperty ("user.home", "home") + inputFile.separator + "MusicPathname.txt"; inputFile = new File (inputFileName); try { FileInputStream in = new FileInputStream(inputFile); byte bt[] = new byte[(int)inputFile.length()]; in.read(bt); s = new String(bt); in.close(); } catch (java.io.IOException e) { System.out.println("Cannot access " + inputFileName); } return s; } // end, getCurrentDirectory private void SkipActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_SkipActionPerformed skip = true; PlayerThread.interrupt (); }//GEN-LAST:event_SkipActionPerformed private void AboutMenuItemActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_AboutMenuItemActionPerformed AboutDialog.setSize (new Dimension (325, 220)); AboutDialog.setLocationRelativeTo (frame); AboutDialog.setVisible (true); }//GEN-LAST:event_AboutMenuItemActionPerformed private void ExitActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_ExitActionPerformed if (MusicPlayer.isRunning ()) { MusicPlayer.stop (); } System.exit (0); }//GEN-LAST:event_ExitActionPerformed /** * @param args the command line arguments */ public static void main (String args[]) { java.awt.EventQueue.invokeLater (new Runnable () { public void run () { frame = new MusicPlayerJFrame (); frame.setLocationRelativeTo (null); frame.setVisible (true); } }); } private static Image musicImage; private boolean skip = false; private Thread PlayerThread; private MusicPlayer player; private File musicFiles[]; private String currentDirectoryPath = System.getProperty ("user.home", "home"); private boolean musicFileIsMP3; private boolean musicFileIsWav; private Clip myMusicClip = null; private static MusicPlayerJFrame frame; private List MusicFiles = new ArrayList (); // create an ArrayList to hold the shapes, use the List interface // Variables declaration - do not modify//GEN-BEGIN:variables private javax.swing.JDialog AboutDialog; private javax.swing.JMenuItem AboutMenuItem; private javax.swing.JLabel AnimatedGIF; private javax.swing.JTextField Current; private javax.swing.JMenuItem Exit; private javax.swing.JMenu File; private javax.swing.JMenu Help; private javax.swing.JCheckBox Loop; private javax.swing.JToggleButton PlayStop; private javax.swing.JButton Quit; private javax.swing.JCheckBox Randomized; private javax.swing.JButton Select; private javax.swing.JButton Skip; private javax.swing.JLabel jLabel1; private javax.swing.JLabel jLabel2; private javax.swing.JLabel jLabel3; private javax.swing.JLabel jLabel4; private javax.swing.JLabel jLabel5; private javax.swing.JLabel jLabel6; private javax.swing.JMenuBar jMenuBar1; // End of variables declaration//GEN-END:variables } PK E8U, Waiter.class1  ()VCodeLineNumberTableLocalVariableTablethisLWaiter;Wait(J)Ve Ljava/lang/InterruptedException;secondsJ SourceFile Waiter.java  java/lang/InterruptedExceptionWaiterjava/lang/Objectwait!  /*    e*iN        PK E8kt Waiter.java /** * Simple class to provide a sleep or delay capability using object.wait(); * * @Bob Hayes * @30 November 2006 */ public class Waiter { /** * @Wait method. * * @param seconds number of seconds to wait * */ void Wait (long seconds) { try { wait (1000 * seconds); } catch (InterruptedException e) { return; } } } // end, class Waiter PK E8 AMETA-INF/PK E8Hj+META-INF/MANIFEST.MFPK E81j4 PMusic.gifPK E8j=Goo9MusicFilter.classPK E8cݭ"MusicFilter.javaPK E8RsUU'MusicPlayer$1.classPK E8ab-MusicPlayer$2.classPK E8oS2MusicPlayer.classPK E84AMusicPlayer.javaPK E8'@BUMusicPlayerJFrame$1.classPK E8(wYMusicPlayerJFrame$2.classPK E8(wK(\MusicPlayerJFrame$3.classPK E82J_MusicPlayerJFrame$4.classPK E86TlbMusicPlayerJFrame$5.classPK E8ƊneMusicPlayerJFrame$6.classPK E8s,J J hMusicPlayerJFrame$7.classPK E8h8YRR1sMusicPlayerJFrame$8.classPK E8gxMusicPlayerJFrame$9.classPK E8X;;{MusicPlayerJFrame.classPK E8|N:N:ƷMusicPlayerJFrame.formPK E8eΌC``HMusicPlayerJFrame.jarPK E8tKtK۴MusicPlayerJFrame.javaPK E8U, Waiter.classPK E8kt Waiter.javaPK2