From 5e5ed02ab1a61ddbb00d74d15a631913cd212c84 Mon Sep 17 00:00:00 2001 From: fgroupindonesia Date: Tue, 4 Jun 2024 15:10:42 +0700 Subject: [PATCH] updating the listener now the keypressed has been changed to keyreleased event for the safety reason while saving the data. --- build/built-jar.properties | 2 +- build/classes/raw/Entry.class | Bin 0 -> 695 bytes build/classes/snotepad/CustomPanel2$1.class | Bin 2014 -> 2026 bytes build/classes/snotepad/CustomPanel2$2.class | Bin 705 -> 831 bytes .../snotepad/CustomPanel2$EditorPane.class | Bin 491 -> 491 bytes build/classes/snotepad/CustomPanel2.class | Bin 8785 -> 8769 bytes build/classes/snotepad/MainFrame$10.class | Bin 733 -> 732 bytes build/classes/snotepad/MainFrame$11.class | Bin 733 -> 733 bytes build/classes/snotepad/MainFrame$12.class | Bin 733 -> 733 bytes build/classes/snotepad/MainFrame$13.class | Bin 699 -> 733 bytes build/classes/snotepad/MainFrame$14.class | Bin 733 -> 699 bytes build/classes/snotepad/MainFrame$15.class | Bin 734 -> 733 bytes build/classes/snotepad/MainFrame$16.class | Bin 738 -> 734 bytes build/classes/snotepad/MainFrame$17.class | Bin 737 -> 738 bytes build/classes/snotepad/MainFrame$18.class | Bin 699 -> 737 bytes build/classes/snotepad/MainFrame$19.class | Bin 733 -> 699 bytes build/classes/snotepad/MainFrame$20.class | Bin 737 -> 733 bytes build/classes/snotepad/MainFrame$21.class | Bin 737 -> 737 bytes build/classes/snotepad/MainFrame$22.class | Bin 733 -> 737 bytes build/classes/snotepad/MainFrame$23.class | Bin 735 -> 733 bytes build/classes/snotepad/MainFrame$24.class | Bin 700 -> 735 bytes build/classes/snotepad/MainFrame$25.class | Bin 1050 -> 700 bytes build/classes/snotepad/MainFrame$26.class | Bin 858 -> 1087 bytes build/classes/snotepad/MainFrame$27.class | Bin 530 -> 858 bytes build/classes/snotepad/MainFrame$28.class | Bin 0 -> 530 bytes build/classes/snotepad/MainFrame$8.class | Bin 699 -> 700 bytes build/classes/snotepad/MainFrame$9.class | Bin 730 -> 699 bytes build/classes/snotepad/MainFrame.class | Bin 23784 -> 24837 bytes build/classes/snotepad/helper/APICall.class | Bin 2361 -> 5383 bytes nbproject/project.properties | 4 +- src/raw/Entry.java | 39 +++++ src/snotepad/CustomPanel2.form | 1 + src/snotepad/CustomPanel2.java | 80 +++++----- src/snotepad/MainFrame.form | 6 + src/snotepad/MainFrame.java | 99 ++++++++---- src/snotepad/helper/APICall.java | 147 ++++++++++++++++-- 36 files changed, 291 insertions(+), 87 deletions(-) create mode 100644 build/classes/raw/Entry.class create mode 100644 build/classes/snotepad/MainFrame$28.class create mode 100644 src/raw/Entry.java diff --git a/build/built-jar.properties b/build/built-jar.properties index 784bde6..c3560f4 100644 --- a/build/built-jar.properties +++ b/build/built-jar.properties @@ -1,4 +1,4 @@ -#Thu, 16 May 2024 17:53:00 +0700 +#Tue, 04 Jun 2024 15:09:19 +0700 D\:\\project-2024\\java\\SNotepad= diff --git a/build/classes/raw/Entry.class b/build/classes/raw/Entry.class new file mode 100644 index 0000000000000000000000000000000000000000..91cc701856b4512192d08d6f9196fb60c334dcab GIT binary patch literal 695 zcmZ{h%}&BV6ot=FXrUBAsor4Sl;G z3m*DM3}z&_&%-O#p&#>*$6XS%+5?8{Np$TolpP*==hNGvCobG!K$WT!joe`13NG`c zn2m4vgrVpN_uf7YWAQ-O>%JFXO7mK)oo263lJk1&@3CYk(FMIZ#1aYSbF&{!#mGD3 zlFL-K2lAN~3NS6`Ff8O@Fcf~U7%Hh$z5oDJ@_Wl8p1C<~R_4MW!1U6+$ literal 0 HcmV?d00001 diff --git a/build/classes/snotepad/CustomPanel2$1.class b/build/classes/snotepad/CustomPanel2$1.class index 10ded69cc9681eaae88c3ad177858c246292acac..f44e7f388aefc34c90a7116c36ebef4ce9e8c01a 100644 GIT binary patch delta 431 zcmXYsO-mbb5XOJIn`D#qZ(`C~RGK1aHLnH~R1`|J*!mLnP%X{D!wPX-o2GRQ;?1uh z?5TbM&#@B7tw--Yw6wL9LJwNMffr}d%gm3Nc^>BZow!OIJx@oOvl!!LP+rBP%v&t5 zXtETe+}t?Udo)mN;V8Co6+65$sVUz3%IJ&N6(9I$va9fLK2I1)J(Jk0HdZ~?aqD(% zt$NVV=+2aP?0vgbv+GXjb;EP(&UE&TzY;$8MLU1~&7d7NLBL@N(gl zNE=h<6SH?5)%ikfrP#*OIHpiE+H?dnH5JO8p`|)o!~^IRlSBY#bQvv@C#dC99t8V` zO(YZRyd_15$HL=u9!mQr4}8bs2aov40KX`3!6bi};V+B)6VZQ>T~gr+n`_dddPYQU z(sDm2b_0y^lpzf9Sz?%s#HtV_OHN4Q@q~Wq0p-PCqbRKC)9$4sA}z_t!nk35)+FUO G&EhRuc~AEM delta 420 zcmXAl%}N_#6o#LfNoJDiXQyMUq_vSkY-D}HSl-8_e6X3K zU@;wMhGMM!aYye_EHbC4vZSa{w^&v*e8+g?epNJC(ZFI=@r~Br3&YjT=$FQV*Ya1R zzY-cfgT=bH?&TX^vzjljwQ9}k%XGybH{WW%{S7m{*^5pT_?(RdM6vtJi_kjWVx?u0!x5y|YM1$2e-P$KSzu#aN|-209y?b6+SKj1+dc_?Kn zxI}m?JVqC6avPen8?< zjPR6a7?M-qIfHW4JTcN_gycB-c_JE8R`NA+!b&u8YaJGAURpNBHRU%JuK&Zz-2g3r BOXUCn diff --git a/build/classes/snotepad/CustomPanel2$2.class b/build/classes/snotepad/CustomPanel2$2.class index 9aa4f31007fde71852f134af840c4a463f697778..4952f7b5cf0ca9f803a794163ace644b357d089f 100644 GIT binary patch delta 412 zcmaKoy-EW?6otRL+3aRFqsADs8h;XXHImd~C!`Yu5%C2APNRZgQp75i4-oPq3jTnF zV(S~(h<7$%tejykXW*POAM=ra57N)?*Ee9FW<;LVn1HpIW!BxOhcrSqM)faKytKEc z_R4m9_IzBGz1>a27O7A;w!Qx0b+2y-DHtMB!!~8Z4rL)3-6!Ka=?;a;#hD%SJ2$p_ zH0`3H&jv~$rIIU9mD3XuBNSB~;OU0A)qX-+FL)1n^DsIC^&rBG>gvSBEG50EKWh_p z%u_}@isKWnHgvJrStUn7{6Ep?HyW`(MT5eki)I)d%{Yvx^@y~e@uw7%xI=bT%wVu&$hnQVi@D!UeydVuSCfS6ur~PSf`| G#?K#n#1{Sl diff --git a/build/classes/snotepad/CustomPanel2$EditorPane.class b/build/classes/snotepad/CustomPanel2$EditorPane.class index 3476ad7d71b2fcb6295bc9458c6433067f9479e9..4c40875012a01dc1777827dba678a521b5b87621 100644 GIT binary patch delta 21 dcmaFO{F-^gI!4Y346KY388{gyP2SFE0sv6V28RFu delta 21 dcmaFO{F-^gI!4Y(46KZk88{iIOy16D0sv7028{p! diff --git a/build/classes/snotepad/CustomPanel2.class b/build/classes/snotepad/CustomPanel2.class index 02e15de80b6ff4c5db092bd6ceb37539f0f88139..7547ae659e01f18621f74494a39c73e6579d624b 100644 GIT binary patch literal 8769 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 DgWZs* literal 8785 zcmbVR349dib$@TQ+F7ke(z1XA2!Xi8N+2U+gAD>BA#B-_Ad)}`?7(PuB(1dCS?`Vz zvg7!O@7Ru=*oh%^Lrx_%ZEZJNTGKi`;-pE_wCR~%>3yeHdbill|9vyNI}(fQU-|v? zeKX(j-v8ZimT$iO`Wr;Fi$7jL6ZA(R4BwNdKbGN7LiDHfXY%ytA*!dpkl`=o$Y06u z*Rt_9A=*uU8=`9ZJB|Kc=I_h!4>J6t?ERC__~#(~ONc&CKahL>8Ue%ql&Aj+(tpeH z|7i5TLi>tPd`ouTmaFgJiAe^Q!6!o*HrOvuZMyjIFNU4|-o zt(KuihOov~rSu zjT~4TqC?y$!#a)E%gP2BHp;N6f;aP)AUB10D@Wx_bC6p?yp8=q-YzFv@d9D_I+1uc z?~pTXLB3vIcFJ&r#y4ubD?}%FcZi1hCK+xH@*a)%3ib9N?}HwBzYMp?jRP8Ygvg{T z7`Ri0gCcjA#)mY%RpZ;B*RFWNwlYVIl*y!br&4C7GihYAW|pZuWlfnGCho?Tl}U^x zQbuynJZm#WdM1oBMr+bYjkONgnM7)A4^uE^#Z6~FkhEfxW*m1iPKgLi z%NL&Sn6_;zrLbEmdmwQSj`&CM$W-GXHD>JALs$@iF*}nyk};uM=t9qqCr0hUYdC8r zp_T*5;)&o)#z^-r1 z4O9D@PHa7fsZ;T*=}Dx_zUiqEGXu>ffgmE5NFFmX33+!H{q}eQck6nxDa$s~M!dCi zI%``~$_8yM3K= z>`07_nHf^0I# z9!=c5JeD*KxV&Hd7h*$Cedf&J1-@UEF-Kv>@qQqb@TeIx?S&_nHEq3GLL3COg$FBf zRaEW>T8VwnTOun?dN|W(L0%nup4SS&=WYoRi6KXILZtY%R54f_OiLA`#jAn6iB!Vg z$8_4UPpRnXUKjv{fO${LZn%iy$|fY711iBBM`p-}WFOpCy@=`Lr2@g1f3AX8Bxet1 zthD2l)q=MZslrN`DI1=+wBY=An6ri0TJ5@<#G-iyCtI=GB@cTP6!Q%9>m-cU5@!&( ziEIZPWgu4X;p0n-u}T|N;Cq=1|f z*K+e6_MALt#{1O{V#}XIjDj8hoUG&| zSx26#@x<785`VVih2#-(&;|>piUO0HNHdV9`4oYUiyH} zeSBEwBlNOP7wJWvK0?px^fW!A^ZU48=K&rB1XZT;Sy<3p1rbyTR6 z&|_5RJNYi1F3_hTdxvG&SzF9z+T&I{TNB{-2l+PtvD#`f-6{%IlAb7qRKGTbA>BlM_FPYRVc@^8`=ooa8AT8G7oPFxqssIIZ*DoY6VUw$9TKozIAQ6si(Ir_+y!oS%~6>-3Vw zGdiE;S>)$~=n5t^zDMVKp*H@2SSxTeCFxM(`{47EBz2mTOCQwveo^oP{2+W+LRh)H z&JV#9{2_WaZ@jDG3z=V8)%9g3=)|Jm5YZpj`4M^+}HV2~fi2-6@4Z*|BFO+tig{ z-rX(uG)Yp5c*IjDRL>^cAg^j=xO)T7@8>m><_ zLAz2?ThXA3UYvrks_7aHp6Ew%yj0{tBLht>td8+iytTNeitP%Ijv=!s4c)skL7}SeF|)JQYorV`e~O6U?6i{8Q=)J`Y~q@+-^%ggKM8GHNdRivTEe7*4wY@=Q?=P0xO@WEK}y^%Yss!5_3{(9DWY0in}tdn0fb zkda8skYWo}9f5cR-&b&CnLBq=;RDlKJEw=$IK$3nb0d zn2m~5k)0mNs!vCiJxWKGo{{j$B0^*GnG&3I`#LBQkNx;)GO}oKJ|czrqf8r%=`4{t zV@;aw$Eg!&hm06Lb!Rnx9x!?=YjPTryy(JKImo@_6#d(bR6J>BH##TxctXjIO3%uI zi-WUiv&8X}p7Tyiw8tBUE{RTj!VDyA6JPZ&Fm1X@piUT8Cd#Ch>#Ia`H(d zg(shM8)`!`mV3`!I*1_4DY}a^!neo&6}rYAVCn zMCBBv3Tmd0;jPv=P0!N{c*8yVIJlr>OYi2=?7}^vSrz>GDHwm&zRJIjY+GF#F`~GF1;3R%;4R;rdIoBu9~= zoDuQ^!+xryTcFAVw1YZ4{M%gqm9&L^6b2P}(U!d{|F{1i{JX&a5cuB;{@wovf3)Z> z|5k;Es2m*mBE;~KctilpL_La(uAa+XF?{kt;a+|bf{U@*aaq|vM@xH}Bg=BM{5;jc zP_^f2L$vvIsv~rME9R(H*3MB)6o(=!bF>PpqQ^4DbPZ{EJ_3K~N0<%JY8s@iG(^|Y zaoS6FdSq&M!RV0nv&yEQ!_5lvU7@WSeLezw_)c(9c7wb~Qy0BV^~0BF^*jYUPF1v{ z69%WC$J22C5s&b7EID6LaX6CY5qC#m(5cHWEAhM^e*RUZBb6gUq&fR zWANDt_{F4$SCh+2B-)H_T%(D1@W`0Shk=i3wA;I~TRiHEg$U{cE-^|qa5P2{LhA%j zQA&q<3Z}E5u{2d7jTHmF+T|`uAs;RH_;O`7T$zRB`g62IiJ7AfIodb}h9Y#1HsNit zur^FP4WrIbBfiXpo#R#OJi@}4mWRLyA95}`uXApG1(&?edB2BD-Z@#mW8KU9Ts;J$ z&GWRmD8G}H9!1`G%p-T8Aa_8ebIO^boN z0wAwm1Bg^o(a4ue0@=D4$fc4%=1T+Fx){hC0P>Y<0FhEIK=2a<#^>OhaW~DZk6xmv zH`VYwHAnsP)PmU9hQIAaK2FB_Dq?XR)gZ?$;|^4?H&Ma9hLx{-(64v>Q#f97Ilc*w z0dQ`AcaCuXvM7?CKe}z6TB9og<+|v~@_E{^5KJ3llIT|!f%z7|{3@-dZzE0p8nw`` zQyYB;MfNuV_qPW(`dRcj<=Dqh zGOkGbup>9al1naA+b~4CK1Vx?Ds#g3yHM8;Jn9L%+XNKzj2;+ z;c+(}Z<lsbrOCHTF6D_Y419a&!Q%yJRUx9g^;M<*0M0 zh-ottDbZUf9B)%CSZ-h+wQw2jWIuIs1@&2Tt+s zKsh50Qv-0)$31KJUe*>wCcTo-R2IM`8ebgaTV87C3??VssCbFOpg)D;T zOoN_4(um)}Wl072na#yBgJa@(TSQYW#nzxj6emkL8Y(^>FDg;hX6}L#Z>4&^jW+Y` z9;eyjq7uH#$ai&T0JgtO-*7>E5AH8Y*?*aahcDBK;pR(p@)F(I3+{If_k9i3dz&-| zk@sVqd*}NKkW;4*W{y{aT>!~g4^a#g6joeu+KKds~eTEl~|_7MIX_$2-x zcbIPE6R`SS3iwWd2qSxZ6M4mlrfM~P3yHG~jd~DS<=a@3#yS6uu^$=cEcl6lYsr6w z!Ws=mg*(ywAJj1+w^WE9JF#^q`Rssy+og^gHhvB0>#7 zF}??g4+7#NfcPjNJ_d-71L6~a_!J;M35d_UcZf{COW%bA&jGBrV@xdS2Ka)<1jUZ= z_X-hH?2k|~6UFqdN)FFaIe)Q$N6Fc|M(%rlBvZ2 diff --git a/build/classes/snotepad/MainFrame$10.class b/build/classes/snotepad/MainFrame$10.class index 88684aaadbc22ee36cc6abd583ec3c7b7dc10e7f..7502cd7994887e02dcf19d7b355368bb173bed37 100644 GIT binary patch delta 37 tcmcc1dWUtxb4E__+|<0%_`KBe$sZX*7-c8BF?q4dGjK2}OrFZ*0RRJf3$*|M delta 38 ucmcb^dY5&>b4D(S+|<0%`22#@yvZLJLl_k&yE1vPDl>2}s!X23TSk`rg4Ddp9~na!)hD|#d9i9Ta4>33p339_0L1|c5&!@I delta 32 ocmcc1dY5&>TSk`R#In@M9~na!btbzpd9ms-a4_mmp339_0L4-Y9smFU diff --git a/build/classes/snotepad/MainFrame$12.class b/build/classes/snotepad/MainFrame$12.class index 2848d2bbac90fdcbd569334dc1b157eadb384786..8fc66e474ef4b7c79ffeea9cf3d5bcc22ae65b54 100644 GIT binary patch delta 32 ocmcc1dY5&>TSk`R#In@M9~na!jV8M>d9j)>a4?!qp339_0LB0cFaQ7m delta 32 ocmcc1dY5&>TSk`Dip-M99~na!%_h4sd9hkBa4=da!KreG8wd}xW3(4w%dLZz=V*^KR!-I=mGiT*9Y z5AeYs;ExjTY(o?pT-e>Ycg~!9?z!{p_m7_dUf@vx5BEYWVJ$=(>pt%L*zmDQxMt5( z(RoT(i3@G4yb$C5p-}oD7n$7Q{avM%9S~aGMS#aA1aD}@l2DJ8mPeCpB=dJ-lyasS zn?$51B3CY+B|TS=5WUt~=EGDJh2*fcfV}hUISZ(Z#44lT%KU@LGdU(~bmMa|6@Bs1 z_T^M++uti8`)>K9`t?zkCXyUEJXH?MoDv(cp;jB^xo~CYm#@y%|@~`vThjhU#Cc&>g1% oYV`6Sx?oNh;1*Vx#=|O;SGZh@{~q7fJGfhB+NhUh9j1K#09=}&r2qf` delta 387 zcmZvX%}T>S6ot=?N%Ld0soF*pZPU8ZRTKmTSEULrs!Lr;Fte!kN60ijhvX4_2tmOI z@Ev>=@y;OPq5}ix%$)DsnJ??z>U@5`eE>Mdt_u^92Me)>5Zg9(Y_y+yFGGJan-^j* z9^E~NoY3AI-e+Z&W=}E|rI^a}Qr({`dAfg1SQ4cq#0yhZi%yb`j|5$Ub0rFSF)O5x z8f+g9x;}bnR8xwgc+rr4o;}Lyl@5-Y6EU6NihLyX^xxNUugO0ECS6ot=?N%LdWR&Aq+wrSnyDhh&vD-rRB>Qa{y%q&{lRLC?whvX4_2tmOI z@Ev>=@y;OPq5}ix%$)DsnJ??z>U@5`eE>MXmJ1W12Mdvh02?+oZM2_zFMWSJnHJ(? zG`N2d8KJ%1AEsrRq)##trO0J+rS4CaJleS-%!yJGqM50xMTc?6M~p7PxfX>ypA^zZ z4Ym&lT^~I(s+__wnla!KreG8VA1Z|sT2wYwQ2Hv9&Dc)aoe8^>h(Am4 z1AOoY_@l%-+Yp5Y7j}2$Dy(E%*t*M9 zEYgi)V6utP+$puAoo4(41z?+a-68>)Y)LU){E o)M)q*U9g}Fa06>h<6)i2D_pL{e~<6#E!-|MZPd%M4pTmV0C8@h(f|Me diff --git a/build/classes/snotepad/MainFrame$15.class b/build/classes/snotepad/MainFrame$15.class index 3145959980493270d5ca13c91de1af62932f2de2..94c7a3ab49e82eb20fcfdae84ced9adc1efa2bc6 100644 GIT binary patch delta 38 ucmcb|dY5&>b4D(S+|<0%_~iV8%E_M?Ll^@lyEA#Q1~G6j22Y;Gae5ai$L* delta 42 ycmaFF`jBq6_Lm0Crdoy{l<}h$D=1!i)yy@hE_Ydm&cP4Y7euANPH1`Pde?X3sOz zdn&M&7^N*uA8Xe(QBos9Olv(;;^%Xy!Y${3uwyJW?H?a@}n*b8VhXolM6YMvHWCX znvt^cK?ON<>piEaPBSae{U1yqe5a>nN=KQKy1MB3iR0$7hbqmr$<)~~*>gSi@gTxO z>{`9=y6qOErXLJh%WBP~7YnbW6YV+I!JI1?e1X{ghWcNs&>a^g n8p8ZT7cA%k+`<~ucvxrh8kg(v-{bpw2Y0K?2AWk_hpC=Fj}D^- delta 410 zcmZvX%}T>S6ot=?N%LdWRBfY)_Ro#hMcgR}f{5Uvy40lvJBwgHsl92*1bG`4%UVHO5qo&+KjQ4*ZX`%@_ocPm9$wBr5py` i|FfEZRujuuVT+1YrWMpU99+3r!+P0qu~_Cvrd;1aTto!` diff --git a/build/classes/snotepad/MainFrame$19.class b/build/classes/snotepad/MainFrame$19.class index 6414aa9263a83c2adea42e090b64273819a7e6e3..2e7af77e058bad81e1bd4ef02a6d37acea0208df 100644 GIT binary patch delta 387 zcmZvXPfEi;7{%Wglje`3rfM5av`yd8cyH$Y-Z%4Qy<6?i@3#*C2iS69BJ^M(@(^Id#-@$dbN8huM&n5? zPlkh=JJ~0+wtKf}ktXR>C9;s2O3thM(@GxgToUGFp$O5;RN17%xGfN)LvSu+uFl4} z5~#rzaL^IxqF!bchS97c$NltPm9MnB-x$eka$OAMR8RkX9rv321Au(L>SSf`cHn~G zm9Y`+&9kqu13f^nZt8@G1uU@xJk1d&eAG2HG{UQj@~R{~!l9>sr29v@SjGwyCRRCZ Vpuyc>7hnzR`Xs=j?x`|*{Qzs!LDv8P literal 733 zcmaJ3qoo$FhgA2Pm_s*Gf&pmg3{r>S2z%x7y;NfnF1+0c>W6j4sAL~9g2-obX zDmqUH%WHkA20F-$qr zj7=iaBatf?Pm`W2NQho(E%QMtib8VOnnT`s`kV#SMPilFZ)ARK@=T5h>)rTFOhjK? z*uI=dZTq_=WY4X)ouaCoSi3Dx3L8B31@I6-jfPXpx1qvsfRMA-d9}l_ z%Y?nHub|#{R6duOh`)Rapbxmg>syy7ETX{?<4ZPT#1fiQuH7kD(E9?~`iAOXs?Z&$ pkEqe7f9Qf4U4WZdW*QGGOkUw~E&h9aS8wA^nQ5b5mUWo&`2)Ljp=b4D(S+|<0%__EB@^2uKrLl_$-dog*jHZgE8Hcy_(e delta 42 ycmcc1`jB diff --git a/build/classes/snotepad/MainFrame$21.class b/build/classes/snotepad/MainFrame$21.class index a8ea8f95e44830e9ff251e0d5f9690e581b5446e..082c20e207a2f32a1d8916a189ab22be842406ee 100644 GIT binary patch delta 30 mcmaFJ`jB|P-qSVCV)X5(iLl`Gdc4P8loyx$$IBoJ&CJz8%mk$^K delta 38 ucmaFJdY5&>b4D(S+|<0%`0}E}g2`VQLl~z`_G0p4ox#AtICJt$CJz82-3_Av diff --git a/build/classes/snotepad/MainFrame$23.class b/build/classes/snotepad/MainFrame$23.class index 0df4752b6222b1314d28c1c7b8c50170ef8e3e53..e5dc8026c846d27f0458eeebf2ddacbcb31fe343 100644 GIT binary patch delta 38 ucmcc5dY5&>b4D(S+|<0%`0}E}g2|s5Lm1~w_F(d2oyWkzIDhhVCJz82`3C`d07K;ti2wiq diff --git a/build/classes/snotepad/MainFrame$24.class b/build/classes/snotepad/MainFrame$24.class index 6582a88dea834188f7b1fc74ff81621d211da455..f198a990eedace961a6d136659212fa3c154ddc5 100644 GIT binary patch literal 735 zcmaJy%g$5UPckZ1t=bn4+{QCXlCxB;o5WvIT5OY`wv4mA0_k67RSSMVw zXR2sFCM@&|ZLGWy!}vfby`PIrZu94j4J|AP_2H)fP4a$h;A^V6OmIc_eyr<2qaN}nD`duE0{ z?nl_bCZTpH3;V(pHiC~@gaDfn+Gr9MuR6#*5E`Z2ROr+A)!2Yppo$+oa{ zSE*Q}8%57#7e;fZ>{_+sx?Rqs9=#pu)FkgNotT=1bsqd2c#NP%!|CPwP~kT~$l2?> z+Tqw`!tT~rQ1?43pG!={Up@uU2i)NG?MoEq(cp;jB^xo~CYlqj-3eFF{Q}zhhU#Cc s&>g3bsL`i?=z=L-fLmB#8V`$1Ug2^r{(F2|?_jyiETLYOb(r$`1IXB-y8r+H delta 411 zcmZvX%}T>S6ot=?O_PjKQ-4xTw0~~2F5*r>5JUtQ)uk>a+FAJ1ROloweFn)RxD*8! zQV{V0d6^j;@EY$8=_Z_#_ zPX}`M>iq0db_unW&PANXQGBB!naM;&2l{?b%dOQT!kEkyAsk8NK5aJYE*fYO>_a(F z`~87(QHJHhM$<(Ll{}#!2uBUs>BiS8AJY1*-;+st5})={RgC|A9tW5B3jleZ4rOKV zw&8#vSZ#ByJEFbz0%{LoJQvJ3pJir14{%xgKNKb~#TD~K8ZqIa0x}@-#0ZYHO=y%J lVbjw;tMg}dFpU{DmN3h-fjJHbS5?eoq3BdGS>$M@Sl diff --git a/build/classes/snotepad/MainFrame$25.class b/build/classes/snotepad/MainFrame$25.class index 27c216a5d2885e6d5111f6eb8b83e6110042fd77..bfbe74e3eefc34d859fdb2f78eafd2a89bcb0d71 100644 GIT binary patch literal 700 zcmaJ;T}vB56g@ZDCfRkX@pEf!ZEbx>BQ&K@d{6`liiO0N7GKLGJJiwLnXo$>f0tA( z^r1hXKdN|V4Ypu#VV8UFoH_TLvw!~n`VC+kZ+&=p9^eVq0z`OG$ICj_2{n7F^34x~ zrCzR$l_L>%`aBk5f`>2$5Pu) z-<==0a>uEu%CRM^J%SEB(DM?Wu|DcopI`HVBPl zncE|i+YmL>Lo~1v;tl2r%MZh2`K)7_*!@_Htjsu|hqqXd3%qO6k$(0|3u}o#LV!w#u(5gLatZt zPme^i0HPCw9~tN-ZydpaKrSY#RxOH5wDGA{&o R5uRbSoJ5!{*E&r3+yX%gm*4;Z literal 1050 zcmaJ=ZBG+H5Pr5-T3Qb%Pz1FILe+9rP7p)|Ob9}#X^{lN_iekt;dQUM+ZITSFERcO ze}f6d#1H-ef0HrJ9v8mQc$b@(o#{L?&uoAH{rL;P5>``4;l36Rw0M|C8if?5Fq4Lb zq85+RN^e`QD#FnB%oh!>O)SO>;Z4c$X45@;Ee?3g zRePT2R=Hm~Sd(Xj6kw9>avIbVj7&ze2aqNLLrs*@<&V)fh#|@vCTolQIO(ia?0{Lh z4r11L2Zr?n@$X@FmSlpmVZ6r(**C)qS<++V(J%F?C{DBEc2xB%40?g0bq;op9#S#- zj0+@IbFpt2iOzEuNNV!}y&BA*Vj7@_%nukgK4Q%HglXe5EaOWEK6zR83cQFr$c3O| p7^g8~xJwnN-9NC1Gfa>dBUK3ZtYoRVmW+`~%>^R`5@Wzu@_5MOFm#=L0f-v$A)xqMH zY6a_E)$vz6uiyESPey9b3l98afytdn?Z4bohcDD#+aHugW3B1nF762=pZUFLBkV;E z(zxJY66YOE=`f8Yho0|Sc;Mh6RvbLSs)NTmJi*f7wfM0-)zSiM(Pp@>qE;9POjJCt zN|R34kHw#>z;6qf6|cHW>s`MS9{Gc9W9~#Z&pOC-TB`y?3dcw*yfA}f8W~n)$u>AQ ziCMQcgm4Q(7;bS0>3)X!DXzZAm|!*J8_bZ;#3y8N33<-AQ@6-8MwCWz5O z8!O*H3m?UJ7L7W|%>SR0|9mr<=jgjtc>R2Q0yZf*Sj=i{<{Z+@YZh44;xaZ%Hp@0E zox^-GmECXE8|~nEZC`5yKhG3+>-lc92Jj;lkze{b_`d#!{WB34m;Y<-=X|_ zjN3tGL{3XGm=}zSPkyI}<4Gm?0ZmC_jPV~=QW-ZJ(h(=m@4jFVW@| n3G@0N-1~)lOvr_b2r0oCOfn@Jk-wW}X3$BK5Y>{gL}h&eAWSYg diff --git a/build/classes/snotepad/MainFrame$27.class b/build/classes/snotepad/MainFrame$27.class index 4ab2f23d444c4c667ea27a903d6526ce7ed4ff8b..11473a0b4f48462ad6940f561fa7fa705788d9f0 100644 GIT binary patch literal 858 zcmaJ=U2hUW6g|UIR+cSLY{gb;{Xhk(UE@n1YMPMRMhqZ{P2Xo>DBCPEWOo4jhm6K2 zlUfrW`~m(b;~gZ`q{K~j@5h{+d+(XMKYxAy0bmzi8Yyf#uyHqy4Qx5Mhx-nB4{SWN zQMU1jA*BaFTz<~5+Ki>rV#Ir1iwE*3;zO}V=Pv^p=zWG_Wf7oy!jL>rJ;9J`22!-g zLtjM4+z%;JXsRv`Pk0oVc%Dp}f(&j$N)a7|JdOp0#RcT$7rWFzj(2sSWJg4O6%9p? zVXM+S;}h=jsrJM~NbS{UkVE6|nT{A0FZ~b1;Jj1gs4I>F(`fc;;vK_GMGs{+RB<3r zTS5<1&&FdHPf%gF(H60OtzzvW4aY?WRTnjE+j#2YnF)4KWmvl|CXK_8pLHH`dFs9O z&qP-SLuspGS>;U7izHOk0(r z9V2PL@_C~QZC`@k3|z`ClebT?$vCy`uVA%rNPL-Lvh+<62G$4U$iMXmg**xr5q`!- z_lcWWopZIx8m>a^0_+0TC6dOw#L{2REG**u2*>(_73=dq+=VOd0@kP=Z7+(%mcVVS WlTFg^aR;SYW&;70sQH);;GkB7IUn;r7JMuUc>9S> z@&f@`zwNY??Dg$nU2I1hOBfNT9LHIHlxDd`rO;t!(>(5)^Qd7Gd)PCbSYsJ0gB!7R z9bTF%6Sa-Kh)(*}npQg&aOv0}23edplPoEds(!Z7#2Q?#Cg5{VhnFu<1!NIX5Z%oo z#C=(=G8WB{Z_woWy8)vZrxKVz`a8Wxw_;j9!8sj5st2e)li~*;-%*tx|BUpHk-{V= W9fX)7Dza(Jlo?BItTBcF diff --git a/build/classes/snotepad/MainFrame$28.class b/build/classes/snotepad/MainFrame$28.class new file mode 100644 index 0000000000000000000000000000000000000000..1577bfcacd75e4e121367e3f44792f2a9b32efd1 GIT binary patch literal 530 zcmZWm%Sr<=6g?SJr%q$ls;%#;xM*EiaHFWW5sN~rpfaGlbQ)~RG$WH4|I3Ynf*;^V ziFayI!9a5ExsP*il8?{VcK~~+dKgF9Ma6@Ia&|1ZSah-EVwqw5NE@9TGmO>hJ_A3A zx{6_{rH#5s2OSmP$WBO}QY#8%=*w7VeB|UwPg@3YZj6dgLTRlcT4`AmCF((T8*Qmg zGnNCjwYz^vJ>t|bc-K)H2db$v-QrKmPG3GsYJF;gFtXa*w^h=Mx&kYhV8~x6o18^9 z5y)q}^uLF|D%Ke0|3|1h!*r(K2&K7iTz2{@NJ!+@b(I?PebXEb*`~=ns}f&ZJ-j}z z-PL`pBS&w^;L^i7v}qDz9$5`SMwr`v0ec#T3v_15;8h5+#diWGF-45#`6)giv8-6U w!MT0G7=H%;)yRGfd;)Rch4ywse@R~h{oxhAVJd9m^^a4_;tE@AQj02f{huK)l5 diff --git a/build/classes/snotepad/MainFrame$9.class b/build/classes/snotepad/MainFrame$9.class index aec4d0924d769e10bc729cdfc522f7957a1c5b7d..5e16ecc4de8f114f35e39e85271fb1c0c7a27924 100644 GIT binary patch delta 410 zcmZvX%}T>S6ot=ClQxM_)7Bc>*#C_`i{L^OTon;qRB`1#HM3CrBV>$ApF#2lzJZ`F z6np?5!G{s=3?eQ%FmTVk=X`hO%X+ukpWkmE0QS&#V4~r|Lg*sEdI`-ES`WR)p*NY` zrs8mXd2uZgLTh7q6=!i2-^oa1Vk)B(H9u12!R9%kATmh^=eqJ5?RVN9I_MJYQ<2K! zSt>mgQSxA;>!F8oKB0OeoVR3<#5Xd3p`BeBk47Rni>G3&*Z)3`!6ttJAm3L|t_;35 z91z^RX@vI+tc$GJ0*~ue?QpS(WmbTzbHolGWtHOIfIW)iY(0avUr~5sVL+i=HJ}P? js{X?{e>evfR2gGpMQ8do-UyZf)=<~2081LAO#1u)kq|;gfrP4=*%xRDJUn{NbzCfop5Agg{z#Etm2{aR>>13P_srV>|8E4vw zNo95_3+3Wz(sKm`qPJR8G00?D5{Juk$h*5-zbR9zjDAnWCsX7!64>k|mvSOwd2M5w zkhbwb1vzxayJ3f*zBiiTMG khc1}W1$clZrt$EQ$!lD$!+(!2>MGW%%nF)SS%;~fKl^2$Z2$lO diff --git a/build/classes/snotepad/MainFrame.class b/build/classes/snotepad/MainFrame.class index 111df63bbcd36f22731a2499c0ced42df284b3b5..2a474e672743a0372d69255d465a5f8d6285fc57 100644 GIT binary patch literal 24837 zcma)F2Yg(`(VyLYckgt1vQ^wIjFx4TU8hmoBP(up@LJNTp0)Y?+5Fqpp-+y-By*m|$I6t=U?Ci|!?9A-b<*A?c zJU~QKtgD0KBH3ii=75X_WlXkYi7oP2Teb$tFXLQE1Y{fM8#&n&kefMg=j6D6Jf8Ct zI5{yOPvZP!PEHBPQ#n74lhXt849?HwL4wVTZ3|&yoRgSa>uW1c^x-j&&hUf zz9C3!d0+blD6z%3_$1IL0W1We`m`*L0WDqowodakXD(>{kD97(bSuN zkfA-q$-}mMBuK}Y=09-Dqntd($>W?n!O4@H{E?HVIC+|rKiTpbCdab@`Df0bv*q(a zYLPE+O_U-w)Cjz{0v8*z&`G{C7}(BtK?K z0gp>$6PG>-%Kyku1M;(g{5&YXkY6(GzOv=lLAq9c!+R4+_@E%vGKtN^L zDj1{=;H|Q4gHBuGE0 z*|wS!6q0BEq$*HSb2*vEi_YidP#j-%7?&zJS-{CcTU7-`j;hX5i`3$PS`t);tEJpi z!=smRX*nk=c-@sjwMwndLUII`)^O>_fI2EjpQ@vIz*-)9OhAPKYF$v(syc2Ab7MUe ziE7}aF{mPHeLj(ja&L^2mV6RiZC9;96<3L%YEv6I*~Gn@xuZRxj^lNXx77*Ucw#_6mUs8Rg$A9B$lx{yywotjS;Cq8v56YdP2bS6VOi<7fi{>}-gbGdRJ_njY9 z7pMz4*xzAR+f+E3ExIrax4pj#y zyKVJ5US$tgI=S?F#_nR?#Qj`-AfO)PzK1w@n42F7sz0bl1M0D$tWz_Y0grR(32uHe zp#Es9r-I^q2%UOb{mE9(*y>q9PGvM2Zmnnv#pB_)prZMartsR?tqpC>;b>xQMXb4{ zDVzweT@p$(3d*lqAKDlyYYIgh%4!m=k!ZtoLH^cod{KClpgyKI8cvigUs{D8J5n2q z>aKyhYjatA6XujvHisI*mFVL!n7z0q92FGc(Wc0aHKC1Rx6u^2u_{)(!EH3fEHo~U zHtFUd1Mn&gBAiHIJwe&r&A%zUF4PhcR9F>{#uDL{P+eJLxTz)FS~h!0Wksl|3H!}ziM6z~REMK&f(CV= z%7P`S9t_Kgty{mWH583Eg%Yt=LH*Mp)6EQST_Uu0wP)24t_V0o_`8(-@THRRoRfHX%i<(cYM@(;B}b2{3)i-WLvfr7Gb>ydVIkIi;muq&<08@2xPb1{95=%Z%MAuCp?JcBWdxv) z9v=@kg=-TK*c8CHClc9uKuRVI%#9J2C{y0l8fpRQ5}|eL!gZRfd>&YBq)z{WWnLdP z=ARLXMiR3GsgkiP1X&faI-u0IDiRGZYHMB>ZpG*(wB+NwhniM|S|eO{8?8iRM3dP& zZ`Gklbbf27Im|SxNrY-QREJvJ(OK99nlxtylxUo~sIp2%z-|u5<4{km1z1fjZUI$A zC8R#o($dsEH(VcTYf3Q3*M)E{t&$^nR(73fuh!U$BcKd3^923J`5+%J>Wgy4@?O{ zkDfughvlM2SCCuhMnX+7C{cfXq$v@`o=10KCtAa`jj>o9YK|`t{D)B>zgk~kD`;?+ z!3%gqg&EDvZw)6_gqm#iXB-_!cHR8eSThe1l;_eT64OvM1*~YOIizQW>KGBDKg%#= zPFsC_xHVk26fpGS_PVx6lOAM*FO$)8Oc&O-njmIiFK!?{{<`dszNnd?DavW%q-4ISNCu($UR5xx^ zj?JKyX9*~f3B-zq!*z^f-+Fg`Wpqw^f~^ZN7ko~)E}YY)T8*le2yX_}0<1xo#~DhH z(M-u8lmyO}kDJgnh)Jg}zaHBdpoLoZbtRlRhABnbW1cw-ti*bB4b~uy=IhaE=CLB| z(bZqi9g}rL9A{LQf*a6?1J+K&*d6RcVB%fERac@LVGGW=WM)GbV zcYx^!F|#+dMiSv=F{9qHj7FKq!tU2Sz3Q`-JcpHOHmkm>aI|4V7}slVDB3<3y!KcO z*@-vCHfc*Xg^|C`Rony8NM#HF&>WuQS)DjnC6)RP6i|f%=7`)3TSvAdacY~O;Bk+# zIfC_db#_w|TH>Z@NH5o8W&P}EI}hQ@G;YdT(N{+6!kb;=z$(#e`dZj9WE04vU`1Oz z5o^}NCIMRk%NmzNa|~x+1Aw+@1|gu8p{tmI8^bQl!jiFj1v4;IR|lU2XswJS8krl5 z!A@2uxvZH|9*=Q&vb@2dPBhlcw~k+93ZiI|&yUr%vHJsf8XuN|0VQjCsz*MyR;aZB z#3<;c8?CKv(duw_qymhTLB^*C07@iUAG6hSz@RD?+b}y?H$NP1szhVzaHmYI<(1W; zD2$la(cK14x7G7t$_%IxV|@i{Vr{Lpe0f9n_wlT#iF_YI`WA)biRv($V{u2kCSJ$V z+B%9GUv6o*9+nfV%!w`023x)0s29~sj<`%*4i%PZ`&FhqKR{7`al{qkN}$2#iDx?E zDsj0ZuGWow&`sl3Zrr9D`KC3E*Kp&t+!!<}*);!(o3GQ&@a*a%4W{{eZr-jzF!4;| z4cvI63%9{-yonoc=0<A;B%k$Ok$;GSP|&p=OVyLx<%xJ~>9 zy!E=%-kT%t5O+G_-{N&gy{!J~s8`ghj`){&-w{uUCmr>F;(c4a=BU>(KwKg&b>s?J z0u|$da#zwcg_-K8zo|DI^`!WlF6I} zt{>xw$He2nxl5n%CYfz-IASLQxR(J8>oUj%koKt@@vwNr5r5!h7f-s2lSjoPFzCC? z)CboQo#OZ1d$iL80(TjX)8@Jtj(Ao4U-ykv!*POd=ZN2lJuoG^OyxdDbco&EMAP%O z9Pu1e>UmCH6i>r(>@wfemzle~Up(lDXL-gmVz(n+;L=N+Jj5M;;nH8Z<7F=Wk=HKD z1iCU3t&44f9RRZj&Vr-fl8bOIY8II&f}`GM&TER5vE@HEf;%*h+Z_Cma~<^$^^T+d zDc*7dL^_}`2T9SF7m#t`PjmIF7uQB0&P(SvL?o>zpq<#ib zDqs-uWn)#rNAG>?G{+)KV2DxL`he)AjQhAS+^)R=co-fMrl&I6(w5MDwj~`)S(an@ zEI+VK?bp@hpg?cJu^(t<*|;xL!&CZuFXM4ldP7rMeJ?{w3&!LwhfaLdfz`ThS(~nc`bw!Xv$|0Ww0&O)?!f4sdNKC#q;4?>}4j{;%z$w^`oy~+;MZ=Ak%-F z3qED7gp*Xf5~pb|@Nx2c+sPy_sMq#`94pHTI#xFBJ4j@XBbUkLj@1WMxr*<=FWBxV z%hYOY8)e2G79sEhliKJ;91DGfa#Cuv*c_BxeH=18Dt0KN2-f0oT77ZBX0DJKuyCwg zD-YJ4%lFcWdR8$bF>&HV$I8deYZc&pTm7v5jy1p<=!oyd4~{j+D#SFsY>!w)O0Byg z1rxvkCYT3w2D=wuFX0QvDzXY4Ylt<}v4(MJI4@t!r4iOh#~Q`e(VUDCKe)HK0pmqB z9BUu(x^3<2SS8k2K_lk1w#HhEH#K5I#T<>nl~LSfkG56nSmPMxcwT1$)=}p&yC!0< zvRwRNTV;;5p9D(#!(g!{F(LxI1B#pqoKj+nVB7Q>|%^9Kut}Vb@sGnXoggnYJ~{u?}Ve=gx`65^=b{h^{9Z zV|DSqe(R8cHQTY~01fdE@s1<0-+)!&SaW5GZOwD6`PQMfb(mvSS_>R&Are`E`_!sp zcz(lQ$Evn)P4+OmSeQ6C;>dhi5U>_I))MRRfVGsDs|i@k0v3dK1q4AJ!W3G`35&6{ znt@wv$vV~%*pJ+oky+zdM_NZY*3s5lL1VP6@J-*vqwnUS^JRjW$2eBVTIX1`*4Thm z=g29%NSKp)P8xWLgPCrPeBEaq3TFrLb#{0Lc-p;-v&w?UzE({wA2n;2u%B1;0+v0!*g-f)HDUSMf+&ysDmI#%3DI98jrQBX;0 zAPXjZJ$}?FX37-TBVJhS#X=xNX(J-T)phYrc}3}m7DxP6+>WzR!QO50G6a*0VObV0 zjyARLMM+KO-SAtNnF8I+E!wG>d-YGjbK@ib;z$GrjFF`kx_-wr!ONxLxOQoQS8qWyOx6rxAVCaT5s63iE5=Zdn6C4- zG~5t@&T7X!x&cyDh!YABeWzIkC+7qqHjgGH4(vMPPd+tbjZe&G`(0Jh+^V% zRiG8CuQX4)zk{Sk=!psw1(jy(!h4XJp25y^qX{L!P2zYgyQI(@nT+QiJTU2qT-qD+ zS_O^mb*+qG&|>|Npt0lUsFWL0lrhh=xq%x!GQ(mq^Nnb_!d{TVFnt0bo7(74Nr>@z z=7(zWtP0JR$FGBl@Vw@hM7!z2<&W4OqJJ9I)U0FyCJjdvd)dLODo)EI1> z9%$u^?U^>SFYrf)R#RMKG}6b+cq?57=xHo`)lmcjqY*qXStS*`T$eBtd>`DEu?^s# zgEO2_E#eSomrZ(|*kB((o?Tmu5V(GUhNoxHN$oN{mY3YGYo`}LaAhksDcugO*2|RM zh65MgrJjmF2H4rlM099+SS@(wWJL~n!Xqgkw54HuHvn^L8A5`Yr#LO@yn#N=p$*|V zkp=_^ji2D6muYQI?32duV%*^oq@Ch6OP?|ArKymkX(leJ7cebE`( zv_s({;ID8iK*G$~1bvp6IUo&xoS-9x{0y7XjQdIhZi*WAbj2&Z)5<76g7KSw4rsy5 zOCdI*`(0UMEWahKh&SK{;Ri)K5=XdzBP2Ns=dE5ld-<}(YbzEnSq-*v%!c1cz;3T= z$?`c>l@)8NDiB{7u0m$WvND~YJ z=3IUxzBJO%Xx{itaQT;BwLz`!p)7qlxM3~}1Xu-8Eg1`qz!jDPWUiJ8fH{15W9`&! zYc9;jP-_iDAsnp@PiKyd>OwX+CgHjf#U~iIl;6e?=|j}b--O3F{w5CVEkG*P!Tac6 zGPkE10G}+efx9iy%$Zhf%=46D>&vXDX~y?9DMj2T5o>5@3Ui3XC_`3WuF8n$uizH9 zA~>8nt84{v?0o}&0+ffL8K0@>Hc#VajAWgGp*8x5gTbjc=TRx`*u($y24U)O&l>LH zqIyG8nogTipn0{c$9e$O4;?szWjTKx_A>CU#ymu4&N3rO^Olb>n@aD6&2I{AZshuxn%xgJSu$q0Y{zZUB)Xhj%;bk*#F%L_nX_4b)Z2sQ#@F$vLUWL z79-tE^o-?FMg*$|tGIIrH;BIxQ&gxyIdf@oatxPCluYjKrRPnPJGE)$ovx1@Ag z=5RwzV-&atC-b^+LGXvdHP8#wZR@I3D6r=eU2$_CVh!jnsJP>3gxDf3!Uy-$D8P@& z{OLWv&+8no@H)rqyUy_duX8-S>l|(#4&hhN7b3C@|9PjNq$1A(e@zAbwJh1B= zZ|pk9+q%y2ysmRRtm_pI7Cy3X;Uu5&z{BbOYc(>dPDb&f}5o#QcE=Xj3RIbNi7 zj;C#% zb&eNrmYj<1-K_m_XJZt zLEV$hJ&x|lN%iFDo<7{uSNG(mdUAD79{1$yo`O_Qf$r(YJ^gjhfK<-_-7}DT2I-!{ zR8OJq8O%LJx@SnLXNc|@%00t$&+t^waNSePJtK6_$W+fr-7^Z+(W^UX%r4po#eGpM z*+pYZlT=y?atuw2izC++_@1xt}7Y0^C)vJ!6~J&A@RoevV1 zP+uBL!)P4R@idhtQU#UKQre%6qDj<52ht`wh|Z!ZbP0O5Q#t*XrqdppNsrMidWjC9 zH)%F~j9K5(ToI6#D8M7kFgjF>q{GAnsuYu`N|e)LF_R7#6;vY@&RmoG?K+;S%V}aApQwm1Gz-$ zUGW}}WW;@>2IU7)!N)Ex#-9OWiLT8>TWJ>7pA3dfK|a;Zr@48#n@>kR1N}4Id=}?B zXgW{DhV@i8pXTP}Zay8kp6ceaI8SeN4&?%mM({cUny;sRw1I|zv!f{rj>o{^7CM+( z=}?N(VoK0TYNNH_dIN1nZ#zoIYf=m_`|(JzS$rTq#BP}Y7RiIBVE_2`$Lv3QG>8H+ z1!h534~DEBvWsS;IERmJpo1!Q(cDxuTUY0$s(o~o=gr5wLwC_(sh&LDGd)%9r>is5 z11nQK19i`WRCTbfE=&)sLa`da7ww|OC@w+q@LiCdPFjj$%`RGo;&K#M?4p$@u0nD3 zE;<6mH7Fjri;hYck4_iYqIe7jgm%%obZae&E`+*tYk9gDP8aJ@bRjgPTN_byAw<%x zlhehi>Eg6>aXpIev<;>HBsG`jN0SsoYs>09xhhXw+(E}CsTC}l4Vj4}pPQdZQX3Z_ ze;eI=Gv}D!&Uq&tw;C$>_#~Zx>TGUG(upgP&&xl_%$?`X<(%ivbLYDe1ZM z+_|&zPc?H{?s;9#dG0KC?yOEajpv@8o;%B(%Qzh7mZ#^RVc_t2VmO>Loaru{>78^Y z!#OJrXSzFgX8ze`E}uc3%Q?@T>CTrDN6MrnJJZa{T0H|5`$q?>RzF&>NaZ#H-=>!e$F;H^p8;r1=#fsEr3 zx$~3sYcAy9mZaaHa8&N1JUV4J-I1g_x#}T#R|?6yxtRs_9@D>*f!~{?`%pcCo07DP z1@q|K#hH+f_8=uQAsx-)%aG9D!H{;RAsy{PTAN#w32Chd>35ls*0L}&q_tokYi^9& z!w@^u5ZAg88P9b|`aR=Wn;XxQ?h5#bqv8>Hk`X66H?fN z^v6s{;ryozq_9f|jC-0P{wWPH>_V*1ot+7>KK~grwcedt-$~E%)IX=E*1J;~u?Clf zjk)tO!8Ce^J(r1CBcD)a5c;2Is4t|UHfB(^&ZTT5cZH#BB>zQ2*+?h7#1sEwD2wXL zT>Wd3UIEz2xid4dnCxNkY9sdcC)z-T_S>H+T z@YH{%r>@VSUc{x|hTJ)ZdK*}|@zLJUN$>K+_YCz|csJ<5D6CAsCq7Pjw3h7s3G+igk=z3VI+r>P(K`fyg#TvRv z)YHx4Sh_`=K(~ss>DS@{x(!C)Z^TV>yZ9~LDej}Y;CS6F9;JK4pJ=CejXGc&{!aXd z_K0t&6K3G=Wq|IN1Mv$1qv%mNo*t72(&KUlejZ>hJt=GG8Mzj}2(W>klL`DBzzOt% zJcC}87vT2*uAx`u4*c=|-SoQLO@EUQ(Hrtf{Q3W1@%R4!pnu9w=so!j{R_tN`zk;m zs9gF`4X6L8arBuwkUm#4@aN}q=}T2bU#T_py=tHzR2+Y#e+nXwmkOb_3#B@Qr5+MK z^=IK%Zwgy|EF666*#{pc=2`|@;}_O%`mf7(BBuKe5i@*? z#cbaiQQ>P4^L#C0zOP*z>N`hN`>qm;e0Pe)z7Da(_qbT@dqJ%9y(L!pz7ebaLLA}G z5^MZ}#4-NSVx9j0QR|-}>ily>*k2>o``3yM{tcqpf1HT=FA*{SHqqk0O|vK3 z#WwqLagF^eajkv3xWV2nZnB>cH`~vNTkKcFt@eB3xAy1a4*O?uS0Etn4&;e@0>vU3 z7%z4Q4itL=Q$=TBCO!oByq>@;*NT?nBk{58F&qMWnLUO8r2oSt{o9j${Cox4#Y1G{ zGjoPvEb)M6i3h|dkTuK}pL)<{y3l-p_EC3Gk0EmZcm^n+2g>Jx`s{xL^+$ku>K8zL z-Yck&yJPhXKt1~lpzz70ORn8y!|fn~Vfe}F{Qp?@)2FLd{%18E^m$b$eF5v{%j)rP z`o0>U|8Qx9~cMY67NGuE!hOyW-$DtflwBrGcPJZ1=-7{qmEdpxULH&3RJvW1=y!kk7O@ z*UkOGl2W&r6a#jPfm`Y3onp{#QMhQQ7>umkDzqM_iwms+QIr%zw$hoUNilRQon&SW z+eRY`#P9-9yjzTz?CbB_O8FQtaw}vMD}c45+<{wZA=ci0-&*7MwOaTX{le2%am|A^_5vPPzGt3%%Oc`ADSrhX{s!s3ORr( zWf6X4X9#}zW*8kMhf|{*K`}X++T|GVbYD7Gj-`ubDP1l1qZ{QUx*M0&v!}T^ySg6cHw9G@a*dPjYazI8M%0!q+X_4(WZnqe}mHL+A5Kh2< z6O*DW&5AyZvRp>CTuudYrC!Hq`hMOz{lq7-uPf?`L;;q`^>)1t0C?B4%=Y#x5c?;^ zq^*dHc``F#2aPn+Rg`M9lj6YY((!x5LEUA;5Md4F%A-JlqiGC`lu7a!nkj2NB21!e zna7;rbv-m^8FHjTL&JsvPkdDD>bwWRTJrllSj^!uGr6TOn{7~YU9=*G zMzS8iLe>DK)JXm1dKv@^u1Ge4SWy}!V^CWykeFlXAlXXgGETGQMjWP1R3$g#*Qwg6 zRvt$U@_1^7#kWzOh~L;ciB6QK)9JAOE|O=`74j^)L7q)Jyi3i z*^iYUx5@rc&=Qh+ha3P~Q-R30%0VdkpkS|)g(%qwbY3GBN?Ew9u9kzrx@;)jD`XMo zI+|g{l=U;r>nx)%VIC@lQ-&3?vvUXc&CBZpX5zDTSGHdTOdnRCr)KoLh;gCmi+Irl zT(@6M&=>IpDA8{xKnQ0|w)$J!D5rD+U&Ug8HKT}MMGSc-0xgo4V5v(%+RJIEyn;r` zE2%_YMHA#!IuM5OG;xeSVx-k4tBY(aCf9IzWqdt#{BsT|NVD_72?tuBV;e_%OB=<%{6M zUvM?OLWS~GXyw;wfB6_l(*t<|oCWRh{B6IQXKndfa&Yb?$dOq;^maTadZ6~o^6xT0^v3cs55zLy$roZ@!*XqZC&i*PAI(+& z6E^-c^-;zmHdlRLk8gc51QS<1Yu){RVTHxrR#1NY@|%qnf*Gj)*A@2n#P)bsY+*jJ z*p4>hx`bV)`>5UsusEEp)cYvR)%4ohZcu%&b}r?qJStTEs95!<5>=Ri$5?NtV>2Wa z4@rf*)k)q~XSu|LJ0nJ}?8aL)6hE;yJOirVgX;Ir;sGA43^AeZ?xz}spX?ix0jf7K zIj}cSqPxVYu>dvh7eF1<6O`I5mUiFZegHM;7eGz+xK`_OZ5X%$>$0XmEYl`nF6yqU z;2v;u&1ykZlPOnCrJ-ti#yZ11LJrGd4+L>2xP!mQa?gDgR4j{nZl_qjy430rE2_r9 zXUX7`S>j*{sza!+nv=0auDb;PlT{nQQoN|kM*lSK* zE$Hv!+rd0>-RNWBd56%gpJS2hh(3&&AImKSve>C(8+#iKDzr2*|Gl(~hL zTgO^j!NSXSQUlg;f&DvHj(WZPJ)%~t$Sw|fo#&8$PG5NrxqiV{hvIiA;iaer_`S?3 z8mku5G_`~()KaQZHFTs}Mzv}MZBQ#Ij_BV>>PR|Gt)=tSF?6Y_rK?pPU8BNutE#8F zR0DOY2tBCQ)03*1o>NhJRmJEnbu6NY8xcK>)7L722x1$eg_|`S*@>?q7%dHPCS_F-owI|;l!7c{R8a_Zymx=X^SI& zq(hCL=lo0)dU*2qQ$SZ3Q&;U6a|!Jf;iRa4h(4_v_c-~i+jme-l@4(*Pn}Ey)EUrSr_o?_I*n3i=`HiMlnZ%f!xQTXL7L0F*`5qi-K@n2RnBq=tg5!Pn9x`eXTWt5{X2kEY)A?hj`uWrH@54X@9 zbt^4achG8e7uBn~^@a{JsHQj%4`?2I4<=!QoUc8Y96CZCiV~B0r92EJ3*Od3S&7eu zd^86p&jOVEAnrnsxFN_L!x(DrtL##^853{>Q)gCx7{iDg#ivaVbuaFy`#|X=4OAUK z{C65bW91CZ;3tH;uY=|AhrTYwE3p_a$6uL1#csNe1q?Ekf^RtadvNl8au8hiLci1} z11{7lgRMqn!9)tK!!FpHDsjQiESfcR$c*132;+iZ2Q(QxUuA2xy}=xXfJ6Ovh!YXJ1*cC+i=yG^YaqZI5XHaaqjL2Xu9L4dV#dln*d;`NcrmLr2PRUUJOU(P zD;Iw{>!Nrt5M-gt<3;&D2%d%O;j}arw8gHz!$JH$L+0|_1+wIkh~*ejn*=}%%-StZ z?>67^lfv&|q-EBUMF>-VgrID0GQpmfe|aqbSvIzvMA z{|0ToP;2w^pv^nQ`A~Zo>=qZA&~+J2^3-}Mq@An+%D4K_aH~JB(pvnK9Fd1+%|M>qrfdBD_r~I$OWWd$@yT#3~cXR%tkN>&& zVkhR`nQnfXo1g6F$GQ12VuN@9(W?3Q;0`%{{`n6wOj*{Y))m%eIOI&nsg$Lf@FU*M aIz3jWC+YMQot~!C({*~ePPgmy*Z&VPX`%)I literal 23784 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 V*ME#sA9vfl+kVn*KjpTM{SS`SMM(ev literal 2361 zcmaJ@S##4?6#nE*juD9yNWm$KDNB<;;udIH5@<^{FgQ!&u!NKb#lDV397#xWmX_|& zb*9gK>m$!F#hHOlr_cQ*{Slqg?^;UY6zGGmb+}@bQ7-N zY8!prNMIHpO4&^nA0?2&oYdWlLsv1cqM%^s$oTNwg;JE_T*14ewnA;m)qB3L-;RQ7CB18KxMoF3k&PTA!~_ z(w4IddgZF_7;+y7BVO5X6{K>mX?eodih*uu%2pUe*Fl?q)(Y|Hf&w08RO7*=M~ zsE7gStH~A4vT&|A6$Q<{+7w=f;qzRgV40>Uc!p&v*tey<=y^5~Lz`M+TS_#UHSMa$ zOohHABdTW~cxzA*tyxvC0ot(%9o9X4qCrP&Y`$752}eO_c8~$juX)0q5_(aAlBFd_ zxVB}w!Y3^xRu#1S=IXqUtQLeVGoU4y8hUTRTFOY$Ga3#et>F;TG*jmz zpjVm^8cJAD(6Om_j#(COaw0#ip)An`ZY$XH5?ZCjZUuWc)c>VY!y+mYw4}j=rNPD> z4Gs=#aN((_YFNe!8+6dJJlAt{drWv`tLV1Guo}mjhL7=yin|&bE|d9erK28FF|FtbZnWVE4(Rjrz%{} zXG6gbiiRz}Nm-uG8`5gag76yqmUY-L%ZM5^G@9DFh}$&v%g@Wh){b`04tBAjW?)ON6;6^w(Qpg? z>|h#oas3WXJ9>eshK1v(_*%Bxw+fDI71}VDtwj+`Qa_?mz2I5Snu_l^CvujxShd** zSxzlysG_^BV3a<@ci46dd?}94E|vz5#&{e;henA*T-45EMDGxE|qdu)YV9-Rn@g z+d_{K?p7Wn^01CP%C#9`t~(Jy3ld1;7^^9)``C;t_6q1(5o{6t(6W%r*VI@A3t z!t02Qov1uRcBTvyh(^EssI+Fd-)+Bz5_s3F^RIG;9 znLai23zDg5Di&^6YiN7$?5|X`hF!$(?u$P{dwcu|UIA*@L($#`NJ?KFkML^SKFS`} z!}PGiw{sXWnM;uG?gLEVAa;|E4w7<^WOR{?J|fOBrOQm}I*#KePN0Au&c$AMI7urR ztl|ya#hbW?({& + diff --git a/src/snotepad/CustomPanel2.java b/src/snotepad/CustomPanel2.java index 0db7912..4ca4d21 100644 --- a/src/snotepad/CustomPanel2.java +++ b/src/snotepad/CustomPanel2.java @@ -30,7 +30,6 @@ public class CustomPanel2 extends javax.swing.JPanel { private File fileObject; private String fileName; private String completeLocation; - private StringBuffer stb = new StringBuffer(); private JTabbedPane tabbedPanel; private JMenuItem menuLock; private JMenuItem menuSave; @@ -42,18 +41,13 @@ public void setSavedStatus(boolean b) { addMark(); } - public void changeTitleOfTab(String newName) { - tabbedPanel.setTitleAt(nomer, newName); + public void decreaseIndexNum() { + nomer--; } - public void appendText(String n) { - - stb.append(n); - this.setOriginalText(stb.toString()); - - setSavedStatus(false); + public void changeTitleOfTab(String newName) { - addMark(); + tabbedPanel.setTitleAt(nomer, newName); } int fontSize; @@ -76,6 +70,10 @@ public boolean isSaved() { return saved; } + public String getTitle() { + return tabbedPanel.getTitleAt(nomer); + } + private void addMark() { String title = tabbedPanel.getTitleAt(nomer); @@ -91,12 +89,6 @@ private void addMark() { } - public void clear() { - stb = new StringBuffer(); - this.setOriginalText(stb.toString()); - - } - public void lock() { // this will automatically toggle locked = !locked; @@ -106,12 +98,11 @@ public void lock() { jTextArea.setEnabled(!locked); } - public void setNewOriginalText(String n){ - this.clear(); - this.appendText(n); + public void setNewOriginalText(String n) { this.refreshRender(); + this.setOriginalText(n); } - + public void refreshRender() { if (isLockOrNot()) { jTextArea.setText(this.getCodeText()); @@ -198,6 +189,10 @@ public CustomPanel2() { applyDropable(); } + public void setTabbedPanel(JTabbedPane jtb2) { + tabbedPanel = jtb2; + } + public CustomPanel2(JTabbedPane jtb, int nomerX, JMenuItem menuLockNa, JMenuItem menuSaveNa, JButton btnSaveNa) { @@ -207,7 +202,7 @@ public CustomPanel2(JTabbedPane jtb, int nomerX, menuLock = menuLockNa; menuSave = menuSaveNa; btn_save = btnSaveNa; - + applyDropable(); } @@ -225,7 +220,9 @@ public synchronized void drop(DropTargetDropEvent evt) { if (!files.isEmpty()) { File file = files.get(0); // clear the notepad first - clear(); + + setOriginalText(""); + readFileContent(file); // to make the cursor at the beginning of the content @@ -261,6 +258,9 @@ private void initComponents() { public void keyPressed(java.awt.event.KeyEvent evt) { jTextAreaKeyPressed(evt); } + public void keyReleased(java.awt.event.KeyEvent evt) { + jTextAreaKeyReleased(evt); + } }); jScrollPane1.setViewportView(jTextArea); @@ -292,16 +292,21 @@ private void jTextAreaKeyPressed(java.awt.event.KeyEvent evt) {//GEN-FIRST:event this.lock(); - } else { + } + + }//GEN-LAST:event_jTextAreaKeyPressed - // toggle the save button + private void jTextAreaKeyReleased(java.awt.event.KeyEvent evt) {//GEN-FIRST:event_jTextAreaKeyReleased + + // toggle the save button menuSave.setEnabled(true); btn_save.setEnabled(true); - this.appendText(jTextArea.getText()); - - } - }//GEN-LAST:event_jTextAreaKeyPressed + this.setOriginalText(jTextArea.getText()); + setSavedStatus(false); + addMark(); + + }//GEN-LAST:event_jTextAreaKeyReleased private boolean isBackSpace(KeyEvent evt) { boolean t = false; @@ -334,18 +339,20 @@ private void readFileContent(File file) { BufferedReader reader = new BufferedReader(new FileReader(file)); + StringBuffer stb = new StringBuffer(); String line; while ((line = reader.readLine()) != null) { - appendText(line); - appendText("\n"); + stb.append(line); + stb.append("\n"); } + setOriginalText(stb.toString()); this.jTextArea.setText(getOriginalText()); } catch (Exception e) { System.err.println("Error when reading file content..."); } - + } public boolean isEmptyEditor() { @@ -356,14 +363,6 @@ public boolean isEmptyEditor() { return false; } - private void backspace() { - // deleting one char from the original text - stb = new StringBuffer(); - this.appendText( - getOriginalText().substring(0, getOriginalText().length() - 1)); - - } - void highlightText() { this.jTextArea.requestFocus(); @@ -382,9 +381,8 @@ void highlightText() { void pasteText() { - this.jTextArea.requestFocus(); + this.jTextArea.requestFocus(); - try { Robot robot = new Robot(); robot.keyPress(KeyEvent.VK_CONTROL); diff --git a/src/snotepad/MainFrame.form b/src/snotepad/MainFrame.form index 2efe898..2ccb9a4 100644 --- a/src/snotepad/MainFrame.form +++ b/src/snotepad/MainFrame.form @@ -381,7 +381,13 @@ + + + + + + diff --git a/src/snotepad/MainFrame.java b/src/snotepad/MainFrame.java index 47a5ffe..dfd49d2 100644 --- a/src/snotepad/MainFrame.java +++ b/src/snotepad/MainFrame.java @@ -36,7 +36,7 @@ public class MainFrame extends javax.swing.JFrame { static String File_Argument_Complete_Path = null; - + URL resNew = ImageRef.class.getResource("new.png"); ImageIcon iconNew = new ImageIcon(resNew); @@ -71,18 +71,18 @@ public MainFrame() { initComponents(); setIconImage(iconLogo.getImage()); applyDefaultToolbar(true); - + // hide the status bar at the moment label_status.setVisible(false); - + // register the extension openwith RegistryWorks.addOpenWithDefaultHandler(); - - if(MainFrame.File_Argument_Complete_Path != null){ + + if (MainFrame.File_Argument_Complete_Path != null) { // we create a new tab addNewTabWithFileOpened(MainFrame.File_Argument_Complete_Path); } - + } private void setStatus(String message, int imageOpt) { @@ -259,6 +259,12 @@ public void actionPerformed(java.awt.event.ActionEvent evt) { label_status.setIcon(new javax.swing.ImageIcon(getClass().getResource("/images/loading24.gif"))); // NOI18N label_status.setText("status written here : xxxx"); label_status.setBorder(javax.swing.BorderFactory.createEmptyBorder(1, 8, 1, 1)); + label_status.setCursor(new java.awt.Cursor(java.awt.Cursor.HAND_CURSOR)); + label_status.addMouseListener(new java.awt.event.MouseAdapter() { + public void mouseClicked(java.awt.event.MouseEvent evt) { + label_statusMouseClicked(evt); + } + }); jPanel1.add(label_status, java.awt.BorderLayout.CENTER); getContentPane().add(jPanel1, java.awt.BorderLayout.PAGE_END); @@ -494,6 +500,7 @@ private void readFromFile(File object) { String n = objTranslator.translateFromCode(getActivePanel().getCodeText()); getActivePanel().setNewOriginalText(n); getActivePanel().changeTitleOfTab(nama); + getActivePanel().setFileObject(object); // changing the button // back to the original state @@ -542,6 +549,7 @@ private void btn_lockActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRS boolean want = MessageBox.confirm("Save File.", "Give a file name first..."); if (want) { + if (saveDialog()) { getActivePanel().setSavedStatus(true); } @@ -552,18 +560,22 @@ private void btn_lockActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRS if (getActivePanel().isSaved()) { // send the file to the server webapi.post(getActivePanel().getFileObject()); + + setStatus("URL successfully generated! (" + webapi.getAsRespondObject().getUrl() + ")", ImageOpt.SUCCESS); + + if (_auto_copy != null) { + if (_auto_copy.equalsIgnoreCase("true")) { + autoCopyContent(); + setStatus("URL is Generated! Click to Copied to clipboard! (" + webapi.getAsRespondObject().getUrl() + ")", ImageOpt.SUCCESS); + } + } + } } } } - if (_auto_copy != null) { - if (_auto_copy.equalsIgnoreCase("true")) { - autoCopyContent(); - } - } - } }//GEN-LAST:event_btn_lockActionPerformed @@ -588,7 +600,10 @@ private void tabbedPanelMouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST private void btn_saveActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btn_saveActionPerformed - if (saveDialog()) { + if(getActivePanel().getTitle().contains(".snpad")){ + // this file is already exist in the laptop + writeToFile(getActivePanel().getFileObject()); + }else if (saveDialog()) { String fsize = getFileSize(getActivePanel().getFileObject(), FileSize.Automatic); setStatus("successfully saved! | file size : " + fsize, ImageOpt.SUCCESS); } @@ -636,8 +651,7 @@ private String getFileSize(File obj, int needed) { return text; } - File last_saved_file; - + private boolean saveDialog() { boolean saved = false; @@ -803,6 +817,15 @@ private void menu_exitActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIR }//GEN-LAST:event_menu_exitActionPerformed + private void label_statusMouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_label_statusMouseClicked + + if(label_status.getText().contains("Generated")){ + // copy the link to clipboard + copyToClipboard(webapi.getAsRespondObject().getUrl()); + } + + }//GEN-LAST:event_label_statusMouseClicked + private void openSettingsDialog() { SettingDialog win = new SettingDialog(this, true); @@ -829,6 +852,7 @@ private void writeToFile(File object) { getActivePanel().lock(); btn_lock.setEnabled(false); + btn_unlock.setEnabled(true); } @@ -854,7 +878,10 @@ private void writeToFile(File object) { getActivePanel().setFileName(namaLengkep); getActivePanel().setSavedStatus(true); + System.out.println("We just saved : " + getActivePanel().getOriginalText()); + } catch (Exception ex) { + ex.printStackTrace(); System.err.println("Error when saving file..."); } @@ -893,6 +920,9 @@ private void showPopupMenu(int x, int y) { public void actionPerformed(ActionEvent e) { int tabIndex = tabbedPanel.indexAtLocation(x1, y1); if (tabIndex != -1) { + // re-index the number + reIndexPanel(tabIndex); + tabbedPanel.remove(tabIndex); applyDefaultToolbarIfAnyTabs(); } @@ -930,28 +960,42 @@ private boolean isAnyTab() { return false; } + private void reIndexPanel(int removedIndex) { + int many = tabbedPanel.getTabCount(); + + for (int i = removedIndex; i < many; i++) { + + CustomPanel2 panel = (CustomPanel2) tabbedPanel.getComponentAt(i); + panel.decreaseIndexNum(); + + } + + } + private CustomPanel2 getActivePanel() { CustomPanel2 panel = (CustomPanel2) tabbedPanel.getSelectedComponent(); + // we update the existing data tabbed pane + panel.setTabbedPanel(tabbedPanel); + return panel; } //ArrayList dataPanel = new ArrayList(); - private void addNewTabWithFileOpened(String fileCompletePath) { - - // activating save menu + + // activating save menu menu_save.setEnabled(true); // opening lock of toolbar applyDefaultToolbar(false); - + readFromFile(new File(fileCompletePath)); - + // switch focus showFocusNewTab(); - + } - + private void addNewTab() { // activating save menu menu_save.setEnabled(true); @@ -961,6 +1005,7 @@ private void addNewTab() { // adding new Panel into tabbed panel int nomer = tabbedPanel.getTabCount(); + CustomPanel2 panel1 = new CustomPanel2(tabbedPanel, nomer, menu_unlock, menu_save, btn_save); tabbedPanel.add("- new -", panel1); //dataPanel.add(panel1); @@ -985,15 +1030,15 @@ public static void main(String args[]) { runMe(); } - public static void runMeWithFileOpened(String filePath){ - + public static void runMeWithFileOpened(String filePath) { + // this file path will be read its content // and displayed into the tab MainFrame.File_Argument_Complete_Path = filePath; runMe(); } - - public static void runMe() { + + public static void runMe() { try { for (javax.swing.UIManager.LookAndFeelInfo info : javax.swing.UIManager.getInstalledLookAndFeels()) { if ("Windows".equals(info.getName())) { @@ -1001,7 +1046,7 @@ public static void runMe() { break; } } - } catch(Exception ex) { + } catch (Exception ex) { System.err.println("error first time launching SNotepad!"); } // diff --git a/src/snotepad/helper/APICall.java b/src/snotepad/helper/APICall.java index fe9e2c1..6942091 100644 --- a/src/snotepad/helper/APICall.java +++ b/src/snotepad/helper/APICall.java @@ -1,10 +1,23 @@ package snotepad.helper; +import com.google.gson.Gson; +import java.io.BufferedReader; +import java.io.BufferedWriter; import java.io.DataOutputStream; import java.io.File; import java.io.FileInputStream; +import java.io.InputStream; +import java.io.InputStreamReader; +import java.io.OutputStream; +import java.io.OutputStreamWriter; +import java.io.PrintWriter; import java.net.HttpURLConnection; import java.net.URL; +import java.net.URLConnection; +import java.nio.file.Files; +import java.util.HashSet; +import java.util.Set; +import raw.Entry; /** * @@ -12,43 +25,143 @@ */ public class APICall { - String END_POINT_URL = "http://snpad.fgroupindonesia.com/post/"; + private String respond; + + public static void main(String[] args) { + //APICall testing = new APICall(); + //String end = testing.call(); + //System.out.println(end); + } + + private String call() { + + String data = ""; + String url = "http://192.168.0.11/test"; + + try { + URL getUrl = new URL(url); + HttpURLConnection connection = (HttpURLConnection) getUrl.openConnection(); + connection.setRequestMethod("GET"); + + int responseCode = connection.getResponseCode(); + StringBuilder response = new StringBuilder(); + + if (responseCode == HttpURLConnection.HTTP_OK) { + BufferedReader in = new BufferedReader(new InputStreamReader(connection.getInputStream())); + String inputLine; + + while ((inputLine = in.readLine()) != null) { + response.append(inputLine); + } + in.close(); + } + + connection.disconnect(); + data = response.toString(); + + } catch (Exception ex) { + + } + + return data; + + } + + //String END_POINT_URL = "http://snpad.fgroupindonesia.com/post"; + String END_POINT_URL = "http://127.0.0.1/post"; String FINAL_RESULT_URL = null; // we obtain the string of translation // post it anonymously to web serv public void post(File f) { - + // 1. we send the upload process by file content // with the end point is : // snpad.fgroupindonesia/post/ [attached-file] // 2. then the server will respond with URL // snpad.fgroupindonesia/view/q=7-digit-random + String charset = "UTF-8"; + String param = "value"; + String boundary = Long.toHexString(System.currentTimeMillis()); // Just generate some unique random value. + String CRLF = "\r\n"; // Line separator required by multipart/form-data. + URLConnection connection = null; try { - - URL serverUrl = new URL(END_POINT_URL); - HttpURLConnection connection = (HttpURLConnection) serverUrl.openConnection(); - connection.setRequestMethod("POST"); + connection = new URL(END_POINT_URL).openConnection(); connection.setDoOutput(true); + connection.setRequestProperty("Content-Type", "multipart/form-data; boundary=" + boundary); + OutputStream output = connection.getOutputStream(); + PrintWriter writer = new PrintWriter(new OutputStreamWriter(output, charset), true); + // Send normal param. + writer.append("--" + boundary).append(CRLF); + writer.append("Content-Disposition: form-data; name=\"param\"").append(CRLF); + writer.append("Content-Type: text/plain; charset=" + charset).append(CRLF); + writer.append(CRLF).append(param).append(CRLF).flush(); + + // Send text file. + writer.append("--" + boundary).append(CRLF); + writer.append("Content-Disposition: form-data; name=\"dokumen\"; filename=\"" + f.getName() + "\"").append(CRLF); + writer.append("Content-Type: text/plain; charset=" + charset).append(CRLF); // Text file itself must be saved in this charset! + writer.append(CRLF).flush(); + Files.copy(f.toPath(), output); + output.flush(); // Important before continuing with writer! + writer.append(CRLF).flush(); // CRLF is important! It indicates end of boundary. + + // End of multipart/form-data. + writer.append("--" + boundary + "--").append(CRLF).flush(); + // Request is lazily fired whenever you need to obtain information about response. + int responseCode = ((HttpURLConnection) connection).getResponseCode(); + System.out.println(responseCode); + + InputStream inputStream; + StringBuffer response = new StringBuffer(); + + if (responseCode == 200) { + inputStream = connection.getInputStream(); + + // Convert the input stream to a string + BufferedReader in = new BufferedReader(new InputStreamReader(inputStream)); + String inputLine; + + while ((inputLine = in.readLine()) != null) { + response.append(inputLine); + } + + in.close(); - FileInputStream fileInputStream = new FileInputStream(f); - DataOutputStream outputStream = new DataOutputStream(connection.getOutputStream()); - byte[] buffer = new byte[4096]; - int bytesRead; - while ((bytesRead = fileInputStream.read(buffer)) != -1) { - outputStream.write(buffer, 0, bytesRead); + } else { + inputStream = ((HttpURLConnection) connection).getErrorStream(); } - outputStream.flush(); - int responseCode = connection.getResponseCode(); - System.out.println("Server response code: " + responseCode); - connection.disconnect(); + System.out.println(response); + + this.setRespond(response.toString()); + } catch (Exception ex) { + System.err.println("Akh!"); ex.printStackTrace(); - System.err.println("Error while uploading into Server End Point! Error code #49."); } } + /** + * @return the respond + */ + public String getRespond() { + return respond; + } + + public Entry getAsRespondObject() { + Gson gson = new Gson(); + Entry data = gson.fromJson(this.getRespond(), Entry.class); + return data; + } + + /** + * @param respond the respond to set + */ + public void setRespond(String respond) { + this.respond = respond; + } + }