From e3de71e295e182fc95fcf85860aac6153cacbd0a Mon Sep 17 00:00:00 2001 From: GalihBudiawan Date: Wed, 17 May 2017 22:07:52 +0700 Subject: [PATCH] GalihBudiawan_1301154231_IF39-07 --- build.xml | 73 + build/classes/.netbeans_automatic_build | 0 build/classes/.netbeans_update_resources | 0 .../Application$ThreadPlayer.class | Bin 0 -> 1468 bytes build/classes/Application/Application.class | Bin 0 -> 1930 bytes build/classes/Controller/Controller.class | Bin 0 -> 2765 bytes build/classes/Driver/Driver.class | Bin 0 -> 459 bytes build/classes/PlayerGui/PlayerGui$1.class | Bin 0 -> 1025 bytes build/classes/PlayerGui/PlayerGui$2.class | Bin 0 -> 758 bytes build/classes/PlayerGui/PlayerGui$3.class | Bin 0 -> 758 bytes build/classes/PlayerGui/PlayerGui$4.class | Bin 0 -> 758 bytes build/classes/PlayerGui/PlayerGui$5.class | Bin 0 -> 758 bytes build/classes/PlayerGui/PlayerGui$6.class | Bin 0 -> 758 bytes build/classes/PlayerGui/PlayerGui$7.class | Bin 0 -> 758 bytes build/classes/PlayerGui/PlayerGui.class | Bin 0 -> 7540 bytes build/classes/PlayerGui/PlayerGui.form | 165 ++ manifest.mf | 3 + nbproject/build-impl.xml | 1420 +++++++++++++++++ nbproject/genfiles.properties | 8 + nbproject/private/private.properties | 2 + nbproject/private/private.xml | 12 + nbproject/project.properties | 75 + nbproject/project.xml | 15 + src/Application/Application.java | 91 ++ src/Controller/Controller.java | 78 + src/Driver/Driver.java | 19 + src/PlayerGui/PlayerGui.form | 165 ++ src/PlayerGui/PlayerGui.java | 237 +++ 28 files changed, 2363 insertions(+) create mode 100644 build.xml create mode 100644 build/classes/.netbeans_automatic_build create mode 100644 build/classes/.netbeans_update_resources create mode 100644 build/classes/Application/Application$ThreadPlayer.class create mode 100644 build/classes/Application/Application.class create mode 100644 build/classes/Controller/Controller.class create mode 100644 build/classes/Driver/Driver.class create mode 100644 build/classes/PlayerGui/PlayerGui$1.class create mode 100644 build/classes/PlayerGui/PlayerGui$2.class create mode 100644 build/classes/PlayerGui/PlayerGui$3.class create mode 100644 build/classes/PlayerGui/PlayerGui$4.class create mode 100644 build/classes/PlayerGui/PlayerGui$5.class create mode 100644 build/classes/PlayerGui/PlayerGui$6.class create mode 100644 build/classes/PlayerGui/PlayerGui$7.class create mode 100644 build/classes/PlayerGui/PlayerGui.class create mode 100644 build/classes/PlayerGui/PlayerGui.form create mode 100644 manifest.mf create mode 100644 nbproject/build-impl.xml create mode 100644 nbproject/genfiles.properties create mode 100644 nbproject/private/private.properties create mode 100644 nbproject/private/private.xml create mode 100644 nbproject/project.properties create mode 100644 nbproject/project.xml create mode 100644 src/Application/Application.java create mode 100644 src/Controller/Controller.java create mode 100644 src/Driver/Driver.java create mode 100644 src/PlayerGui/PlayerGui.form create mode 100644 src/PlayerGui/PlayerGui.java diff --git a/build.xml b/build.xml new file mode 100644 index 0000000..ce9d744 --- /dev/null +++ b/build.xml @@ -0,0 +1,73 @@ + + + + + + + + + + + Builds, tests, and runs the project MusicPlayer. + + + diff --git a/build/classes/.netbeans_automatic_build b/build/classes/.netbeans_automatic_build new file mode 100644 index 0000000..e69de29 diff --git a/build/classes/.netbeans_update_resources b/build/classes/.netbeans_update_resources new file mode 100644 index 0000000..e69de29 diff --git a/build/classes/Application/Application$ThreadPlayer.class b/build/classes/Application/Application$ThreadPlayer.class new file mode 100644 index 0000000000000000000000000000000000000000..518b068f45b967999849797aaf0f151ab07e9706 GIT binary patch literal 1468 zcmZ`(Yg5xe6g}G_DIo|}9^#8C6-s#o-w*JKfM7sv0p(+814KiT38}9?Qg9M7gz(HG!5HuWSi)8n$aKS9Uh6V8z^UxRN%!lIg6Ofi36t#TH3M zKwH@kEVEqW$mxRXTEUEC?(SOj4jo4!8{bCO$)Mu$pOZY2n=){Jjil}Ab1dG1>sLb7 z%QAN)+WJ@$7-&E&d*Pf{am%wGOO`L|LR_w)oMo%T1Ot7M4KQTAS{AtiJ4_G(tTuGC16fNKhA2H$FRVK zc%-JJn04fj^t0eN)|Tmzd1(F1I?^W($ck_d=`Q{baH@**j|h|QmgZg*cYr)p#vi~OPLo-N_7M33FZt%ZBA)_% zuZb#R5GzEjQqF7iyos{Olb^<&IgF6;Aiq3DY0Wcg9%Hn~y`Jkh?RF$L6sRQyr&SV| R;8FrQvK&={d+>xI#2-GyXczzh literal 0 HcmV?d00001 diff --git a/build/classes/Application/Application.class b/build/classes/Application/Application.class new file mode 100644 index 0000000000000000000000000000000000000000..bd3d5ca1575f5c878b5a3c682351a46e2e17a00b GIT binary patch literal 1930 zcmaJ>ZBrXn7(F*x*e2a3KzXsEyeQ%(Z3$YfmQXBEtEqw32C3BPk!)6b$XuNB`lEiL+;CS?{m&`&T}{azx?Z803YGoG{&%`qnJhlODT+E zSys1otjPSCjyn=umCc$A>pJeHVc>HK-;>oBGJGj#r8Hw)jpDwJuXL0ZjIBM-wrUUS z)^pqAw&c3Dw_dkeExVUq|42^V>%;_SMX-}Y>U zT(3LJVX$twyM>DHIqq(8g?WR1z^pJ|UTrq(PSx_AhFgfO=i;?7BkeYRmO_c3ph|>T zc3j6_QAnD(Z3S(;QDYI=vg6vD?fo6w+p>1*jEs~URja;jd5-L(pyuy6lz62dI|(mX zwc3U_K=tN%6#-|{^7n)xFek2&X71X4kRBOm=DzQDZ8KD6*Azz0$i>rO7d?BwabQQ~ zXl6;+l|$7{TEbd?bn13kjMnlSO@&Jp->Uw!VKt8hyY?^aqt^871DaWBw7sf*k68*s zG1nJFiGdl+DqQZ-aszMRih&JmGViQv0}t?!c|C+0n8LJyukpx01&Q9EGkU&0XbFMgPmt~mC}>!=b2W9N5$NC3cBA2-nD{h#_K=6 z(j!Jl_E;cG@uo!?e4t^|6c)_B&+Pn@kj@UYe9Mz=wVYqsAU^OCX8GZc@n0dyPnkV{ z!kgSBFv%Yc3fA?^E?$C+Ksx^?w5uHqJU&5^zZtNa6zdU`@$hDZ!W`s~Cyv5ZT#N8- z@s8A&6};p>80U%F1@jx{ifjFoa5VkbZ%|voLc#VG3A`VAe?5 zRX5qe#dGRRs>}6J_W}JEb$px=o{xdR-TD0FAyOidpi49DZ6no?P$dI@ z!}i~R&ZG=(_Auz<;I7IL=Vll82c`?|w3sczIvCb!zhOAv!AM?$+S3j$pYV+EfdRKL zge5-ZA|>69aZN{ZBCaW7fAV^+r>D4TJ-F_WYn5DUKA6#jZy7+6LTkgKAIin}OojA)`53|9j#3lT$tn#-^ZFgm-l&ddU8t|T#u zxyM}8++z~sqgA?Ev69Mj9`cYskhlDRJf~7Qr)OXnf>n8-=k)3Coc{WpuY39RpC5k) z(1zlN>w6!!%C~wobBjiU*U2B>Pf4Sj9;5_cXh0wj8!x z1(^^cm^69OB z6y<=pmehOaTs`FwJ#tV81((>mo3T@)nkgXq1&SS=!d&Jps0LMelzQh9dYaG1tTb9& z?=7x;F5=}_89N~hnLF3e_(@7n8CH$BTH@58mi7x98j)ybN=3|-bSKBE*o`)-dS0LN zd#)mi`vfW%yPWH{ie0#0#j|)$#q)SU#fx}J#XMeC@QR98abCr1JiLxK1ZsJ&m8vWd z&0qQ-rKQRa4)1Q{<4`Hrw4QSmO`Q}Diu4{%Y%hxkav z$4u@MTvBlvS5$n;)6dYR;&YyU!MHCO_Z7|yK*iS#_=W*j+4`2tR+-yIl4P)IEK7K!SFE_c&RoqkwY}y<3cPT z(O#bX1lEQldHXEN zl_6bjs&j(6S)`xNXePY^RsKQbjrF0CV*=rPzfbiZyjBr^776{yJG{*cT@c}NrFk$} zpw-T_H9M5nQ$2=eT2pj8^2*w6CDT?)zAtpC%lLf$z2?oRuM4L%EcrOlg;ZsQ{J9s? zIqq0y#?^=A^R%=wiybJY-ul&FQV$=%#phm9@p_1Y%bVxX@gwOeCZ46Xp0s9k-xmz` zb8yHD=DSUgwc}d!`Ulf;#(Cq`ti1NrmvXA*(YZcDHz(LdPvv6thz#>n#q~K-R4^q! z3+ZirhV#k~`v!H#(WZ!P4cBF%9|J@31sv8=v{KF;@No-Gh^*Lz|0*gnicR!e+zNr6 z^lKO37mR+d1N>acuiz(-R`<~C916$+_O;xGXt|5P*liTtLXgZtGK+3OX}Jj{m_;#v zTe2vT-rYxGSA?ZhLmQmFV^UzAg772*?fUOd+&I2?rPt)w9wnl5?&@F1wE1JhxW G82lGgK)XZ$ literal 0 HcmV?d00001 diff --git a/build/classes/Driver/Driver.class b/build/classes/Driver/Driver.class new file mode 100644 index 0000000000000000000000000000000000000000..84f58ffacdcc69766e401e0bcbb2edad4beff526 GIT binary patch literal 459 zcmZuuO-sW-5Pg%TNt?E&A2!vax9Y)Myj29LcnW%`6vWdehPWk7U`_kKdMYUR1N>3q zY$8O#J41+up=~5`E^B>SGUgWE0-zd3_m0!6T%dCaW2;TH5Sc$FhQ;{Y9qEIqR zX5|>65^fy*QzlSEm<01YD^#AQEL(>x?JV+*isD6G| z(61M}4_9$i-~=XLNIwI77}#uEocZjDee-M&+Lh%tTdM?JI2?B?0y-Q4ZS-)!h;F`S oF+*eTFdp}41hs(v2VlUoVJYHOM7ZcP-eQ3PSM=-==LQbH0qF-@5C8xG literal 0 HcmV?d00001 diff --git a/build/classes/PlayerGui/PlayerGui$1.class b/build/classes/PlayerGui/PlayerGui$1.class new file mode 100644 index 0000000000000000000000000000000000000000..dc0024e5e26fad488ca8ef22bbfdfb31e1ec8f5a GIT binary patch literal 1025 zcmZ`%ZBNrs6n-w0wHp;i6+sa}ow^sHgMnWlB!r+@GSsAoWbsosZbnJhnzr-pH~B#m z(Zoc4fIrIk+-^)WXOr9Wa?g3rInTL2e|^6Iu!YB2Oygk=CW<;r2FeC11|At$GqA4i z>>Php9UD3}1@t(Hyr2^cTz%CzbKkhO?*<*)NxeG)ndH=q3sr&n#tYwlFQcbD&mL+j zVAl)0WKUqRI5whmETA2PCsJUx;RW(puiKK*OSk3IV>QCI>mR$3r|f}KQzZq=dJxFy zz<1+V(p(saUf5sHOG;T8C2?&Od+&^!f$#z26 ztmAb8H|a$LuB8C)?D#FYviDmg&21+QFHVj)nZNrl{vHu>PS}gu@`4lK$^fW30Lqk?z9Kh@vo@v;jhw1x@8E7K@1a1c Q;XWQ8Ux!KFB#r&(IBVcra)**ct3A#JqA-X?M z`&wc`o_xjg8E*2tbBV$tTJ(r7*#r@{ur%d5nsWKwZxA~_QNN-J%ID81;KhG*{*2DY bGH#Qmjun#Em~NGKgUfsu%`zRgkT<`7sadNO literal 0 HcmV?d00001 diff --git a/build/classes/PlayerGui/PlayerGui$3.class b/build/classes/PlayerGui/PlayerGui$3.class new file mode 100644 index 0000000000000000000000000000000000000000..d0279f8b20c39f5c9b5af0cfc26ed17b514ae28c GIT binary patch literal 758 zcmaJf4bLXeZjJHTP~$Q_{tcS_cK`(itcJ1d$dOdZJCzZniG|Ou=!Yx1U9?Lxtz*aekx-%Ri=!O zD#)?351gW=nwA3Vm%#*rcXpDe>Vt<(VCM*a~qU4?=jj z8p3zhLqzP{{N+XCqCJ65r7@G{G=4igS1AQ;)XGkDQ7ZOAV7Z2h(%c04cKp#A*2i8o zyRODSrl~55=*cd}w_iV<%Nnpfz!vvn0URyW;S1ihVa5WVkc ze5o)YPrl;$4A*(y`iH_II`oLI*aQ(bur%X3nsNEPuMj&w(7d1us^`xsp#LA8Kd1At bjGLrsVuj=lrd#FR;xgYxyGq9`vBc~fhJ7s$B9_H}O!z$JstUGw_U_;kHjS^EUM(MA^s0;}yx#7m@SJ72TC8_Ml4zO&J$DHK!{3oMt066xe7-mvSOQd0m8RqD&DU zmXITB?^{K6H7Nwv?t%$;pVDy_tGC)pU6>X9%5pR9k%^Nu*XI1aDlXEYgH0bVu;s(S zybsq}+X&dX*~{C;1zmwwsWFk}Jp4GgR51muSIUlbUMTiLV5x$N((D9!>F6potdG5_ zw{4A{jANDO!RtMauUkExyBe_5$0qk;4jeK>t7Yrry43i)@EE;M>wvzEc%9vE5S{O+ zeJL?MPrl-Lj0Zd)|3hH`EqcV4Y=Ve~Se$YlPPyF9SBTvosNYg~4 bgh!;QW0~YNrd#3N;4(i!vrNY=B_Ij+tnRQ6OD{XXfB(U19L~Qp38r^iL1e%dH>TEn3sO+O0B#bOZX)Kez z%(V5V!G=vK;J-0OW!*&PxuUyL#U30`K~u(sPEAi`pVDlkh60=I=u%E(D6fl9O_V9Z z;}UXW?L(`mt|o=R`fV@)??XDyVs)ym)P-5myOx`2PfVPoxi;r-RdJCH9c=k{if29? z%=>Vy^&9~^H+y;0xZpsbRccJ6IS=0rE>%oH8TO%2C*xSab0TsU3iS%rFBH#M!e3>H;B%6 z)V`D$pC@1OJi|Sn5C5UCfEGRCOEy8oeJoD7j;CC1=PSg{57cj{yz+UE0^a{e=g#O{ cEa3rZ>R2XujpbwhFMk8*;+cyE9(b6;Ll0|Mcd+5$k%LWvTg92q zgFS)e=p>O}RrYeM!aLks1nYwxe@7k)ixjgleKp z5gwJ0V{0E+MRheP1lDhY33%_)aTco=+DcuR6}@Y@nfBPkNt$bO`dSrd>CnNJkH>i8 z!@+GIuC<;bVCQBpuNoKZ3$#j&i8QC-+rhbtDQKfocBJz{u@?eM6;zaFC(uhr7pY-= z>{Y#OYxHCst2__7dmLZ4dO9~XV7rek?!_E9WQbPF*2Q(H@ps`dI#276zKwXDogWaL zpQwE+F+NYe;`sr0c&_|MVF4|A#FuP>h`U&vave>%+|GB1onNS5QF-O_j}-9f8l5|% dbFqYbq^V<>u{>aSz>ts)8k4Fdl6^9o+3o;Cx>M73*Z8wc zG#VcG0sbiCnYvkgXlT-zdvDI1d+x{YKbKbkcJb6j0}nmS;E{)AtTr(&5zFC*XxPx;PM6ZdW36yrBJ*6)U8-Ua_NbsK<3gwASY@YaHdF(FwRUtN$1;>(icpP} zDZ;}Na%Am&tEjHVg}};9Fahs=W zIzLhSR$_dfe8uwv?()3<4~1E@=n-GC2_oh&KjAu@aJilD5Zk{{zozoa=N~EH(|>gC el+MKh?vbXBMUvN;Zi#n;%lrV%G99;&H^0B>GpmvS literal 0 HcmV?d00001 diff --git a/build/classes/PlayerGui/PlayerGui.class b/build/classes/PlayerGui/PlayerGui.class new file mode 100644 index 0000000000000000000000000000000000000000..f8bb59652aa002efe0c1ebdc120b64e9938a8a9f GIT binary patch literal 7540 zcmb7J33yyp75?wE%_Ni8Hkl@AwvsMsnRg2-A#P!z?b_@DP)l9|a%(QheKo({aCW4|wsQ4;i>WgO!K8_>K>n zU3u7x13rwmD{(Il`rx-Kk9hH2A9C%=qcX5pitkDBeJLK3;*b|VkQsjH#gBX_!C^uE zvCQ>&I({O^PYB{qz4)0AGo;&(C)4qiAU~0gpL_8OA7)E?uCzbx#WOz4!{K!N(u-gD zut3;ny?D-t#lrsDi{JRL6oUL=_2PdDT0=N&MC(F&EM~+M(pt@MOkfw7E7#X{nPwzht&l;1HAcuV4FxaxCZor+xs4%xzr#h1eKyx@MmovuY1CVdP?bVX zGOE=~P;F0hAQ}mUHtJ!6QU%FU1AQ`oC>S$0bj5-Jg$c=WjqDML=3skRH@l+LaOPl% z zW-t;aRB__cyE;3gMl7~fkA}J47(vGD(?eZUJEJQc*lh&%8gzq6$!4hu2-HR+x+@ax zkp7Y~8&mH#D>+}-th7byg|8Otj5797d1q>OF&ewys|L-G$F7ZZDEAH;$F)No&$UDR zbx=n}yJ6Nkj-OLDE5S^swC*ti;#Hb0(&zdZEs}I`7a4_YBDJLWYp$~siHAQj%177Co;aE=(lSdy~m7w)i<|kGbBvuwCRu)+mJABsCYz)W#*qkf2 z({MR1&~TX)mr8Mo6cWEpmQC&h~0MNxpprm^hzdi*Ulv=JD8AeHI<=!Vu4Jr(lj+z zjq|GUn#xvwO-)d_n#xo8UR9u}LZL;PDpr#;b%Nbp!gE5b?gZiPNYoU8$(ov?N;NfI z&5-I$ubQQ)3N>3(bJSc-RodJKN7HVpdpcbpeGT9PMohThk>4R#Ss@BwU z+{E}Bn64odGTQYJB<_48J45;V5kHt1o!ov<=| zN@83lcwT8uh*z5qYDTmK-rHDTv!rg5_ArLj_0vq+HPLBv#V$Am` z^~U5)a0j!`O1BA<&^T$XJ!!LXRu>l#)cd9#Kd7a`F}NFQiZF3!4rQzqQ3f7&yMO=I z=}el_hZ>utJX4)D(z%lxW*8B~d-}1Sxw(8>PtKG&RuJqcP=6c3%y~65|yOqVoZ!w}~knc)sVLVtnc}wRF zOimY`lWTO7H@oDwh4YA!qb2dS-wdBi{j?}ApBCkf)}p)&Ta(a}VeCVwxM>&~%e}%*JVzvm(iDNF? z3;dOKdqFSeNqd#uUg)21w-@$efwV8Q+l%~*?DnEwESB~qc6+h^M7zDX7fYpm8QXhN zy}dk+iTJd`%p+PK}ym#!)AYY+1v_)Qk2M^?0(+|0IretY#-v z<2WhHFTZg#3}ECq7!=NrWBo%oIgUnF3KA=YiIpO&vLP$Snx%=d#cYY=6i(1r)>_QQ z6wN7`nRV2Ybu^As6II#7#j!7&s*vP3BF!lZJ5m#EDJm<%R8t5Q6hhU6P@g&uw$0FD zsj`{I+|uvMY7<)MuaoJcQ;>(LET>^MO0fjfQOmEC8!!{wP{t?REQC=(kDh~zFdx@q zA-=%xkhf9tKCD0-t8fUb@if-rd91^m9Qi()_^xYFUTju**r`fznwpDNwG07Oi#D|m zhB_I$R1@0OWvQ8>>t2IqUy zae*fX7kVb)B2OtU_Eg{!&k|hfSw_ANmwDFXa?h!_!m|xmdd|RAo?W=w(}8O|Ca(2# zv+q1y=edwLmk{%ET<^IWH(2=~&yIOJAMk;+3Hxz2bHq8c_Bhf{^Y7f9P%)fGNj~RU zm$b9U${qk0C>c)DO&YsEV@sN`U|F}*48?FEw}Wp>`7A(sOo&^Cf#Bzb;UI1s27;d{ zhJ(0c7zlpu7!KmDVIcU~WH^Ysj|ri01+H`;DoJGn#xR~HK0qdMR}NV)cJd$N?25uw zu7mSa2OoAFe6{P~;?%)UxDLL?b#P(o;HO*%U+X%!Aa(FFu7j_09bA+;_&L|XpTTDx zYuC`cJS}YQDvE_;8{BIT zzKJtPTX_{-N-95#ZNmQ?+CTFgI@_T$99rVg7g4RURu}MJd(|q39`Fk3L?|_tbQ(Xr M9#Lhge09P90lpM+jsO4v literal 0 HcmV?d00001 diff --git a/build/classes/PlayerGui/PlayerGui.form b/build/classes/PlayerGui/PlayerGui.form new file mode 100644 index 0000000..200debd --- /dev/null +++ b/build/classes/PlayerGui/PlayerGui.form @@ -0,0 +1,165 @@ + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
diff --git a/manifest.mf b/manifest.mf new file mode 100644 index 0000000..328e8e5 --- /dev/null +++ b/manifest.mf @@ -0,0 +1,3 @@ +Manifest-Version: 1.0 +X-COMMENT: Main-Class will be added automatically by build + diff --git a/nbproject/build-impl.xml b/nbproject/build-impl.xml new file mode 100644 index 0000000..0ae0aee --- /dev/null +++ b/nbproject/build-impl.xml @@ -0,0 +1,1420 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Must set src.dir + Must set test.src.dir + Must set build.dir + Must set dist.dir + Must set build.classes.dir + Must set dist.javadoc.dir + Must set build.test.classes.dir + Must set build.test.results.dir + Must set build.classes.excludes + Must set dist.jar + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Must set javac.includes + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + No tests executed. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Must set JVM to use for profiling in profiler.info.jvm + Must set profiler agent JVM arguments in profiler.info.jvmargs.agent + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Must select some files in the IDE or set javac.includes + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + To run this application from the command line without Ant, try: + + java -jar "${dist.jar.resolved}" + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Must select one file in the IDE or set run.class + + + + Must select one file in the IDE or set run.class + + + + + + + + + + + + + + + + + + + + + + + Must select one file in the IDE or set debug.class + + + + + Must select one file in the IDE or set debug.class + + + + + Must set fix.includes + + + + + + + + + + This target only works when run from inside the NetBeans IDE. + + + + + + + + + Must select one file in the IDE or set profile.class + This target only works when run from inside the NetBeans IDE. + + + + + + + + + This target only works when run from inside the NetBeans IDE. + + + + + + + + + + + + + This target only works when run from inside the NetBeans IDE. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Must select one file in the IDE or set run.class + + + + + + Must select some files in the IDE or set test.includes + + + + + Must select one file in the IDE or set run.class + + + + + Must select one file in the IDE or set applet.url + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Must select some files in the IDE or set javac.includes + + + + + + + + + + + + + + + + + + + + Some tests failed; see details above. + + + + + + + + + Must select some files in the IDE or set test.includes + + + + Some tests failed; see details above. + + + + Must select some files in the IDE or set test.class + Must select some method in the IDE or set test.method + + + + Some tests failed; see details above. + + + + + Must select one file in the IDE or set test.class + + + + Must select one file in the IDE or set test.class + Must select some method in the IDE or set test.method + + + + + + + + + + + + + + Must select one file in the IDE or set applet.url + + + + + + + + + Must select one file in the IDE or set applet.url + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/nbproject/genfiles.properties b/nbproject/genfiles.properties new file mode 100644 index 0000000..237ce34 --- /dev/null +++ b/nbproject/genfiles.properties @@ -0,0 +1,8 @@ +build.xml.data.CRC32=6ea9cd52 +build.xml.script.CRC32=1fe043b5 +build.xml.stylesheet.CRC32=8064a381@1.80.1.48 +# This file is used by a NetBeans-based IDE to track changes in generated files such as build-impl.xml. +# Do not edit this file. You may delete it but then the IDE will never regenerate such files for you. +nbproject/build-impl.xml.data.CRC32=6ea9cd52 +nbproject/build-impl.xml.script.CRC32=dad7de4f +nbproject/build-impl.xml.stylesheet.CRC32=830a3534@1.80.1.48 diff --git a/nbproject/private/private.properties b/nbproject/private/private.properties new file mode 100644 index 0000000..15f91d6 --- /dev/null +++ b/nbproject/private/private.properties @@ -0,0 +1,2 @@ +compile.on.save=true +user.properties.file=C:\\Users\\Geb\\AppData\\Roaming\\NetBeans\\8.2\\build.properties diff --git a/nbproject/private/private.xml b/nbproject/private/private.xml new file mode 100644 index 0000000..da00b31 --- /dev/null +++ b/nbproject/private/private.xml @@ -0,0 +1,12 @@ + + + + + + file:/E:/Kuliah/PBO/Task_5/MusicPlayer/src/Application/Application.java + file:/E:/Kuliah/PBO/Task_5/MusicPlayer/src/Driver/Driver.java + file:/E:/Kuliah/PBO/Task_5/MusicPlayer/src/Controller/Controller.java + file:/E:/Kuliah/PBO/Task_5/MusicPlayer/src/PlayerGui/PlayerGui.java + + + diff --git a/nbproject/project.properties b/nbproject/project.properties new file mode 100644 index 0000000..943011c --- /dev/null +++ b/nbproject/project.properties @@ -0,0 +1,75 @@ +annotation.processing.enabled=true +annotation.processing.enabled.in.editor=false +annotation.processing.processor.options= +annotation.processing.processors.list= +annotation.processing.run.all.processors=true +annotation.processing.source.output=${build.generated.sources.dir}/ap-source-output +build.classes.dir=${build.dir}/classes +build.classes.excludes=**/*.java,**/*.form +# This directory is removed when the project is cleaned: +build.dir=build +build.generated.dir=${build.dir}/generated +build.generated.sources.dir=${build.dir}/generated-sources +# Only compile against the classpath explicitly listed here: +build.sysclasspath=ignore +build.test.classes.dir=${build.dir}/test/classes +build.test.results.dir=${build.dir}/test/results +# Uncomment to specify the preferred debugger connection transport: +#debug.transport=dt_socket +debug.classpath=\ + ${run.classpath} +debug.test.classpath=\ + ${run.test.classpath} +# Files in build.classes.dir which should be excluded from distribution jar +dist.archive.excludes= +# This directory is removed when the project is cleaned: +dist.dir=dist +dist.jar=${dist.dir}/MusicPlayer.jar +dist.javadoc.dir=${dist.dir}/javadoc +excludes= +includes=** +jar.compress=false +javac.classpath=\ + ${libs.jlayer.classpath} +# Space-separated list of extra javac options +javac.compilerargs= +javac.deprecation=false +javac.external.vm=true +javac.processorpath=\ + ${javac.classpath} +javac.source=1.8 +javac.target=1.8 +javac.test.classpath=\ + ${javac.classpath}:\ + ${build.classes.dir} +javac.test.processorpath=\ + ${javac.test.classpath} +javadoc.additionalparam= +javadoc.author=false +javadoc.encoding=${source.encoding} +javadoc.noindex=false +javadoc.nonavbar=false +javadoc.notree=false +javadoc.private=false +javadoc.splitindex=true +javadoc.use=true +javadoc.version=false +javadoc.windowtitle= +main.class= +manifest.file=manifest.mf +meta.inf.dir=${src.dir}/META-INF +mkdist.disabled=false +platform.active=default_platform +run.classpath=\ + ${javac.classpath}:\ + ${build.classes.dir} +# Space-separated list of JVM arguments used when running the project. +# You may also define separate properties like run-sys-prop.name=value instead of -Dname=value. +# To set system properties for unit tests define test-sys-prop.name=value: +run.jvmargs= +run.test.classpath=\ + ${javac.test.classpath}:\ + ${build.test.classes.dir} +source.encoding=UTF-8 +src.dir=src +test.src.dir=test diff --git a/nbproject/project.xml b/nbproject/project.xml new file mode 100644 index 0000000..858374d --- /dev/null +++ b/nbproject/project.xml @@ -0,0 +1,15 @@ + + + org.netbeans.modules.java.j2seproject + + + MusicPlayer + + + + + + + + + diff --git a/src/Application/Application.java b/src/Application/Application.java new file mode 100644 index 0000000..6b10cd7 --- /dev/null +++ b/src/Application/Application.java @@ -0,0 +1,91 @@ +/* + * To change this license header, choose License Headers in Project Properties. + * To change this template file, choose Tools | Templates + * and open the template in the editor. + */ +package Application; + + +import java.io.FileInputStream; +import java.io.FileNotFoundException; +import java.util.ArrayList; +import javazoom.jl.decoder.JavaLayerException; +import javazoom.jl.player.Player; +/** + * + * @author Geb + */ +public class Application { + private ArrayList musicList; + private ThreadPlayer thread; + private int nowPlaying; + + public Application () { + musicList = new ArrayList (); + } + + public void addMusic (String path) { + musicList.add(path); + } + + public String [] getMusicList() { + return (String[]) musicList.toArray(new String[0]); + } + + public String getNowPlayed() { + return musicList.get(nowPlaying); + } + + public void removeMusic(int i) { + musicList.remove(i); + } + + public void play(int i) { + nowPlaying = i; + String filepath = musicList.get(i); + thread = new ThreadPlayer(filepath); + thread.start(); + } + + public void stop() { + if (thread != null) { + thread.stop(); + } + } + + public void next() { + if (nowPlaying < musicList.size() - 1){ + stop(); + play(nowPlaying + 1); + } + } + + public void prev() { + if (nowPlaying < musicList.size() + 1){ + stop(); + play(nowPlaying - 1); + } + } + + public class ThreadPlayer extends Thread { + private String filepath; + private Player player; + + public ThreadPlayer (String filepath) { + this.filepath = filepath; + } + + public void run() { + try { + FileInputStream fis = new FileInputStream(filepath); + player = new Player(fis); + player.play(); + } catch (FileNotFoundException exc) { + throw new IllegalStateException ("File "+ filepath + " not found"); + } catch (JavaLayerException exc) { + throw new IllegalStateException ("ERROR while file "); + } + } + } + +} diff --git a/src/Controller/Controller.java b/src/Controller/Controller.java new file mode 100644 index 0000000..ea0cbcd --- /dev/null +++ b/src/Controller/Controller.java @@ -0,0 +1,78 @@ +/* + * To change this license header, choose License Headers in Project Properties. + * To change this template file, choose Tools | Templates + * and open the template in the editor. + */ +package Controller; + +import Application.Application; +import PlayerGui.PlayerGui; +import java.awt.HeadlessException; +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; +import javax.swing.JFileChooser; +import javax.swing.JOptionPane; +import javax.swing.filechooser.FileNameExtensionFilter; + +/** + * + * @author Geb + */ +public class Controller implements ActionListener{ + private Application app; + private PlayerGui view; + + public Controller() { + app = new Application(); + view = new PlayerGui(); + view.setVisible(true); + view.addListener(this); + view.setListMusic(app.getMusicList()); + } + + public void actionPerformed(ActionEvent ae) { + Object source = ae.getSource(); + + try { + if (source.equals(view.getBtnAdd())) { + JFileChooser fc = new JFileChooser(); + FileNameExtensionFilter filter = new FileNameExtensionFilter ("MP3 Filed", "mp3", "mp3"); + fc.setFileFilter(filter); + int returnVal = fc.showOpenDialog(view); + + + if (returnVal == JFileChooser.APPROVE_OPTION) { + String path = fc.getSelectedFile().getAbsolutePath(); + app.addMusic(path); + view.setListMusic(app.getMusicList()); + } + + }else if (source.equals(view.getBtnDelete())) { + int selected = view.getSelectedMusic(); + app.removeMusic(selected); + view.setListMusic(app.getMusicList()); + + }else if (source.equals(view.getBtnPlay())) { + int selected = view.getSelectedMusic(); + app.stop(); + app.play(selected); + view.setTxFieldPlaying(app.getNowPlayed()); + + }else if (source.equals(view.getBtnStop())) { + app.stop(); + view.setTxFieldPlaying(""); + + }else if (source.equals(view.getBtnNext())) { + app.next(); + view.setTxFieldPlaying(app.getNowPlayed()); + + }else if (source.equals(view.getBtnPrev())) { + app.prev(); + view.setTxFieldPlaying(app.getNowPlayed()); + } + } catch (Exception e) { + JOptionPane.showMessageDialog(view, e.getMessage()); + } +} +} + diff --git a/src/Driver/Driver.java b/src/Driver/Driver.java new file mode 100644 index 0000000..2137144 --- /dev/null +++ b/src/Driver/Driver.java @@ -0,0 +1,19 @@ +/* + * To change this license header, choose License Headers in Project Properties. + * To change this template file, choose Tools | Templates + * and open the template in the editor. + */ +package Driver; + +import Controller.Controller; + + +/** + * + * @author Geb + */ +public class Driver { + public static void main(String[] args) { + Controller c = new Controller(); + } +} diff --git a/src/PlayerGui/PlayerGui.form b/src/PlayerGui/PlayerGui.form new file mode 100644 index 0000000..200debd --- /dev/null +++ b/src/PlayerGui/PlayerGui.form @@ -0,0 +1,165 @@ + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
diff --git a/src/PlayerGui/PlayerGui.java b/src/PlayerGui/PlayerGui.java new file mode 100644 index 0000000..737fc58 --- /dev/null +++ b/src/PlayerGui/PlayerGui.java @@ -0,0 +1,237 @@ +/* + * To change this license header, choose License Headers in Project Properties. + * To change this template file, choose Tools | Templates + * and open the template in the editor. + */ +package PlayerGui; + +import java.awt.event.ActionListener; + +/** + * + * @author Geb + */ +public class PlayerGui extends javax.swing.JFrame { + + /** + * Creates new form GUI + */ + public PlayerGui() { + 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() { + + jScrollPane1 = new javax.swing.JScrollPane(); + listMusic = new javax.swing.JList<>(); + jLabel1 = new javax.swing.JLabel(); + txFieldPlaying = new javax.swing.JTextField(); + btnAdd = new javax.swing.JButton(); + btnDelete = new javax.swing.JButton(); + btnPrev = new javax.swing.JButton(); + btnPlay = new javax.swing.JButton(); + btnStop = new javax.swing.JButton(); + btnNext = new javax.swing.JButton(); + + setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE); + + listMusic.setModel(new javax.swing.AbstractListModel() { + String[] strings = { "Item 1", "Item 2", "Item 3", "Item 4", "Item 5" }; + public int getSize() { return strings.length; } + public String getElementAt(int i) { return strings[i]; } + }); + jScrollPane1.setViewportView(listMusic); + + jLabel1.setText("Now Playing"); + + txFieldPlaying.setEditable(false); + txFieldPlaying.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + txFieldPlayingActionPerformed(evt); + } + }); + + btnAdd.setText("Add"); + + btnDelete.setText("Delete"); + btnDelete.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + btnDeleteActionPerformed(evt); + } + }); + + btnPrev.setText("<<"); + btnPrev.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + btnPrevActionPerformed(evt); + } + }); + + btnPlay.setText("Play"); + btnPlay.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + btnPlayActionPerformed(evt); + } + }); + + btnStop.setText("Stop"); + btnStop.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + btnStopActionPerformed(evt); + } + }); + + btnNext.setText(">>"); + btnNext.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + btnNextActionPerformed(evt); + } + }); + + javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane()); + getContentPane().setLayout(layout); + layout.setHorizontalGroup( + layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(layout.createSequentialGroup() + .addContainerGap() + .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addComponent(jScrollPane1) + .addGroup(layout.createSequentialGroup() + .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING, false) + .addComponent(btnAdd, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .addComponent(jLabel1, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) + .addGap(18, 18, 18) + .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addComponent(txFieldPlaying) + .addGroup(layout.createSequentialGroup() + .addComponent(btnDelete) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) + .addComponent(btnPrev) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) + .addComponent(btnPlay) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) + .addComponent(btnStop) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 20, Short.MAX_VALUE) + .addComponent(btnNext))))) + .addContainerGap()) + ); + layout.setVerticalGroup( + layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(layout.createSequentialGroup() + .addContainerGap() + .addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) + .addGap(18, 18, 18) + .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) + .addComponent(jLabel1) + .addComponent(txFieldPlaying, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) + .addGap(18, 18, 18) + .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) + .addComponent(btnAdd) + .addComponent(btnDelete) + .addComponent(btnPrev) + .addComponent(btnPlay) + .addComponent(btnStop) + .addComponent(btnNext)) + .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) + ); + + pack(); + }// //GEN-END:initComponents + + private void txFieldPlayingActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_txFieldPlayingActionPerformed + // TODO add your handling code here: + }//GEN-LAST:event_txFieldPlayingActionPerformed + + private void btnDeleteActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnDeleteActionPerformed + // TODO add your handling code here: + }//GEN-LAST:event_btnDeleteActionPerformed + + private void btnPrevActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnPrevActionPerformed + // TODO add your handling code here: + }//GEN-LAST:event_btnPrevActionPerformed + + private void btnPlayActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnPlayActionPerformed + // TODO add your handling code here: + }//GEN-LAST:event_btnPlayActionPerformed + + private void btnStopActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnStopActionPerformed + // TODO add your handling code here: + }//GEN-LAST:event_btnStopActionPerformed + + private void btnNextActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnNextActionPerformed + // TODO add your handling code here: + }//GEN-LAST:event_btnNextActionPerformed + + /** + * @param args the command line arguments + */ + + + // Variables declaration - do not modify//GEN-BEGIN:variables + private javax.swing.JButton btnAdd; + private javax.swing.JButton btnDelete; + private javax.swing.JButton btnNext; + private javax.swing.JButton btnPlay; + private javax.swing.JButton btnPrev; + private javax.swing.JButton btnStop; + private javax.swing.JLabel jLabel1; + private javax.swing.JScrollPane jScrollPane1; + private javax.swing.JList listMusic; + private javax.swing.JTextField txFieldPlaying; + // End of variables declaration//GEN-END:variables + + public Object getBtnAdd(){ + return btnAdd; + } + + public Object getBtnDelete(){ + return btnDelete; + } + + public Object getBtnNext(){ + return btnNext; + } + + public Object getBtnPlay(){ + return btnPlay; + } + + public Object getBtnPrev(){ + return btnPrev; + } + + public Object getBtnStop(){ + return btnStop; + } + + public void setListMusic(String [] musicList){ + listMusic.setListData(musicList); + } + + public void setTxFieldPlaying(String filename){ + txFieldPlaying.setText(filename); + } + + public int getSelectedMusic(){ + if (listMusic.getSelectedIndex() == -1) { + throw new IllegalStateException("Please select any music"); + } + return listMusic.getSelectedIndex(); + } + public void addListener(ActionListener e){ + btnAdd.addActionListener (e); + btnDelete.addActionListener (e); + btnNext.addActionListener (e); + btnPlay.addActionListener (e); + btnPrev.addActionListener (e); + btnStop.addActionListener(e); + } +} +